File: meson_dist_script.py

package info (click to toggle)
gimp 3.0.4-3
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 210,076 kB
  • sloc: ansic: 842,287; lisp: 10,761; python: 10,318; cpp: 7,238; perl: 4,355; sh: 1,043; xml: 963; yacc: 609; lex: 348; javascript: 150; makefile: 43
file content (39 lines) | stat: -rw-r--r-- 1,466 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/usr/bin/env python3
import os
import subprocess
import sys
import shutil

GIT_VERSION_H = sys.argv[1]

MESON_SOURCE_ROOT = os.environ.get('MESON_SOURCE_ROOT', sys.argv[2])
MESON_BUILD_ROOT = os.environ.get('MESON_BUILD_ROOT', sys.argv[3])

# `meson dist` doesn't trigger a build, which is a problem because we
# need to add some configured/built files. The case where we didn't
# build at all is the less annoying (we'd get a failure, which is
# actually acceptable as it warns us). But the case where we would copy
# outdated data is much more insidious (such as wrong INSTALL
# information or wrong git information) as it would be silent.
# See: https://github.com/mesonbuild/meson/issues/10650
# And: https://gitlab.gnome.org/GNOME/gimp/-/issues/7907
# This is why we manually trigger, not only a reconfigure, but also a
# rebuild of the main project before copying data around.

try:
  # INSTALL file is generated at configure time.
  subprocess.run(['meson', '--reconfigure', MESON_SOURCE_ROOT], check=True)
  # git-version.h is generated at build time.
  subprocess.run(['meson', 'compile'], check=True)

  shutil.copy2('INSTALL', os.environ['MESON_DIST_ROOT'])
  install_in = os.path.join(os.environ['MESON_DIST_ROOT'], 'INSTALL.in')
  if os.path.exists(install_in):
    os.remove(install_in)

  shutil.copy2(GIT_VERSION_H, os.environ['MESON_DIST_ROOT'])

except subprocess.CalledProcessError as e:
  sys.exit(e.returncode)
except Exception:
  sys.exit(1)