Age | Commit message (Collapse) | Author |
|
|
|
|
|
Allow empty hash in derivations
|
|
|
|
This replaces the copy&paste with a helper function in hash.hh.
|
|
|
|
This function was used in only one place, where it could easily be
replaced by readDerivation() since it's not
performance-critical. (This function appears to have been modelled
after queryDerivationOutputs(), which exists only to make the garbage
collector faster.)
|
|
Add tests for pool.hh
|
|
Add an option to print the logs in a machine-readable format
|
|
|
|
|
|
|
|
|
|
libutils/hash: remove default encoding
|
|
Actually test nix-env with a remote store
|
|
Prelink static libraries into an object file
|
|
This combines the *.o into a big .o producing one translation unit.
This preserve our unused static initializers, as specified in the C++
standard:
If no variable or function is odr-used from a given translation
unit, the non-local variables defined in that translation unit may
never be initialized (this models the behavior of an on-demand
dynamic library).
Note that this is very similar to how the --whole-archive flag works.
One advantage of this is that users of the final .a library don’t have
to worry about specifying --whole-archive, or that we have unused
static initializers at all!
|
|
WSL1 doesn’t support i686-linux emulation, see https://github.com/microsoft/wsl/issues/2468
|
|
fetchTarball, fetchTree, and fetchGit all have *optional* hash attrs.
This means that we need to be careful with what we allow to avoid
accidentally making these defaults. When ‘hash = ""’ we assume the
empty hash is wanted.
|
|
follow up of https://github.com/NixOS/nix/pull/3544
This allows hash="" so that it can be used for debugging purposes. For
instance, this gives you an error message like:
warning: found empty hash, assuming you wanted 'sha256:0000000000000000000000000000000000000000000000000000'
hash mismatch in fixed-output derivation '/nix/store/asx6qw1r1xk6iak6y6jph4n58h4hdmbm-nix':
wanted: sha256:0000000000000000000000000000000000000000000000000000
got: sha256:0fpfhipl9v1mfzw2ffmxiyyzqwlkvww22bh9wcy4qrfslb4jm429
|
|
Needed so that we can include it as a logger in loggers.cc without
adding a dependency on nix
This also requires moving names.hh to libutil to prevent a circular
dependency between libmain and libexpr
|
|
|
|
The `remote-store` test loads the `user-env` one to test nix-env when
using the daemon, but actually does it incorrectly because every test
starts (in `common.sh`) by resetting the value of `NIX_REMOTE`, meaning
that the `user-env` test will never use the daemon.
Fix this by setting `NIX_REMOTE_` before sourcing `user-env.sh` in the
`remote-store` test, so that `NIX_REMOTE` is correctly set inside the
test
|
|
Make the printing of the build logs systematically go through the
logger, and replicate the behavior of `no-build-output` by having two
different loggers (one that prints the build logs and one that doesn't)
|
|
|
|
Add a new `--log-format` cli argument to change the format of the logs.
The possible values are
- raw (the default one for old-style commands)
- bar (the default one for new-style commands)
- bar-with-logs (equivalent to `--print-build-logs`)
- internal-json (the internal machine-readable json format)
|
|
Add error message when FileIngestionMethod is out of bounds
|
|
Alternative fix to #3661. The cause was that 'name' is a
std::string_view into a temporary which could get overwritten.
|
|
Add `src/libutil/tests/libutil-tests` to `.gitignore`
|
|
I gather this comes from the new unit tests.
|
|
bool coerces anything >0 to true, but in the future we may have other
file ingestion methods. This shows a better error message when the
“recursive” byte isn’t 1.
|
|
|
|
Fixes #3648.
|
|
This will make it easier to reason about the hash encoding and switch to
SRI everywhere where possible.
|
|
This was a latent bug that just appeared because of the tests that were
added. Remember to wait for CI! :)
|
|
Remove `addToStore` variant as requested by `FIXME`
|
|
|
|
Co-authored-by: James Lee <jbit@jbit.net>
|
|
Improve ref validity checking in fetchgit
|
|
|
|
As `git fetch` may chose to interpret refspec to it's liking, ensure that we
only pass refs that begin with `refs/` as is, otherwise, prepend them with
`refs/heads`. Otherwise, branches named `heads/foo` (I know it's bad, but it's
allowed), would be fetched as `foo`, instead of `heads/foo`.
|
|
The previous regex was too strict and did not match what git was allowing. It
could lead to `fetchGit` not accepting valid branch names, even though they
exist in a repository (for example, branch names containing `/`, which are
pretty standard, like `release/1.0` branches).
The new regex defines what a branch name should **NOT** contain. It takes the
definitions from `refs.c` in https://github.com/git/git and `git help
check-ref-format` pages.
This change also introduces a test for ref name validity checking, which
compares the result from Nix with the result of `git check-ref-format --branch`.
|
|
The idea is it's always more flexible to consumer a `Source` than a
plain string, and it might even reduce memory consumption.
I also looked at `addToStoreFromDump` with its `// FIXME: remove?`, but
the worked needed for that is far more up for interpretation, so I
punted for now.
|
|
Add unit tests for config.cc
|
|
Replace some `bool recursive` with a new `FileIngestionMethod` enum
|
|
installer: don't require xz on darwin
|
|
There was an enum there that matched in perfectly.
|
|
On macOS the system tar has builtin support for lzma while xz isn't
available as a separate binary. There's no builtin package manager
there available either so having to install lzma (without nix) would be
rather painful.
|
|
This is much less confusing since recursive is no longer a boolean.
|
|
This is a different recursive than used in makeFixedOutputPath.
|