diff --git a/Doc/whatsnew/3.7.rst b/Doc/whatsnew/3.7.rst index e5523ff7fd275ec..8751b967cc8260a 100644 --- a/Doc/whatsnew/3.7.rst +++ b/Doc/whatsnew/3.7.rst @@ -657,6 +657,12 @@ Build and C API Changes * Support for building ``--without-threads`` is removed. (Contributed by Antoine Pitrou in :issue:`31370`.). +* Add the ``--enable-use-setup-dist`` configure option to use + Modules/Setup.dist instead of Modules/Setup to build the Makefile. This + allows avoiding the warnings that occur whenever Modules/Setup.dist is older + than Modules/Setup after checking out another branch. (Contributed by Xavier + de Gaye in :issue:`32430`.) + Other CPython Implementation Changes ==================================== diff --git a/Makefile.pre.in b/Makefile.pre.in index 4fe9affe0d25e9e..a15de2a39b7a0b7 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -675,15 +675,17 @@ oldsharedmods: $(SHAREDMODS) Makefile Modules/config.c: Makefile.pre \ $(srcdir)/Modules/config.c.in \ $(MAKESETUP) \ - Modules/Setup \ + @SETUP_FILE@ \ Modules/Setup.local $(SHELL) $(MAKESETUP) -c $(srcdir)/Modules/config.c.in \ -s Modules \ Modules/Setup.local \ - Modules/Setup + @SETUP_FILE@ @mv config.c Modules @echo "The Makefile was updated, you may need to re-run make." +@SETUP_DIST_TARGET@: $(srcdir)/Modules/Setup.dist + @cp $(srcdir)/Modules/Setup.dist @SETUP_DIST_TARGET@ Modules/Setup: $(srcdir)/Modules/Setup.dist @if test -f Modules/Setup; then \ @@ -1450,7 +1452,10 @@ libainstall: @DEF_MAKE_RULE@ python-config $(INSTALL_DATA) Programs/python.o $(DESTDIR)$(LIBPL)/python.o $(INSTALL_DATA) $(srcdir)/Modules/config.c.in $(DESTDIR)$(LIBPL)/config.c.in $(INSTALL_DATA) Makefile $(DESTDIR)$(LIBPL)/Makefile - $(INSTALL_DATA) Modules/Setup $(DESTDIR)$(LIBPL)/Setup + if test -f Modules/Setup; then \ + $(INSTALL_DATA) Modules/Setup $(DESTDIR)$(LIBPL)/Setup; \ + fi + $(INSTALL_DATA) $(srcdir)/Modules/Setup.dist $(DESTDIR)$(LIBPL)/Setup.dist; \ $(INSTALL_DATA) Modules/Setup.local $(DESTDIR)$(LIBPL)/Setup.local $(INSTALL_DATA) Misc/python.pc $(DESTDIR)$(LIBPC)/python-$(VERSION).pc $(INSTALL_SCRIPT) $(srcdir)/Modules/makesetup $(DESTDIR)$(LIBPL)/makesetup diff --git a/Misc/NEWS.d/next/Build/2017-12-30-21-06-40.bpo-32430.LSb5hA.rst b/Misc/NEWS.d/next/Build/2017-12-30-21-06-40.bpo-32430.LSb5hA.rst new file mode 100644 index 000000000000000..2c477f8eb8aae53 --- /dev/null +++ b/Misc/NEWS.d/next/Build/2017-12-30-21-06-40.bpo-32430.LSb5hA.rst @@ -0,0 +1 @@ +Add the ``--enable-use-setup-dist`` configure option diff --git a/Modules/getpath.c b/Modules/getpath.c index 85e737b61d0dc39..d8aded5d196ebf0 100644 --- a/Modules/getpath.c +++ b/Modules/getpath.c @@ -322,7 +322,7 @@ search_for_prefix(const _PyCoreConfig *core_config, /* Check to see if argv[0] is in the build directory */ wcsncpy(prefix, calculate->argv0_path, MAXPATHLEN); prefix[MAXPATHLEN] = L'\0'; - joinpath(prefix, L"Modules/Setup"); + joinpath(prefix, L"Modules/Setup.local"); if (isfile(prefix)) { /* Check VPATH to see if argv0_path is in the build directory. */ vpath = Py_DecodeLocale(VPATH, NULL); diff --git a/configure b/configure index 2728f67b577aa8b..d4f1dd06b7031e0 100755 --- a/configure +++ b/configure @@ -623,6 +623,8 @@ ac_includes_default="\ #endif" ac_subst_vars='LTLIBOBJS +SETUP_DIST_TARGET +SETUP_FILE ENSUREPIP SRCDIRS THREADHEADERS @@ -778,7 +780,6 @@ infodir docdir oldincludedir includedir -runstatedir localstatedir sharedstatedir sysconfdir @@ -838,6 +839,7 @@ with_libc enable_big_digits with_computed_gotos with_ensurepip +enable_use_setup_dist ' ac_precious_vars='build_alias host_alias @@ -890,7 +892,6 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1143,15 +1144,6 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; - -runstatedir | --runstatedir | --runstatedi | --runstated \ - | --runstate | --runstat | --runsta | --runst | --runs \ - | --run | --ru | --r) - ac_prev=runstatedir ;; - -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ - | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ - | --run=* | --ru=* | --r=*) - runstatedir=$ac_optarg ;; - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1289,7 +1281,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir runstatedir + libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1442,7 +1434,6 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1491,6 +1482,7 @@ Optional Features: --disable-ipv6 Disable ipv6 support --enable-big-digits[=BITS] use big digits for Python longs [[BITS=30]] + --enable-use-setup-dist Enable builds from Modules/Setup.dist Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -16659,6 +16651,37 @@ $as_echo "#define HAVE_GETRANDOM 1" >>confdefs.h fi +# Enable builds from Modules/Setup.dist. +SETUP_FILE=Modules/Setup + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-use-setup-dist" >&5 +$as_echo_n "checking for --enable-use-setup-dist... " >&6; } +# Check whether --enable-use-setup-dist was given. +if test "${enable_use_setup_dist+set}" = set; then : + enableval=$enable_use_setup_dist; +if test "$enable_use_setup_dist" != no +then + SETUP_FILE=Modules/Setup.dist + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; }; +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; }; +fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +# Avoid a circular reference when building from the source tree. +SETUP_DIST_TARGET=dummy-setup-dist-target + +if test "$(realpath $srcdir)" != "$(pwd)" -a $SETUP_FILE = Modules/Setup.dist ; then + SETUP_DIST_TARGET=Modules/Setup.dist +fi + + # generate output files ac_config_files="$ac_config_files Makefile.pre Misc/python.pc Misc/python-config.sh" @@ -17963,22 +17986,22 @@ $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi -echo "creating Modules/Setup" >&6 -if test ! -f Modules/Setup +if test ! -f $SETUP_FILE then - cp $srcdir/Modules/Setup.dist Modules/Setup + echo "creating $SETUP_FILE" >&6 + cp $srcdir/Modules/Setup.dist $SETUP_FILE fi -echo "creating Modules/Setup.local" >&6 if test ! -f Modules/Setup.local then + echo "creating Modules/Setup.local" >&6 echo "# Edit this file for local setup changes" >Modules/Setup.local fi -echo "creating Makefile" >&6 +echo "creating Makefile from $SETUP_FILE" >&6 $SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \ -s Modules \ - Modules/Setup.local Modules/Setup + Modules/Setup.local $SETUP_FILE mv config.c Modules if test "$Py_OPT" = 'false' -a "$Py_DEBUG" != 'true'; then diff --git a/configure.ac b/configure.ac index 027109c65d2169c..920f9b3b5d63072 100644 --- a/configure.ac +++ b/configure.ac @@ -5458,27 +5458,49 @@ if test "$have_getrandom" = yes; then [Define to 1 if the getrandom() function is available]) fi +# Enable builds from Modules/Setup.dist. +AC_SUBST(SETUP_FILE, Modules/Setup) +AC_MSG_CHECKING(for --enable-use-setup-dist) +AC_ARG_ENABLE(use-setup-dist, + AS_HELP_STRING([--enable-use-setup-dist], [Enable builds from Modules/Setup.dist]), +[ +if test "$enable_use_setup_dist" != no +then + SETUP_FILE=Modules/Setup.dist + AC_MSG_RESULT(yes); +else + AC_MSG_RESULT(no); +fi], +[AC_MSG_RESULT(no)]) + +# Avoid a circular reference when building from the source tree. +AC_SUBST(SETUP_DIST_TARGET, dummy-setup-dist-target) +if test "$(realpath $srcdir)" != "$(pwd)" -a $SETUP_FILE = Modules/Setup.dist ; then + SETUP_DIST_TARGET=Modules/Setup.dist +fi + + # generate output files AC_CONFIG_FILES(Makefile.pre Misc/python.pc Misc/python-config.sh) AC_CONFIG_FILES([Modules/ld_so_aix], [chmod +x Modules/ld_so_aix]) AC_OUTPUT -echo "creating Modules/Setup" >&AS_MESSAGE_FD -if test ! -f Modules/Setup +if test ! -f $SETUP_FILE then - cp $srcdir/Modules/Setup.dist Modules/Setup + echo "creating $SETUP_FILE" >&AS_MESSAGE_FD + cp $srcdir/Modules/Setup.dist $SETUP_FILE fi -echo "creating Modules/Setup.local" >&AS_MESSAGE_FD if test ! -f Modules/Setup.local then + echo "creating Modules/Setup.local" >&AS_MESSAGE_FD echo "# Edit this file for local setup changes" >Modules/Setup.local fi -echo "creating Makefile" >&AS_MESSAGE_FD +echo "creating Makefile from $SETUP_FILE" >&AS_MESSAGE_FD $SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \ -s Modules \ - Modules/Setup.local Modules/Setup + Modules/Setup.local $SETUP_FILE mv config.c Modules if test "$Py_OPT" = 'false' -a "$Py_DEBUG" != 'true'; then