Show More
@@ -1,88 +1,103 b'' | |||
|
1 | 1 | #!/usr/bin/make -f |
|
2 | 2 | # Uncomment this to turn on verbose mode. |
|
3 | 3 | # export DH_VERBOSE=1 |
|
4 | 4 | |
|
5 | 5 | # By default we build a .deb where the native components are built with the |
|
6 | 6 | # current "default" version of py3 on the build machine. If you wish to build a |
|
7 | 7 | # .deb that has native components built for multiple versions of py3: |
|
8 | 8 | # |
|
9 | 9 | # 1. install python3.x and python3.x-dev for each version you want |
|
10 | 10 | # 2. set DEB_HG_MULTI_VERSION=1 or DEB_HG_PYTHON_VERSIONS in your environment |
|
11 | 11 | # (if both are set, DEB_HG_PYTHON_VERSIONS has precedence) |
|
12 | 12 | # |
|
13 | 13 | # If you choose `DEB_HG_MULTI_VERSION=1`, it will build for every "supported" |
|
14 | 14 | # version of py3 that's installed on the build machine. This may not be equal to |
|
15 | 15 | # the actual versions that are installed, see the comment above where we set |
|
16 | 16 | # DEB_HG_PYTHON_VERSIONS below. If you choose to set `DEB_HG_PYTHON_VERSIONS` |
|
17 | 17 | # yourself, set it to a space-separated string of python version numbers, like: |
|
18 | 18 | # DEB_HG_PYTHON_VERSIONS="3.7 3.8" make deb |
|
19 | 19 | DEB_HG_MULTI_VERSION?=0 |
|
20 | 20 | |
|
21 | # Set to 1 to make /usr/bin/hg a symlink to chg, and move hg to | |
|
22 | # /usr/lib/mercurial/hg. | |
|
23 | DEB_HG_CHG_BY_DEFAULT?=0 | |
|
24 | ||
|
21 | 25 | CPUS=$(shell cat /proc/cpuinfo | grep -E ^processor | wc -l) |
|
22 | 26 | |
|
23 | 27 | # By default, only build for the version of python3 that the system considers |
|
24 | 28 | # the 'default' (which should be the one invoked by just running 'python3' |
|
25 | 29 | # without a minor version). If DEB_HG_PYTHON_VERSIONS is set, this is ignored. |
|
26 | 30 | ifeq ($(DEB_HG_MULTI_VERSION), 1) |
|
27 | 31 | # If we're building for multiple versions, use all of the "supported" versions |
|
28 | 32 | # on the build machine. Note: the mechanism in use here (`py3versions`) is the |
|
29 | 33 | # recommended one, but it relies on a file written by the python3-minimal |
|
30 | 34 | # package, and this file is not dynamic and does not account for manual |
|
31 | 35 | # installations, just the ones that would be installed by `python3-all`. This |
|
32 | 36 | # includes the `-i` flag, which claims it's to list all "installed" versions, |
|
33 | 37 | # but it doesn't. This was quite confusing, hence this tale of woe. :) |
|
34 | 38 | DEB_HG_PYTHON_VERSIONS?=$(shell py3versions -vs) |
|
35 | 39 | else |
|
36 | 40 | # If we're building for only one version, identify the "default" version on |
|
37 | 41 | # the build machine and use that when building; this is just so that we don't |
|
38 | 42 | # have to duplicate the rules below for multi-version vs. single-version. The |
|
39 | 43 | # shebang line will still be /usr/bin/python3 (no minor version). |
|
40 | 44 | DEB_HG_PYTHON_VERSIONS?=$(shell py3versions -vd) |
|
41 | 45 | endif |
|
42 | 46 | |
|
47 | ifeq ($(DEB_HG_CHG_BY_DEFAULT), 1) | |
|
48 | # Important: the "real" hg must have a 'basename' of 'hg'. Otherwise, hg | |
|
49 | # behaves differently when setting $HG and breaks aliases that use that. | |
|
50 | export HGPATH=/usr/lib/mercurial/hg | |
|
51 | endif | |
|
52 | ||
|
43 | 53 | export HGPYTHON3=1 |
|
44 | 54 | export PYTHON=python3 |
|
45 | 55 | |
|
46 | 56 | %: |
|
47 | 57 | dh $@ --with python3 |
|
48 | 58 | |
|
49 | 59 | # Note: testing can be disabled using the standard `DEB_BUILD_OPTIONS=nocheck` |
|
50 | 60 | override_dh_auto_test: |
|
51 | 61 | http_proxy='' dh_auto_test -- TESTFLAGS="-j$(CPUS)" |
|
52 | 62 | |
|
53 | 63 | override_dh_python3: |
|
54 | 64 | dh_python3 --shebang=/usr/bin/python3 |
|
55 | 65 | |
|
56 | 66 | override_dh_auto_clean: |
|
57 | 67 | $(MAKE) cleanbutpackages |
|
58 | 68 | $(MAKE) -C contrib/chg clean |
|
59 | 69 | |
|
60 | 70 | override_dh_auto_build: |
|
61 | 71 | $(MAKE) all |
|
62 | 72 | $(MAKE) -C contrib/chg all |
|
63 | 73 | |
|
64 | 74 | # Build the native extensions for a specfic python3 version (which must be |
|
65 | 75 | # installed on the build machine). |
|
66 | 76 | install-python%: |
|
67 | 77 | python$* setup.py install --root "$(CURDIR)"/debian/mercurial --install-layout=deb |
|
68 | 78 | |
|
69 | 79 | # Build the final package. This rule has a dependencies section that causes the |
|
70 | 80 | # native extensions to be compiled for every version of python3 listed in |
|
71 | 81 | # DEB_HG_PYTHON_VERSIONS. |
|
72 | 82 | override_dh_auto_install: $(DEB_HG_PYTHON_VERSIONS:%=install-python%) |
|
73 | 83 | # chg |
|
74 | 84 | make -C contrib/chg \ |
|
75 | 85 | DESTDIR="$(CURDIR)"/debian/mercurial \ |
|
76 | 86 | PREFIX=/usr \ |
|
77 | 87 | install |
|
78 | 88 | make install-doc PREFIX="$(CURDIR)"/debian/mercurial/usr |
|
79 | 89 | cp contrib/hg-ssh "$(CURDIR)"/debian/mercurial/usr/bin |
|
80 | 90 | mkdir -p "$(CURDIR)"/debian/mercurial/usr/share/mercurial |
|
81 | 91 | cp contrib/hgk "$(CURDIR)"/debian/mercurial/usr/share/mercurial |
|
82 | 92 | mkdir -p "$(CURDIR)"/debian/mercurial/etc/mercurial/hgrc.d/ |
|
83 | 93 | cp contrib/packaging/debian/*.rc "$(CURDIR)"/debian/mercurial/etc/mercurial/hgrc.d/ |
|
84 | 94 | # completions |
|
85 | 95 | mkdir -p "$(CURDIR)"/debian/mercurial/usr/share/bash-completion/completions |
|
86 | 96 | cp contrib/bash_completion "$(CURDIR)"/debian/mercurial/usr/share/bash-completion/completions/hg |
|
87 | 97 | mkdir -p "$(CURDIR)"/debian/mercurial/usr/share/zsh/vendor-completions |
|
88 | 98 | cp contrib/zsh_completion "$(CURDIR)"/debian/mercurial/usr/share/zsh/vendor-completions/_hg |
|
99 | if [[ "$(DEB_HG_CHG_BY_DEFAULT)" -eq 1 ]]; then \ | |
|
100 | mkdir -p "$(CURDIR)"/debian/mercurial/usr/lib/mercurial; \ | |
|
101 | mv "$(CURDIR)"/debian/mercurial/usr/bin/hg "$(CURDIR)"/debian/mercurial/usr/lib/mercurial/hg; \ | |
|
102 | ln -s chg "$(CURDIR)"/debian/mercurial/usr/bin/hg; \ | |
|
103 | fi |
General Comments 0
You need to be logged in to leave comments.
Login now