mirror of
https://github.com/dart-lang/sdk
synced 2024-09-05 00:13:50 +00:00
![Alexander Thomas](/assets/img/avatar_default.png)
* Migrate to python3; drop python support. * Update Windows toolchain support. * Remove some unused methods. * Python 2.7 is still needed on Windows. * Update gsutil to a version that supports python3. Fixes: https://github.com/dart-lang/sdk/issues/28793 TEST=Manually tested common user journeys. Change-Id: I663a22b237a548bb82dc2e601e399e3bc3649211 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192182 Reviewed-by: William Hesse <whesse@google.com> Reviewed-by: Alexander Aprelev <aam@google.com>
115 lines
4.1 KiB
Python
Executable file
115 lines
4.1 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
#
|
|
# Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
|
|
# for details. All rights reserved. Use of this source code is governed by a
|
|
# BSD-style license that can be found in the LICENSE file.
|
|
#
|
|
# Script to push a package to pub.
|
|
#
|
|
# Usage: publish_pkg.py pkg_dir
|
|
#
|
|
# "pub" must be in PATH.
|
|
|
|
import os
|
|
import os.path
|
|
import shutil
|
|
import sys
|
|
import subprocess
|
|
import tempfile
|
|
|
|
|
|
def Main(argv):
|
|
HOME = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
|
|
|
|
pkgName = os.path.basename(os.path.normpath(argv[1]))
|
|
|
|
pubspec = os.path.join(HOME, argv[1], 'pubspec.yaml')
|
|
if not os.path.exists(pubspec):
|
|
print('Error: did not find pubspec.yaml at ' + pubspec)
|
|
return -1
|
|
|
|
with open(pubspec) as pubspecFile:
|
|
lines = pubspecFile.readlines()
|
|
|
|
version = None
|
|
foundSdkConstraint = False
|
|
inDependencies = False
|
|
for line in lines:
|
|
if line.startswith('dependencies:'):
|
|
inDependencies = True
|
|
elif line.startswith('environment:'):
|
|
foundSdkConstraint = True
|
|
elif line[0].isalpha():
|
|
inDependencies = False
|
|
if line.startswith('version:'):
|
|
version = line[len('version:'):].strip()
|
|
if inDependencies:
|
|
if line.endswith(': any'):
|
|
print(
|
|
'Error in %s: should not use "any" version constraint: %s' %
|
|
(pubspec, line))
|
|
return -1
|
|
|
|
if not version:
|
|
print('Error in %s: did not find package version.' % pubspec)
|
|
return -1
|
|
|
|
if not foundSdkConstraint:
|
|
print('Error in %s: did not find SDK version constraint.' % pubspec)
|
|
return -1
|
|
|
|
tmpDir = tempfile.mkdtemp()
|
|
|
|
#
|
|
# If pubspec.yaml exists, check that the SDK's version constraint is valid
|
|
#
|
|
shutil.copytree(os.path.join(HOME, argv[1]), os.path.join(tmpDir, pkgName))
|
|
|
|
if not os.path.exists(os.path.join(tmpDir, pkgName, 'LICENSE')):
|
|
with open(os.path.join(tmpDir, pkgName, 'LICENSE'), 'w') as licenseFile:
|
|
licenseFile.write(
|
|
'''Copyright 2014, the Dart project authors. All rights reserved.
|
|
Redistribution and use in source and binary forms, with or without
|
|
modification, are permitted provided that the following conditions are
|
|
met:
|
|
|
|
* Redistributions of source code must retain the above copyright
|
|
notice, this list of conditions and the following disclaimer.
|
|
* Redistributions in binary form must reproduce the above
|
|
copyright notice, this list of conditions and the following
|
|
disclaimer in the documentation and/or other materials provided
|
|
with the distribution.
|
|
* Neither the name of Google Inc. nor the names of its
|
|
contributors may be used to endorse or promote products derived
|
|
from this software without specific prior written permission.
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
''')
|
|
|
|
print('publishing version ' + version + ' of ' + argv[1] + ' to pub.\n')
|
|
|
|
# TODO(jmesserly): this code puts things in the pub cache. Useful for testing
|
|
# without actually uploading.
|
|
#cacheDir = os.path.join(
|
|
# os.path.expanduser('~/.pub-cache/hosted/pub.dartlang.org'),
|
|
# pkgName + '-' + version)
|
|
#print 'Moving to ' + cacheDir
|
|
#shutil.move(os.path.join(tmpDir, pkgName), cacheDir)
|
|
|
|
subprocess.call(['pub', 'publish'], cwd=os.path.join(tmpDir, pkgName))
|
|
shutil.rmtree(tmpDir)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(Main(sys.argv))
|