diff options
author | Ned Deily <nad@acm.org> | 2014-11-20 10:11:03 (GMT) |
---|---|---|
committer | Ned Deily <nad@acm.org> | 2014-11-20 10:11:03 (GMT) |
commit | 3f1d0b31218f54c94d42659a30580cda3a4e68ea (patch) | |
tree | edb3aa425907d73a94d820667ec657fef6c8d1d9 | |
parent | a86c091a736020d823f1676acec7319bc5493f2c (diff) | |
download | cpython-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.rst | 2 | ||||
-rw-r--r-- | Doc/whatsnew/2.7.rst | 5 | ||||
-rw-r--r-- | Mac/Makefile.in | 29 | ||||
-rw-r--r-- | Makefile.pre.in | 32 | ||||
-rw-r--r-- | Misc/NEWS | 7 | ||||
-rwxr-xr-x | configure | 30 | ||||
-rw-r--r-- | configure.ac | 15 |
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 @@ -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 ------- @@ -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]) |