aboutsummaryrefslogtreecommitdiff
path: root/Makefile
AgeCommit message (Collapse)Author
2023-03-10Generate API docs with DoxygenJohn Ericson
The motivation is as stated in issue #7814: even though the the C++ API is internal and unstable, people still want it to be well documented for sake of learning, code review, and other purposes that aren't predicated on it being stable. Fixes #7814 Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
2023-02-24Add ./configure --disable-tests optionRobert Hensing
Building without tests is useful for bootstrapping with a smaller footprint or running the tests in a separate derivation. Otherwise, we do compile and run them. This isn't fine grained as to allow picking `check` but not `installcheck` or vice versa, but it's good enough for now. I've tried to use Nixpkgs' `checkInputs`, but those inputs weren't discovered properly by the configure script. We can emulate its behavior very well though.
2023-02-10Fix building with GCC 9Eelco Dolstra
Nixpkgs on aarch64-linux is currently stuck on GCC 9 (https://github.com/NixOS/nixpkgs/issues/208412) and using gcc11Stdenv doesn't work either. So use c++2a instead of c++20 for now. Unfortunately this means we can't use some C++20 features for now (like std::span).
2022-10-22Build with C++20Graham Bennett
2022-05-25Merge branch 'master' into ltopennae
2022-05-06Add unit tests for libexpr (#5377)Andreas Rammhold
* libexpr: fix builtins.split example The example was previously indicating that multiple whitespaces would be collapsed into a single captured whitespace. That isn't true and was likely a mistake when being documented initially. * Fix segfault on unitilized list when printing value Since lists are just chunks of memory the individual elements in the list might be unitilized when a programming error happens within Nix. In this case the values are null-initialized (at least with Boehm GC) and we can avoid a nullptr deref when printing them. I ran into this issue while ensuring that new expression tests would show the actual value on an assertion failure. This is unlikely to cause any runtime performance regressions as printing values is not really in the hot path (unless the repl is the primary use case). * Add operator<< for ValueTypes * Add libexpr tests This introduces tests for libexpr that evalulate various trivial Nix language expressions and primop invocations that should be good smoke tests wheter or not the implementation is behaving as expected.
2022-03-03enable LTO in optimized buildspennae
gives 2-5% performance improvement across a board of tests. LTO is broken when using clang; some libs link fine while others crash the linker with a segfault in the llvm linker plugin. šŸ™
2022-01-26Stop vendoring nlohmann_jsonEelco Dolstra
2021-11-11Install nlohmann_json headersRobert Hensing
These headers are included by the libexpr, libfetchers, libstore and libutil headers. Considering that these are vendored sources, Nix should expose them, as it is not a good idea for reverse dependencies to rely on a potentially different source that can go out of sync.
2021-10-04Add a test for RefScanSink and clean up the codeEelco Dolstra
Issue #5322.
2021-07-15nlohmann_json: Update to 3.9.1, fix use of internal copyEelco Dolstra
2021-06-23Add a fish completion scriptJan Tojnar
This is only rudimentary support as allowed by `NIX_GET_COMPLETIONS`. In the future, we could use completeā€™s `--wraps` argument to autocomplete arguments for programs after `nix shell -c`.
2021-06-02Install zsh completion scriptChua Hou
2021-01-26Move command plugin interface to libnixcmdShea Levy
2020-12-22Move <nix/fetchurl.nix> into the nix binaryEelco Dolstra
This makes the statically linked nix binary just work, without needing any additional files.
2020-09-22Disable `FORTIFY_SOURCE` when compiling without optimsregnat
Otherwise the build is cluttered with ``` /nix/store/fwpn2f7a4iqszyydw7ag61zlnp6xk5d3-glibc-2.30-dev/include/features.h:382:4: warning: #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Wcpp] 382 | # warning _FORTIFY_SOURCE requires compiling with optimization (-O) | ^~~~~~~ ``` when building with `OPTIMIZE=0`
2020-06-17Merge remote-tracking branch 'origin/master' into flakesEelco Dolstra
2020-06-16StorePath: Rewrite in C++Eelco Dolstra
On nix-env -qa -f '<nixpkgs>', this reduces maximum RSS by 20970 KiB and runtime by 0.8%. This is mostly because we're not parsing the hash part as a hash anymore (just validating that it consists of base-32 characters). Also, replace storePathToHash() by StorePath::hashPart().
2020-05-28Merge remote-tracking branch 'origin/master' into flakesEelco Dolstra
2020-05-10nix: Implement basic bash completionEelco Dolstra
2020-05-08Move unit tests to sr/libutil/tests, use mk make rulesEelco Dolstra
2020-05-06WIP: add unit tests for libutilTobias Pflug
This is a proof on concept to evaluate writing unit tests for Nix using google test (https://github.com/google/googletest). In order to execute tests: $ make unit-tests $ ./unit-tests The Makefile rules for `unit-tests` is a complete hack.
2020-04-22Don't install error-demoEelco Dolstra
2020-04-22Merge branch 'error-format' of https://github.com/bburdette/nixEelco Dolstra
2020-04-07Backport libfetchers from the flakes branchEelco Dolstra
This provides a pluggable mechanism for defining new fetchers. It adds a builtin function 'fetchTree' that generalizes existing fetchers like 'fetchGit', 'fetchMercurial' and 'fetchTarball'. 'fetchTree' takes a set of attributes, e.g. fetchTree { type = "git"; url = "https://example.org/repo.git"; ref = "some-branch"; rev = "abcdef..."; } The existing fetchers are just wrappers around this. Note that the input attributes to fetchTree are the same as flake input specifications and flake lock file entries. All fetchers share a common cache stored in ~/.cache/nix/fetcher-cache-v1.sqlite. This replaces the ad hoc caching mechanisms in fetchGit and download.cc (e.g. ~/.cache/nix/{tarballs,git-revs*}). This also adds support for Git worktrees (c169ea59049f861aaba429f48b828d0820b74d1d).
2020-04-03move out of tests/Ben Burdette
2020-03-30build with makeBen Burdette
2020-03-30Move fetchers from libstore to libfetchersEelco Dolstra
2019-11-26Add some Rust codeEelco Dolstra
2019-11-07Fix Perl bindingsEelco Dolstra
2019-11-07Revert "autoconf: Allow overriding CFLAGS/CXXFLAGS from outside."Eelco Dolstra
This reverts commit 717e821b99797845e1bef47d862f8cb0fb69cfc9. It's much more convenient to do 'make OPTIMIZE=0'.
2019-11-07Precompile headersEelco Dolstra
This cuts 'make install -j6' on my laptop from 170s to 134s.
2019-07-03autoconf: Allow overriding CFLAGS/CXXFLAGS from outside.Niklas HambĆ¼chen
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
2018-10-26Merge all nix-* binaries into nixEelco Dolstra
These are all symlinks to 'nix' now, reducing the installed size by about ~1.7 MiB.
2018-03-20Merge pull request #1997 from dtzWill/fix/cxx14-std-consistencyEelco Dolstra
ask autotools for c++14 support flags, not c++11; don't override later
2018-03-20ask autotools for c++14 support flags, not c++11; don't override laterWill Dietz
2018-03-20Make <nix/buildenv.nix> a builtin builderEelco Dolstra
This avoids sandbox annoyances.
2018-03-14Use boost::format from the boost packageEelco Dolstra
Note that this only requires headers from boost so it doesn't add a runtime dependency. Also, use Nixpkgs 18.03.
2018-02-08Add plugins to make Nix more extensible.Shea Levy
All plugins in plugin-files will be dlopened, allowing them to statically construct instances of the various Register* types Nix supports.
2017-08-19Remove nix-mode.el from Nix.Matthew Bauer
This removes the file nix-mode.el from Nix. The file is now available within the repository https://github.com/NixOS/nix-mode. Fixes #662 Fixes #1040 Fixes #1054 Fixes #1055 Closes #1119 Fixes #1419 NOTE: all of the above should be fixed within NixOS/nix-mode. If one of those hasnā€™t please reopen within NixOS/nix-mode and not within NixOS/nix.
2017-03-31Merge branch 'remove-perl' of https://github.com/shlevy/nixEelco Dolstra
2017-02-08Include config.h implicitly with '-include config.h' in CFLAGSTuomas Tynkkynen
Because config.h can #define things like _FILE_OFFSET_BITS=64 and not every compilation unit includes config.h, we currently compile half of Nix with _FILE_OFFSET_BITS=64 and other half with _FILE_OFFSET_BITS unset. This causes major havoc with the Settings class on e.g. 32-bit ARM, where different compilation units disagree with the struct layout. E.g.: diff --git a/src/libstore/globals.cc b/src/libstore/globals.cc @@ -166,6 +166,8 @@ void Settings::update() _get(useSubstitutes, "build-use-substitutes"); + fprintf(stderr, "at Settings::update(): &useSubstitutes = %p\n", &nix::settings.useSubstitutes); _get(buildUsersGroup, "build-users-group"); diff --git a/src/libstore/remote-store.cc b/src/libstore/remote-store.cc +++ b/src/libstore/remote-store.cc @@ -138,6 +138,8 @@ void RemoteStore::initConnection(Connection & conn) void RemoteStore::setOptions(Connection & conn) { + fprintf(stderr, "at RemoteStore::setOptions(): &useSubstitutes = %p\n", &nix::settings.useSubstitutes); conn.to << wopSetOptions Gave me: at Settings::update(): &useSubstitutes = 0xb6e5c5cb at RemoteStore::setOptions(): &useSubstitutes = 0xb6e5c5c7 That was not a fun one to debug!
2017-02-07Remove perl dependency.Shea Levy
Fixes #341
2017-02-07Merge branch 'nix-copy-closure-c++' of https://github.com/shlevy/nixEelco Dolstra
2017-02-07Remove download-via-sshEelco Dolstra
Replaced by SSHStore.
2017-01-20nix-copy-closure: Implement in C++.Shea Levy
Tests fail currently because the database is not given proper hashes in the VM
2017-01-19Merge pull request #981 from shlevy/build-remote-c++Eelco Dolstra
build-remote: Implement in C++
2017-01-16AutoDeleteArray -> std::unique_ptrEelco Dolstra
Also, switch to C++14 for std::make_unique.
2016-11-10build-remote: Implement in C++Shea Levy
2016-08-31Merge branch 'nix-build-c++'Shea Levy