mirror of
https://github.com/dart-lang/sdk
synced 2024-11-02 08:20:31 +00:00
b48dc3af7a
Closes https://github.com/dart-lang/sdk/pull/50773 GitOrigin-RevId: 8f729bf80cce3c39b788a61591f14db234297186 Change-Id: I5a07bf96a2f8920560983fda504000c39e598e05 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/276560 Reviewed-by: Srujan Gaddam <srujzs@google.com> Reviewed-by: Jonas Termansen <sortie@google.com> Reviewed-by: Erik Ernst <eernst@google.com>
131 lines
4 KiB
Python
131 lines
4 KiB
Python
#!/usr/bin/env python3
|
|
|
|
# Copyright (c) 2014, 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.
|
|
"""
|
|
Buildbot steps for src tarball generation and debian package generation
|
|
|
|
Package up the src of the dart repo and create a debian package.
|
|
Archive tarball and debian package to google cloud storage.
|
|
"""
|
|
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
|
|
sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'bots'))
|
|
import bot_utils
|
|
|
|
utils = bot_utils.GetUtils()
|
|
|
|
HOST_OS = utils.GuessOS()
|
|
|
|
|
|
def InstallFromDep(builddir):
|
|
for entry in os.listdir(builddir):
|
|
if entry.endswith("_amd64.deb"):
|
|
path = os.path.join(builddir, entry)
|
|
Run(['dpkg', '-i', path])
|
|
|
|
|
|
def UninstallDart():
|
|
Run(['dpkg', '-r', 'dart'])
|
|
|
|
|
|
def CreateDartTestFile(tempdir):
|
|
filename = os.path.join(tempdir, 'test.dart')
|
|
with open(filename, 'w') as f:
|
|
f.write('import "dart:collection";\n\n')
|
|
f.write('void main() {\n')
|
|
f.write(' print("Hello world");\n')
|
|
f.write('}')
|
|
return filename
|
|
|
|
|
|
def Run(command):
|
|
print("Running: %s" % ' '.join(command))
|
|
sys.stdout.flush()
|
|
no_color_env = dict(os.environ)
|
|
no_color_env['TERM'] = 'nocolor'
|
|
subprocess.check_call(command, env=no_color_env)
|
|
|
|
|
|
def TestInstallation(assume_installed=True):
|
|
paths = ['/usr/bin/dart', '/usr/lib/dart/bin/dart']
|
|
for path in paths:
|
|
if os.path.exists(path):
|
|
if not assume_installed:
|
|
print('Assumed not installed, found %s' % path)
|
|
sys.exit(1)
|
|
else:
|
|
if assume_installed:
|
|
print('Assumed installed, but could not find %s' % path)
|
|
sys.exit(1)
|
|
|
|
|
|
def SrcSteps():
|
|
version = utils.GetVersion()
|
|
builddir = os.path.join(bot_utils.DART_DIR, utils.GetBuildDir(HOST_OS),
|
|
'src_and_installation')
|
|
|
|
if not os.path.exists(builddir):
|
|
os.makedirs(builddir)
|
|
tarfilename = 'dart-%s.tar.gz' % version
|
|
tarfile = os.path.join(builddir, tarfilename)
|
|
|
|
print('Validating that we are on debian bullseye')
|
|
args = ['cat', '/etc/os-release']
|
|
(stdout, stderr, exitcode) = bot_utils.run(args)
|
|
if exitcode != 0:
|
|
print("Could not find linux system, exiting")
|
|
sys.exit(1)
|
|
if not "bullseye" in stdout:
|
|
print("Trying to build Debian bits but not on Debian Bullseye")
|
|
print("You can't fix this, please contact dart-engprod@")
|
|
sys.exit(1)
|
|
|
|
print('Building src tarball')
|
|
Run([
|
|
sys.executable, 'tools/linux_dist_support/create_tarball.py',
|
|
'--tar_filename', tarfile
|
|
])
|
|
|
|
print('Building Debian packages')
|
|
Run([
|
|
sys.executable, 'tools/linux_dist_support/create_debian_packages.py',
|
|
'--tar_filename', tarfile, '--out_dir', builddir
|
|
])
|
|
|
|
if os.path.exists('/usr/bin/dart') or os.path.exists(
|
|
'/usr/lib/dart/bin/dart'):
|
|
print("Dart already installed, removing")
|
|
UninstallDart()
|
|
TestInstallation(assume_installed=False)
|
|
|
|
InstallFromDep(builddir)
|
|
TestInstallation(assume_installed=True)
|
|
|
|
# We build the runtime target to get everything we need to test the
|
|
# standalone target.
|
|
Run([
|
|
sys.executable, 'tools/build.py', '--no-goma', '--mode=release',
|
|
'--arch=x64', 'runtime'
|
|
])
|
|
# Copy in the installed binary to avoid polluting /usr/bin (and having to
|
|
# run as root)
|
|
Run(['cp', '/usr/bin/dart', 'out/ReleaseX64/dart'])
|
|
|
|
# Check dart, dart compile js, and dart analyze against a hello world program
|
|
with utils.TempDir() as temp_dir:
|
|
test_file = CreateDartTestFile(temp_dir)
|
|
Run(['/usr/lib/dart/bin/dart', 'compile', 'js', test_file])
|
|
Run(['/usr/lib/dart/bin/dart', 'analyze', test_file])
|
|
Run(['/usr/lib/dart/bin/dart', test_file])
|
|
|
|
UninstallDart()
|
|
TestInstallation(assume_installed=False)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
SrcSteps()
|