contrib/packaging/debian/rules
changeset 45006 36178b5c9aeb
parent 43320 7b638d25b8e4
child 46629 90481550467c
equal deleted inserted replaced
45005:05277278f177 45006:36178b5c9aeb
     1 #!/usr/bin/make -f
     1 #!/usr/bin/make -f
     2 # Uncomment this to turn on verbose mode.
     2 # Uncomment this to turn on verbose mode.
     3 # export DH_VERBOSE=1
     3 # export DH_VERBOSE=1
     4 
     4 
       
     5 # By default we build a .deb where the native components are built with the
       
     6 # current "default" version of py3 on the build machine. If you wish to build a
       
     7 # .deb that has native components built for multiple versions of py3:
       
     8 #
       
     9 #   1. install python3.x and python3.x-dev for each version you want
       
    10 #   2. set DEB_HG_MULTI_VERSION=1 or DEB_HG_PYTHON_VERSIONS in your environment
       
    11 #      (if both are set, DEB_HG_PYTHON_VERSIONS has precedence)
       
    12 #
       
    13 # If you choose `DEB_HG_MULTI_VERSION=1`, it will build for every "supported"
       
    14 # version of py3 that's installed on the build machine. This may not be equal to
       
    15 # the actual versions that are installed, see the comment above where we set
       
    16 # DEB_HG_PYTHON_VERSIONS below. If you choose to set `DEB_HG_PYTHON_VERSIONS`
       
    17 # yourself, set it to a space-separated string of python version numbers, like:
       
    18 #   DEB_HG_PYTHON_VERSIONS="3.7 3.8" make deb
       
    19 DEB_HG_MULTI_VERSION?=0
       
    20 
     5 CPUS=$(shell cat /proc/cpuinfo | grep -E ^processor | wc -l)
    21 CPUS=$(shell cat /proc/cpuinfo | grep -E ^processor | wc -l)
       
    22 
       
    23 # By default, only build for the version of python3 that the system considers
       
    24 # the 'default' (which should be the one invoked by just running 'python3'
       
    25 # without a minor version). If DEB_HG_PYTHON_VERSIONS is set, this is ignored.
       
    26 ifeq ($(DEB_HG_MULTI_VERSION), 1)
       
    27 	# If we're building for multiple versions, use all of the "supported" versions
       
    28 	# on the build machine. Note: the mechanism in use here (`py3versions`) is the
       
    29 	# recommended one, but it relies on a file written by the python3-minimal
       
    30 	# package, and this file is not dynamic and does not account for manual
       
    31 	# installations, just the ones that would be installed by `python3-all`. This
       
    32 	# includes the `-i` flag, which claims it's to list all "installed" versions,
       
    33 	# but it doesn't. This was quite confusing, hence this tale of woe. :)
       
    34 	DEB_HG_PYTHON_VERSIONS?=$(shell py3versions -vs)
       
    35 else
       
    36 	# If we're building for only one version, identify the "default" version on
       
    37 	# the build machine and use that when building; this is just so that we don't
       
    38 	# have to duplicate the rules below for multi-version vs. single-version. The
       
    39 	# shebang line will still be /usr/bin/python3 (no minor version).
       
    40 	DEB_HG_PYTHON_VERSIONS?=$(shell py3versions -vd)
       
    41 endif
     6 
    42 
     7 export HGPYTHON3=1
    43 export HGPYTHON3=1
     8 export PYTHON=python3
    44 export PYTHON=python3
     9 
    45 
    10 %:
    46 %:
    11 	dh $@ --with python3
    47 	dh $@ --with python3
    12 
    48 
       
    49 # Note: testing can be disabled using the standard `DEB_BUILD_OPTIONS=nocheck`
    13 override_dh_auto_test:
    50 override_dh_auto_test:
    14 	http_proxy='' dh_auto_test -- TESTFLAGS="-j$(CPUS)"
    51 	http_proxy='' dh_auto_test -- TESTFLAGS="-j$(CPUS)"
    15 
    52 
    16 override_dh_python3:
    53 override_dh_python3:
    17 	dh_python3 --shebang=/usr/bin/python3
    54 	dh_python3 --shebang=/usr/bin/python3
    22 
    59 
    23 override_dh_auto_build:
    60 override_dh_auto_build:
    24 	$(MAKE) all
    61 	$(MAKE) all
    25 	$(MAKE) -C contrib/chg all
    62 	$(MAKE) -C contrib/chg all
    26 
    63 
    27 override_dh_auto_install:
    64 # Build the native extensions for a specfic python3 version (which must be
    28 	python3 setup.py install --root "$(CURDIR)"/debian/mercurial --install-layout=deb
    65 # installed on the build machine).
       
    66 install-python%:
       
    67 	python$* setup.py install --root "$(CURDIR)"/debian/mercurial --install-layout=deb
       
    68 
       
    69 # Build the final package. This rule has a dependencies section that causes the
       
    70 # native extensions to be compiled for every version of python3 listed in
       
    71 # DEB_HG_PYTHON_VERSIONS.
       
    72 override_dh_auto_install: $(DEB_HG_PYTHON_VERSIONS:%=install-python%)
    29 	# chg
    73 	# chg
    30 	make -C contrib/chg \
    74 	make -C contrib/chg \
    31 		DESTDIR="$(CURDIR)"/debian/mercurial \
    75 		DESTDIR="$(CURDIR)"/debian/mercurial \
    32 		PREFIX=/usr \
    76 		PREFIX=/usr \
    33 		install
    77 		install