(partial) Merge #17934: doc: Use CONFIG_SITE variable instead of --prefix option

223b1ba7d90509a47ea07af46f4b9c3b8efbc9f8 doc: Use CONFIG_SITE instead of --prefix (Hennadii Stepanov)

Pull request description:

  The current examples of `--prefix=...` option usage to point `configure` script to appropriate `depends` directory is not [standard](https://www.gnu.org/prep/standards/html_node/Directory-Variables.html). This causes some [confusion](https://github.com/bitcoin/bitcoin/pull/16691) and a bit of inconvenience.

  Consider a CentOS 7 32 bit system. Packages `libdb4-devel`, `libdb4-cxx-devel`, `miniupnpc-devel` and `zeromq-devel` are unavailable from repos. After recommended build with depends:
  ```
  cd depends
  make
  cd ..
  ./autogen.sh
  ./configure --prefix=$PWD/depends/i686-pc-linux-gnu
  make
  ```
  a user is unable to `make install` compiled binaries neither locally (to `~/.local`) nor system-wide (to `/usr/local`) as `--prefix` is set already.

  Meanwhile, the standard approach with using [`config.site`](https://www.gnu.org/software/automake/manual/html_node/config_002esite.html) files allows both possibilities:

  ```
  cd depends
  make
  cd ..
  ./autogen.sh
  CONFIG_SITE=$PWD/depends/i686-pc-linux-gnu/share/config.site ./configure --prefix ~/.local
  make
  make install
  ```

  or

  ```
  CONFIG_SITE=$PWD/depends/i686-pc-linux-gnu/share/config.site ./configure
  make
  sudo make install  # install to /usr/local
  ```

  Moreover, this approach is used in [Gitian descriptors](https://github.com/bitcoin/bitcoin/tree/master/contrib/gitian-descriptors) already.

ACKs for top commit:
  practicalswift:
    ACK 223b1ba7d90509a47ea07af46f4b9c3b8efbc9f8: patch looks correct
  fanquake:
    ACK 223b1ba7d90509a47ea07af46f4b9c3b8efbc9f8

Tree-SHA512: 46d97924f0fc7e95ee4566737cf7c2ae805ca500e5c49af9aa99ecc3acede4b00329bc727a110aa1b62618dfbf5d1ca2234e736f16fbdf96d6ece5f821712f54
This commit is contained in:
fanquake 2021-04-13 21:11:35 +08:00 committed by PastaPastaPasta
parent 51c69d1d0a
commit 0181d2bb15
2 changed files with 11 additions and 8 deletions

View File

@ -12,15 +12,18 @@ For example:
make HOST=x86_64-w64-mingw32 -j4 make HOST=x86_64-w64-mingw32 -j4
**Dash Core's configure script by default will ignore the depends output.** In **Dash Core's `configure` script by default will ignore the depends output.** In
order for it to pick up libraries, tools, and settings from the depends build, order for it to pick up libraries, tools, and settings from the depends build,
you must point it at the appropriate `--prefix` directory generated by the you must set the `CONFIG_SITE` environment variable to point to a `config.site` settings file.
build. In the above example, a prefix dir named x86_64-w64-mingw32 will be In the above example, a file named `depends/x86_64-w64-mingw32/share/config.site` will be
created. To use it for Dash: created. To use it during compilation:
./configure --prefix=$PWD/depends/x86_64-w64-mingw32 CONFIG_SITE=$PWD/depends/x86_64-w64-mingw32/share/config.site ./configure
Common `host-platform-triplets` for cross compilation are: The default install prefix when using `config.site` is `--prefix=depends/<host-platform-triplet>`,
so depends build outputs will be installed in that location.
Common `host-platform-triplet`s for cross compilation are:
- `i686-pc-linux-gnu` for Linux 32 bit - `i686-pc-linux-gnu` for Linux 32 bit
- `x86_64-pc-linux-gnu` for x86 Linux - `x86_64-pc-linux-gnu` for x86 Linux
@ -138,4 +141,3 @@ This is an example command for a default build with no disabled dependencies:
- [description.md](description.md): General description of the depends system - [description.md](description.md): General description of the depends system
- [packages.md](packages.md): Steps for adding packages - [packages.md](packages.md): Steps for adding packages

View File

@ -331,7 +331,8 @@ To build executables for ARM:
cd depends cd depends
make HOST=arm-linux-gnueabihf NO_QT=1 make HOST=arm-linux-gnueabihf NO_QT=1
cd .. cd ..
./configure --prefix=$PWD/depends/arm-linux-gnueabihf --enable-reduce-exports LDFLAGS=-static-libstdc++ ./autogen.sh
CONFIG_SITE=$PWD/depends/arm-linux-gnueabihf/share/config.site ./configure --enable-reduce-exports LDFLAGS=-static-libstdc++
make make