view contrib/Makefile.python @ 44092:833210fbd900

graftcopies: remove `skip` and `repo` arguments The `skip` argument was added in 2ba6c9b4e0eb (rebase: fix bug that caused transitive copy records to disappear (issue4192), 2014-06-07) in order to fix https://bz.mercurial-scm.org/show_bug.cgi?id=4192. I ran tests at that commit without the `skiprev` argument and the only difference I noticed was that `test-rebase-collapse.t` failed differently, in the call that is now on line 501. Without the `skiprev` argument, that call would end up creating another commit because it tried to record an invalid copy. With the previous patch in this series, such invalid copies are no longer recorded, so it seems we don't need the `skip` argument anymore. I also removed the `repo` argument since that also becomes unused with the removal of the `skip` argument. Differential Revision: https://phab.mercurial-scm.org/D7860
author Martin von Zweigbergk <martinvonz@google.com>
date Fri, 27 Dec 2019 13:47:59 -0800
parents ae68418cc3a1
children
line wrap: on
line source

PYTHONVER=2.7.16
PYTHONNAME=python-
PREFIX=$(HOME)/bin/prefix-$(PYTHONNAME)$(PYTHONVER)
SYMLINKDIR=$(HOME)/bin

help:
	@echo
	@echo 'Make a custom installation of a Python version'
	@echo
	@echo 'Common make parameters:'
	@echo '  PYTHONVER=...    [$(PYTHONVER)]'
	@echo '  PREFIX=...       [$(PREFIX)]'
	@echo '  SYMLINKDIR=...   [$(SYMLINKDIR) creating $(PYTHONNAME)$(PYTHONVER)]'
	@echo
	@echo 'Common make targets:'
	@echo '  python    - install Python $$PYTHONVER in $$PREFIX'
	@echo '  symlink   - create a $$SYMLINKDIR/$(PYTHONNAME)$$PYTHONVER symlink'
	@echo
	@echo 'Example: create a temporary Python installation:'
	@echo '  $$ make -f Makefile.python python PYTHONVER=${PYTHONVER} PREFIX=/tmp/p27'
	@echo '  $$ /tmp/p27/bin/python -V'
	@echo '  Python 2.7'
	@echo
	@echo 'Some external libraries are required for building Python: zlib bzip2 openssl.'
	@echo 'Make sure their development packages are installed systemwide.'
# fedora: yum install zlib-devel bzip2-devel openssl-devel
# debian: apt-get install zlib1g-dev libbz2-dev libssl-dev
	@echo
	@echo 'To build a nice collection of interesting Python versions:'
	@echo '  $$ for v in 2.{6{,.1,.2,.9},7{,.8,.10}}; do'
	@echo '    make -f Makefile.python symlink PYTHONVER=$$v || break; done'
	@echo 'To run a Mercurial test on all these Python versions:'
	@echo '  $$ for py in `cd ~/bin && ls $(PYTHONNAME)2.*`; do'
	@echo '    echo $$py; $$py run-tests.py test-http.t; echo; done'
	@echo

export LANGUAGE=C
export LC_ALL=C

python: $(PREFIX)/bin/python docutils
	printf 'import sys, zlib, bz2, docutils, ssl' | $(PREFIX)/bin/python

PYTHON_SRCDIR=Python-$(PYTHONVER)
PYTHON_SRCFILE=$(PYTHON_SRCDIR).tgz

$(PREFIX)/bin/python:
	[ -f $(PYTHON_SRCFILE) ] || wget http://www.python.org/ftp/python/$(PYTHONVER)/$(PYTHON_SRCFILE) || curl -OL http://www.python.org/ftp/python/$(PYTHONVER)/$(PYTHON_SRCFILE) || [ -f $(PYTHON_SRCFILE) ]
	rm -rf $(PYTHON_SRCDIR)
	tar xf $(PYTHON_SRCFILE)
	# Debian/Ubuntu disables SSLv2,3 the hard way, disable it on old Pythons too
	-sed -i 's,self.*SSLv[23]_method(),0;//\0,g' $(PYTHON_SRCDIR)/Modules/_ssl.c
	# Find multiarch system libraries on Ubuntu and disable fortify error when setting argv
	LDFLAGS="-L/usr/lib/`dpkg-architecture -qDEB_HOST_MULTIARCH`"; \
	BASECFLAGS=-U_FORTIFY_SOURCE; \
	export LDFLAGS BASECFLAGS; \
	cd $(PYTHON_SRCDIR) && ./configure --prefix=$(PREFIX) && make all SVNVERSION=pwd && make install
	printf 'import sys, zlib, bz2, ssl' | $(PREFIX)/bin/python
	rm -rf $(PYTHON_SRCDIR)

DOCUTILSVER=0.12
DOCUTILS_SRCDIR=docutils-$(DOCUTILSVER)
DOCUTILS_SRCFILE=$(DOCUTILS_SRCDIR).tar.gz

docutils: $(PREFIX)/bin/python
	@$(PREFIX)/bin/python -c 'import docutils' || ( set -ex; \
	[ -f $(DOCUTILS_SRCFILE) ] || wget http://downloads.sourceforge.net/project/docutils/docutils/$(DOCUTILSVER)/$(DOCUTILS_SRCFILE) || [ -f $(DOCUTILS_SRCFILE) ]; \
	rm -rf $(DOCUTILS_SRCDIR); \
	tar xf $(DOCUTILS_SRCFILE); \
	cd $(DOCUTILS_SRCDIR) && $(PREFIX)/bin/python setup.py install --prefix=$(PREFIX); \
	$(PREFIX)/bin/python -c 'import docutils'; \
	rm -rf $(DOCUTILS_SRCDIR); )

symlink: python $(SYMLINKDIR)
	ln -sf $(PREFIX)/bin/python $(SYMLINKDIR)/$(PYTHONNAME)$(PYTHONVER)

.PHONY: help python docutils symlink