summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNed Deily <nad@acm.org>2014-11-20 10:11:03 (GMT)
committerNed Deily <nad@acm.org>2014-11-20 10:11:03 (GMT)
commit3f1d0b31218f54c94d42659a30580cda3a4e68ea (patch)
treeedb3aa425907d73a94d820667ec657fef6c8d1d9
parenta86c091a736020d823f1676acec7319bc5493f2c (diff)
downloadcpython-3f1d0b31218f54c94d42659a30580cda3a4e68ea.zip
cpython-3f1d0b31218f54c94d42659a30580cda3a4e68ea.tar.gz
cpython-3f1d0b31218f54c94d42659a30580cda3a4e68ea.tar.bz2
Issue 22878: PEP 477 - "make install" and "make altinstall" integration
The backport of ensurepip to 2.7.9 allows pip to optionally be installed or upgraded using the bundled pip provided by the new ensurepip module. The option can be specified persistently using the configure option: ./configure --with-ensurepip[=upgrade|install|no] It can also be overridden on either the "install" or "altinstall" targets: make [alt]install ENSUREPIP=[upgrade|install|no] For Python 2, the default option is "no" (do not install pip).
-rw-r--r--Doc/using/unix.rst2
-rw-r--r--Doc/whatsnew/2.7.rst5
-rw-r--r--Mac/Makefile.in29
-rw-r--r--Makefile.pre.in32
-rw-r--r--Misc/NEWS7
-rwxr-xr-xconfigure30
-rw-r--r--configure.ac15
7 files changed, 113 insertions, 7 deletions
diff --git a/Doc/using/unix.rst b/Doc/using/unix.rst
index b3e6ced..da4b743 100644
--- a/Doc/using/unix.rst
+++ b/Doc/using/unix.rst
@@ -59,6 +59,8 @@ You can get Python from `OpenCSW <http://www.opencsw.org/>`_. Various versions
of Python are available and can be installed with e.g. ``pkgutil -i python27``.
+.. _building-python-on-unix:
+
Building Python
===============
diff --git a/Doc/whatsnew/2.7.rst b/Doc/whatsnew/2.7.rst
index 4c86f3e..9b02687 100644
--- a/Doc/whatsnew/2.7.rst
+++ b/Doc/whatsnew/2.7.rst
@@ -2605,6 +2605,11 @@ By default, the commands ``pip``, ``pipX`` and ``pipX.Y`` will be installed on
all platforms (where X.Y stands for the version of the Python installation),
along with the ``pip`` Python package and its dependencies.
+For CPython :ref:`source builds on POSIX systems <building-python-on-unix>`,
+the ``make install`` and ``make altinstall`` commands do not bootstrap ``pip``
+by default. This behaviour can be controlled through configure options, and
+overridden through Makefile options.
+
On Windows and Mac OS X, the CPython installers now default to installing
``pip`` along with CPython itself (users may opt out of installing it
during the installation process). Window users will need to opt in to the
diff --git a/Mac/Makefile.in b/Mac/Makefile.in
index a3e00b2..1b9a41f 100644
--- a/Mac/Makefile.in
+++ b/Mac/Makefile.in
@@ -3,9 +3,11 @@
# commandline in that case.
VERSION=@VERSION@
+ENSUREPIP=@ENSUREPIP@
builddir = ..
srcdir=@srcdir@
prefix=@prefix@
+exec_prefix=@exec_prefix@
LIBDEST=$(prefix)/lib/python$(VERSION)
RUNSHARED=@RUNSHARED@
BUILDEXE=@BUILDEXEEXT@
@@ -21,7 +23,7 @@ MACOSX_DEPLOYMENT_TARGET=@CONFIGURE_MACOSX_DEPLOYMENT_TARGET@
export MACOSX_DEPLOYMENT_TARGET
# These are normally glimpsed from the previous set
-bindir=$(prefix)/bin
+BINDIR= @bindir@
PYTHONAPPSDIR=@FRAMEWORKINSTALLAPPSPREFIX@/$(PYTHONFRAMEWORK) $(VERSION)
APPINSTALLDIR=$(prefix)/Resources/Python.app
@@ -92,6 +94,18 @@ ifneq ($(LIPO_32BIT_FLAGS),)
ln -fs "$(prefix)/bin/$${fn}" "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin/$${fn}" ;\
done
endif
+ -if test "x$(ENSUREPIP)" != "xno" ; then \
+ cd "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin" && \
+ for fn in \
+ easy_install \
+ pip \
+ pip2 \
+ ; \
+ do \
+ rm -f $${fn} ;\
+ $(LN) -s $(BINDIR)/$${fn} $${fn} ;\
+ done ;\
+ fi
#
@@ -112,7 +126,18 @@ ifneq ($(LIPO_32BIT_FLAGS),)
ln -fs "$(prefix)/bin/$${fn}" "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin/$${fn}" ;\
done
endif
- ln -fs "$(prefix)/bin/2to3-$(VERSION)" "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin/2to3-$(VERSION)" ;\
+ ln -fs "$(prefix)/bin/2to3-$(VERSION)" "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin/2to3-$(VERSION)"
+ -if test "x$(ENSUREPIP)" != "xno" ; then \
+ cd "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin" && \
+ for fn in \
+ easy_install-$(VERSION) \
+ pip$(VERSION) \
+ ; \
+ do \
+ rm -f $${fn} ;\
+ $(LN) -s $(BINDIR)/$${fn} $${fn} ;\
+ done ;\
+ fi
# By default most tools are installed without a version in their basename, to
# make it easier to install (and use) several python versions side-by-side move
diff --git a/Makefile.pre.in b/Makefile.pre.in
index efa3b518..7f4ec2f 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -144,6 +144,9 @@ OTHER_LIBTOOL_OPT=@OTHER_LIBTOOL_OPT@
# Environment to run shared python without installed libraries
RUNSHARED= @RUNSHARED@
+# ensurepip options
+ENSUREPIP= @ENSUREPIP@
+
# Modes for directories, executables and data files created by the
# install process. Default to user-only-writable for all file types.
DIRMODE= 755
@@ -829,12 +832,31 @@ memtest: all platform
$(TESTPYTHON) $(TESTPROG) $(MEMTESTOPTS)
# Install everything
-install: @FRAMEWORKINSTALLFIRST@ altinstall bininstall maninstall @FRAMEWORKINSTALLLAST@
+install: @FRAMEWORKINSTALLFIRST@ commoninstall bininstall maninstall @FRAMEWORKINSTALLLAST@
+ if test "x$(ENSUREPIP)" != "xno" ; then \
+ case $(ENSUREPIP) in \
+ upgrade) ensurepip="--upgrade" ;; \
+ install|*) ensurepip="" ;; \
+ esac; \
+ $(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
+ $$ensurepip --root=$(DESTDIR)/ ; \
+ fi
# Install almost everything without disturbing previous versions
-altinstall: @FRAMEWORKALTINSTALLFIRST@ altbininstall libinstall inclinstall \
- libainstall altmaninstall \
- sharedinstall oldsharedinstall @FRAMEWORKALTINSTALLLAST@
+altinstall: commoninstall
+ if test "x$(ENSUREPIP)" != "xno" ; then \
+ case $(ENSUREPIP) in \
+ upgrade) ensurepip="--altinstall --upgrade --no-default-pip" ;; \
+ install|*) ensurepip="--altinstall --no-default-pip" ;; \
+ esac; \
+ $(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
+ $$ensurepip --root=$(DESTDIR)/ ; \
+ fi
+
+commoninstall: @FRAMEWORKALTINSTALLFIRST@ \
+ altbininstall libinstall inclinstall libainstall \
+ sharedinstall oldsharedinstall altmaninstall \
+ @FRAMEWORKALTINSTALLLAST@
# Install shared libraries enabled by Setup
DESTDIRS= $(exec_prefix) $(LIBDIR) $(BINLIBDEST) $(DESTSHARED)
@@ -1371,7 +1393,7 @@ Python/thread.o: @THREADHEADERS@
.PHONY: frameworkinstall frameworkinstallframework frameworkinstallstructure
.PHONY: frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools
.PHONY: frameworkaltinstallunixtools recheck autoconf clean clobber distclean
-.PHONY: smelly funny patchcheck touch altmaninstall
+.PHONY: smelly funny patchcheck touch altmaninstall commoninstall
.PHONY: gdbhooks
# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
diff --git a/Misc/NEWS b/Misc/NEWS
index aed73d0..5ecfd20 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -326,6 +326,13 @@ Build
- Issue #22877: PEP 477 - OS X installer now installs pip.
+- Issue #22878: PEP 477 - "make install" and "make altinstall" can now install
+ or upgrade pip, using the bundled pip provided by the backported ensurepip
+ module. A configure option, --with-ensurepip[=upgrade|install|no], is
+ available to set the option for subsequent installs; the default for Python 2
+ in "no" (do not install or upgrade pip). The option can also be set with
+ "make [alt]install ENSUREPIP=[upgrade|install|no]".
+
Windows
-------
diff --git a/configure b/configure
index 4a698f3..68033f5 100755
--- a/configure
+++ b/configure
@@ -624,6 +624,7 @@ ac_includes_default="\
#endif"
ac_subst_vars='LTLIBOBJS
+ENSUREPIP
SRCDIRS
THREADHEADERS
UNICODE_OBJS
@@ -807,6 +808,7 @@ with_libm
with_libc
enable_big_digits
enable_unicode
+with_ensurepip
'
ac_precious_vars='build_alias
host_alias
@@ -1486,6 +1488,9 @@ Optional Packages:
--with-fpectl enable SIGFPE catching
--with-libm=STRING math library
--with-libc=STRING C library
+ --with(out)-ensurepip=[=OPTION]
+ "install" or "upgrade" using bundled pip, default is
+ "no"
Some influential environment variables:
CC C compiler command
@@ -14604,6 +14609,31 @@ done
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
$as_echo "done" >&6; }
+# ensurepip option
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ensurepip" >&5
+$as_echo_n "checking for ensurepip... " >&6; }
+
+# Check whether --with-ensurepip was given.
+if test "${with_ensurepip+set}" = set; then :
+ withval=$with_ensurepip;
+else
+ with_ensurepip=no
+fi
+
+case $with_ensurepip in #(
+ yes|upgrade) :
+ ENSUREPIP=upgrade ;; #(
+ install) :
+ ENSUREPIP=install ;; #(
+ no) :
+ ENSUREPIP=no ;; #(
+ *) :
+ as_fn_error $? "--with-ensurepip=upgrade|install|no" "$LINENO" 5 ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ENSUREPIP" >&5
+$as_echo "$ENSUREPIP" >&6; }
+
+
# generate output files
ac_config_files="$ac_config_files Makefile.pre Modules/Setup.config Misc/python.pc"
diff --git a/configure.ac b/configure.ac
index 16da9f3..94a215e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4552,6 +4552,21 @@ for dir in $SRCDIRS; do
done
AC_MSG_RESULT(done)
+# ensurepip option
+AC_MSG_CHECKING(for ensurepip)
+AC_ARG_WITH(ensurepip,
+ [AS_HELP_STRING([--with(out)-ensurepip=@<:@=OPTION@:>@],
+ ["install" or "upgrade" using bundled pip, default is "no"])],
+ [],
+ [with_ensurepip=no])
+AS_CASE($with_ensurepip,
+ [yes|upgrade],[ENSUREPIP=upgrade],
+ [install],[ENSUREPIP=install],
+ [no],[ENSUREPIP=no],
+ [AC_MSG_ERROR([--with-ensurepip=upgrade|install|no])])
+AC_MSG_RESULT($ENSUREPIP)
+AC_SUBST(ENSUREPIP)
+
# generate output files
AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
AC_CONFIG_FILES([Modules/ld_so_aix], [chmod +x Modules/ld_so_aix])