|
|
#!/usr/bin/make -f
|
|
|
# Uncomment this to turn on verbose mode.
|
|
|
# export DH_VERBOSE=1
|
|
|
|
|
|
# By default we build a .deb where the native components are built with the
|
|
|
# current "default" version of py3 on the build machine. If you wish to build a
|
|
|
# .deb that has native components built for multiple versions of py3:
|
|
|
#
|
|
|
# 1. install python3.x and python3.x-dev for each version you want
|
|
|
# 2. set DEB_HG_MULTI_VERSION=1 or DEB_HG_PYTHON_VERSIONS in your environment
|
|
|
# (if both are set, DEB_HG_PYTHON_VERSIONS has precedence)
|
|
|
#
|
|
|
# If you choose `DEB_HG_MULTI_VERSION=1`, it will build for every "supported"
|
|
|
# version of py3 that's installed on the build machine. This may not be equal to
|
|
|
# the actual versions that are installed, see the comment above where we set
|
|
|
# DEB_HG_PYTHON_VERSIONS below. If you choose to set `DEB_HG_PYTHON_VERSIONS`
|
|
|
# yourself, set it to a space-separated string of python version numbers, like:
|
|
|
# DEB_HG_PYTHON_VERSIONS="3.7 3.8" make deb
|
|
|
DEB_HG_MULTI_VERSION?=0
|
|
|
|
|
|
# Set to 1 to make /usr/bin/hg a symlink to chg, and move hg to
|
|
|
# /usr/lib/mercurial/hg.
|
|
|
DEB_HG_CHG_BY_DEFAULT?=0
|
|
|
|
|
|
CPUS=$(shell cat /proc/cpuinfo | grep -E ^processor | wc -l)
|
|
|
|
|
|
# By default, only build for the version of python3 that the system considers
|
|
|
# the 'default' (which should be the one invoked by just running 'python3'
|
|
|
# without a minor version). If DEB_HG_PYTHON_VERSIONS is set, this is ignored.
|
|
|
ifeq ($(DEB_HG_MULTI_VERSION), 1)
|
|
|
# If we're building for multiple versions, use all of the "supported" versions
|
|
|
# on the build machine. Note: the mechanism in use here (`py3versions`) is the
|
|
|
# recommended one, but it relies on a file written by the python3-minimal
|
|
|
# package, and this file is not dynamic and does not account for manual
|
|
|
# installations, just the ones that would be installed by `python3-all`. This
|
|
|
# includes the `-i` flag, which claims it's to list all "installed" versions,
|
|
|
# but it doesn't. This was quite confusing, hence this tale of woe. :)
|
|
|
DEB_HG_PYTHON_VERSIONS?=$(shell py3versions -vs)
|
|
|
else
|
|
|
# If we're building for only one version, identify the "default" version on
|
|
|
# the build machine and use that when building; this is just so that we don't
|
|
|
# have to duplicate the rules below for multi-version vs. single-version. The
|
|
|
# shebang line will still be /usr/bin/python3 (no minor version).
|
|
|
DEB_HG_PYTHON_VERSIONS?=$(shell py3versions -vd)
|
|
|
endif
|
|
|
|
|
|
ifeq ($(DEB_HG_CHG_BY_DEFAULT), 1)
|
|
|
# Important: the "real" hg must have a 'basename' of 'hg'. Otherwise, hg
|
|
|
# behaves differently when setting $HG and breaks aliases that use that.
|
|
|
export HGPATH=/usr/lib/mercurial/hg
|
|
|
endif
|
|
|
|
|
|
export HGPYTHON3=1
|
|
|
export PYTHON=python3
|
|
|
|
|
|
%:
|
|
|
dh $@ --with python3
|
|
|
|
|
|
# Note: testing can be disabled using the standard `DEB_BUILD_OPTIONS=nocheck`
|
|
|
override_dh_auto_test:
|
|
|
http_proxy='' dh_auto_test -- TESTFLAGS="-j$(CPUS)"
|
|
|
|
|
|
override_dh_python3:
|
|
|
dh_python3 --shebang=/usr/bin/python3
|
|
|
|
|
|
override_dh_auto_clean:
|
|
|
$(MAKE) cleanbutpackages
|
|
|
$(MAKE) -C contrib/chg clean
|
|
|
|
|
|
override_dh_auto_build:
|
|
|
$(MAKE) all
|
|
|
$(MAKE) -C contrib/chg all
|
|
|
|
|
|
# Build the native extensions for a specfic python3 version (which must be
|
|
|
# installed on the build machine).
|
|
|
install-python%:
|
|
|
python$* setup.py install --root "$(CURDIR)"/debian/mercurial --install-layout=deb
|
|
|
|
|
|
# Build the final package. This rule has a dependencies section that causes the
|
|
|
# native extensions to be compiled for every version of python3 listed in
|
|
|
# DEB_HG_PYTHON_VERSIONS.
|
|
|
override_dh_auto_install: $(DEB_HG_PYTHON_VERSIONS:%=install-python%)
|
|
|
# chg
|
|
|
make -C contrib/chg \
|
|
|
DESTDIR="$(CURDIR)"/debian/mercurial \
|
|
|
PREFIX=/usr \
|
|
|
install
|
|
|
make install-doc PREFIX="$(CURDIR)"/debian/mercurial/usr
|
|
|
cp contrib/hg-ssh "$(CURDIR)"/debian/mercurial/usr/bin
|
|
|
mkdir -p "$(CURDIR)"/debian/mercurial/usr/share/mercurial
|
|
|
cp contrib/hgk "$(CURDIR)"/debian/mercurial/usr/share/mercurial
|
|
|
mkdir -p "$(CURDIR)"/debian/mercurial/etc/mercurial/hgrc.d/
|
|
|
cp contrib/packaging/debian/*.rc "$(CURDIR)"/debian/mercurial/etc/mercurial/hgrc.d/
|
|
|
# completions
|
|
|
mkdir -p "$(CURDIR)"/debian/mercurial/usr/share/bash-completion/completions
|
|
|
cp contrib/bash_completion "$(CURDIR)"/debian/mercurial/usr/share/bash-completion/completions/hg
|
|
|
mkdir -p "$(CURDIR)"/debian/mercurial/usr/share/zsh/vendor-completions
|
|
|
cp contrib/zsh_completion "$(CURDIR)"/debian/mercurial/usr/share/zsh/vendor-completions/_hg
|
|
|
if [ "$(DEB_HG_CHG_BY_DEFAULT)" -eq 1 ]; then \
|
|
|
mkdir -p "$(CURDIR)"/debian/mercurial/usr/lib/mercurial; \
|
|
|
mv "$(CURDIR)"/debian/mercurial/usr/bin/hg "$(CURDIR)"/debian/mercurial/usr/lib/mercurial/hg; \
|
|
|
ln -s chg "$(CURDIR)"/debian/mercurial/usr/bin/hg; \
|
|
|
fi
|
|
|
|