forked from lix-project/lix
Compare commits
21 commits
80bf7ab4a3
...
b62f47ac67
Author | SHA1 | Date | |
---|---|---|---|
kloenk | b62f47ac67 | ||
jade | 4f94531209 | ||
Qyriad | ec768df004 | ||
jade | 611b1de441 | ||
jade | 9c77c62e73 | ||
jade | 24057dcb6a | ||
jade | 1659404626 | ||
jade | e0748377dc | ||
Qyriad | 766e718f67 | ||
Qyriad | 06e65e537b | ||
jade | 8f9bcd20eb | ||
Linus Heckemann | 609b721425 | ||
Pierre Bourdon | 6e59b4b407 | ||
Pierre Bourdon | a3256a9375 | ||
72d85acba4 | |||
Nikodem Rabuliński | 5d3910330d | ||
Nikodem Rabuliński | cc3674ea93 | ||
Qyriad | c55e93ca23 | ||
Qyriad | d374a9908f | ||
raito | b8cb7abcf0 | ||
Qyriad | e54d4c9381 |
|
@ -6,14 +6,14 @@ Read more about us at https://lix.systems.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
On Linux and macOS the easiest way to install Nix is to run the following shell command
|
On Linux and macOS the easiest way to install Lix is to run the following shell command
|
||||||
(as a user other than root):
|
(as a user other than root):
|
||||||
|
|
||||||
```console
|
```console
|
||||||
$ curl -sSf -L https://install.lix.systems/lix | sh -s -- install
|
$ curl -sSf -L https://install.lix.systems/lix | sh -s -- install
|
||||||
```
|
```
|
||||||
|
|
||||||
For systems that **already have Nix installed**, such as NixOS systems, read our [install page](https://lix.systems/install)
|
For systems that **already have a Nix implementation installed**, such as NixOS systems, read our [install page](https://lix.systems/install)
|
||||||
|
|
||||||
## Building And Developing
|
## Building And Developing
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
---
|
---
|
||||||
synopsis: Clang build timing analysis
|
synopsis: Clang build timing analysis
|
||||||
cls: 587
|
cls: 587
|
||||||
|
category: Development
|
||||||
---
|
---
|
||||||
|
|
||||||
We now have Clang build profiling available, which generates Chrome
|
We now have Clang build profiling available, which generates Chrome
|
||||||
tracing files for each compilation unit. To enable it, run `meson configure
|
tracing files for each compilation unit. To enable it, run `meson configure
|
||||||
build -Dprofile-build=enabled` then rerun the compilation.
|
build -Dprofile-build=enabled` in a Clang stdenv (`nix develop
|
||||||
|
.#native-clangStdenvPackages`) then rerun the compilation.
|
||||||
|
|
||||||
If you want to make the build go faster, do a clang build with meson, then run
|
If you want to make the build go faster, do a clang build with meson, then run
|
||||||
`maintainers/buildtime_report.sh build`, then contemplate how to improve the
|
`maintainers/buildtime_report.sh build`, then contemplate how to improve the
|
||||||
|
@ -13,3 +15,8 @@ build time.
|
||||||
|
|
||||||
You can also look at individual object files' traces in
|
You can also look at individual object files' traces in
|
||||||
<https://ui.perfetto.dev>.
|
<https://ui.perfetto.dev>.
|
||||||
|
|
||||||
|
See [the wiki page][improving-build-times-wiki] for more details on how to do
|
||||||
|
this.
|
||||||
|
|
||||||
|
[improving-build-times-wiki]: https://wiki.lix.systems/link/8#bkmrk-page-title
|
15
doc/manual/rl-next/meson.md
Normal file
15
doc/manual/rl-next/meson.md
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
---
|
||||||
|
synopsis: Lix is built with meson
|
||||||
|
# and many more
|
||||||
|
cls: [580, 627, 628, 707, 711, 712, 719]
|
||||||
|
credits: [Qyriad, horrors, jade, 9999years, winter]
|
||||||
|
category: Packaging
|
||||||
|
---
|
||||||
|
|
||||||
|
Lix is built exclusively with the meson build system thanks to a huge team-wide
|
||||||
|
effort, and the legacy `make`/`autoconf` based build system has been removed
|
||||||
|
altogether. This improves maintainability of Lix, enables things like saving
|
||||||
|
20% of compile times with precompiled headers, and generally makes the build
|
||||||
|
less able to produce obscure incremental compilation bugs.
|
||||||
|
|
||||||
|
Non-Nix-based downstream packaging needs rewriting accordingly.
|
|
@ -137,7 +137,7 @@ You can also build Lix for one of the [supported platforms](#platforms).
|
||||||
|
|
||||||
Lix can be built for various platforms, as specified in [`flake.nix`]:
|
Lix can be built for various platforms, as specified in [`flake.nix`]:
|
||||||
|
|
||||||
[`flake.nix`]: https://github.com/nixos/nix/blob/master/flake.nix
|
[`flake.nix`]: https://git.lix.systems/lix-project/lix/src/branch/main/flake.nix
|
||||||
|
|
||||||
- `x86_64-linux`
|
- `x86_64-linux`
|
||||||
- `x86_64-darwin`
|
- `x86_64-darwin`
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
# Obtaining the Source
|
# Obtaining the Source
|
||||||
|
|
||||||
The most recent sources of Nix can be obtained from its [Git
|
The most recent sources of Lix can be obtained from its [Git
|
||||||
repository](https://github.com/NixOS/nix). For example, the following
|
repository](https://git.lix.systems/lix-project/lix). For example, the following
|
||||||
command will check out the latest revision into a directory called
|
command will check out the latest revision into a directory called
|
||||||
`nix`:
|
`nix`:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
$ git clone https://github.com/NixOS/nix
|
$ git clone https://git.lix.systems/lix-project/lix
|
||||||
```
|
```
|
||||||
|
|
||||||
Likewise, specific releases can be obtained from the
|
Likewise, specific releases can be obtained from the
|
||||||
[tags](https://github.com/NixOS/nix/tags) of the repository.
|
[tags](https://git.lix.systems/lix-project/lix/tags) of the repository.
|
||||||
|
|
|
@ -22,7 +22,7 @@ to subsequent chapters.
|
||||||
$ curl -sSf -L https://install.lix.systems/lix | sh -s -- install
|
$ curl -sSf -L https://install.lix.systems/lix | sh -s -- install
|
||||||
```
|
```
|
||||||
|
|
||||||
For systems that **already have Nix installed**, such as NixOS systems, read our [install page](https://lix.systems/install)
|
For systems that **already have a Nix implementation installed**, such as NixOS systems, read our [install page](https://lix.systems/install)
|
||||||
|
|
||||||
The install script will use `sudo`, so make sure you have sufficient rights.
|
The install script will use `sudo`, so make sure you have sufficient rights.
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
pkgs ? import <nixpkgs> { },
|
pkgs ? import <nixpkgs> { },
|
||||||
lib ? pkgs.lib,
|
lib ? pkgs.lib,
|
||||||
name ? "nix",
|
name ? "lix",
|
||||||
tag ? "latest",
|
tag ? "latest",
|
||||||
bundleNixpkgs ? true,
|
bundleNixpkgs ? true,
|
||||||
channelName ? "nixpkgs",
|
channelName ? "nixpkgs",
|
||||||
|
|
14
flake.nix
14
flake.nix
|
@ -59,7 +59,6 @@
|
||||||
# Set to true to build the release notes for the next release.
|
# Set to true to build the release notes for the next release.
|
||||||
buildUnreleasedNotes = true;
|
buildUnreleasedNotes = true;
|
||||||
|
|
||||||
version = lib.fileContents ./.version + versionSuffix;
|
|
||||||
versionSuffix =
|
versionSuffix =
|
||||||
if officialRelease then
|
if officialRelease then
|
||||||
""
|
""
|
||||||
|
@ -149,8 +148,7 @@
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
binaryTarball =
|
binaryTarball = nix: pkgs: pkgs.callPackage ./nix-support/binary-tarball.nix { inherit nix; };
|
||||||
nix: pkgs: pkgs.callPackage ./nix-support/binary-tarball.nix { inherit nix version; };
|
|
||||||
|
|
||||||
overlayFor =
|
overlayFor =
|
||||||
getStdenv: final: prev:
|
getStdenv: final: prev:
|
||||||
|
@ -227,7 +225,6 @@
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
user = rl-next-check "rl-next" ./doc/manual/rl-next;
|
user = rl-next-check "rl-next" ./doc/manual/rl-next;
|
||||||
dev = rl-next-check "rl-next-dev" ./doc/manual/rl-next-dev;
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -240,7 +237,7 @@
|
||||||
system: binaryTarball nixpkgsFor.${system}.native.nix nixpkgsFor.${system}.native
|
system: binaryTarball nixpkgsFor.${system}.native.nix nixpkgsFor.${system}.native
|
||||||
);
|
);
|
||||||
|
|
||||||
# docker image with Nix inside
|
# docker image with Lix inside
|
||||||
dockerImage = lib.genAttrs linux64BitSystems (system: self.packages.${system}.dockerImage);
|
dockerImage = lib.genAttrs linux64BitSystems (system: self.packages.${system}.dockerImage);
|
||||||
|
|
||||||
# API docs for Nix's unstable internal C++ interfaces.
|
# API docs for Nix's unstable internal C++ interfaces.
|
||||||
|
@ -309,7 +306,6 @@
|
||||||
perlBindings = self.hydraJobs.perlBindings.${system};
|
perlBindings = self.hydraJobs.perlBindings.${system};
|
||||||
nixpkgsLibTests = self.hydraJobs.tests.nixpkgsLibTests.${system};
|
nixpkgsLibTests = self.hydraJobs.tests.nixpkgsLibTests.${system};
|
||||||
rl-next = self.hydraJobs.rl-next.${system}.user;
|
rl-next = self.hydraJobs.rl-next.${system}.user;
|
||||||
rl-next-dev = self.hydraJobs.rl-next.${system}.dev;
|
|
||||||
# Will be empty attr set on i686-linux, and filtered out by forAvailableSystems.
|
# Will be empty attr set on i686-linux, and filtered out by forAvailableSystems.
|
||||||
pre-commit = self.hydraJobs.pre-commit.${system};
|
pre-commit = self.hydraJobs.pre-commit.${system};
|
||||||
}
|
}
|
||||||
|
@ -332,11 +328,11 @@
|
||||||
pkgs = nixpkgsFor.${system}.native;
|
pkgs = nixpkgsFor.${system}.native;
|
||||||
image = import ./docker.nix {
|
image = import ./docker.nix {
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
tag = version;
|
tag = pkgs.nix.version;
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
pkgs.runCommand "docker-image-tarball-${version}"
|
pkgs.runCommand "docker-image-tarball-${pkgs.nix.version}"
|
||||||
{ meta.description = "Docker image with Nix for ${system}"; }
|
{ meta.description = "Docker image with Lix for ${system}"; }
|
||||||
''
|
''
|
||||||
mkdir -p $out/nix-support
|
mkdir -p $out/nix-support
|
||||||
image=$out/image.tar.gz
|
image=$out/image.tar.gz
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
import frontmatter
|
import frontmatter
|
||||||
import sys
|
|
||||||
import pathlib
|
import pathlib
|
||||||
import textwrap
|
import textwrap
|
||||||
from typing import Any, Tuple
|
from typing import Any, Tuple
|
||||||
|
@ -27,6 +26,7 @@ CATEGORIES = [
|
||||||
'Improvements',
|
'Improvements',
|
||||||
'Fixes',
|
'Fixes',
|
||||||
'Packaging',
|
'Packaging',
|
||||||
|
'Development',
|
||||||
'Miscellany',
|
'Miscellany',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
31
meson.build
31
meson.build
|
@ -17,6 +17,19 @@
|
||||||
#
|
#
|
||||||
# Finally, src/nix/meson.build defines the Nix command itself, relying on all prior meson files.
|
# Finally, src/nix/meson.build defines the Nix command itself, relying on all prior meson files.
|
||||||
#
|
#
|
||||||
|
# libstore, libexpr, and libfetchers have some special handling to make static builds work.
|
||||||
|
# Their use static constructors for dynamic registration of primops, store backends, etc
|
||||||
|
# gets borked during static link. We can't simply wholesale apply `link_whole :` either,
|
||||||
|
# because these libraries get linked multiple times since Lix's components are transitively
|
||||||
|
# dependent. So instead, each of those libraries have two dependency objects:
|
||||||
|
# liblix{store,expr,fetchers,util} and liblix{store,expr,fetchers,util}_mstatic ("maybe static").
|
||||||
|
# The _mstatic versions should be used in the `dependencies :` arguments to ALL EXECUTABLES
|
||||||
|
# but executables ONLY. When we are not building statically (default_library != 'static'),
|
||||||
|
# they are equivalent. When we are building statically, the _mstatic version will be
|
||||||
|
# `link_whole :` rather than `link_with :`.
|
||||||
|
# FIXME: This hack should be removed when https://git.lix.systems/lix-project/lix/issues/359
|
||||||
|
# is fixed.
|
||||||
|
#
|
||||||
# Unit tests are setup in tests/unit/meson.build, under the test suite "check".
|
# Unit tests are setup in tests/unit/meson.build, under the test suite "check".
|
||||||
#
|
#
|
||||||
# Functional tests are a bit more complicated. Generally they're defined in
|
# Functional tests are a bit more complicated. Generally they're defined in
|
||||||
|
@ -26,7 +39,7 @@
|
||||||
# in the build directory.
|
# in the build directory.
|
||||||
|
|
||||||
project('lix', 'cpp',
|
project('lix', 'cpp',
|
||||||
version : run_command('bash', '-c', 'echo -n $(cat ./.version)$VERSION_SUFFIX', check : true).stdout().strip(),
|
version : run_command('bash', '-c', 'echo -n $(jq -r .version < ./version.json)$VERSION_SUFFIX', check : true).stdout().strip(),
|
||||||
default_options : [
|
default_options : [
|
||||||
'cpp_std=c++2a',
|
'cpp_std=c++2a',
|
||||||
# TODO(Qyriad): increase the warning level
|
# TODO(Qyriad): increase the warning level
|
||||||
|
@ -79,6 +92,8 @@ if not fs.is_absolute(sysconfdir)
|
||||||
sysconfdir = '/' / sysconfdir
|
sysconfdir = '/' / sysconfdir
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
is_static = get_option('default_library') == 'static'
|
||||||
|
|
||||||
# All of this has to go before the rest of the dependency checking,
|
# All of this has to go before the rest of the dependency checking,
|
||||||
# so that internal-api-docs can be built with -Denable-build=false
|
# so that internal-api-docs can be built with -Denable-build=false
|
||||||
|
|
||||||
|
@ -114,6 +129,20 @@ endif
|
||||||
|
|
||||||
cxx = meson.get_compiler('cpp')
|
cxx = meson.get_compiler('cpp')
|
||||||
|
|
||||||
|
|
||||||
|
# clangd breaks when GCC is using precompiled headers lmao
|
||||||
|
# https://git.lix.systems/lix-project/lix/issues/374
|
||||||
|
should_pch = get_option('enable-pch-std')
|
||||||
|
summary('PCH C++ stdlib', should_pch, bool_yn : true)
|
||||||
|
if should_pch
|
||||||
|
# Unlike basically everything else that takes a file, Meson requires the arguments to
|
||||||
|
# cpp_pch : to be strings and doesn't accept files(). So absolute path it is.
|
||||||
|
cpp_pch = [meson.project_source_root() / 'src/pch/precompiled-headers.hh']
|
||||||
|
else
|
||||||
|
cpp_pch = []
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
# Translate some historical and Mesony CPU names to Lixy CPU names.
|
# Translate some historical and Mesony CPU names to Lixy CPU names.
|
||||||
# FIXME(Qyriad): the 32-bit x86 code is not tested right now, because cross compilation for Lix
|
# FIXME(Qyriad): the 32-bit x86 code is not tested right now, because cross compilation for Lix
|
||||||
# to those architectures is currently broken for other reasons, namely:
|
# to those architectures is currently broken for other reasons, namely:
|
||||||
|
|
|
@ -64,3 +64,7 @@ option('internal-api-docs', type : 'feature', value : 'auto',
|
||||||
option('profile-dir', type : 'string', value : 'etc/profile.d',
|
option('profile-dir', type : 'string', value : 'etc/profile.d',
|
||||||
description : 'the path to install shell profile files',
|
description : 'the path to install shell profile files',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
option('enable-pch-std', type : 'boolean', value : true,
|
||||||
|
description : 'whether to use precompiled headers for C++\'s standard library (breaks clangd if you\'re using GCC)',
|
||||||
|
)
|
||||||
|
|
|
@ -63,7 +63,7 @@ pre-commit-run {
|
||||||
files = ''^doc/manual/(change-authors\.yml|rl-next(-dev)?)'';
|
files = ''^doc/manual/(change-authors\.yml|rl-next(-dev)?)'';
|
||||||
pass_filenames = false;
|
pass_filenames = false;
|
||||||
entry = ''
|
entry = ''
|
||||||
${lib.getExe pkgs.build-release-notes} --change-authors doc/manual/change-authors.yml doc/manual/rl-next doc/manual/rl-next-dev
|
${lib.getExe pkgs.build-release-notes} --change-authors doc/manual/change-authors.yml doc/manual/rl-next
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
change-authors-sorted = {
|
change-authors-sorted = {
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
cacert,
|
cacert,
|
||||||
nix,
|
nix,
|
||||||
system,
|
system,
|
||||||
version,
|
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
installerClosureInfo = buildPackages.closureInfo {
|
installerClosureInfo = buildPackages.closureInfo {
|
||||||
|
@ -13,12 +12,12 @@ let
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
meta.description = "Distribution-independent Nix bootstrap binaries for ${system}";
|
meta.description = "Distribution-independent Lix bootstrap binaries for ${system}";
|
||||||
in
|
in
|
||||||
buildPackages.runCommand "nix-binary-tarball-${version}" { inherit meta; } ''
|
buildPackages.runCommand "lix-binary-tarball-${nix.version}" { inherit meta; } ''
|
||||||
cp ${installerClosureInfo}/registration $TMPDIR/reginfo
|
cp ${installerClosureInfo}/registration $TMPDIR/reginfo
|
||||||
|
|
||||||
dir=nix-${version}-${system}
|
dir=lix-${nix.version}-${system}
|
||||||
fn=$out/$dir.tar.xz
|
fn=$out/$dir.tar.xz
|
||||||
mkdir -p $out/nix-support
|
mkdir -p $out/nix-support
|
||||||
echo "file binary-dist $fn" >> $out/nix-support/hydra-build-products
|
echo "file binary-dist $fn" >> $out/nix-support/hydra-build-products
|
||||||
|
|
31
package.nix
31
package.nix
|
@ -43,6 +43,7 @@
|
||||||
toml11,
|
toml11,
|
||||||
util-linuxMinimal ? utillinuxMinimal,
|
util-linuxMinimal ? utillinuxMinimal,
|
||||||
utillinuxMinimal ? null,
|
utillinuxMinimal ? null,
|
||||||
|
xonsh-unwrapped,
|
||||||
xz,
|
xz,
|
||||||
|
|
||||||
busybox-sandbox-shell,
|
busybox-sandbox-shell,
|
||||||
|
@ -50,7 +51,7 @@
|
||||||
# internal fork of nix-doc providing :doc in the repl
|
# internal fork of nix-doc providing :doc in the repl
|
||||||
lix-doc ? __forDefaults.lix-doc,
|
lix-doc ? __forDefaults.lix-doc,
|
||||||
|
|
||||||
pname ? "nix",
|
pname ? "lix",
|
||||||
versionSuffix ? "",
|
versionSuffix ? "",
|
||||||
officialRelease ? false,
|
officialRelease ? false,
|
||||||
# Set to true to build the release notes for the next release.
|
# Set to true to build the release notes for the next release.
|
||||||
|
@ -87,7 +88,8 @@ let
|
||||||
inherit (lib) fileset;
|
inherit (lib) fileset;
|
||||||
inherit (stdenv) hostPlatform buildPlatform;
|
inherit (stdenv) hostPlatform buildPlatform;
|
||||||
|
|
||||||
version = lib.fileContents ./.version + versionSuffix;
|
versionJson = builtins.fromJSON (builtins.readFile ./version.json);
|
||||||
|
version = versionJson.version + versionSuffix;
|
||||||
|
|
||||||
aws-sdk-cpp-nix = aws-sdk-cpp.override {
|
aws-sdk-cpp-nix = aws-sdk-cpp.override {
|
||||||
apis = [
|
apis = [
|
||||||
|
@ -137,7 +139,7 @@ let
|
||||||
# that would interfere with repo semantics.
|
# that would interfere with repo semantics.
|
||||||
baseFiles = fileset.fileFilter (f: f.name != ".gitignore") ./.;
|
baseFiles = fileset.fileFilter (f: f.name != ".gitignore") ./.;
|
||||||
|
|
||||||
configureFiles = fileset.unions [ ./.version ];
|
configureFiles = fileset.unions [ ./version.json ];
|
||||||
|
|
||||||
topLevelBuildFiles = fileset.unions ([
|
topLevelBuildFiles = fileset.unions ([
|
||||||
./meson.build
|
./meson.build
|
||||||
|
@ -408,6 +410,17 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
# default LLVM is newer.
|
# default LLVM is newer.
|
||||||
clang-tools_llvm = clang-tools.override { inherit llvmPackages; };
|
clang-tools_llvm = clang-tools.override { inherit llvmPackages; };
|
||||||
|
|
||||||
|
pythonPackages = (
|
||||||
|
p: [
|
||||||
|
p.yapf
|
||||||
|
p.python-frontmatter
|
||||||
|
(p.toPythonModule xonsh-unwrapped)
|
||||||
|
]
|
||||||
|
);
|
||||||
|
# FIXME: This will explode when we switch to 24.05 if we don't backport
|
||||||
|
# https://github.com/NixOS/nixpkgs/pull/317636 first
|
||||||
|
pythonEnv = python3.withPackages pythonPackages;
|
||||||
|
|
||||||
# pkgs.mkShell uses pkgs.stdenv by default, regardless of inputsFrom.
|
# pkgs.mkShell uses pkgs.stdenv by default, regardless of inputsFrom.
|
||||||
actualMkShell = mkShell.override { inherit stdenv; };
|
actualMkShell = mkShell.override { inherit stdenv; };
|
||||||
in
|
in
|
||||||
|
@ -424,13 +437,19 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
# For Meson to find Boost.
|
# For Meson to find Boost.
|
||||||
env = finalAttrs.env;
|
env = finalAttrs.env;
|
||||||
|
|
||||||
# I guess this is necessary because mesonFlags to mkDerivation doesn't propagate in inputsFrom,
|
mesonFlags =
|
||||||
# which only propagates stuff set in hooks? idk.
|
# I guess this is necessary because mesonFlags to mkDerivation doesn't propagate in inputsFrom,
|
||||||
inherit (finalAttrs) mesonFlags;
|
# which only propagates stuff set in hooks? idk.
|
||||||
|
finalAttrs.mesonFlags
|
||||||
|
# Clangd breaks when GCC is using precompiled headers, so for the devshell specifically
|
||||||
|
# we make precompiled C++ stdlib conditional on using Clang.
|
||||||
|
# https://git.lix.systems/lix-project/lix/issues/374
|
||||||
|
++ [ (lib.mesonBool "enable-pch-std" stdenv.cc.isClang) ];
|
||||||
|
|
||||||
packages =
|
packages =
|
||||||
lib.optional (stdenv.cc.isClang && hostPlatform == buildPlatform) clang-tools_llvm
|
lib.optional (stdenv.cc.isClang && hostPlatform == buildPlatform) clang-tools_llvm
|
||||||
++ [
|
++ [
|
||||||
|
pythonEnv
|
||||||
just
|
just
|
||||||
nixfmt
|
nixfmt
|
||||||
# Load-bearing order. Must come before clang-unwrapped below, but after clang_tools above.
|
# Load-bearing order. Must come before clang-unwrapped below, but after clang_tools above.
|
||||||
|
|
|
@ -29,7 +29,7 @@ NEED_PROG(xz, xz)
|
||||||
AC_MSG_CHECKING([whether Perl is recent enough])
|
AC_MSG_CHECKING([whether Perl is recent enough])
|
||||||
if ! $perl -e 'open(FOO, "-|", "true"); while (<FOO>) { print; }; close FOO or die;'; then
|
if ! $perl -e 'open(FOO, "-|", "true"); while (<FOO>) { print; }; close FOO or die;'; then
|
||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT(no)
|
||||||
AC_MSG_ERROR([Your Perl version is too old. Nix requires Perl 5.8.0 or newer.])
|
AC_MSG_ERROR([Your Perl version is too old. Lix requires Perl 5.8.0 or newer.])
|
||||||
fi
|
fi
|
||||||
AC_MSG_RESULT(yes)
|
AC_MSG_RESULT(yes)
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ perl.pkgs.toPerlModule (
|
||||||
src = fileset.toSource {
|
src = fileset.toSource {
|
||||||
root = ../.;
|
root = ../.;
|
||||||
fileset = fileset.unions ([
|
fileset = fileset.unions ([
|
||||||
../.version
|
../version.json
|
||||||
./lib
|
./lib
|
||||||
./meson.build
|
./meson.build
|
||||||
]);
|
]);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
project('lix-perl', 'cpp',
|
project('lix-perl', 'cpp',
|
||||||
version : run_command('bash', '-c', 'echo -n $(cat ../.version)$VERSION_SUFFIX', check : true).stdout().strip(),
|
version : run_command('bash', '-c', 'echo -n $(jq -r .version < ../version.json)$VERSION_SUFFIX', check : true).stdout().strip(),
|
||||||
default_options : [
|
default_options : [
|
||||||
'cpp_std=c++2a',
|
'cpp_std=c++2a',
|
||||||
# TODO(Qyriad): increase the warning level
|
# TODO(Qyriad): increase the warning level
|
||||||
|
|
|
@ -45,7 +45,7 @@ MixEvalArgs::MixEvalArgs()
|
||||||
-I /etc/nixos
|
-I /etc/nixos
|
||||||
```
|
```
|
||||||
|
|
||||||
will cause Nix to look for paths relative to `/home/eelco/Dev` and
|
will cause Lix to look for paths relative to `/home/eelco/Dev` and
|
||||||
`/etc/nixos`, in that order. This is equivalent to setting the
|
`/etc/nixos`, in that order. This is equivalent to setting the
|
||||||
`NIX_PATH` environment variable to
|
`NIX_PATH` environment variable to
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ MixEvalArgs::MixEvalArgs()
|
||||||
-I /etc/nixos
|
-I /etc/nixos
|
||||||
```
|
```
|
||||||
|
|
||||||
will cause Nix to search for `<nixpkgs/path>` in
|
will cause Lix to search for `<nixpkgs/path>` in
|
||||||
`/home/eelco/Dev/nixpkgs-branch/path` and `/etc/nixos/nixpkgs/path`.
|
`/home/eelco/Dev/nixpkgs-branch/path` and `/etc/nixos/nixpkgs/path`.
|
||||||
|
|
||||||
If a path in the Nix search path starts with `http://` or `https://`,
|
If a path in the Nix search path starts with `http://` or `https://`,
|
||||||
|
@ -73,7 +73,7 @@ MixEvalArgs::MixEvalArgs()
|
||||||
-I nixpkgs=https://github.com/NixOS/nixpkgs/archive/master.tar.gz
|
-I nixpkgs=https://github.com/NixOS/nixpkgs/archive/master.tar.gz
|
||||||
```
|
```
|
||||||
|
|
||||||
tells Nix to download and use the current contents of the `master`
|
tells Lix to download and use the current contents of the `master`
|
||||||
branch in the `nixpkgs` repository.
|
branch in the `nixpkgs` repository.
|
||||||
|
|
||||||
The URLs of the tarballs from the official `nixos.org` channels
|
The URLs of the tarballs from the official `nixos.org` channels
|
||||||
|
|
|
@ -54,7 +54,7 @@ libcmd = library(
|
||||||
nlohmann_json,
|
nlohmann_json,
|
||||||
lix_doc
|
lix_doc
|
||||||
],
|
],
|
||||||
cpp_pch : ['../pch/precompiled-headers.hh'],
|
cpp_pch : cpp_pch,
|
||||||
install : true,
|
install : true,
|
||||||
# FIXME(Qyriad): is this right?
|
# FIXME(Qyriad): is this right?
|
||||||
install_rpath : libdir,
|
install_rpath : libdir,
|
||||||
|
|
|
@ -71,8 +71,8 @@ struct EvalSettings : Config
|
||||||
Setting<bool> enableImportFromDerivation{
|
Setting<bool> enableImportFromDerivation{
|
||||||
this, true, "allow-import-from-derivation",
|
this, true, "allow-import-from-derivation",
|
||||||
R"(
|
R"(
|
||||||
By default, Nix allows you to `import` from a derivation, allowing
|
By default, Lix allows you to `import` from a derivation, allowing
|
||||||
building at evaluation time. With this option set to false, Nix will
|
building at evaluation time. With this option set to false, Lix will
|
||||||
throw an error when evaluating an expression that uses this feature,
|
throw an error when evaluating an expression that uses this feature,
|
||||||
allowing users to ensure their evaluation will not require any
|
allowing users to ensure their evaluation will not require any
|
||||||
builds to take place.
|
builds to take place.
|
||||||
|
|
|
@ -145,7 +145,7 @@ libexpr = library(
|
||||||
include_directories : [
|
include_directories : [
|
||||||
'../libmain',
|
'../libmain',
|
||||||
],
|
],
|
||||||
cpp_pch : ['../pch/precompiled-headers.hh'],
|
cpp_pch : cpp_pch,
|
||||||
install : true,
|
install : true,
|
||||||
# FIXME(Qyriad): is this right?
|
# FIXME(Qyriad): is this right?
|
||||||
install_rpath : libdir,
|
install_rpath : libdir,
|
||||||
|
@ -162,6 +162,16 @@ liblixexpr = declare_dependency(
|
||||||
link_with : libexpr,
|
link_with : libexpr,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# FIXME: remove when https://git.lix.systems/lix-project/lix/issues/359 is fixed.
|
||||||
|
if is_static
|
||||||
|
liblixexpr_mstatic = declare_dependency(
|
||||||
|
include_directories : include_directories('.'),
|
||||||
|
link_whole : libexpr,
|
||||||
|
)
|
||||||
|
else
|
||||||
|
liblixexpr_mstatic = liblixexpr
|
||||||
|
endif
|
||||||
|
|
||||||
# FIXME: not using the pkg-config module because it creates way too many deps
|
# FIXME: not using the pkg-config module because it creates way too many deps
|
||||||
# while meson migration is in progress, and we want to not include boost here
|
# while meson migration is in progress, and we want to not include boost here
|
||||||
configure_file(
|
configure_file(
|
||||||
|
|
|
@ -51,7 +51,7 @@ static void runFetchClosureWithRewrite(EvalState & state, const PosIdx pos, Stor
|
||||||
throw Error({
|
throw Error({
|
||||||
.msg = HintFmt(
|
.msg = HintFmt(
|
||||||
"The 'toPath' value '%s' is input-addressed, so it can't possibly be the result of rewriting to a content-addressed path.\n\n"
|
"The 'toPath' value '%s' is input-addressed, so it can't possibly be the result of rewriting to a content-addressed path.\n\n"
|
||||||
"Set 'toPath' to an empty string to make Nix report the correct content-addressed path.",
|
"Set 'toPath' to an empty string to make Lix report the correct content-addressed path.",
|
||||||
state.store->printStorePath(toPath)),
|
state.store->printStorePath(toPath)),
|
||||||
.pos = state.positions[pos]
|
.pos = state.positions[pos]
|
||||||
});
|
});
|
||||||
|
@ -271,7 +271,7 @@ static RegisterPrimOp primop_fetchClosure({
|
||||||
```
|
```
|
||||||
|
|
||||||
It is possible to fetch an [input-addressed store path](@docroot@/glossary.md#gloss-input-addressed-store-object) and return it as is.
|
It is possible to fetch an [input-addressed store path](@docroot@/glossary.md#gloss-input-addressed-store-object) and return it as is.
|
||||||
However, this is the least preferred way of invoking `fetchClosure`, because it requires that the input-addressed paths are trusted by the Nix configuration.
|
However, this is the least preferred way of invoking `fetchClosure`, because it requires that the input-addressed paths are trusted by the Lix configuration.
|
||||||
|
|
||||||
**`builtins.storePath`**
|
**`builtins.storePath`**
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ libfetchers = library(
|
||||||
liblixutil,
|
liblixutil,
|
||||||
nlohmann_json,
|
nlohmann_json,
|
||||||
],
|
],
|
||||||
cpp_pch : ['../pch/precompiled-headers.hh'],
|
cpp_pch : cpp_pch,
|
||||||
install : true,
|
install : true,
|
||||||
# FIXME(Qyriad): is this right?
|
# FIXME(Qyriad): is this right?
|
||||||
install_rpath : libdir,
|
install_rpath : libdir,
|
||||||
|
@ -56,3 +56,13 @@ liblixfetchers = declare_dependency(
|
||||||
include_directories : include_directories('.'),
|
include_directories : include_directories('.'),
|
||||||
link_with : libfetchers,
|
link_with : libfetchers,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# FIXME: remove when https://git.lix.systems/lix-project/lix/issues/359 is fixed.
|
||||||
|
if is_static
|
||||||
|
liblixfetchers_mstatic = declare_dependency(
|
||||||
|
include_directories : include_directories('.'),
|
||||||
|
link_whole : libfetchers,
|
||||||
|
)
|
||||||
|
else
|
||||||
|
liblixfetchers_mstatic = liblixfetchers
|
||||||
|
endif
|
||||||
|
|
|
@ -33,7 +33,7 @@ MixCommonArgs::MixCommonArgs(const std::string & programName)
|
||||||
|
|
||||||
addFlag({
|
addFlag({
|
||||||
.longName = "option",
|
.longName = "option",
|
||||||
.description = "Set the Nix configuration setting *name* to *value* (overriding `nix.conf`).",
|
.description = "Set the Lix configuration setting *name* to *value* (overriding `nix.conf`).",
|
||||||
.category = miscCategory,
|
.category = miscCategory,
|
||||||
.labels = {"name", "value"},
|
.labels = {"name", "value"},
|
||||||
.handler = {[this](std::string name, std::string value) {
|
.handler = {[this](std::string name, std::string value) {
|
||||||
|
|
|
@ -20,7 +20,7 @@ libmain = library(
|
||||||
liblixutil,
|
liblixutil,
|
||||||
liblixstore,
|
liblixstore,
|
||||||
],
|
],
|
||||||
cpp_pch : ['../pch/precompiled-headers.hh'],
|
cpp_pch : cpp_pch,
|
||||||
install : true,
|
install : true,
|
||||||
# FIXME(Qyriad): is this right?
|
# FIXME(Qyriad): is this right?
|
||||||
install_rpath : libdir,
|
install_rpath : libdir,
|
||||||
|
|
|
@ -400,7 +400,7 @@ public:
|
||||||
|
|
||||||
if (!state.activities.empty()) {
|
if (!state.activities.empty()) {
|
||||||
for (auto i = state.activities.begin(); i != state.activities.end(); ++i) {
|
for (auto i = state.activities.begin(); i != state.activities.end(); ++i) {
|
||||||
if (!i->visible || (i->s.empty() && i->lastLine.empty())) {
|
if (!(i->visible && (!i->s.empty() || !i->lastLine.empty()))) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -418,6 +418,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!printMultiline) {
|
if (!printMultiline) {
|
||||||
|
line += " ";
|
||||||
line += i->s;
|
line += i->s;
|
||||||
} else {
|
} else {
|
||||||
line = i->s;
|
line = i->s;
|
||||||
|
|
|
@ -124,7 +124,7 @@ void detectStackOverflow();
|
||||||
*
|
*
|
||||||
* This is called by the handler installed by detectStackOverflow().
|
* This is called by the handler installed by detectStackOverflow().
|
||||||
*
|
*
|
||||||
* This gives Nix library consumers a limit opportunity to report the error
|
* This gives Lix library consumers a limit opportunity to report the error
|
||||||
* condition. The handler should exit the process.
|
* condition. The handler should exit the process.
|
||||||
* See defaultStackOverflowHandler() for a reference implementation.
|
* See defaultStackOverflowHandler() for a reference implementation.
|
||||||
*
|
*
|
||||||
|
|
|
@ -243,7 +243,7 @@ struct ClientSettings
|
||||||
} else if (name == settings.pluginFiles.name) {
|
} else if (name == settings.pluginFiles.name) {
|
||||||
if (tokenizeString<Paths>(value) != settings.pluginFiles.get())
|
if (tokenizeString<Paths>(value) != settings.pluginFiles.get())
|
||||||
warn("Ignoring the client-specified plugin-files.\n"
|
warn("Ignoring the client-specified plugin-files.\n"
|
||||||
"The client specifying plugins to the daemon never made sense, and was removed in Nix >=2.14.");
|
"The client specifying plugins to the daemon never made sense, and was removed in Nix.");
|
||||||
}
|
}
|
||||||
else if (trusted
|
else if (trusted
|
||||||
|| name == settings.buildTimeout.name
|
|| name == settings.buildTimeout.name
|
||||||
|
|
|
@ -656,7 +656,7 @@ struct curlFileTransfer : public FileTransfer
|
||||||
/* Ugly hack to support s3:// URIs. */
|
/* Ugly hack to support s3:// URIs. */
|
||||||
if (request.uri.starts_with("s3://")) {
|
if (request.uri.starts_with("s3://")) {
|
||||||
// FIXME: do this on a worker thread
|
// FIXME: do this on a worker thread
|
||||||
return std::async(std::launch::deferred, [uri{request.uri}] {
|
return std::async(std::launch::deferred, [uri{request.uri}]() -> FileTransferResult {
|
||||||
#if ENABLE_S3
|
#if ENABLE_S3
|
||||||
auto [bucketName, key, params] = parseS3Uri(uri);
|
auto [bucketName, key, params] = parseS3Uri(uri);
|
||||||
|
|
||||||
|
|
|
@ -40,12 +40,12 @@ struct FileTransferSettings : Config
|
||||||
this, 300, "stalled-download-timeout",
|
this, 300, "stalled-download-timeout",
|
||||||
R"(
|
R"(
|
||||||
The timeout (in seconds) for receiving data from servers
|
The timeout (in seconds) for receiving data from servers
|
||||||
during download. Nix cancels idle downloads after this
|
during download. Lix cancels idle downloads after this
|
||||||
timeout's duration.
|
timeout's duration.
|
||||||
)"};
|
)"};
|
||||||
|
|
||||||
Setting<unsigned int> tries{this, 5, "download-attempts",
|
Setting<unsigned int> tries{this, 5, "download-attempts",
|
||||||
"How often Nix will attempt to download a file before giving up."};
|
"How often Lix will attempt to download a file before giving up."};
|
||||||
};
|
};
|
||||||
|
|
||||||
extern FileTransferSettings fileTransferSettings;
|
extern FileTransferSettings fileTransferSettings;
|
||||||
|
|
|
@ -87,7 +87,7 @@ Settings::Settings()
|
||||||
|
|
||||||
/* Set the build hook location
|
/* Set the build hook location
|
||||||
|
|
||||||
For builds we perform a self-invocation, so Nix has to be self-aware.
|
For builds we perform a self-invocation, so Lix has to be self-aware.
|
||||||
That is, it has to know where it is installed. We don't think it's sentient.
|
That is, it has to know where it is installed. We don't think it's sentient.
|
||||||
|
|
||||||
Normally, nix is installed according to `nixBinDir`, which is set at compile time,
|
Normally, nix is installed according to `nixBinDir`, which is set at compile time,
|
||||||
|
@ -101,7 +101,7 @@ Settings::Settings()
|
||||||
current executable, using `getSelfExe()`.
|
current executable, using `getSelfExe()`.
|
||||||
|
|
||||||
As a last resort, we resort to `PATH`. Hopefully we find a `nix` there that's compatible.
|
As a last resort, we resort to `PATH`. Hopefully we find a `nix` there that's compatible.
|
||||||
If you're porting Nix to a new platform, that might be good enough for a while, but
|
If you're porting Lix to a new platform, that might be good enough for a while, but
|
||||||
you'll want to improve `getSelfExe()` to work on your platform.
|
you'll want to improve `getSelfExe()` to work on your platform.
|
||||||
*/
|
*/
|
||||||
std::string nixExePath = nixBinDir + "/nix";
|
std::string nixExePath = nixBinDir + "/nix";
|
||||||
|
|
|
@ -131,7 +131,7 @@ public:
|
||||||
Setting<bool> tryFallback{
|
Setting<bool> tryFallback{
|
||||||
this, false, "fallback",
|
this, false, "fallback",
|
||||||
R"(
|
R"(
|
||||||
If set to `true`, Nix will fall back to building from source if a
|
If set to `true`, Lix will fall back to building from source if a
|
||||||
binary substitute fails. This is equivalent to the `--fallback`
|
binary substitute fails. This is equivalent to the `--fallback`
|
||||||
flag. The default is `false`.
|
flag. The default is `false`.
|
||||||
)",
|
)",
|
||||||
|
@ -149,9 +149,9 @@ public:
|
||||||
MaxBuildJobsSetting maxBuildJobs{
|
MaxBuildJobsSetting maxBuildJobs{
|
||||||
this, 1, "max-jobs",
|
this, 1, "max-jobs",
|
||||||
R"(
|
R"(
|
||||||
This option defines the maximum number of jobs that Nix will try to
|
This option defines the maximum number of jobs that Lix will try to
|
||||||
build in parallel. The default is `1`. The special value `auto`
|
build in parallel. The default is `1`. The special value `auto`
|
||||||
causes Nix to use the number of CPUs in your system. `0` is useful
|
causes Lix to use the number of CPUs in your system. `0` is useful
|
||||||
when using remote builders to prevent any local builds (except for
|
when using remote builders to prevent any local builds (except for
|
||||||
`preferLocalBuild` derivation attribute which executes locally
|
`preferLocalBuild` derivation attribute which executes locally
|
||||||
regardless). It can be overridden using the `--max-jobs` (`-j`)
|
regardless). It can be overridden using the `--max-jobs` (`-j`)
|
||||||
|
@ -195,11 +195,11 @@ public:
|
||||||
Setting<std::string> thisSystem{
|
Setting<std::string> thisSystem{
|
||||||
this, SYSTEM, "system",
|
this, SYSTEM, "system",
|
||||||
R"(
|
R"(
|
||||||
The system type of the current Nix installation.
|
The system type of the current Lix installation.
|
||||||
Nix will only build a given [derivation](@docroot@/language/derivations.md) locally when its `system` attribute equals any of the values specified here or in [`extra-platforms`](#conf-extra-platforms).
|
Lix will only build a given [derivation](@docroot@/language/derivations.md) locally when its `system` attribute equals any of the values specified here or in [`extra-platforms`](#conf-extra-platforms).
|
||||||
|
|
||||||
The default value is set when Nix itself is compiled for the system it will run on.
|
The default value is set when Lix itself is compiled for the system it will run on.
|
||||||
The following system types are widely used, as [Nix is actively supported on these platforms](@docroot@/contributing/hacking.md#platforms):
|
The following system types are widely used, as [Lix is actively supported on these platforms](@docroot@/contributing/hacking.md#platforms):
|
||||||
|
|
||||||
- `x86_64-linux`
|
- `x86_64-linux`
|
||||||
- `x86_64-darwin`
|
- `x86_64-darwin`
|
||||||
|
@ -210,7 +210,7 @@ public:
|
||||||
- `armv7l-linux`
|
- `armv7l-linux`
|
||||||
|
|
||||||
In general, you do not have to modify this setting.
|
In general, you do not have to modify this setting.
|
||||||
While you can force Nix to run a Darwin-specific `builder` executable on a Linux machine, the result would obviously be wrong.
|
While you can force Lix to run a Darwin-specific `builder` executable on a Linux machine, the result would obviously be wrong.
|
||||||
|
|
||||||
This value is available in the Nix language as
|
This value is available in the Nix language as
|
||||||
[`builtins.currentSystem`](@docroot@/language/builtin-constants.md#builtins-currentSystem)
|
[`builtins.currentSystem`](@docroot@/language/builtin-constants.md#builtins-currentSystem)
|
||||||
|
@ -252,8 +252,8 @@ public:
|
||||||
R"(
|
R"(
|
||||||
The path to the helper program that executes remote builds.
|
The path to the helper program that executes remote builds.
|
||||||
|
|
||||||
Nix communicates with the build hook over `stdio` using a custom protocol to request builds that cannot be performed directly by the Nix daemon.
|
Lix communicates with the build hook over `stdio` using a custom protocol to request builds that cannot be performed directly by the Nix daemon.
|
||||||
The default value is the internal Nix binary that implements remote building.
|
The default value is the internal Lix binary that implements remote building.
|
||||||
|
|
||||||
> **Important**
|
> **Important**
|
||||||
>
|
>
|
||||||
|
@ -270,7 +270,7 @@ public:
|
||||||
Setting<bool> alwaysAllowSubstitutes{
|
Setting<bool> alwaysAllowSubstitutes{
|
||||||
this, false, "always-allow-substitutes",
|
this, false, "always-allow-substitutes",
|
||||||
R"(
|
R"(
|
||||||
If set to `true`, Nix will ignore the `allowSubstitutes` attribute in
|
If set to `true`, Lix will ignore the `allowSubstitutes` attribute in
|
||||||
derivations and always attempt to use available substituters.
|
derivations and always attempt to use available substituters.
|
||||||
For more information on `allowSubstitutes`, see [the manual chapter on advanced attributes](../language/advanced-attributes.md).
|
For more information on `allowSubstitutes`, see [the manual chapter on advanced attributes](../language/advanced-attributes.md).
|
||||||
)"};
|
)"};
|
||||||
|
@ -278,7 +278,7 @@ public:
|
||||||
Setting<bool> buildersUseSubstitutes{
|
Setting<bool> buildersUseSubstitutes{
|
||||||
this, false, "builders-use-substitutes",
|
this, false, "builders-use-substitutes",
|
||||||
R"(
|
R"(
|
||||||
If set to `true`, Nix will instruct remote build machines to use
|
If set to `true`, Lix will instruct remote build machines to use
|
||||||
their own binary substitutes if available. In practical terms, this
|
their own binary substitutes if available. In practical terms, this
|
||||||
means that remote hosts will fetch as many build dependencies as
|
means that remote hosts will fetch as many build dependencies as
|
||||||
possible from their own substitutes (e.g, from `cache.nixos.org`),
|
possible from their own substitutes (e.g, from `cache.nixos.org`),
|
||||||
|
@ -317,7 +317,7 @@ public:
|
||||||
Setting<bool> useSubstitutes{
|
Setting<bool> useSubstitutes{
|
||||||
this, true, "substitute",
|
this, true, "substitute",
|
||||||
R"(
|
R"(
|
||||||
If set to `true` (default), Nix will use binary substitutes if
|
If set to `true` (default), Lix will use binary substitutes if
|
||||||
available. This option can be disabled to force building from
|
available. This option can be disabled to force building from
|
||||||
source.
|
source.
|
||||||
)",
|
)",
|
||||||
|
@ -326,9 +326,9 @@ public:
|
||||||
Setting<std::string> buildUsersGroup{
|
Setting<std::string> buildUsersGroup{
|
||||||
this, "", "build-users-group",
|
this, "", "build-users-group",
|
||||||
R"(
|
R"(
|
||||||
This options specifies the Unix group containing the Nix build user
|
This options specifies the Unix group containing the Lix build user
|
||||||
accounts. In multi-user Nix installations, builds should not be
|
accounts. In multi-user Lix installations, builds should not be
|
||||||
performed by the Nix account since that would allow users to
|
performed by the Lix account since that would allow users to
|
||||||
arbitrarily modify the Nix store and database by supplying specially
|
arbitrarily modify the Nix store and database by supplying specially
|
||||||
crafted builders; and they cannot be performed by the calling user
|
crafted builders; and they cannot be performed by the calling user
|
||||||
since that would allow him/her to influence the build result.
|
since that would allow him/her to influence the build result.
|
||||||
|
@ -338,11 +338,11 @@ public:
|
||||||
of the group specified here (as listed in `/etc/group`). Those user
|
of the group specified here (as listed in `/etc/group`). Those user
|
||||||
accounts should not be used for any other purpose\!
|
accounts should not be used for any other purpose\!
|
||||||
|
|
||||||
Nix will never run two builds under the same user account at the
|
Lix will never run two builds under the same user account at the
|
||||||
same time. This is to prevent an obvious security hole: a malicious
|
same time. This is to prevent an obvious security hole: a malicious
|
||||||
user writing a Nix expression that modifies the build result of a
|
user writing a Nix expression that modifies the build result of a
|
||||||
legitimate Nix expression being built by another user. Therefore it
|
legitimate Nix expression being built by another user. Therefore it
|
||||||
is good to have as many Nix build user accounts as you can spare.
|
is good to have as many Lix build user accounts as you can spare.
|
||||||
(Remember: uids are cheap.)
|
(Remember: uids are cheap.)
|
||||||
|
|
||||||
The build users should have permission to create files in the Nix
|
The build users should have permission to create files in the Nix
|
||||||
|
@ -351,7 +351,7 @@ public:
|
||||||
and its mode should be `1775`.
|
and its mode should be `1775`.
|
||||||
|
|
||||||
If the build users group is empty, builds will be performed under
|
If the build users group is empty, builds will be performed under
|
||||||
the uid of the Nix process (that is, the uid of the caller if
|
the uid of the Lix process (that is, the uid of the caller if
|
||||||
`NIX_REMOTE` is empty, the uid under which the Nix daemon runs if
|
`NIX_REMOTE` is empty, the uid under which the Nix daemon runs if
|
||||||
`NIX_REMOTE` is `daemon`). Obviously, this should not be used
|
`NIX_REMOTE` is `daemon`). Obviously, this should not be used
|
||||||
with a nix daemon accessible to untrusted clients.
|
with a nix daemon accessible to untrusted clients.
|
||||||
|
@ -405,7 +405,7 @@ public:
|
||||||
Setting<bool> keepLog{
|
Setting<bool> keepLog{
|
||||||
this, true, "keep-build-log",
|
this, true, "keep-build-log",
|
||||||
R"(
|
R"(
|
||||||
If set to `true` (the default), Nix will write the build log of a
|
If set to `true` (the default), Lix will write the build log of a
|
||||||
derivation (i.e. the standard output and error of its builder) to
|
derivation (i.e. the standard output and error of its builder) to
|
||||||
the directory `/nix/var/log/nix/drvs`. The build log can be
|
the directory `/nix/var/log/nix/drvs`. The build log can be
|
||||||
retrieved using the command `nix-store -l path`.
|
retrieved using the command `nix-store -l path`.
|
||||||
|
@ -468,7 +468,7 @@ public:
|
||||||
Setting<bool> autoOptimiseStore{
|
Setting<bool> autoOptimiseStore{
|
||||||
this, false, "auto-optimise-store",
|
this, false, "auto-optimise-store",
|
||||||
R"(
|
R"(
|
||||||
If set to `true`, Nix automatically detects files in the store
|
If set to `true`, Lix automatically detects files in the store
|
||||||
that have identical contents, and replaces them with hard links to
|
that have identical contents, and replaces them with hard links to
|
||||||
a single copy. This saves disk space. If set to `false` (the
|
a single copy. This saves disk space. If set to `false` (the
|
||||||
default), you can still run `nix-store --optimise` to get rid of
|
default), you can still run `nix-store --optimise` to get rid of
|
||||||
|
@ -519,7 +519,7 @@ public:
|
||||||
network).
|
network).
|
||||||
|
|
||||||
Currently, sandboxing only work on Linux and macOS. The use of a
|
Currently, sandboxing only work on Linux and macOS. The use of a
|
||||||
sandbox requires that Nix is run as root (so you should use the
|
sandbox requires that Lix is run as root (so you should use the
|
||||||
“build users” feature to perform the actual builds under different
|
“build users” feature to perform the actual builds under different
|
||||||
users than root).
|
users than root).
|
||||||
|
|
||||||
|
@ -545,7 +545,7 @@ public:
|
||||||
If the source is in the Nix store, then its closure will be added to
|
If the source is in the Nix store, then its closure will be added to
|
||||||
the sandbox as well.
|
the sandbox as well.
|
||||||
|
|
||||||
Depending on how Nix was built, the default value for this option
|
Depending on how Lix was built, the default value for this option
|
||||||
may be empty or provide `/bin/sh` as a bind-mount of `bash`.
|
may be empty or provide `/bin/sh` as a bind-mount of `bash`.
|
||||||
)",
|
)",
|
||||||
{"build-chroot-dirs", "build-sandbox-paths"}};
|
{"build-chroot-dirs", "build-sandbox-paths"}};
|
||||||
|
@ -556,7 +556,7 @@ public:
|
||||||
Setting<bool> requireDropSupplementaryGroups{this, getuid() == 0, "require-drop-supplementary-groups",
|
Setting<bool> requireDropSupplementaryGroups{this, getuid() == 0, "require-drop-supplementary-groups",
|
||||||
R"(
|
R"(
|
||||||
Following the principle of least privilege,
|
Following the principle of least privilege,
|
||||||
Nix will attempt to drop supplementary groups when building with sandboxing.
|
Lix will attempt to drop supplementary groups when building with sandboxing.
|
||||||
|
|
||||||
However this can fail under some circumstances.
|
However this can fail under some circumstances.
|
||||||
For example, if the user lacks the `CAP_SETGID` capability.
|
For example, if the user lacks the `CAP_SETGID` capability.
|
||||||
|
@ -642,7 +642,7 @@ public:
|
||||||
A whitespace-separated list of public keys.
|
A whitespace-separated list of public keys.
|
||||||
|
|
||||||
At least one of the following condition must be met
|
At least one of the following condition must be met
|
||||||
for Nix to accept copying a store object from another
|
for Lix to accept copying a store object from another
|
||||||
Nix store (such as a substituter):
|
Nix store (such as a substituter):
|
||||||
|
|
||||||
- the store object has been signed using a key in the trusted keys list
|
- the store object has been signed using a key in the trusted keys list
|
||||||
|
@ -665,14 +665,14 @@ public:
|
||||||
this, 60 * 60, "tarball-ttl",
|
this, 60 * 60, "tarball-ttl",
|
||||||
R"(
|
R"(
|
||||||
The number of seconds a downloaded tarball is considered fresh. If
|
The number of seconds a downloaded tarball is considered fresh. If
|
||||||
the cached tarball is stale, Nix will check whether it is still up
|
the cached tarball is stale, Lix will check whether it is still up
|
||||||
to date using the ETag header. Nix will download a new version if
|
to date using the ETag header. Lix will download a new version if
|
||||||
the ETag header is unsupported, or the cached ETag doesn't match.
|
the ETag header is unsupported, or the cached ETag doesn't match.
|
||||||
|
|
||||||
Setting the TTL to `0` forces Nix to always check if the tarball is
|
Setting the TTL to `0` forces Lix to always check if the tarball is
|
||||||
up to date.
|
up to date.
|
||||||
|
|
||||||
Nix caches tarballs in `$XDG_CACHE_HOME/nix/tarballs`.
|
Lix caches tarballs in `$XDG_CACHE_HOME/nix/tarballs`.
|
||||||
|
|
||||||
Files fetched via `NIX_PATH`, `fetchGit`, `fetchMercurial`,
|
Files fetched via `NIX_PATH`, `fetchGit`, `fetchMercurial`,
|
||||||
`fetchTarball`, and `fetchurl` respect this TTL.
|
`fetchTarball`, and `fetchurl` respect this TTL.
|
||||||
|
@ -701,7 +701,7 @@ public:
|
||||||
R"(
|
R"(
|
||||||
System types of executables that can be run on this machine.
|
System types of executables that can be run on this machine.
|
||||||
|
|
||||||
Nix will only build a given [derivation](@docroot@/language/derivations.md) locally when its `system` attribute equals any of the values specified here or in the [`system` option](#conf-system).
|
Lix will only build a given [derivation](@docroot@/language/derivations.md) locally when its `system` attribute equals any of the values specified here or in the [`system` option](#conf-system).
|
||||||
|
|
||||||
Setting this can be useful to build derivations locally on compatible machines:
|
Setting this can be useful to build derivations locally on compatible machines:
|
||||||
- `i686-linux` executables can be run on `x86_64-linux` machines (set by default)
|
- `i686-linux` executables can be run on `x86_64-linux` machines (set by default)
|
||||||
|
@ -748,16 +748,16 @@ public:
|
||||||
"substituters",
|
"substituters",
|
||||||
R"(
|
R"(
|
||||||
A list of [URLs of Nix stores](@docroot@/command-ref/new-cli/nix3-help-stores.md#store-url-format) to be used as substituters, separated by whitespace.
|
A list of [URLs of Nix stores](@docroot@/command-ref/new-cli/nix3-help-stores.md#store-url-format) to be used as substituters, separated by whitespace.
|
||||||
A substituter is an additional [store](@docroot@/glossary.md#gloss-store) from which Nix can obtain [store objects](@docroot@/glossary.md#gloss-store-object) instead of building them.
|
A substituter is an additional [store](@docroot@/glossary.md#gloss-store) from which Lix can obtain [store objects](@docroot@/glossary.md#gloss-store-object) instead of building them.
|
||||||
|
|
||||||
Substituters are tried based on their priority value, which each substituter can set independently.
|
Substituters are tried based on their priority value, which each substituter can set independently.
|
||||||
Lower value means higher priority.
|
Lower value means higher priority.
|
||||||
The default is `https://cache.nixos.org`, which has a priority of 40.
|
The default is `https://cache.nixos.org`, which has a priority of 40.
|
||||||
|
|
||||||
At least one of the following conditions must be met for Nix to use a substituter:
|
At least one of the following conditions must be met for Lix to use a substituter:
|
||||||
|
|
||||||
- The substituter is in the [`trusted-substituters`](#conf-trusted-substituters) list
|
- The substituter is in the [`trusted-substituters`](#conf-trusted-substituters) list
|
||||||
- The user calling Nix is in the [`trusted-users`](#conf-trusted-users) list
|
- The user calling Lix is in the [`trusted-users`](#conf-trusted-users) list
|
||||||
|
|
||||||
In addition, each store path should be trusted as described in [`trusted-public-keys`](#conf-trusted-public-keys)
|
In addition, each store path should be trusted as described in [`trusted-public-keys`](#conf-trusted-public-keys)
|
||||||
)",
|
)",
|
||||||
|
@ -866,13 +866,13 @@ public:
|
||||||
this, 0, "download-speed",
|
this, 0, "download-speed",
|
||||||
R"(
|
R"(
|
||||||
Specify the maximum transfer rate in kilobytes per second you want
|
Specify the maximum transfer rate in kilobytes per second you want
|
||||||
Nix to use for downloads.
|
Lix to use for downloads.
|
||||||
)"};
|
)"};
|
||||||
|
|
||||||
Setting<std::string> netrcFile{
|
Setting<std::string> netrcFile{
|
||||||
this, fmt("%s/%s", nixConfDir, "netrc"), "netrc-file",
|
this, fmt("%s/%s", nixConfDir, "netrc"), "netrc-file",
|
||||||
R"(
|
R"(
|
||||||
If set to an absolute path to a `netrc` file, Nix will use the HTTP
|
If set to an absolute path to a `netrc` file, Lix will use the HTTP
|
||||||
authentication credentials in this file when trying to download from
|
authentication credentials in this file when trying to download from
|
||||||
a remote host through HTTP or HTTPS. Defaults to
|
a remote host through HTTP or HTTPS. Defaults to
|
||||||
`$NIX_CONF_DIR/netrc`.
|
`$NIX_CONF_DIR/netrc`.
|
||||||
|
@ -898,7 +898,7 @@ public:
|
||||||
this, getDefaultSSLCertFile(), "ssl-cert-file",
|
this, getDefaultSSLCertFile(), "ssl-cert-file",
|
||||||
R"(
|
R"(
|
||||||
The path of a file containing CA certificates used to
|
The path of a file containing CA certificates used to
|
||||||
authenticate `https://` downloads. Nix by default will use
|
authenticate `https://` downloads. Lix by default will use
|
||||||
the first of the following files that exists:
|
the first of the following files that exists:
|
||||||
|
|
||||||
1. `/etc/ssl/certs/ca-certificates.crt`
|
1. `/etc/ssl/certs/ca-certificates.crt`
|
||||||
|
@ -915,7 +915,7 @@ public:
|
||||||
Setting<StringSet> ignoredAcls{
|
Setting<StringSet> ignoredAcls{
|
||||||
this, {"security.selinux", "system.nfs4_acl", "security.csm"}, "ignored-acls",
|
this, {"security.selinux", "system.nfs4_acl", "security.csm"}, "ignored-acls",
|
||||||
R"(
|
R"(
|
||||||
A list of ACLs that should be ignored, normally Nix attempts to
|
A list of ACLs that should be ignored, normally Lix attempts to
|
||||||
remove all ACLs from files and directories in the Nix store, but
|
remove all ACLs from files and directories in the Nix store, but
|
||||||
some ACLs like `security.selinux` or `system.nfs4_acl` can't be
|
some ACLs like `security.selinux` or `system.nfs4_acl` can't be
|
||||||
removed even by root. Therefore it's best to just ignore them.
|
removed even by root. Therefore it's best to just ignore them.
|
||||||
|
@ -926,7 +926,7 @@ public:
|
||||||
this, {}, "hashed-mirrors",
|
this, {}, "hashed-mirrors",
|
||||||
R"(
|
R"(
|
||||||
A list of web servers used by `builtins.fetchurl` to obtain files by
|
A list of web servers used by `builtins.fetchurl` to obtain files by
|
||||||
hash. Given a hash type *ht* and a base-16 hash *h*, Nix will try to
|
hash. Given a hash type *ht* and a base-16 hash *h*, Lix will try to
|
||||||
download the file from *hashed-mirror*/*ht*/*h*. This allows files to
|
download the file from *hashed-mirror*/*ht*/*h*. This allows files to
|
||||||
be downloaded even if they have disappeared from their original URI.
|
be downloaded even if they have disappeared from their original URI.
|
||||||
For example, given an example mirror `http://tarballs.nixos.org/`,
|
For example, given an example mirror `http://tarballs.nixos.org/`,
|
||||||
|
@ -939,7 +939,7 @@ public:
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Nix will attempt to download this file from
|
Lix will attempt to download this file from
|
||||||
`http://tarballs.nixos.org/sha256/2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae`
|
`http://tarballs.nixos.org/sha256/2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae`
|
||||||
first. If it is not available there, if will try the original URI.
|
first. If it is not available there, if will try the original URI.
|
||||||
)"};
|
)"};
|
||||||
|
@ -948,7 +948,7 @@ public:
|
||||||
this, 0, "min-free",
|
this, 0, "min-free",
|
||||||
R"(
|
R"(
|
||||||
When free disk space in `/nix/store` drops below `min-free` during a
|
When free disk space in `/nix/store` drops below `min-free` during a
|
||||||
build, Nix performs a garbage-collection until `max-free` bytes are
|
build, Lix performs a garbage-collection until `max-free` bytes are
|
||||||
available or there is no more garbage. A value of `0` (the default)
|
available or there is no more garbage. A value of `0` (the default)
|
||||||
disables this feature.
|
disables this feature.
|
||||||
)"};
|
)"};
|
||||||
|
@ -983,7 +983,7 @@ public:
|
||||||
itself, they must be DSOs compatible with the instance of Nix
|
itself, they must be DSOs compatible with the instance of Nix
|
||||||
running at the time (i.e. compiled against the same headers, not
|
running at the time (i.e. compiled against the same headers, not
|
||||||
linked to any incompatible libraries). They should not be linked to
|
linked to any incompatible libraries). They should not be linked to
|
||||||
any Nix libs directly, as those will be available already at load
|
any Lix libs directly, as those will be available already at load
|
||||||
time.
|
time.
|
||||||
|
|
||||||
If an entry in the list is a directory, all files in the directory
|
If an entry in the list is a directory, all files in the directory
|
||||||
|
@ -996,7 +996,7 @@ public:
|
||||||
Setting<bool> allowSymlinkedStore{
|
Setting<bool> allowSymlinkedStore{
|
||||||
this, false, "allow-symlinked-store",
|
this, false, "allow-symlinked-store",
|
||||||
R"(
|
R"(
|
||||||
If set to `true`, Nix will stop complaining if the store directory
|
If set to `true`, Lix will stop complaining if the store directory
|
||||||
(typically /nix/store) contains symlink components.
|
(typically /nix/store) contains symlink components.
|
||||||
|
|
||||||
This risks making some builds "impure" because builders sometimes
|
This risks making some builds "impure" because builders sometimes
|
||||||
|
@ -1009,13 +1009,13 @@ public:
|
||||||
Setting<bool> useXDGBaseDirectories{
|
Setting<bool> useXDGBaseDirectories{
|
||||||
this, false, "use-xdg-base-directories",
|
this, false, "use-xdg-base-directories",
|
||||||
R"(
|
R"(
|
||||||
If set to `true`, Nix will conform to the [XDG Base Directory Specification] for files in `$HOME`.
|
If set to `true`, Lix will conform to the [XDG Base Directory Specification] for files in `$HOME`.
|
||||||
The environment variables used to implement this are documented in the [Environment Variables section](@docroot@/command-ref/env-common.md).
|
The environment variables used to implement this are documented in the [Environment Variables section](@docroot@/command-ref/env-common.md).
|
||||||
|
|
||||||
[XDG Base Directory Specification]: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
[XDG Base Directory Specification]: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
||||||
|
|
||||||
> **Warning**
|
> **Warning**
|
||||||
> This changes the location of some well-known symlinks that Nix creates, which might break tools that rely on the old, non-XDG-conformant locations.
|
> This changes the location of some well-known symlinks that Lix creates, which might break tools that rely on the old, non-XDG-conformant locations.
|
||||||
|
|
||||||
In particular, the following locations change:
|
In particular, the following locations change:
|
||||||
|
|
||||||
|
@ -1025,7 +1025,7 @@ public:
|
||||||
| `~/.nix-defexpr` | `$XDG_STATE_HOME/nix/defexpr` |
|
| `~/.nix-defexpr` | `$XDG_STATE_HOME/nix/defexpr` |
|
||||||
| `~/.nix-channels` | `$XDG_STATE_HOME/nix/channels` |
|
| `~/.nix-channels` | `$XDG_STATE_HOME/nix/channels` |
|
||||||
|
|
||||||
If you already have Nix installed and are using [profiles](@docroot@/package-management/profiles.md) or [channels](@docroot@/command-ref/nix-channel.md), you should migrate manually when you enable this option.
|
If you already have Lix installed and are using [profiles](@docroot@/package-management/profiles.md) or [channels](@docroot@/command-ref/nix-channel.md), you should migrate manually when you enable this option.
|
||||||
If `$XDG_STATE_HOME` is not set, use `$HOME/.local/state/nix` instead of `$XDG_STATE_HOME/nix`.
|
If `$XDG_STATE_HOME` is not set, use `$HOME/.local/state/nix` instead of `$XDG_STATE_HOME/nix`.
|
||||||
This can be achieved with the following shell commands:
|
This can be achieved with the following shell commands:
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
* a glibc git checkout via `rg --pcre2 'define __NR_fchmodat2 (?!452)'`.
|
* a glibc git checkout via `rg --pcre2 'define __NR_fchmodat2 (?!452)'`.
|
||||||
*
|
*
|
||||||
* The problem is that glibc 2.39 and libseccomp 2.5.5 are needed to
|
* The problem is that glibc 2.39 and libseccomp 2.5.5 are needed to
|
||||||
* get the syscall number. However, a Nix built against nixpkgs 23.11
|
* get the syscall number. However, a Lix built against nixpkgs 23.11
|
||||||
* (glibc 2.38) should still have the issue fixed without depending
|
* (glibc 2.38) should still have the issue fixed without depending
|
||||||
* on the build environment.
|
* on the build environment.
|
||||||
*
|
*
|
||||||
|
|
|
@ -18,12 +18,12 @@ struct LocalFSStoreConfig : virtual StoreConfig
|
||||||
const PathSetting stateDir{this,
|
const PathSetting stateDir{this,
|
||||||
rootDir.get() ? *rootDir.get() + "/nix/var/nix" : settings.nixStateDir,
|
rootDir.get() ? *rootDir.get() + "/nix/var/nix" : settings.nixStateDir,
|
||||||
"state",
|
"state",
|
||||||
"Directory where Nix will store state."};
|
"Directory where Lix will store state."};
|
||||||
|
|
||||||
const PathSetting logDir{this,
|
const PathSetting logDir{this,
|
||||||
rootDir.get() ? *rootDir.get() + "/nix/var/log/nix" : settings.nixLogDir,
|
rootDir.get() ? *rootDir.get() + "/nix/var/log/nix" : settings.nixLogDir,
|
||||||
"log",
|
"log",
|
||||||
"directory where Nix will store log files."};
|
"directory where Lix will store log files."};
|
||||||
|
|
||||||
const PathSetting realStoreDir{this,
|
const PathSetting realStoreDir{this,
|
||||||
rootDir.get() ? *rootDir.get() + "/nix/store" : storeDir, "real",
|
rootDir.get() ? *rootDir.get() + "/nix/store" : storeDir, "real",
|
||||||
|
|
|
@ -313,13 +313,13 @@ LocalStore::LocalStore(const Params & params)
|
||||||
throw Error(
|
throw Error(
|
||||||
"Your Nix store has a database in Berkeley DB format,\n"
|
"Your Nix store has a database in Berkeley DB format,\n"
|
||||||
"which is no longer supported. To convert to the new format,\n"
|
"which is no longer supported. To convert to the new format,\n"
|
||||||
"please upgrade Nix to version 0.12 first.");
|
"please use the original Nix version 0.12 first.");
|
||||||
|
|
||||||
if (curSchema < 6)
|
if (curSchema < 6)
|
||||||
throw Error(
|
throw Error(
|
||||||
"Your Nix store has a database in flat file format,\n"
|
"Your Nix store has a database in flat file format,\n"
|
||||||
"which is no longer supported. To convert to the new format,\n"
|
"which is no longer supported. To convert to the new format,\n"
|
||||||
"please upgrade Nix to version 1.11 first.");
|
"please use the original Nix version 1.11 first.");
|
||||||
|
|
||||||
if (!lockFile(globalLock.get(), ltWrite, false)) {
|
if (!lockFile(globalLock.get(), ltWrite, false)) {
|
||||||
printInfo("waiting for exclusive access to the Nix store...");
|
printInfo("waiting for exclusive access to the Nix store...");
|
||||||
|
|
|
@ -23,6 +23,9 @@ namespace nix {
|
||||||
* 0.7. Version 2 was Nix 0.8 and 0.9. Version 3 is Nix 0.10.
|
* 0.7. Version 2 was Nix 0.8 and 0.9. Version 3 is Nix 0.10.
|
||||||
* Version 4 is Nix 0.11. Version 5 is Nix 0.12-0.16. Version 6 is
|
* Version 4 is Nix 0.11. Version 5 is Nix 0.12-0.16. Version 6 is
|
||||||
* Nix 1.0. Version 7 is Nix 1.3. Version 10 is 2.0.
|
* Nix 1.0. Version 7 is Nix 1.3. Version 10 is 2.0.
|
||||||
|
*
|
||||||
|
* Lix started at 2.90, it cannot ever go past version 10 (Nix 2.18),
|
||||||
|
* since doing so will break compatibility with future CppNix versions.
|
||||||
*/
|
*/
|
||||||
const int nixSchemaVersion = 10;
|
const int nixSchemaVersion = 10;
|
||||||
|
|
||||||
|
@ -49,7 +52,7 @@ struct LocalStoreConfig : virtual LocalFSStoreConfig
|
||||||
R"(
|
R"(
|
||||||
Allow this store to be opened when its [database](@docroot@/glossary.md#gloss-nix-database) is on a read-only filesystem.
|
Allow this store to be opened when its [database](@docroot@/glossary.md#gloss-nix-database) is on a read-only filesystem.
|
||||||
|
|
||||||
Normally Nix will attempt to open the store database in read-write mode, even for querying (when write access is not needed), causing it to fail if the database is on a read-only filesystem.
|
Normally Lix will attempt to open the store database in read-write mode, even for querying (when write access is not needed), causing it to fail if the database is on a read-only filesystem.
|
||||||
|
|
||||||
Enable read-only mode to disable locking and open the SQLite database with the [`immutable` parameter](https://www.sqlite.org/c3ref/open.html) set.
|
Enable read-only mode to disable locking and open the SQLite database with the [`immutable` parameter](https://www.sqlite.org/c3ref/open.html) set.
|
||||||
|
|
||||||
|
|
|
@ -220,7 +220,7 @@ libstore = library(
|
||||||
nlohmann_json,
|
nlohmann_json,
|
||||||
],
|
],
|
||||||
cpp_args : cpp_args,
|
cpp_args : cpp_args,
|
||||||
cpp_pch : ['../pch/precompiled-headers.hh'],
|
cpp_pch : cpp_pch,
|
||||||
install : true,
|
install : true,
|
||||||
# FIXME(Qyriad): is this right?
|
# FIXME(Qyriad): is this right?
|
||||||
install_rpath : libdir,
|
install_rpath : libdir,
|
||||||
|
@ -234,6 +234,16 @@ liblixstore = declare_dependency(
|
||||||
link_with : libstore,
|
link_with : libstore,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# FIXME: remove when https://git.lix.systems/lix-project/lix/issues/359 is fixed.
|
||||||
|
if is_static
|
||||||
|
liblixstore_mstatic = declare_dependency(
|
||||||
|
include_directories : include_directories('.'),
|
||||||
|
link_whole : libstore,
|
||||||
|
)
|
||||||
|
else
|
||||||
|
liblixstore_mstatic = liblixstore
|
||||||
|
endif
|
||||||
|
|
||||||
# FIXME: not using the pkg-config module because it creates way too many deps
|
# FIXME: not using the pkg-config module because it creates way too many deps
|
||||||
# while meson migration is in progress, and we want to not include boost here
|
# while meson migration is in progress, and we want to not include boost here
|
||||||
configure_file(
|
configure_file(
|
||||||
|
|
|
@ -42,7 +42,7 @@ struct Generation
|
||||||
* of the generation.
|
* of the generation.
|
||||||
*
|
*
|
||||||
* These store paths / objects are not unique to the generation
|
* These store paths / objects are not unique to the generation
|
||||||
* within a profile. Nix tries to ensure successive generations have
|
* within a profile. Lix tries to ensure successive generations have
|
||||||
* distinct contents to avoid bloat, but nothing stops two
|
* distinct contents to avoid bloat, but nothing stops two
|
||||||
* non-adjacent generations from having the same contents.
|
* non-adjacent generations from having the same contents.
|
||||||
*
|
*
|
||||||
|
|
|
@ -196,7 +196,7 @@ struct S3BinaryCacheStoreConfig : virtual BinaryCacheStoreConfig
|
||||||
const Setting<std::string> profile{this, "", "profile",
|
const Setting<std::string> profile{this, "", "profile",
|
||||||
R"(
|
R"(
|
||||||
The name of the AWS configuration profile to use. By default
|
The name of the AWS configuration profile to use. By default
|
||||||
Nix will use the `default` profile.
|
Lix will use the `default` profile.
|
||||||
)"};
|
)"};
|
||||||
|
|
||||||
const Setting<std::string> region{this, Aws::Region::US_EAST_1, "region",
|
const Setting<std::string> region{this, Aws::Region::US_EAST_1, "region",
|
||||||
|
|
|
@ -1379,9 +1379,9 @@ std::shared_ptr<Store> openFromNonUri(const std::string & uri, const Store::Para
|
||||||
} catch (Error & e) {
|
} catch (Error & e) {
|
||||||
return LocalStore::makeLocalStore(params);
|
return LocalStore::makeLocalStore(params);
|
||||||
}
|
}
|
||||||
warn("'%s' does not exist, so Nix will use '%s' as a chroot store", stateDir, chrootStore);
|
warn("'%s' does not exist, so Lix will use '%s' as a chroot store", stateDir, chrootStore);
|
||||||
} else
|
} else
|
||||||
debug("'%s' does not exist, so Nix will use '%s' as a chroot store", stateDir, chrootStore);
|
debug("'%s' does not exist, so Lix will use '%s' as a chroot store", stateDir, chrootStore);
|
||||||
Store::Params chrootStoreParams;
|
Store::Params chrootStoreParams;
|
||||||
chrootStoreParams["root"] = chrootStore;
|
chrootStoreParams["root"] = chrootStore;
|
||||||
// FIXME? this ignores *all* store parameters passed to this function?
|
// FIXME? this ignores *all* store parameters passed to this function?
|
||||||
|
|
|
@ -74,7 +74,7 @@ void WorkerProto::Serialise<DerivedPath>::write(const Store & store, WorkerProto
|
||||||
GET_PROTOCOL_MINOR(conn.version));
|
GET_PROTOCOL_MINOR(conn.version));
|
||||||
},
|
},
|
||||||
[&](std::monostate) {
|
[&](std::monostate) {
|
||||||
throw Error("wanted to build a derivation that is itself a build product, but protocols do not support that. Try upgrading the Nix on the other end of this connection");
|
throw Error("wanted to build a derivation that is itself a build product, but protocols do not support that. Try upgrading the Nix implementation on the other end of this connection");
|
||||||
},
|
},
|
||||||
}, sOrDrvPath);
|
}, sOrDrvPath);
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
namespace nix {
|
namespace nix {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Config class provides Nix runtime configurations.
|
* The Config class provides Lix runtime configurations.
|
||||||
*
|
*
|
||||||
* What is a Configuration?
|
* What is a Configuration?
|
||||||
* A collection of uniquely named Settings.
|
* A collection of uniquely named Settings.
|
||||||
|
|
|
@ -293,7 +293,7 @@ std::set<ExperimentalFeature> parseFeatures(const std::set<std::string> & rawFea
|
||||||
}
|
}
|
||||||
|
|
||||||
MissingExperimentalFeature::MissingExperimentalFeature(ExperimentalFeature feature)
|
MissingExperimentalFeature::MissingExperimentalFeature(ExperimentalFeature feature)
|
||||||
: Error("experimental Nix feature '%1%' is disabled; use '--extra-experimental-features %1%' to override", showExperimentalFeature(feature))
|
: Error("experimental Lix feature '%1%' is disabled; use '--extra-experimental-features %1%' to override", showExperimentalFeature(feature))
|
||||||
, missingFeature(feature)
|
, missingFeature(feature)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ struct LoggerSettings : Config
|
||||||
Setting<bool> showTrace{
|
Setting<bool> showTrace{
|
||||||
this, false, "show-trace",
|
this, false, "show-trace",
|
||||||
R"(
|
R"(
|
||||||
Whether Nix should print out a stack trace in case of Nix
|
Whether Lix should print out a stack trace in case of Nix
|
||||||
expression evaluation errors.
|
expression evaluation errors.
|
||||||
)"};
|
)"};
|
||||||
};
|
};
|
||||||
|
|
|
@ -129,7 +129,7 @@ libutil = library(
|
||||||
openssl,
|
openssl,
|
||||||
nlohmann_json,
|
nlohmann_json,
|
||||||
],
|
],
|
||||||
cpp_pch : ['../pch/precompiled-headers.hh'],
|
cpp_pch : cpp_pch,
|
||||||
implicit_include_directories : true,
|
implicit_include_directories : true,
|
||||||
install : true,
|
install : true,
|
||||||
)
|
)
|
||||||
|
@ -155,3 +155,13 @@ liblixutil = declare_dependency(
|
||||||
include_directories : include_directories('.'),
|
include_directories : include_directories('.'),
|
||||||
link_with : libutil
|
link_with : libutil
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# FIXME: remove when https://git.lix.systems/lix-project/lix/issues/359 is fixed.
|
||||||
|
if is_static
|
||||||
|
liblixutil_mstatic = declare_dependency(
|
||||||
|
include_directories : include_directories('.'),
|
||||||
|
link_whole : libutil,
|
||||||
|
)
|
||||||
|
else
|
||||||
|
liblixutil_mstatic = liblixutil
|
||||||
|
endif
|
||||||
|
|
|
@ -14,7 +14,7 @@ struct CmdConfig : virtual NixMultiCommand
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "manipulate the Nix configuration";
|
return "manipulate the Lix configuration";
|
||||||
}
|
}
|
||||||
|
|
||||||
Category category() override { return catUtility; }
|
Category category() override { return catUtility; }
|
||||||
|
@ -41,7 +41,7 @@ struct CmdConfigShow : Command, MixJSON
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "show the Nix configuration or the value of a specific setting";
|
return "show the Lix configuration or the value of a specific setting";
|
||||||
}
|
}
|
||||||
|
|
||||||
Category category() override { return catUtility; }
|
Category category() override { return catUtility; }
|
||||||
|
|
|
@ -77,7 +77,7 @@ R""(
|
||||||
# Description
|
# Description
|
||||||
|
|
||||||
`nix develop` starts a `bash` shell that provides an interactive build
|
`nix develop` starts a `bash` shell that provides an interactive build
|
||||||
environment nearly identical to what Nix would use to build
|
environment nearly identical to what Lix would use to build
|
||||||
[*installable*](./nix.md#installables). Inside this shell, environment variables and shell
|
[*installable*](./nix.md#installables). Inside this shell, environment variables and shell
|
||||||
functions are set up so that you can interactively and incrementally
|
functions are set up so that you can interactively and incrementally
|
||||||
build your package.
|
build your package.
|
||||||
|
|
|
@ -22,7 +22,7 @@ This command verifies that the flake specified by flake reference
|
||||||
that the derivations specified by the flake's `checks` output can be
|
that the derivations specified by the flake's `checks` output can be
|
||||||
built successfully.
|
built successfully.
|
||||||
|
|
||||||
If the `keep-going` option is set to `true`, Nix will keep evaluating as much
|
If the `keep-going` option is set to `true`, Lix will keep evaluating as much
|
||||||
as it can and report the errors as it encounters them. Otherwise it will stop
|
as it can and report the errors as it encounters them. Otherwise it will stop
|
||||||
at the first error.
|
at the first error.
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ R""(
|
||||||
>
|
>
|
||||||
> When trying to refer to a flake in a subdirectory, write `./another`
|
> When trying to refer to a flake in a subdirectory, write `./another`
|
||||||
> instead of `another`.
|
> instead of `another`.
|
||||||
> Otherwise Nix will try to look up the flake in the registry.
|
> Otherwise Lix will try to look up the flake in the registry.
|
||||||
|
|
||||||
# Description
|
# Description
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@ R""(
|
||||||
>
|
>
|
||||||
> When trying to refer to a flake in a subdirectory, write `./another`
|
> When trying to refer to a flake in a subdirectory, write `./another`
|
||||||
> instead of `another`.
|
> instead of `another`.
|
||||||
> Otherwise Nix will try to look up the flake in the registry.
|
> Otherwise Lix will try to look up the flake in the registry.
|
||||||
|
|
||||||
# Description
|
# Description
|
||||||
|
|
||||||
|
|
|
@ -87,11 +87,13 @@ public:
|
||||||
expectArgs({
|
expectArgs({
|
||||||
.label="inputs",
|
.label="inputs",
|
||||||
.optional=true,
|
.optional=true,
|
||||||
.handler={[&](std::string inputToUpdate){
|
.handler={[&](std::vector<std::string> inputsToUpdate) {
|
||||||
auto inputPath = flake::parseInputPath(inputToUpdate);
|
for (const auto & inputToUpdate : inputsToUpdate) {
|
||||||
if (lockFlags.inputUpdates.contains(inputPath))
|
auto inputPath = flake::parseInputPath(inputToUpdate);
|
||||||
warn("Input '%s' was specified multiple times. You may have done this by accident.");
|
if (lockFlags.inputUpdates.contains(inputPath))
|
||||||
lockFlags.inputUpdates.insert(inputPath);
|
warn("Input '%s' was specified multiple times. You may have done this by accident.", inputToUpdate);
|
||||||
|
lockFlags.inputUpdates.insert(inputPath);
|
||||||
|
}
|
||||||
}},
|
}},
|
||||||
.completer = {[&](AddCompletions & completions, size_t, std::string_view prefix) {
|
.completer = {[&](AddCompletions & completions, size_t, std::string_view prefix) {
|
||||||
completeFlakeInputPath(completions, getEvalState(), getFlakeRefsForCompletion(), prefix);
|
completeFlakeInputPath(completions, getEvalState(), getFlakeRefsForCompletion(), prefix);
|
||||||
|
@ -132,6 +134,15 @@ struct CmdFlakeLock : FlakeCommand
|
||||||
|
|
||||||
CmdFlakeLock()
|
CmdFlakeLock()
|
||||||
{
|
{
|
||||||
|
addFlag({
|
||||||
|
.longName="update-input",
|
||||||
|
.description="Replaced with `nix flake update input...`",
|
||||||
|
.labels={"input-path"},
|
||||||
|
.handler={[&](std::string inputToUpdate){
|
||||||
|
throw UsageError("`nix flake lock --update-input %1%` has been replaced by `nix flake update %1%`", inputToUpdate);
|
||||||
|
}}
|
||||||
|
});
|
||||||
|
|
||||||
/* Remove flags that don't make sense. */
|
/* Remove flags that don't make sense. */
|
||||||
removeFlag("no-write-lock-file");
|
removeFlag("no-write-lock-file");
|
||||||
}
|
}
|
||||||
|
|
|
@ -98,7 +98,7 @@ Flakes corresponding to a local path can also be referred to by a direct path re
|
||||||
The semantic of such a path is as follows:
|
The semantic of such a path is as follows:
|
||||||
|
|
||||||
* If the directory is part of a Git repository, then the input will be treated as a `git+file:` URL, otherwise it will be treated as a `path:` url;
|
* If the directory is part of a Git repository, then the input will be treated as a `git+file:` URL, otherwise it will be treated as a `path:` url;
|
||||||
* If the directory doesn't contain a `flake.nix` file, then Nix will search for such a file upwards in the file system hierarchy until it finds any of:
|
* If the directory doesn't contain a `flake.nix` file, then Lix will search for such a file upwards in the file system hierarchy until it finds any of:
|
||||||
1. The Git repository root, or
|
1. The Git repository root, or
|
||||||
2. The filesystem root (/), or
|
2. The filesystem root (/), or
|
||||||
3. A folder on a different mount point.
|
3. A folder on a different mount point.
|
||||||
|
@ -176,7 +176,7 @@ Currently the `type` attribute can be one of the following:
|
||||||
The `ref` attribute defaults to resolving the `HEAD` reference.
|
The `ref` attribute defaults to resolving the `HEAD` reference.
|
||||||
|
|
||||||
The `rev` attribute must denote a commit that exists in the branch
|
The `rev` attribute must denote a commit that exists in the branch
|
||||||
or tag specified by the `ref` attribute, since Nix doesn't do a full
|
or tag specified by the `ref` attribute, since Lix doesn't do a full
|
||||||
clone of the remote repository by default (and the Git protocol
|
clone of the remote repository by default (and the Git protocol
|
||||||
doesn't allow fetching a `rev` without a known `ref`). The default
|
doesn't allow fetching a `rev` without a known `ref`). The default
|
||||||
is the commit currently pointed to by `ref`.
|
is the commit currently pointed to by `ref`.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
R"(
|
R"(
|
||||||
|
|
||||||
Nix supports different types of stores. These are described below.
|
Lix supports different types of stores. These are described below.
|
||||||
|
|
||||||
## Store URL format
|
## Store URL format
|
||||||
|
|
||||||
|
@ -22,11 +22,11 @@ instance,
|
||||||
--store ssh://machine.example.org?ssh-key=/path/to/my/key
|
--store ssh://machine.example.org?ssh-key=/path/to/my/key
|
||||||
```
|
```
|
||||||
|
|
||||||
tells Nix to access the store on a remote machine via the SSH
|
tells Lix to access the store on a remote machine via the SSH
|
||||||
protocol, using `/path/to/my/key` as the SSH private key. The
|
protocol, using `/path/to/my/key` as the SSH private key. The
|
||||||
supported settings for each store type are documented below.
|
supported settings for each store type are documented below.
|
||||||
|
|
||||||
The special store URL `auto` causes Nix to automatically select a
|
The special store URL `auto` causes Lix to automatically select a
|
||||||
store as follows:
|
store as follows:
|
||||||
|
|
||||||
* Use the [local store](#local-store) `/nix/store` if `/nix/var/nix`
|
* Use the [local store](#local-store) `/nix/store` if `/nix/var/nix`
|
||||||
|
|
|
@ -26,7 +26,7 @@ R""(
|
||||||
|
|
||||||
This command prints the log of a previous build of the [*installable*](./nix.md#installables) on standard output.
|
This command prints the log of a previous build of the [*installable*](./nix.md#installables) on standard output.
|
||||||
|
|
||||||
Nix looks for build logs in two places:
|
Lix looks for build logs in two places:
|
||||||
|
|
||||||
* In the directory `/nix/var/log/nix/drvs`, which contains logs for
|
* In the directory `/nix/var/log/nix/drvs`, which contains logs for
|
||||||
locally built derivations.
|
locally built derivations.
|
||||||
|
@ -35,7 +35,7 @@ Nix looks for build logs in two places:
|
||||||
should be named `<cache>/log/<base-name-of-store-path>`, where
|
should be named `<cache>/log/<base-name-of-store-path>`, where
|
||||||
`store-path` is a derivation,
|
`store-path` is a derivation,
|
||||||
e.g. `https://cache.nixos.org/log/dvmig8jgrdapvbyxb1rprckdmdqx08kv-hello-2.10.drv`.
|
e.g. `https://cache.nixos.org/log/dvmig8jgrdapvbyxb1rprckdmdqx08kv-hello-2.10.drv`.
|
||||||
For non-derivation store paths, Nix will first try to determine the
|
For non-derivation store paths, Lix will first try to determine the
|
||||||
deriver by fetching the `.narinfo` file for this store path.
|
deriver by fetching the `.narinfo` file for this store path.
|
||||||
|
|
||||||
)""
|
)""
|
||||||
|
|
|
@ -365,6 +365,11 @@ void mainWrapped(int argc, char * * argv)
|
||||||
|
|
||||||
setLogFormat("bar");
|
setLogFormat("bar");
|
||||||
settings.verboseBuild = false;
|
settings.verboseBuild = false;
|
||||||
|
if (isatty(STDERR_FILENO)) {
|
||||||
|
verbosity = lvlNotice;
|
||||||
|
} else {
|
||||||
|
verbosity = lvlInfo;
|
||||||
|
}
|
||||||
|
|
||||||
NixArgs args;
|
NixArgs args;
|
||||||
|
|
||||||
|
|
|
@ -81,15 +81,15 @@ nix = executable(
|
||||||
nix2_commands_sources,
|
nix2_commands_sources,
|
||||||
dependencies : [
|
dependencies : [
|
||||||
liblixcmd,
|
liblixcmd,
|
||||||
liblixutil,
|
liblixutil_mstatic,
|
||||||
liblixstore,
|
liblixstore_mstatic,
|
||||||
liblixexpr,
|
liblixexpr_mstatic,
|
||||||
liblixfetchers,
|
liblixfetchers_mstatic,
|
||||||
liblixmain,
|
liblixmain,
|
||||||
boehm,
|
boehm,
|
||||||
nlohmann_json,
|
nlohmann_json,
|
||||||
],
|
],
|
||||||
cpp_pch : ['../pch/precompiled-headers.hh'],
|
cpp_pch : cpp_pch,
|
||||||
install : true,
|
install : true,
|
||||||
# FIXME(Qyriad): is this right?
|
# FIXME(Qyriad): is this right?
|
||||||
install_rpath : libdir,
|
install_rpath : libdir,
|
||||||
|
|
|
@ -41,10 +41,11 @@ R""(
|
||||||
|
|
||||||
# Description
|
# Description
|
||||||
|
|
||||||
Nix is a tool for building software, configurations and other
|
Lix is a tool for building software, configurations and other
|
||||||
artifacts in a reproducible and declarative way. For more information,
|
artifacts in a reproducible and declarative way. For more information,
|
||||||
see the [Nix homepage](https://nixos.org/) or the [Nix
|
see the [Lix homepage](https://lix.systems).
|
||||||
manual](https://nixos.org/manual/nix/stable/).
|
|
||||||
|
Lix is a fork of the original implementation [CppNix](https://github.com/nixos/nix).
|
||||||
|
|
||||||
# Installables
|
# Installables
|
||||||
|
|
||||||
|
@ -68,7 +69,7 @@ The following types of installable are supported by most commands:
|
||||||
- Specified with `--expr`/`-E`
|
- Specified with `--expr`/`-E`
|
||||||
|
|
||||||
For most commands, if no installable is specified, `.` is assumed.
|
For most commands, if no installable is specified, `.` is assumed.
|
||||||
That is, Nix will operate on the default flake output attribute of the flake in the current directory.
|
That is, Lix will operate on the default flake output attribute of the flake in the current directory.
|
||||||
|
|
||||||
### Flake output attribute
|
### Flake output attribute
|
||||||
|
|
||||||
|
@ -99,7 +100,7 @@ way:
|
||||||
and `RELATIVE_FLAKE_DIR_PATH` is the path (relative to the directory
|
and `RELATIVE_FLAKE_DIR_PATH` is the path (relative to the directory
|
||||||
root) of the closest parent of the given path that contains a `flake.nix` within
|
root) of the closest parent of the given path that contains a `flake.nix` within
|
||||||
the git repository.
|
the git repository.
|
||||||
If no such directory exists, then Nix will error-out.
|
If no such directory exists, then Lix will error-out.
|
||||||
|
|
||||||
Note that the search will only include files indexed by git. In particular, files
|
Note that the search will only include files indexed by git. In particular, files
|
||||||
which are matched by `.gitignore` or have never been `git add`-ed will not be
|
which are matched by `.gitignore` or have never been `git add`-ed will not be
|
||||||
|
@ -120,12 +121,12 @@ way:
|
||||||
- If the supplied path is not a git repository, then the url will have the form
|
- If the supplied path is not a git repository, then the url will have the form
|
||||||
`path:FLAKE_DIR_PATH` where `FLAKE_DIR_PATH` is the closest parent
|
`path:FLAKE_DIR_PATH` where `FLAKE_DIR_PATH` is the closest parent
|
||||||
of the supplied path that contains a `flake.nix` file (within the same file-system).
|
of the supplied path that contains a `flake.nix` file (within the same file-system).
|
||||||
If no such directory exists, then Nix will error-out.
|
If no such directory exists, then Lix will error-out.
|
||||||
|
|
||||||
For example, if `/foo/bar/flake.nix` exists, then `/foo/bar/baz/` will resolve to
|
For example, if `/foo/bar/flake.nix` exists, then `/foo/bar/baz/` will resolve to
|
||||||
`path:/foo/bar`
|
`path:/foo/bar`
|
||||||
|
|
||||||
If *attrpath* is omitted, Nix tries some default values; for most
|
If *attrpath* is omitted, Lix tries some default values; for most
|
||||||
subcommands, the default is `packages.`*system*`.default`
|
subcommands, the default is `packages.`*system*`.default`
|
||||||
(e.g. `packages.x86_64-linux.default`), but some subcommands have
|
(e.g. `packages.x86_64-linux.default`), but some subcommands have
|
||||||
other defaults. If *attrpath* *is* specified, *attrpath* is
|
other defaults. If *attrpath* *is* specified, *attrpath* is
|
||||||
|
@ -243,7 +244,7 @@ operate are determined as follows:
|
||||||
…
|
…
|
||||||
```
|
```
|
||||||
* If you didn't specify the desired outputs, but the derivation has an
|
* If you didn't specify the desired outputs, but the derivation has an
|
||||||
attribute `meta.outputsToInstall`, Nix will use those outputs. For
|
attribute `meta.outputsToInstall`, Lix will use those outputs. For
|
||||||
example, since the package `nixpkgs#libxml2` has this attribute:
|
example, since the package `nixpkgs#libxml2` has this attribute:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
|
@ -259,7 +260,7 @@ operate are determined as follows:
|
||||||
|
|
||||||
[store derivation]: ../../glossary.md#gloss-store-derivation
|
[store derivation]: ../../glossary.md#gloss-store-derivation
|
||||||
|
|
||||||
* Otherwise, Nix will use all outputs of the derivation.
|
* Otherwise, Lix will use all outputs of the derivation.
|
||||||
|
|
||||||
# Nix stores
|
# Nix stores
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ links to a single instance.
|
||||||
|
|
||||||
Note that you can also set `auto-optimise-store` to `true` in
|
Note that you can also set `auto-optimise-store` to `true` in
|
||||||
`nix.conf` to perform this optimisation incrementally whenever a new
|
`nix.conf` to perform this optimisation incrementally whenever a new
|
||||||
path is added to the Nix store. To make this efficient, Nix maintains
|
path is added to the Nix store. To make this efficient, Lix maintains
|
||||||
a content-addressed index of all the files in the Nix store in the
|
a content-addressed index of all the files in the Nix store in the
|
||||||
directory `/nix/store/.links/`.
|
directory `/nix/store/.links/`.
|
||||||
|
|
||||||
|
|
|
@ -25,9 +25,9 @@ R""(
|
||||||
This command tests whether a particular Nix store (specified by the
|
This command tests whether a particular Nix store (specified by the
|
||||||
argument `--store` *url*) can be accessed. What this means is
|
argument `--store` *url*) can be accessed. What this means is
|
||||||
dependent on the type of the store. For instance, for an SSH store it
|
dependent on the type of the store. For instance, for an SSH store it
|
||||||
means that Nix can connect to the specified machine.
|
means that Lix can connect to the specified machine.
|
||||||
|
|
||||||
If the command succeeds, Nix returns a exit code of 0 and does not
|
If the command succeeds, Lix returns a exit code of 0 and does not
|
||||||
print any output.
|
print any output.
|
||||||
|
|
||||||
)""
|
)""
|
||||||
|
|
|
@ -48,7 +48,7 @@ struct CmdRepl : RawInstallablesCommand
|
||||||
void applyDefaultInstallables(std::vector<std::string> & rawInstallables) override
|
void applyDefaultInstallables(std::vector<std::string> & rawInstallables) override
|
||||||
{
|
{
|
||||||
if (!experimentalFeatureSettings.isEnabled(Xp::ReplFlake) && !(file) && rawInstallables.size() >= 1) {
|
if (!experimentalFeatureSettings.isEnabled(Xp::ReplFlake) && !(file) && rawInstallables.size() >= 1) {
|
||||||
warn("future versions of Nix will require using `--file` to load a file");
|
warn("future versions of Lix will require using `--file` to load a file");
|
||||||
if (rawInstallables.size() > 1)
|
if (rawInstallables.size() > 1)
|
||||||
warn("more than one input file is not currently supported");
|
warn("more than one input file is not currently supported");
|
||||||
auto filePath = rawInstallables[0].data();
|
auto filePath = rawInstallables[0].data();
|
||||||
|
|
|
@ -26,7 +26,7 @@ R""(
|
||||||
```
|
```
|
||||||
|
|
||||||
Note that `vim` (as of the time of writing of this page) is not an
|
Note that `vim` (as of the time of writing of this page) is not an
|
||||||
app but a package. Thus, Nix runs the eponymous file from the `vim`
|
app but a package. Thus, Lix runs the eponymous file from the `vim`
|
||||||
package.
|
package.
|
||||||
|
|
||||||
* Run `vim` with arguments:
|
* Run `vim` with arguments:
|
||||||
|
|
|
@ -53,18 +53,18 @@ R""(
|
||||||
|
|
||||||
# Description
|
# Description
|
||||||
|
|
||||||
Nix automatically determines potential runtime dependencies between
|
Lix automatically determines potential runtime dependencies between
|
||||||
store paths by scanning for the *hash parts* of store paths. For
|
store paths by scanning for the *hash parts* of store paths. For
|
||||||
instance, if there exists a store path
|
instance, if there exists a store path
|
||||||
`/nix/store/9df65igwjmf2wbw0gbrrgair6piqjgmi-glibc-2.31`, and a file
|
`/nix/store/9df65igwjmf2wbw0gbrrgair6piqjgmi-glibc-2.31`, and a file
|
||||||
inside another store path contains the string `9df65igw…`, then the
|
inside another store path contains the string `9df65igw…`, then the
|
||||||
latter store path *refers* to the former, and thus might need it at
|
latter store path *refers* to the former, and thus might need it at
|
||||||
runtime. Nix always maintains the existence of the transitive closure
|
runtime. Lix always maintains the existence of the transitive closure
|
||||||
of a store path under the references relationship; it is therefore not
|
of a store path under the references relationship; it is therefore not
|
||||||
possible to install a store path without having all of its references
|
possible to install a store path without having all of its references
|
||||||
present.
|
present.
|
||||||
|
|
||||||
Sometimes Nix packages end up with unexpected runtime dependencies;
|
Sometimes Lix packages end up with unexpected runtime dependencies;
|
||||||
for instance, a reference to a compiler might accidentally end up in a
|
for instance, a reference to a compiler might accidentally end up in a
|
||||||
binary, causing the former to be in the latter's closure. This kind of
|
binary, causing the former to be in the latter's closure. This kind of
|
||||||
*closure size bloat* is undesirable.
|
*closure size bloat* is undesirable.
|
||||||
|
|
|
@ -70,7 +70,7 @@ export _NIX_FORCE_HTTP=1
|
||||||
basicDownloadTests
|
basicDownloadTests
|
||||||
|
|
||||||
|
|
||||||
# Test whether Nix notices if the NAR doesn't match the hash in the NAR info.
|
# Test whether Lix notices if the NAR doesn't match the hash in the NAR info.
|
||||||
clearStore
|
clearStore
|
||||||
|
|
||||||
nar=$(ls $cacheDir/nar/*.nar.xz | head -n1)
|
nar=$(ls $cacheDir/nar/*.nar.xz | head -n1)
|
||||||
|
|
|
@ -18,7 +18,7 @@ nix-build build-hook.nix -A passthru.input2 \
|
||||||
--store "$TEST_ROOT/local" \
|
--store "$TEST_ROOT/local" \
|
||||||
--option system-features bar
|
--option system-features bar
|
||||||
|
|
||||||
# Now when we go to build that downstream derivation, Nix will try to
|
# Now when we go to build that downstream derivation, Lix will try to
|
||||||
# copy our already-build `input2` to the remote store. That store object
|
# copy our already-build `input2` to the remote store. That store object
|
||||||
# is input-addressed, so this will fail.
|
# is input-addressed, so this will fail.
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ drvPath3=$(nix derivation add --dry-run < $TEST_HOME/foo.json)
|
||||||
[[ ! -e "$drvPath3" ]]
|
[[ ! -e "$drvPath3" ]]
|
||||||
|
|
||||||
# But the JSON is rejected without the experimental feature
|
# But the JSON is rejected without the experimental feature
|
||||||
expectStderr 1 nix derivation add < $TEST_HOME/foo.json --experimental-features nix-command | grepQuiet "experimental Nix feature 'ca-derivations' is disabled"
|
expectStderr 1 nix derivation add < $TEST_HOME/foo.json --experimental-features nix-command | grepQuiet "experimental Lix feature 'ca-derivations' is disabled"
|
||||||
|
|
||||||
# Without --dry-run it is actually written
|
# Without --dry-run it is actually written
|
||||||
drvPath4=$(nix derivation add < $TEST_HOME/foo.json)
|
drvPath4=$(nix derivation add < $TEST_HOME/foo.json)
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
source common.sh
|
source common.sh
|
||||||
|
|
||||||
# Only run this if we have an older Nix available
|
# Only run this if we have an older Lix available
|
||||||
# XXX: This assumes that the `daemon` package is older than the `client` one
|
# XXX: This assumes that the `daemon` package is older than the `client` one
|
||||||
if [[ -z "${NIX_DAEMON_PACKAGE-}" ]]; then
|
if [[ -z "${NIX_DAEMON_PACKAGE-}" ]]; then
|
||||||
skipTest "not using the Nix daemon"
|
skipTest "not using the Nix daemon"
|
||||||
|
|
|
@ -72,7 +72,7 @@ EOF
|
||||||
# old 'tarball' fetcher should still have their type set to 'tarball'
|
# old 'tarball' fetcher should still have their type set to 'tarball'
|
||||||
assert (nodes.tarball_default_unpack.locked.type == "tarball");
|
assert (nodes.tarball_default_unpack.locked.type == "tarball");
|
||||||
# Unless explicitely specified, the 'unpack' parameter shouldn’t appear here
|
# Unless explicitely specified, the 'unpack' parameter shouldn’t appear here
|
||||||
# because that would break older Nix versions
|
# because that would break older Nix implementation versions
|
||||||
assert (!nodes.tarball_default_unpack.locked ? unpack);
|
assert (!nodes.tarball_default_unpack.locked ? unpack);
|
||||||
assert (nodes.tarball_default_unpack.locked.narHash == "$input_directory_hash");
|
assert (nodes.tarball_default_unpack.locked.narHash == "$input_directory_hash");
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@ EOF
|
||||||
[[ -z "${NIX_DAEMON_PACKAGE-}" ]] && return 0
|
[[ -z "${NIX_DAEMON_PACKAGE-}" ]] && return 0
|
||||||
|
|
||||||
# Ensure that a lockfile generated by the current Nix for tarball inputs
|
# Ensure that a lockfile generated by the current Nix for tarball inputs
|
||||||
# can still be read by an older Nix
|
# can still be read by an older Nix implementation
|
||||||
|
|
||||||
cat <<EOF > flake.nix
|
cat <<EOF > flake.nix
|
||||||
{
|
{
|
||||||
|
|
|
@ -485,6 +485,16 @@ nix flake lock $flake3Dir
|
||||||
nix flake update flake2/flake1 --flake "$flake3Dir"
|
nix flake update flake2/flake1 --flake "$flake3Dir"
|
||||||
[[ $(jq -r .nodes.flake1_2.locked.rev "$flake3Dir/flake.lock") =~ $hash2 ]]
|
[[ $(jq -r .nodes.flake1_2.locked.rev "$flake3Dir/flake.lock") =~ $hash2 ]]
|
||||||
|
|
||||||
|
# Test updating multiple inputs.
|
||||||
|
nix flake lock "$flake3Dir" --override-input flake1 flake1/master/$hash1
|
||||||
|
nix flake lock "$flake3Dir" --override-input flake2/flake1 flake1/master/$hash1
|
||||||
|
[[ $(jq -r .nodes.flake1.locked.rev "$flake3Dir/flake.lock") =~ $hash1 ]]
|
||||||
|
[[ $(jq -r .nodes.flake1_2.locked.rev "$flake3Dir/flake.lock") =~ $hash1 ]]
|
||||||
|
|
||||||
|
nix flake update flake1 flake2/flake1 --flake "$flake3Dir"
|
||||||
|
[[ $(jq -r .nodes.flake1.locked.rev "$flake3Dir/flake.lock") =~ $hash2 ]]
|
||||||
|
[[ $(jq -r .nodes.flake1_2.locked.rev "$flake3Dir/flake.lock") =~ $hash2 ]]
|
||||||
|
|
||||||
# Test 'nix flake metadata --json'.
|
# Test 'nix flake metadata --json'.
|
||||||
nix flake metadata $flake3Dir --json | jq .
|
nix flake metadata $flake3Dir --json | jq .
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ drvPath2=$(nix derivation add < $TEST_HOME/impure-drv.json)
|
||||||
[[ "$drvPath" = "$drvPath2" ]]
|
[[ "$drvPath" = "$drvPath2" ]]
|
||||||
|
|
||||||
# But only with the experimental feature!
|
# But only with the experimental feature!
|
||||||
expectStderr 1 nix derivation add < $TEST_HOME/impure-drv.json --experimental-features nix-command | grepQuiet "experimental Nix feature 'impure-derivations' is disabled"
|
expectStderr 1 nix derivation add < $TEST_HOME/impure-drv.json --experimental-features nix-command | grepQuiet "experimental Lix feature 'impure-derivations' is disabled"
|
||||||
|
|
||||||
nix build --dry-run --json --file ./impure-derivations.nix impure.all
|
nix build --dry-run --json --file ./impure-derivations.nix impure.all
|
||||||
json=$(nix build -L --no-link --json --file ./impure-derivations.nix impure.all)
|
json=$(nix build -L --no-link --json --file ./impure-derivations.nix impure.all)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Checks that the nul value for the accumulator is not forced unconditionally.
|
# Checks that the nul value for the accumulator is not forced unconditionally.
|
||||||
# Some languages provide a foldl' that is strict in this argument, but Nix does not.
|
# Some languages provide a foldl' that is strict in this argument, but Nix language does not.
|
||||||
builtins.foldl'
|
builtins.foldl'
|
||||||
(_: x: x)
|
(_: x: x)
|
||||||
(throw "This is never forced")
|
(throw "This is never forced")
|
||||||
|
|
|
@ -89,7 +89,7 @@
|
||||||
bool1 = true
|
bool1 = true
|
||||||
bool2 = false
|
bool2 = false
|
||||||
|
|
||||||
# FIXME: not supported because Nix doesn't have a date/time type.
|
# FIXME: not supported because Nix language doesn't have a date/time type.
|
||||||
#odt1 = 1979-05-27T07:32:00Z
|
#odt1 = 1979-05-27T07:32:00Z
|
||||||
#odt2 = 1979-05-27T00:32:00-07:00
|
#odt2 = 1979-05-27T00:32:00-07:00
|
||||||
#odt3 = 1979-05-27T00:32:00.999999-07:00
|
#odt3 = 1979-05-27T00:32:00.999999-07:00
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
export NIX_BIN_DIR=$(dirname $(type -p nix))
|
export NIX_BIN_DIR=$(dirname $(type -p nix))
|
||||||
# TODO Get Nix and its closure more flexibly
|
# TODO Get Lix and its closure more flexibly
|
||||||
export EXTRA_SANDBOX="/nix/store $(dirname $NIX_BIN_DIR)"
|
export EXTRA_SANDBOX="/nix/store $(dirname $NIX_BIN_DIR)"
|
||||||
|
|
||||||
badStoreUrl () {
|
badStoreUrl () {
|
||||||
|
|
|
@ -173,7 +173,7 @@ void TestSession::runCommand(std::string command)
|
||||||
std::cerr << "runCommand " << command << "\n";
|
std::cerr << "runCommand " << command << "\n";
|
||||||
}
|
}
|
||||||
command += "\n";
|
command += "\n";
|
||||||
// We have to feed a newline into the output parser, since Nix might not
|
// We have to feed a newline into the output parser, since Lix might not
|
||||||
// give us a newline before a prompt in all cases (it might clear line
|
// give us a newline before a prompt in all cases (it might clear line
|
||||||
// first, e.g.)
|
// first, e.g.)
|
||||||
outputParser.feed('\n');
|
outputParser.feed('\n');
|
||||||
|
|
|
@ -202,7 +202,7 @@ let
|
||||||
# use a plain tarpipe instead
|
# use a plain tarpipe instead
|
||||||
tar -C ${mockChannel pkgs} -c channel | ssh -p 20022 $ssh_opts vagrant@localhost tar x -f-
|
tar -C ${mockChannel pkgs} -c channel | ssh -p 20022 $ssh_opts vagrant@localhost tar x -f-
|
||||||
|
|
||||||
echo "Testing Nix installation..."
|
echo "Testing Lix installation..."
|
||||||
$ssh <<EOF
|
$ssh <<EOF
|
||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ let
|
||||||
|
|
||||||
root = pkgs.runCommand "nixpkgs-flake" {}
|
root = pkgs.runCommand "nixpkgs-flake" {}
|
||||||
''
|
''
|
||||||
mkdir -p $out/stable
|
mkdir -p $out/{stable,tags}
|
||||||
|
|
||||||
set -x
|
set -x
|
||||||
dir=nixpkgs-${nixpkgs.shortRev}
|
dir=nixpkgs-${nixpkgs.shortRev}
|
||||||
|
@ -14,9 +14,13 @@ let
|
||||||
find $dir -print0 | xargs -0 touch -h -t ${builtins.substring 0 12 nixpkgs.lastModifiedDate}.${builtins.substring 12 2 nixpkgs.lastModifiedDate} --
|
find $dir -print0 | xargs -0 touch -h -t ${builtins.substring 0 12 nixpkgs.lastModifiedDate}.${builtins.substring 12 2 nixpkgs.lastModifiedDate} --
|
||||||
tar cfz $out/stable/${nixpkgs.rev}.tar.gz $dir --hard-dereference
|
tar cfz $out/stable/${nixpkgs.rev}.tar.gz $dir --hard-dereference
|
||||||
|
|
||||||
echo 'Redirect "/latest.tar.gz" "/stable/${nixpkgs.rev}.tar.gz"' > $out/.htaccess
|
# Set the "Link" header on the redirect but not the final response to
|
||||||
|
# simulate an S3-like serving environment where the final host cannot set
|
||||||
echo 'Header set Link "<http://localhost/stable/${nixpkgs.rev}.tar.gz?rev=${nixpkgs.rev}&revCount=1234>; rel=\"immutable\""' > $out/stable/.htaccess
|
# arbitrary headers.
|
||||||
|
cat >$out/tags/.htaccess <<EOF
|
||||||
|
Redirect "/tags/latest.tar.gz" "/stable/${nixpkgs.rev}.tar.gz"
|
||||||
|
Header always set Link "<http://localhost/stable/${nixpkgs.rev}.tar.gz?rev=${nixpkgs.rev}&revCount=1234>; rel=\"immutable\""
|
||||||
|
EOF
|
||||||
'';
|
'';
|
||||||
in
|
in
|
||||||
|
|
||||||
|
@ -59,7 +63,7 @@ in
|
||||||
|
|
||||||
machine.wait_for_unit("httpd.service")
|
machine.wait_for_unit("httpd.service")
|
||||||
|
|
||||||
out = machine.succeed("nix flake metadata --json http://localhost/latest.tar.gz")
|
out = machine.succeed("nix flake metadata --json http://localhost/tags/latest.tar.gz")
|
||||||
print(out)
|
print(out)
|
||||||
info = json.loads(out)
|
info = json.loads(out)
|
||||||
|
|
||||||
|
@ -74,14 +78,14 @@ in
|
||||||
assert rev_count == 1234, f"{rev_count=} != 1234"
|
assert rev_count == 1234, f"{rev_count=} != 1234"
|
||||||
|
|
||||||
# Check that fetching with rev/revCount/narHash succeeds.
|
# Check that fetching with rev/revCount/narHash succeeds.
|
||||||
machine.succeed("nix flake metadata --json http://localhost/latest.tar.gz?rev=" + revision)
|
machine.succeed("nix flake metadata --json http://localhost/tags/latest.tar.gz?rev=" + revision)
|
||||||
machine.succeed("nix flake metadata --json http://localhost/latest.tar.gz?revCount=" + str(rev_count))
|
machine.succeed("nix flake metadata --json http://localhost/tags/latest.tar.gz?revCount=" + str(rev_count))
|
||||||
machine.succeed("nix flake metadata --json http://localhost/latest.tar.gz?narHash=" + info["locked"]["narHash"])
|
machine.succeed("nix flake metadata --json http://localhost/tags/latest.tar.gz?narHash=" + info["locked"]["narHash"])
|
||||||
|
|
||||||
# Check that fetching fails if we provide incorrect attributes.
|
# Check that fetching fails if we provide incorrect attributes.
|
||||||
machine.fail("nix flake metadata --json http://localhost/latest.tar.gz?rev=493300eb13ae6fb387fbd47bf54a85915acc31c0")
|
machine.fail("nix flake metadata --json http://localhost/tags/latest.tar.gz?rev=493300eb13ae6fb387fbd47bf54a85915acc31c0")
|
||||||
machine.fail("nix flake metadata --json http://localhost/latest.tar.gz?revCount=789")
|
machine.fail("nix flake metadata --json http://localhost/tags/latest.tar.gz?revCount=789")
|
||||||
machine.fail("nix flake metadata --json http://localhost/latest.tar.gz?narHash=sha256-tbudgBSg+bHWHiHnlteNzN8TUvI80ygS9IULh4rklEw=")
|
machine.fail("nix flake metadata --json http://localhost/tags/latest.tar.gz?narHash=sha256-tbudgBSg+bHWHiHnlteNzN8TUvI80ygS9IULh4rklEw=")
|
||||||
'';
|
'';
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,11 +64,11 @@ libutil_tester = executable(
|
||||||
gtest,
|
gtest,
|
||||||
boehm,
|
boehm,
|
||||||
liblixutil,
|
liblixutil,
|
||||||
liblixexpr,
|
liblixexpr_mstatic,
|
||||||
liblixutil_test_support,
|
liblixutil_test_support,
|
||||||
nlohmann_json,
|
nlohmann_json,
|
||||||
],
|
],
|
||||||
cpp_pch : ['../../src/pch/precompiled-headers.hh'],
|
cpp_pch : cpp_pch,
|
||||||
)
|
)
|
||||||
|
|
||||||
test(
|
test(
|
||||||
|
@ -103,7 +103,7 @@ libstore_test_support = library(
|
||||||
include_directories : include_directories(
|
include_directories : include_directories(
|
||||||
'libstore-support',
|
'libstore-support',
|
||||||
),
|
),
|
||||||
cpp_pch : ['../../src/pch/precompiled-headers.hh'],
|
cpp_pch : cpp_pch,
|
||||||
)
|
)
|
||||||
liblixstore_test_support = declare_dependency(
|
liblixstore_test_support = declare_dependency(
|
||||||
include_directories : include_directories('libstore-support'),
|
include_directories : include_directories('libstore-support'),
|
||||||
|
@ -131,13 +131,13 @@ libstore_tester = executable(
|
||||||
dependencies : [
|
dependencies : [
|
||||||
liblixstore_test_support,
|
liblixstore_test_support,
|
||||||
liblixutil_test_support,
|
liblixutil_test_support,
|
||||||
liblixstore,
|
liblixstore_mstatic,
|
||||||
liblixutil,
|
liblixutil,
|
||||||
rapidcheck,
|
rapidcheck,
|
||||||
gtest,
|
gtest,
|
||||||
nlohmann_json,
|
nlohmann_json,
|
||||||
],
|
],
|
||||||
cpp_pch : ['../../src/pch/precompiled-headers.hh'],
|
cpp_pch : cpp_pch,
|
||||||
)
|
)
|
||||||
|
|
||||||
test(
|
test(
|
||||||
|
@ -169,7 +169,7 @@ libexpr_test_support = library(
|
||||||
include_directories : include_directories(
|
include_directories : include_directories(
|
||||||
'libexpr-support',
|
'libexpr-support',
|
||||||
),
|
),
|
||||||
cpp_pch : ['../../src/pch/precompiled-headers.hh'],
|
cpp_pch : cpp_pch,
|
||||||
)
|
)
|
||||||
liblixexpr_test_support = declare_dependency(
|
liblixexpr_test_support = declare_dependency(
|
||||||
include_directories : include_directories('libexpr-support'),
|
include_directories : include_directories('libexpr-support'),
|
||||||
|
@ -194,16 +194,16 @@ libexpr_tester = executable(
|
||||||
dependencies : [
|
dependencies : [
|
||||||
liblixexpr_test_support,
|
liblixexpr_test_support,
|
||||||
liblixstore_test_support,
|
liblixstore_test_support,
|
||||||
liblixstore,
|
liblixstore_mstatic,
|
||||||
liblixutil,
|
liblixutil,
|
||||||
liblixexpr,
|
liblixexpr_mstatic,
|
||||||
liblixfetchers,
|
liblixfetchers_mstatic,
|
||||||
rapidcheck,
|
rapidcheck,
|
||||||
boehm,
|
boehm,
|
||||||
gtest,
|
gtest,
|
||||||
nlohmann_json,
|
nlohmann_json,
|
||||||
],
|
],
|
||||||
cpp_pch : ['../../src/pch/precompiled-headers.hh'],
|
cpp_pch : cpp_pch,
|
||||||
)
|
)
|
||||||
|
|
||||||
test(
|
test(
|
||||||
|
@ -225,12 +225,12 @@ libcmd_tester = executable(
|
||||||
liblixcmd,
|
liblixcmd,
|
||||||
liblixutil,
|
liblixutil,
|
||||||
liblixmain,
|
liblixmain,
|
||||||
liblixexpr,
|
liblixexpr_mstatic,
|
||||||
liblixstore,
|
liblixstore_mstatic,
|
||||||
gtest,
|
gtest,
|
||||||
boost,
|
boost,
|
||||||
],
|
],
|
||||||
cpp_pch : ['../../src/pch/precompiled-headers.hh'],
|
cpp_pch : cpp_pch,
|
||||||
)
|
)
|
||||||
|
|
||||||
test(
|
test(
|
||||||
|
|
4
version.json
Normal file
4
version.json
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"version": "2.90.0",
|
||||||
|
"release_name": "Vanilla Ice Cream"
|
||||||
|
}
|
Loading…
Reference in a new issue