summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRickard Green <rickard@erlang.org>2021-05-19 16:00:59 +0200
committerRickard Green <rickard@erlang.org>2021-05-19 16:00:59 +0200
commitab141506e527e0f39b218a10a646051135565a69 (patch)
tree7a933a715242a3ba91f41280eab49ff78f3439a6
parent583cba31eb09c14abd0b217fe7ac2e9a60425d51 (diff)
parentfc5cd2d20d430f13d3bc71a96112a685f09c7392 (diff)
downloaderlang-ab141506e527e0f39b218a10a646051135565a69.tar.gz
Merge 'rickard/configure/23/OTP-17398' into rickard/configure/24/OTP-17398
* rickard/configure/OTP-17398: Support for committing of configure scripts
-rw-r--r--.gitignore22
-rw-r--r--HOWTO/INSTALL-ANDROID.md6
-rw-r--r--HOWTO/INSTALL-RASPBERRYPI3.md1
-rw-r--r--HOWTO/INSTALL-WIN32-OLD.md28
-rw-r--r--HOWTO/INSTALL-WIN32.md23
-rw-r--r--HOWTO/INSTALL.md43
-rw-r--r--configure.src14
-rw-r--r--erts/.gitignore2
-rw-r--r--lib/megaco/.gitignore1
-rwxr-xr-xotp_build156
10 files changed, 147 insertions, 149 deletions
diff --git a/.gitignore b/.gitignore
index 06c554353a..e90bf591f3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -147,7 +147,6 @@ JAVADOC-GENERATED
/bootstrap/lib/xmerl
/Makefile
-/configure
/release
@@ -206,29 +205,12 @@ JAVADOC-GENERATED
# Files generated by "./otp_build autoconf"
#
-/lib/configure
-/lib/*/configure
-/lib/common_test/test_server/configure
/lib/configure.in
/make/aclocal.m4
-/make/configure
-/lib/common_test/priv/auxdir/config.guess
-/lib/common_test/priv/auxdir/config.sub
-/lib/common_test/priv/auxdir/install-sh
/lib/erl_interface/aclocal.m4
-/lib/erl_interface/src/auxdir/config.guess
-/lib/erl_interface/src/auxdir/config.sub
-/lib/erl_interface/src/auxdir/install-sh
-/lib/erl_interface/config.h.in
/lib/megaco/aclocal.m4
/lib/odbc/aclocal.m4
-/lib/common_test/test_server/config.guess
-/lib/common_test/test_server/config.sub
-/lib/common_test/test_server/install-sh
/lib/wx/aclocal.m4
-/lib/wx/autoconf/config.guess
-/lib/wx/autoconf/config.sub
-/lib/wx/autoconf/install-sh
/lib/crypto/aclocal.m4
#
@@ -393,10 +375,6 @@ JAVADOC-GENERATED
/system/doc/xml
/system/doc/top/PR.template
-# test_server
-
-/lib/test_server/src/configure
-
# tools
/lib/tools/src/xref_parser.erl
diff --git a/HOWTO/INSTALL-ANDROID.md b/HOWTO/INSTALL-ANDROID.md
index 7d5af0b0ec..ccf9ff700e 100644
--- a/HOWTO/INSTALL-ANDROID.md
+++ b/HOWTO/INSTALL-ANDROID.md
@@ -21,12 +21,6 @@ https://developer.android.com/ndk
### Configure Erlang/OTP ###
-If you are building Erlang/OTP from git, you will need to run this
-to generate the configure scripts.
-
- $ ./otp_build autoconf
-
-
Use the following commands when compiling a 64-bit version.
$ export NDK_ABI_PLAT=android21 # When targeting Android 5.0 Lollipop
diff --git a/HOWTO/INSTALL-RASPBERRYPI3.md b/HOWTO/INSTALL-RASPBERRYPI3.md
index b9cffbe0c5..810195c63a 100644
--- a/HOWTO/INSTALL-RASPBERRYPI3.md
+++ b/HOWTO/INSTALL-RASPBERRYPI3.md
@@ -322,7 +322,6 @@ Uncheck option:
(25)
- $ LC_CTYPE=C && LANG=C && ./otp_build autoconf
$ ./otp_build configure --xcomp-conf=./xcomp/erl-xcomp-armv8-rpi3-linux-gnueabihf.conf
$ ./otp_build boot -a
$ ./otp_build release -a /Volumes/xtools-build-env/otp_22.0
diff --git a/HOWTO/INSTALL-WIN32-OLD.md b/HOWTO/INSTALL-WIN32-OLD.md
index 7e75d847e7..4722771202 100644
--- a/HOWTO/INSTALL-WIN32-OLD.md
+++ b/HOWTO/INSTALL-WIN32-OLD.md
@@ -25,7 +25,7 @@ OpenSSL, in which case you will need to go back to earlier compilers etc.
The procedure described uses either Cygwin, MSYS or MSYS2 as a build
environment. You run the bash shell in Cygwin/MSYS/MSYS2 and use the gnu
-make/configure/autoconf etc to do the build. The emulator C-source code
+configure/make etc to do the build. The emulator C-source code
is, however, mostly compiled with Microsoft Visual C++™, producing a
native Windows binary. This is the same procedure as we use to build the
pre-built binaries. Why we use VC++ and not gcc is explained further in
@@ -107,7 +107,6 @@ This is the short story though, for the experienced and impatient:
the last row):
$ eval `./otp_build env_win32 x64`
- $ ./otp_build autoconf
$ ./otp_build configure
$ ./otp_build boot -a
$ ./otp_build release -a
@@ -312,8 +311,7 @@ tools:
URL: <http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/>
- Make sure to install the basic dev tools, but avoid the MinGW autoconf and
- install the msys one instead.
+ Make sure to install the basic dev tools.
To be able to build the 64bit VM, you will also need the 64bit
MinGW compiler from:
@@ -330,10 +328,10 @@ tools:
URL: <https://msys2.github.io/>
When you've followed the instructions there, you also need to install
- these packages: autoconf, make, perl, and tar. You do so by running
+ these packages: make, perl, and tar. You do so by running
the following in the msys console:
- pacman -S msys/autoconf msys/make msys/perl msys/tar
+ pacman -S msys/make msys/perl msys/tar
You also need a gcc. If you installed the 64 bit MSYS2 you run:
@@ -708,7 +706,6 @@ Building and Installing
Building is easiest using the `otp_build` script:
- $ ./otp_build autoconf # Ignore the warning blob about versions of autoconf
$ ./otp_build configure <optional configure options>
$ ./otp_build boot -a
$ ./otp_build release -a <installation directory>
@@ -719,16 +716,7 @@ in the `<installation directory>`, i.e. `$ERL_TOP/release/win32`.
Lets get into more detail:
-1. `$ ./otp_build autoconf` - This step rebuilds the configure scripts
- to work correctly in your environment. In an ideal world, this
- would not be needed, but alas, we have encountered several
- incompatibilities between our distributed configure scripts (generated
- on a Linux platform) and the Cygwin/MSYS/MSYS2 environment over the
- years. Running autoconf in Cygwin/MSYS/MSYS2 ensures that the configure
- scripts are generated in a compatible way and that they will work well
- in the next step.
-
-2. `$ ./otp_build configure` - This runs the newly generated configure
+1. `$ ./otp_build configure` - This runs the newly generated configure
scripts with options making configure behave nicely. The target machine
type is plainly `win32`, so a lot of the configure-scripts recognize
this awkward target name and behave accordingly. The CC variable also
@@ -737,17 +725,17 @@ Lets get into more detail:
the tests are not needed on Windows, but we thought it best to run the
whole configure anyway.
-3. `$ ./otp_build boot -a` - This uses the bootstrap directory (shipped
+2. `$ ./otp_build boot -a` - This uses the bootstrap directory (shipped
with the source, `$ERL_TOP/bootstrap`) to build a complete OTP
system. When this is done you can run erl from within the source tree;
just type `$ERL_TOP/bin/erl` and you whould have the prompt.
-4. `$ ./otp_build release -a` - Builds a commercial release tree from the
+3. `$ ./otp_build release -a` - Builds a commercial release tree from the
source tree. The default is to put it in `$ERL_TOP/release/win32`. You can
give any directory as parameter (Cygwin style), but it doesn't really
matter if you're going to build a self extracting installer too.
-5. `$ ./otp_build installer_win32` - Creates the self extracting installer executable.
+4. `$ ./otp_build installer_win32` - Creates the self extracting installer executable.
The executable `otp_win32_%OTP-REL%.exe` or `otp_win64_%OTP-REL%.exe` will be placed
in the top directory of the release created in the previous step. If
no release directory is specified, the release is expected to have
diff --git a/HOWTO/INSTALL-WIN32.md b/HOWTO/INSTALL-WIN32.md
index 04d25e9343..523c2fe4ba 100644
--- a/HOWTO/INSTALL-WIN32.md
+++ b/HOWTO/INSTALL-WIN32.md
@@ -13,7 +13,7 @@ The instructions apply to Windows 10 (v.1809 and later) supporting the
WSL.1 (Windows Subsystem for Linux v.1) and using Ubuntu 18.04 release.
The procedure described uses WSL as a build environment. You run the
-bash shell in WSL and use the gnu make/configure/autoconf etc to do
+bash shell in WSL and use the gnu configure/make etc to do
the build. The emulator C-source code is, however, mostly compiled
with Microsoft Visual C++™, producing a native Windows binary. This is
the same procedure as we use to build the pre-built binaries. Why we
@@ -68,7 +68,7 @@ This is the short story though, for the experienced and impatient:
<http://www.erlang.org/download.html>) and unpack with `tar`
to the windows disk for example to: /mnt/c/src/
- * Install mingw-gcc, make and autoconf: `sudo apt install g++-mingw-w64 gcc-mingw-w64 make autoconf`
+ * Install mingw-gcc, and make: `sudo apt install g++-mingw-w64 gcc-mingw-w64 make`
* `$ cd UNPACK_DIR`
@@ -79,7 +79,6 @@ This is the short story though, for the experienced and impatient:
the last row):
$ eval `./otp_build env_win32 x64`
- $ ./otp_build autoconf
$ ./otp_build configure
$ ./otp_build boot -a
$ ./otp_build release -a
@@ -227,7 +226,6 @@ Building and Installing
Building is easiest using the `otp_build` script:
- $ ./otp_build autoconf # Ignore the warning blob about versions of autoconf
$ ./otp_build configure <optional configure options>
$ ./otp_build boot -a
$ ./otp_build release -a <installation directory>
@@ -238,16 +236,7 @@ in the `<installation directory>`, i.e. `$ERL_TOP/release/win32`.
Lets get into more detail:
-1. `$ ./otp_build autoconf` - This step rebuilds the configure scripts
- to work correctly in your environment. In an ideal world, this
- would not be needed, but alas, we have encountered several
- incompatibilities between our distributed configure scripts (generated
- on a Linux platform) and the Cygwin/MSYS/MSYS2/WSL environment over the
- years. Running autoconf in WSL ensures that the configure
- scripts are generated in a compatible way and that they will work well
- in the next step.
-
-2. `$ ./otp_build configure` - This runs the newly generated configure
+1. `$ ./otp_build configure` - This runs the newly generated configure
scripts with options making configure behave nicely. The target machine
type is plainly `win32`, so a lot of the configure-scripts recognize
this awkward target name and behave accordingly. The CC variable also
@@ -256,17 +245,17 @@ Lets get into more detail:
the tests are not needed on Windows, but we thought it best to run the
whole configure anyway.
-3. `$ ./otp_build boot -a` - This uses the bootstrap directory (shipped
+2. `$ ./otp_build boot -a` - This uses the bootstrap directory (shipped
with the source, `$ERL_TOP/bootstrap`) to build a complete OTP
system. When this is done you can run erl from within the source tree;
just type `$ERL_TOP/bin/erl` and you should have the prompt.
-4. `$ ./otp_build release -a` - Builds a commercial release tree from the
+3. `$ ./otp_build release -a` - Builds a commercial release tree from the
source tree. The default is to put it in `$ERL_TOP/release/win32`. You can
give any directory as parameter, but it doesn't really
matter if you're going to build a self extracting installer too.
-5. `$ ./otp_build installer_win32` - Creates the self extracting installer executable.
+4. `$ ./otp_build installer_win32` - Creates the self extracting installer executable.
The executable `otp_win32_%OTP-REL%.exe` or `otp_win64_%OTP-REL%.exe` will be placed
in the top directory of the release created in the previous step. If
no release directory is specified, the release is expected to have
diff --git a/HOWTO/INSTALL.md b/HOWTO/INSTALL.md
index f1027dfe4d..1351e46d96 100644
--- a/HOWTO/INSTALL.md
+++ b/HOWTO/INSTALL.md
@@ -28,7 +28,6 @@ These are the tools you need in order to unpack and build Erlang/OTP.
* GNU `make`
* Compiler -- GNU C Compiler, `gcc` or the C compiler frontend for LLVM, `clang`.
* Perl 5
-* GNU `m4`
* `ncurses`, `termcap`, or `termlib` -- The development headers and
libraries are needed, often known as `ncurses-devel`. Use
`--without-termcap` to build without any of these libraries. Note that
@@ -37,8 +36,7 @@ These are the tools you need in order to unpack and build Erlang/OTP.
#### Building in Git ####
-* GNU `autoconf` of at least version 2.59. Note that `autoconf` is not
- needed when building an unmodified version of the released source.
+Build the same way as when building the unpacked tar file.
#### Building on OS X ####
@@ -109,9 +107,7 @@ The following instructions are for building [the released source tar ball][].
The variable `$ERL_TOP` will be mentioned a lot of times. It refers to
the top directory in the source tree. More information about `$ERL_TOP`
-can be found in the [make and $ERL_TOP][] section below. If you are
-building in git you probably want to take a look at the [Building in Git][]
-section below before proceeding.
+can be found in the [make and $ERL_TOP][] section below.
### Unpacking ###
@@ -131,9 +127,6 @@ Run the following commands to configure the build:
$ ./configure [ options ]
-> *NOTE*: If you are building Erlang/OTP from git you will need to run `./otp_build autoconf` to generate
-> the configure scripts.
-
By default, Erlang/OTP release will be installed in `/usr/local/{bin,lib/erlang}`.
If you for instance don't have the permission to install in the standard location,
you can install Erlang/OTP somewhere else. For example, to install in
@@ -433,6 +426,17 @@ Some of the available `configure` options are:
If you or your system has special requirements please read the `Makefile` for
additional configuration information.
+#### Updating configure scripts ####
+
+Generated `configure` scripts are nowadays included in the git repository.
+
+If you modify any `configure.in` files or the `erts/aclocal.m4` file, you need
+to regenerate `configure` scripts before the changes will take effect. First
+ensure that you have GNU `autoconf` of version 2.69 in your path. Then execute
+`./otp_build update_configure [--no-commit]` in the `$ERL_TOP` directory. The
+`otp_build` script will verify that `autoconf` is of correct version and will
+refuse to update the `configure` scripts if it is of any other version.
+
#### Atomic Memory Operations and the VM ####
The VM with SMP support makes quite a heavy use of atomic memory operations.
@@ -481,26 +485,13 @@ If you've upgraded the source with a patch you may need to clean up from previou
builds before the new build.
Make sure to read the [Pre-built Source Release][] section below before doing a `make clean`.
-#### Within Git ####
-
-When building in a Git working directory you also have to have a GNU `autoconf`
-of at least version 2.59 on your system, because you need to generate the
-`configure` scripts before you can start building.
-
-The `configure` scripts are generated by invoking `./otp_build autoconf` in
-the `$ERL_TOP` directory. The `configure` scripts also have to be regenerated
-when a `configure.in` or `aclocal.m4` file has been modified. Note that when
-checking out a branch a `configure.in` or `aclocal.m4` file may change
-content, and you may therefore have to regenerate the `configure` scripts
-when checking out a branch. Regenerated `configure` scripts imply that you
-have to run `configure` and build again.
-
-> *NOTE*: Running `./otp_build autoconf` is **not** needed when building
-> an unmodified version of the released source.
-
Other useful information can be found at our GitHub wiki:
* <https://github.com/erlang/otp/wiki>
+#### Within Git ####
+
+Build the same way as when building the unpacked tar file.
+
#### OS X (Darwin) ####
Make sure that the command `hostname` returns a valid fully qualified host
diff --git a/configure.src b/configure.src
index c0a195b147..92c9031ff7 100644
--- a/configure.src
+++ b/configure.src
@@ -2,7 +2,7 @@
#
# %CopyrightBegin%
#
-# Copyright Ericsson AB 2018. All Rights Reserved.
+# Copyright Ericsson AB 2018-2021. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -18,6 +18,12 @@
#
# %CopyrightEnd%
#
+# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+# WARNING!
+# DO NOT EDIT the 'configure' file which is automatically generated from
+# 'configure.src'! In order to update 'configure' edit 'configure.src' and
+# execute './otp_build update_configure [--no-commit]'.
+# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
#
# This is a handcrafted wrapper script which runs the actual (autoconf)
# 'configure' scripts in different parts of OTP.
@@ -31,8 +37,6 @@
# otherwise takes forever to run configure...
#
-OTP_VERSION=@OTP_VERSION@
-
unset CDPATH
default_cflags="-g -O2"
@@ -187,7 +191,7 @@ fi
#
root_dir=
-dir_chk_data="$OTP_VERSION"
+dir_chk_data=`date`
if root_dir=`dirname "$0" 2>/dev/null` \
&& test "$root_dir" != "" \
@@ -198,7 +202,7 @@ if root_dir=`dirname "$0" 2>/dev/null` \
else
case "$root_dir" in
/*)
- echo $dir_chk_data > "$root_dir"/config.dir.check.$$ 2>/dev/null
+ echo "$dir_chk_data" > "$root_dir"/config.dir.check.$$ 2>/dev/null
;;
*)
root_dir=
diff --git a/erts/.gitignore b/erts/.gitignore
index 6631fc883e..cc6c270df4 100644
--- a/erts/.gitignore
+++ b/erts/.gitignore
@@ -1,8 +1,6 @@
/Makefile
-/configure
/config.log
/config.status
-/config.h.in
/start_scripts/RELEASES.src
/start_scripts/*.rel
diff --git a/lib/megaco/.gitignore b/lib/megaco/.gitignore
index 3e64dc20f5..82eaaf954d 100644
--- a/lib/megaco/.gitignore
+++ b/lib/megaco/.gitignore
@@ -1,5 +1,4 @@
# Files generated by configure.
-/configure
/config.log
/config.status
diff --git a/otp_build b/otp_build
index 0b309e1587..19dba80542 100755
--- a/otp_build
+++ b/otp_build
@@ -19,6 +19,16 @@
# %CopyrightEnd%
#
+USE_AUTOCONF_VERSION=2.69
+
+aclocal_dirs="make ./lib/crypto ./lib/erl_interface ./lib/odbc ./lib/wx ./lib/megaco"
+autoconf_aux_dirs="./lib/common_test/priv/auxdir ./lib/erl_interface/src/auxdir ./lib/common_test/test_server ./lib/wx/autoconf"
+
+aclocal_master="./erts/aclocal.m4"
+install_sh_master="./erts/autoconf/install-sh"
+config_guess_master="./erts/autoconf/config.guess"
+config_sub_master="./erts/autoconf/config.sub"
+
# Global configuration variables
#
if [ -z "$ONLY_ERTS" ]; then
@@ -73,6 +83,7 @@ usage ()
echo "update_primary [--no-commit] - build and maybe commit a new primary bootstrap"
echo "update_preloaded [--no-commit] - build and maybe commit the preloaded modules"
echo "update_deprecations [--no-commit] - build and maybe commit deprecations"
+ echo "update_configure [--no-commit] - build and maybe commit configure scripts"
}
hide_vars ()
@@ -182,67 +193,102 @@ set_config_flags ()
NL="\
"
-distribute_config_helpers ()
+do_update_configure ()
{
- aclocal_dirs="make ./lib/crypto ./lib/erl_interface ./lib/odbc ./lib/wx ./lib/megaco"
- autoconf_aux_dirs="./lib/common_test/priv/auxdir ./lib/erl_interface/src/auxdir ./lib/common_test/test_server ./lib/wx/autoconf"
-
- aclocal_master="./erts/aclocal.m4"
- install_sh_master="./erts/autoconf/install-sh"
- config_guess_master="./erts/autoconf/config.guess"
- config_sub_master="./erts/autoconf/config.sub"
+ get_do_commit $1
+
+ ac_ver_blob=`autoconf --version`
+ if [ $? -ne 0 ]; then
+ echo "ERROR: Failed to check autoconf version! You need to have autoconf of version $USE_AUTOCONF_VERSION in path." 1>&2
+ exit 1
+ fi
+ ac_ver=`echo $ac_ver_blob | sed "s|[^0-9]*\([0-9][^ \t\n]*\).*|\1|"`
+ case $ac_ver in
+ $USE_AUTOCONF_VERSION)
+ ;;
+ *)
+ echo "ERROR: autoconf of version $ac_ver found in path! You need to have autoconf of version $USE_AUTOCONF_VERSION in path." 1>&2
+ exit 1;;
+ esac
+
+ out_files=
for dir in $aclocal_dirs; do
$install_sh_master -m 644 -t "$dir" "$aclocal_master"
done
+ install_sh=`basename $install_sh_master`
+ config_guess=`basename $config_guess_master`
+ config_sub=`basename $config_sub_master`
+
for dir in $autoconf_aux_dirs; do
$install_sh_master -d "$dir"
$install_sh_master -t "$dir" "$install_sh_master"
+ out_files="$out_files $dir/$install_sh"
$install_sh_master -t "$dir" "$config_guess_master"
+ out_files="$out_files $dir/$config_guess"
$install_sh_master -t "$dir" "$config_sub_master"
+ out_files="$out_files $dir/$config_sub"
done
-}
-
-do_autoconf ()
-{
- distribute_config_helpers
- hide_vars OVERRIDE_TARGET TARGET
- TARGET=$BUILDSYS
- export TARGET
-
- for d in $AUTOCONF_SUBDIRS; do
- file="$d/configure.in"
- [ -f "$file" ] || continue
- echo ""
- [ ! -d "$d/autom4te.cache" ] || {
- echo "=== cleaning $d/autom4te.cache"
- rm -f "$d"/autom4te.cache/*
- }
- [ ! -f "$d/configure" ] || {
- echo "=== cleaning $d/configure"
- rm -f "$d"/configure
- }
-
- echo "=== running autoconf in $d"
- ( cd "$d" && autoconf ) || exit 1
- chdr=`cat "$file" | sed -n "s|.*\(AC_CONFIG_HEADER\).*|\1|p"`
- [ "$chdr" = "AC_CONFIG_HEADER" ] || continue
- echo "=== running autoheader in $d"
- ( cd "$d" && autoheader ) || exit 1
- done
+ hide_vars OVERRIDE_TARGET TARGET
+ TARGET=$BUILDSYS
+ export TARGET
+ for d in $AUTOCONF_SUBDIRS; do
+ file="$d/configure.in"
+ [ -f "$file" ] || continue
echo ""
- echo "=== creating ./configure"
- otp_version=`cat "$ERL_TOP/OTP_VERSION"`
- bootstrap_lib_apps=`echo $bootstrap_apps | sed "s|erts||g"`
- cat "$ERL_TOP/configure.src" \
- | sed "s|@OTP_VERSION@|$otp_version|g;s|@BOOTSTRAP_LIB_APP_DIRS@|$bootstrap_lib_apps|" \
- > "$ERL_TOP/configure"
- chmod +x "$ERL_TOP/configure"
-
- restore_vars OVERRIDE_TARGET TARGET
+ [ ! -d "$d/autom4te.cache" ] || {
+ echo "=== cleaning $d/autom4te.cache"
+ rm -f "$d"/autom4te.cache/*
+ }
+ [ ! -f "$d/configure" ] || {
+ echo "=== cleaning $d/configure"
+ rm -f "$d"/configure
+ }
+
+ echo "=== running autoconf in $d"
+ ( cd "$d" && autoconf ) || exit 1
+ out_files="$out_files $d/configure"
+ chdr=`cat "$file" | sed -n "s|.*\(AC_CONFIG_HEADER\).*|\1|p"`
+ [ "$chdr" = "AC_CONFIG_HEADER" ] || continue
+ echo "=== running autoheader in $d"
+ ( cd "$d" && autoheader ) || exit 1
+ out_files="$out_files $d/config.h.in"
+ done
+
+ echo ""
+ echo "=== creating ./configure"
+ bootstrap_lib_apps=`echo $bootstrap_apps | sed "s|erts||g"`
+ cat "$ERL_TOP/configure.src" \
+ | sed "s|@BOOTSTRAP_LIB_APP_DIRS@|$bootstrap_lib_apps|g" \
+ > "$ERL_TOP/configure"
+ chmod +x "$ERL_TOP/configure"
+ out_files="./configure $out_files"
+
+ restore_vars OVERRIDE_TARGET TARGET
+
+ if [ $do_commit != true ]; then
+ echo "Updated: $out_files"
+ else
+ git add $out_files
+ if [ $? -ne 0 ]; then
+ echo "Failed to stage files for commit" 1>&2
+ exit 1
+ fi
+ git diff --cached --quiet
+ if [ $? -eq 0 ]; then
+ echo "No files changed, so nothing to commit."
+ else
+ git commit --no-verify -m 'Update configure scripts'
+ if [ $? -ne 0 ]; then
+ echo "Failed to commit files" 1>&2
+ exit 1
+ fi
+ echo "Updated configure scripts!"
+ fi
+ fi
}
run_configure ()
@@ -1143,7 +1189,6 @@ export OTP_SMALL_BUILD OTP_TINY_BUILD
TYPE=
case "$1" in
all)
- do_autoconf;
do_configure;
do_boot;
if [ $minus_x_flag = true ]; then
@@ -1155,11 +1200,22 @@ case "$1" in
if [ $minus_x_flag = true ]; then
shift
fi;
- do_autoconf;
do_configure "$@";
do_boot;;
autoconf)
- do_autoconf;;
+ echo ""
+ echo "*** It is not necessary to execute './otp_build autoconf' anymore! ***"
+ echo ""
+ echo "All configure scripts have been committed in the repository and are"
+ echo "therefore always available. If you need to update them, execute"
+ echo "'./otp_build update_configure [--no-commit]'. Ensure that you have"
+ echo "autoconf version $USE_AUTOCONF_VERSION in your PATH before updating the configure"
+ echo "scritps."
+ echo ""
+ echo "The only effect of executing './otp_build autoconf' is printing of this"
+ echo "message."
+ echo ""
+ exit 0;;
configure)
shift;
do_configure "$@";;
@@ -1171,6 +1227,8 @@ case "$1" in
fi;
FLAVOR=$1
do_boot;;
+ update_configure)
+ do_update_configure "$2";;
update_deprecations)
do_deprecations_git "$2";;
update_primary)