aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNirbheek Chauhan <nirbheek@centricular.com>2020-02-16 00:17:11 +0530
committerJussi Pakkanen <jpakkane@gmail.com>2020-02-17 18:36:14 +0200
commit8650c763d99de2d2234f0bd7493b480474f7336b (patch)
tree4db25766699b7dfcaf380b26148be150493ff1a4
parent40b58be100af300906e39025276c6576bc4b3559 (diff)
downloadmeson-8650c763d99de2d2234f0bd7493b480474f7336b.zip
meson-8650c763d99de2d2234f0bd7493b480474f7336b.tar.gz
meson-8650c763d99de2d2234f0bd7493b480474f7336b.tar.bz2
mdist: Don't delete builddir on dist failure
Closes https://github.com/mesonbuild/meson/issues/1976
-rw-r--r--mesonbuild/mdist.py57
1 files changed, 31 insertions, 26 deletions
diff --git a/mesonbuild/mdist.py b/mesonbuild/mdist.py
index ef722ea..37ac0b5 100644
--- a/mesonbuild/mdist.py
+++ b/mesonbuild/mdist.py
@@ -177,6 +177,22 @@ def create_dist_hg(dist_name, archives, src_root, bld_root, dist_sub, dist_scrip
output_names.append(zipname)
return output_names
+def run_dist_steps(meson_command, unpacked_src_dir, builddir, installdir, ninja_bin):
+ if subprocess.call(meson_command + ['--backend=ninja', unpacked_src_dir, builddir]) != 0:
+ print('Running Meson on distribution package failed')
+ return 1
+ if subprocess.call([ninja_bin], cwd=builddir) != 0:
+ print('Compiling the distribution package failed')
+ return 1
+ if subprocess.call([ninja_bin, 'test'], cwd=builddir) != 0:
+ print('Running unit tests on the distribution package failed')
+ return 1
+ myenv = os.environ.copy()
+ myenv['DESTDIR'] = installdir
+ if subprocess.call([ninja_bin, 'install'], cwd=builddir, env=myenv) != 0:
+ print('Installing the distribution package failed')
+ return 1
+ return 0
def check_dist(packagename, meson_command, extra_meson_args, bld_root, privdir):
print('Testing distribution package %s' % packagename)
@@ -188,35 +204,24 @@ def check_dist(packagename, meson_command, extra_meson_args, bld_root, privdir):
shutil.rmtree(p)
os.mkdir(p)
ninja_bin = detect_ninja()
- try:
- shutil.unpack_archive(packagename, unpackdir)
- unpacked_files = glob(os.path.join(unpackdir, '*'))
- assert(len(unpacked_files) == 1)
- unpacked_src_dir = unpacked_files[0]
- with open(os.path.join(bld_root, 'meson-info', 'intro-buildoptions.json')) as boptions:
- meson_command += ['-D{name}={value}'.format(**o) for o in json.load(boptions)
- if o['name'] not in ['backend', 'install_umask']]
- meson_command += extra_meson_args
- if subprocess.call(meson_command + ['--backend=ninja', unpacked_src_dir, builddir]) != 0:
- print('Running Meson on distribution package failed')
- return 1
- if subprocess.call([ninja_bin], cwd=builddir) != 0:
- print('Compiling the distribution package failed')
- return 1
- if subprocess.call([ninja_bin, 'test'], cwd=builddir) != 0:
- print('Running unit tests on the distribution package failed')
- return 1
- myenv = os.environ.copy()
- myenv['DESTDIR'] = installdir
- if subprocess.call([ninja_bin, 'install'], cwd=builddir, env=myenv) != 0:
- print('Installing the distribution package failed')
- return 1
- finally:
+ shutil.unpack_archive(packagename, unpackdir)
+ unpacked_files = glob(os.path.join(unpackdir, '*'))
+ assert(len(unpacked_files) == 1)
+ unpacked_src_dir = unpacked_files[0]
+ with open(os.path.join(bld_root, 'meson-info', 'intro-buildoptions.json')) as boptions:
+ meson_command += ['-D{name}={value}'.format(**o) for o in json.load(boptions)
+ if o['name'] not in ['backend', 'install_umask']]
+ meson_command += extra_meson_args
+
+ ret = run_dist_steps(meson_command, unpacked_src_dir, builddir, installdir, ninja_bin)
+ if ret > 0:
+ print('Dist check build directory was {}'.format(builddir))
+ else:
shutil.rmtree(unpackdir)
shutil.rmtree(builddir)
shutil.rmtree(installdir)
- print('Distribution package %s tested' % packagename)
- return 0
+ print('Distribution package %s tested' % packagename)
+ return ret
def determine_archives_to_generate(options):
result = []