Age | Commit message (Collapse) | Author |
|
When performing distributed builds of machine learning packages, it
would be nice if builders without the required SIMD instructions can
be excluded as build nodes.
Since x86_64 has accumulated a large number of different instruction
set extensions, listing all possible extensions would be unwieldy.
AMD, Intel, Red Hat, and SUSE have recently defined four different
microarchitecture levels that are now part of the x86-64 psABI
supplement and will be used in glibc 2.33:
https://gitlab.com/x86-psABIs/x86-64-ABI
https://lwn.net/Articles/844831/
This change uses libcpuid to detect CPU features and then uses them to
add the supported x86_64 levels to the additional system types. For
example on a Ryzen 3700X:
$ ~/aps/bin/nix -vv --version | grep "Additional system"
Additional system types: i686-linux, x86_64-v1-linux, x86_64-v2-linux, x86_64-v3-linux
|
|
|
|
|
|
Tested against AWS SDK 1.8.99. Fixes #3201.
|
|
Per the comments, the underlying issue is
https://github.com/libarchive/libarchive/issues/1446, knowing this
allows the hack to be much more targetted.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Closes #3256
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This reverts commit 717e821b99797845e1bef47d862f8cb0fb69cfc9. It's
much more convenient to do 'make OPTIMIZE=0'.
|
|
This cuts 'make install -j6' on my laptop from 170s to 134s.
|
|
|
|
|
|
|
|
|
|
Taken from Mesa configure script:
https://github.com/mesa3d/mesa/blob/17.2/configure.ac#L405-L427
|
|
Fixes #3113
|
|
|
|
cd8bc06e8786018ddb16cea4cb10971b63d0efd2, c3db9e6f8fd06d691be04cdd95a6bb21a400481d
This breaks the tarball job: https://hydra.nixos.org/build/95714570
|
|
This should finally allow us to address all cases of build errors due to
differences between release tarballs and building from git.
See also https://github.com/NixOS/nix/issues/506#issuecomment-507312587
|
|
This is to avoid confusion as in commit
a0d29040f79b365598fe75d01f72d29ab538206b.
|
|
Also give a helpful error message on what package the user likely
has to install to make it work.
|
|
Our use of boost::coroutine2 depends on -lboost_context,
which in turn depends on `-lboost_thread`, which in turn depends
on `-lboost_system`.
I suspect that this builds on nix only because of low-level hacks
like NIX_LDFLAGS.
This commit passes the proper linker flags, thus fixing bootstrap
builds on non-nix distributions like Ubuntu 16.04.
With these changes, I can build Nix on Ubuntu 16.04 using:
./bootstrap.sh
./configure --prefix=$HOME/editline-prefix \
--disable-doc-gen \
CXX=g++-7 \
--with-boost=$HOME/boost-prefix \
EDITLINE_CFLAGS=-I$HOME/editline-prefix/include \
EDITLINE_LIBS=-leditline \
LDFLAGS=-L$HOME/editline-prefix/lib
make
where
* g++-7 comes from gcc-7 from
https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test,
* editline 1.14 from https://github.com/troglobit/editline/releases/tag/1.14.0
was installed into `$HOME/editline-prefix`
(because Ubuntu 16.04's `editline` is too old to have the function nix uses),
* boost 1.66 from
https://www.boost.org/doc/libs/1_66_0/more/getting_started/unix-variants.html
was installed into $HOME/boost-prefix (because Ubuntu 16.04 only has 1.58)
|
|
As is normal for autoconf-based projects.
For example, it is a common use case to do
./configure CXXFLAGS=-O0
This did not work for nix until now, because the `CXXFLAGS=` declaration
would unconditionally erase what the user had specified.
The custom `OPTIMIZE` flag is removed, but the default `-O3` is retained;
autoconf would default to `-g -O2` by default otherwise as documented on:
https://www.gnu.org/software/autoconf/manual/autoconf-2.60/html_node/C-Compiler.html
https://www.gnu.org/software/autoconf/manual/autoconf-2.60/html_node/C_002b_002b-Compiler.html
|
|
That was incorrect, because checking the dirent type already requires
a working compiler.
It had the effect that setting e.g. `: ${CFLAGS=""}` before `AC_PROG_CC`
as per `AC_PROG_CC`'s documentation would have no effect, because
`AC_STRUCT_DIRENT_D_TYPE` would automatically set CFLASGS.
(In a followup commit `: ${CFLAGS=""}` will be used, so it's important
to get this working first.)
|
|
And probably many other distributions.
Until now, ./configure would fail silently printing a warning
./configure: line 4621: AX_CXX_COMPILE_STDCXX_17: command not found
and then continuing, later failing with a C++ #error saying that some C++11
feature isn't supported (it didn't even get to the C++17 features).
This is because older distributions don't come with the
`AX_CXX_COMPILE_STDCXX_17` m4 macro.
This commit vendors that macro accordingly.
Now ./configure complains correctly:
configure: error: *** A compiler with support for C++17 language features is required.
On Ubuntu 16.04, ./configure completes if a newer compiler is used, e.g. with
gcc-7 from https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test
using:
./bootstrap.sh
./configure CXX=g++-7 --disable-doc-gen --with-boost=$(nix-build --no-link '<nixpkgs>' -A boost.dev)
|
|
And probably other Linux distributions with long-term support releases.
Also update manual stating what version is needed;
I checked that 1.14 is the oldest version with which current nix compiles,
and added autoconf feature checks for some functions added in that release
that nix uses.
|
|
This turns previous compiler errors complaining about missing files
into proper ./configure time errors telling the user which version
of boost is required.
|
|
The unbalanced single-quotes cause many editor syntax highlighters
to interpret the rest of the file as a string literal, making it easier
to make syntax mistakes in absence of proper highlighting.
|
|
|
|
|
|
This fixes warnings about "structured binding declaration" requiring
"-std=c++1z".
|
|
This tells Nix to not build the shared libraries.
|
|
This reverts commit e8b0efdcc9d6329b299937790360cac8b9b256c9.
|
|
This reverts commit 80f464d9d72839841422f75e78ce725365cc3d71.
|
|
This patch attempts to solve the regression introduced in e8b0efdc
(#2607).
|
|
Remove some bashisms from configure.ac
|
|
The manual reference was commented out, and the sole reference to this
program other than the configure script. Removed both.
|
|
|
|
|
|
"configure.ac" is used to generate "configure", which is supposed to be
run with /bin/sh (as suggested by the shebang line of "configure"). As a
result it is a good idea to remove any /bin/sh-incompatible syntax from
configure.ac. Otherwise, systems that do not use Bash as their /bin/sh
are unable to run "configure" due to syntax errors.
|