forked from lix-project/lix
Compare commits
11 commits
9a6392c979
...
80bf7ab4a3
Author | SHA1 | Date | |
---|---|---|---|
kloenk | 80bf7ab4a3 | ||
Linus Heckemann | 5312e60be6 | ||
jade | c7ca87461d | ||
jade | 7081889faa | ||
jade | adedac70fa | ||
Linus Heckemann | 82de36f77a | ||
713cd7e9e7 | |||
Lunaphied | d4b7e6baca | ||
jade | a6b33cb3b2 | ||
jade | 0f99ed43f1 | ||
jade | e6e5cacabe |
129
.gitignore
vendored
129
.gitignore
vendored
|
@ -1,128 +1,5 @@
|
|||
Makefile.config
|
||||
perl/Makefile.config
|
||||
|
||||
# /
|
||||
/aclocal.m4
|
||||
/autom4te.cache
|
||||
/precompiled-headers.h.gch
|
||||
/config.*
|
||||
/configure
|
||||
/stamp-h1
|
||||
/svn-revision
|
||||
/libtool
|
||||
/config
|
||||
|
||||
# /doc/manual/
|
||||
/doc/manual/*.1
|
||||
/doc/manual/*.5
|
||||
/doc/manual/*.8
|
||||
/doc/manual/generated/*
|
||||
/doc/manual/nix.json
|
||||
/doc/manual/conf-file.json
|
||||
/doc/manual/language.json
|
||||
/doc/manual/xp-features.json
|
||||
/doc/manual/src/command-ref/experimental-features-shortlist.md
|
||||
/doc/manual/src/contributing/experimental-feature-descriptions.md
|
||||
/doc/manual/src/release-notes/rl-next-generated.md
|
||||
|
||||
# /scripts/
|
||||
/scripts/nix-profile.sh
|
||||
/scripts/nix-profile-daemon.sh
|
||||
/scripts/nix-profile.fish
|
||||
/scripts/nix-profile-daemon.fish
|
||||
|
||||
# /src/libexpr/
|
||||
/src/libexpr/lexer-tab.cc
|
||||
/src/libexpr/lexer-tab.hh
|
||||
/src/libexpr/parser-tab.cc
|
||||
/src/libexpr/parser-tab.hh
|
||||
/src/libexpr/parser-tab.output
|
||||
/src/libexpr/nix.tbl
|
||||
/src/libexpr/tests
|
||||
/tests/unit/libexpr/libnixexpr-tests
|
||||
|
||||
# /src/libstore/
|
||||
*.gen.*
|
||||
/src/libstore/tests
|
||||
/tests/unit/libstore/libnixstore-tests
|
||||
|
||||
# /src/libutil/
|
||||
/src/libutil/tests
|
||||
/tests/unit/libutil/libnixutil-tests
|
||||
|
||||
/src/nix/nix
|
||||
|
||||
/src/nix/doc
|
||||
|
||||
# /src/nix-env/
|
||||
/src/nix-env/nix-env
|
||||
|
||||
# /src/nix-instantiate/
|
||||
/src/nix-instantiate/nix-instantiate
|
||||
|
||||
# /src/nix-store/
|
||||
/src/nix-store/nix-store
|
||||
|
||||
/src/nix-prefetch-url/nix-prefetch-url
|
||||
|
||||
/src/nix-collect-garbage/nix-collect-garbage
|
||||
|
||||
# /src/nix-channel/
|
||||
/src/nix-channel/nix-channel
|
||||
|
||||
# /src/nix-build/
|
||||
/src/nix-build/nix-build
|
||||
|
||||
/src/nix-copy-closure/nix-copy-closure
|
||||
|
||||
/src/error-demo/error-demo
|
||||
|
||||
/src/build-remote/build-remote
|
||||
|
||||
# /tests/functional/
|
||||
/tests/functional/test-tmp
|
||||
/tests/functional/common/vars-and-functions.sh
|
||||
/tests/functional/result*
|
||||
/tests/functional/restricted-innocent
|
||||
/tests/functional/shell
|
||||
/tests/functional/shell.drv
|
||||
/tests/functional/config.nix
|
||||
/tests/functional/ca/config.nix
|
||||
/tests/functional/dyn-drv/config.nix
|
||||
/tests/functional/repl-result-out
|
||||
/tests/functional/debugger-test-out
|
||||
/tests/functional/test-libstoreconsumer/test-libstoreconsumer
|
||||
|
||||
# /tests/functional/lang/
|
||||
/tests/functional/lang/*.out
|
||||
/tests/functional/lang/*.out.xml
|
||||
/tests/functional/lang/*.err
|
||||
/tests/functional/lang/*.ast
|
||||
|
||||
/perl/lib/Nix/Config.pm
|
||||
/perl/lib/Nix/Store.cc
|
||||
|
||||
/misc/systemd/nix-daemon.service
|
||||
/misc/systemd/nix-daemon.socket
|
||||
/misc/systemd/nix-daemon.conf
|
||||
/misc/upstart/nix-daemon.conf
|
||||
|
||||
/src/resolve-system-dependencies/resolve-system-dependencies
|
||||
|
||||
outputs/
|
||||
|
||||
*.a
|
||||
*.o
|
||||
*.o.tmp
|
||||
*.so
|
||||
*.dylib
|
||||
*.dll
|
||||
*.exe
|
||||
*.dep
|
||||
*~
|
||||
*.pc
|
||||
*.plist
|
||||
|
||||
# GNU Global
|
||||
GPATH
|
||||
GRTAGS
|
||||
|
@ -132,17 +9,11 @@ GTAGS
|
|||
# ccls
|
||||
/.ccls-cache
|
||||
|
||||
# auto-generated compilation database
|
||||
compile_commands.json
|
||||
|
||||
nix-rust/target
|
||||
|
||||
result
|
||||
result-*
|
||||
|
||||
.vscode/
|
||||
.direnv/
|
||||
.envrc.local
|
||||
|
||||
# clangd and possibly more
|
||||
.cache/
|
||||
|
|
|
@ -87,11 +87,12 @@ pre-commit-run {
|
|||
"file"
|
||||
"header"
|
||||
];
|
||||
# generated files; these will never actually be seen by this
|
||||
# check, and are left here as documentation
|
||||
excludes = [
|
||||
"(parser|lexer)-tab\\.hh$"
|
||||
"\\.gen\\.hh$"
|
||||
''^src/pch/.*$''
|
||||
# generated files; these will never actually be seen by this
|
||||
# check, and are left here as documentation
|
||||
''(parser|lexer)-tab\.hh$''
|
||||
''\.gen\.hh$''
|
||||
];
|
||||
entry = lib.getExe pkgs.check-headers;
|
||||
};
|
||||
|
|
|
@ -169,7 +169,6 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
./boehmgc-coroutine-sp-fallback.diff
|
||||
./doc
|
||||
./misc
|
||||
./precompiled-headers.h
|
||||
./src
|
||||
./COPYING
|
||||
]
|
||||
|
@ -449,7 +448,10 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
shellHook = ''
|
||||
# don't re-run the hook in (other) nested nix-shells
|
||||
function lixShellHook() {
|
||||
if [[ $name != lix-shell-env ]]; then
|
||||
# n.b. how the heck does this become -env-env? well, `nix develop` does it:
|
||||
# https://git.lix.systems/lix-project/lix/src/commit/7575db522e9008685c4009423398f6900a16bcce/src/nix/develop.cc#L240-L241
|
||||
# this is, of course, absurd.
|
||||
if [[ $name != lix-shell-env && $name != lix-shell-env-env ]]; then
|
||||
return;
|
||||
fi
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include <algorithm>
|
||||
#include <set>
|
||||
#include <memory>
|
||||
#include <string_view>
|
||||
#include <tuple>
|
||||
#include <iomanip>
|
||||
#if __APPLE__
|
||||
|
@ -20,9 +21,9 @@
|
|||
#include "local-store.hh"
|
||||
#include "legacy.hh"
|
||||
#include "experimental-features.hh"
|
||||
#include "hash.hh"
|
||||
|
||||
using namespace nix;
|
||||
using std::cin;
|
||||
|
||||
static void handleAlarm(int sig) {
|
||||
}
|
||||
|
@ -35,9 +36,19 @@ std::string escapeUri(std::string uri)
|
|||
|
||||
static std::string currentLoad;
|
||||
|
||||
static std::string makeLockFilename(const std::string & storeUri) {
|
||||
// We include 48 bytes of escaped URI to give an idea of what the lock
|
||||
// is on, then 16 bytes of hash to disambiguate.
|
||||
// This avoids issues with the escaped URI being very long and causing
|
||||
// path too long errors, while also avoiding any possibility of collision
|
||||
// caused by simple truncation.
|
||||
auto hash = hashString(HashType::htSHA256, storeUri).to_string(Base::Base32, false);
|
||||
return escapeUri(storeUri).substr(0, 48) + "-" + hash.substr(0, 16);
|
||||
}
|
||||
|
||||
static AutoCloseFD openSlotLock(const Machine & m, uint64_t slot)
|
||||
{
|
||||
return openLockFile(fmt("%s/%s-%d", currentLoad, escapeUri(m.storeUri), slot), true);
|
||||
return openLockFile(fmt("%s/%s-%d", currentLoad, makeLockFilename(m.storeUri), slot), true);
|
||||
}
|
||||
|
||||
static bool allSupportedLocally(Store & store, const std::set<std::string>& requiredFeatures) {
|
||||
|
@ -263,7 +274,9 @@ connected:
|
|||
auto inputs = readStrings<PathSet>(source);
|
||||
auto wantedOutputs = readStrings<StringSet>(source);
|
||||
|
||||
AutoCloseFD uploadLock = openLockFile(currentLoad + "/" + escapeUri(storeUri) + ".upload-lock", true);
|
||||
auto lockFileName = currentLoad + "/" + makeLockFilename(storeUri) + ".upload-lock";
|
||||
|
||||
AutoCloseFD uploadLock = openLockFile(lockFileName, true);
|
||||
|
||||
{
|
||||
Activity act(*logger, lvlTalkative, actUnknown, fmt("waiting for the upload lock to '%s'", storeUri));
|
||||
|
|
|
@ -54,6 +54,7 @@ libcmd = library(
|
|||
nlohmann_json,
|
||||
lix_doc
|
||||
],
|
||||
cpp_pch : ['../pch/precompiled-headers.hh'],
|
||||
install : true,
|
||||
# FIXME(Qyriad): is this right?
|
||||
install_rpath : libdir,
|
||||
|
|
|
@ -145,6 +145,7 @@ libexpr = library(
|
|||
include_directories : [
|
||||
'../libmain',
|
||||
],
|
||||
cpp_pch : ['../pch/precompiled-headers.hh'],
|
||||
install : true,
|
||||
# FIXME(Qyriad): is this right?
|
||||
install_rpath : libdir,
|
||||
|
|
|
@ -322,7 +322,7 @@ struct GitLabInputScheme : GitArchiveInputScheme
|
|||
readFile(
|
||||
store->toRealPath(
|
||||
downloadFile(store, url, "source", false, headers).storePath)));
|
||||
if (json.is_array() && json.size() == 1 && json[0]["id"] != nullptr) {
|
||||
if (json.is_array() && json.size() >= 1 && json[0]["id"] != nullptr) {
|
||||
auto rev = Hash::parseAny(std::string(json[0]["id"]), htSHA1);
|
||||
debug("HEAD revision for '%s' is %s", url, rev.gitRev());
|
||||
return rev;
|
||||
|
|
|
@ -30,6 +30,7 @@ libfetchers = library(
|
|||
liblixutil,
|
||||
nlohmann_json,
|
||||
],
|
||||
cpp_pch : ['../pch/precompiled-headers.hh'],
|
||||
install : true,
|
||||
# FIXME(Qyriad): is this right?
|
||||
install_rpath : libdir,
|
||||
|
|
|
@ -20,6 +20,7 @@ libmain = library(
|
|||
liblixutil,
|
||||
liblixstore,
|
||||
],
|
||||
cpp_pch : ['../pch/precompiled-headers.hh'],
|
||||
install : true,
|
||||
# FIXME(Qyriad): is this right?
|
||||
install_rpath : libdir,
|
||||
|
|
|
@ -550,7 +550,12 @@ void LocalStore::openDB(State & state, bool create)
|
|||
if (mode == "wal" ) {
|
||||
/* persist the WAL files when the DB connection is closed.
|
||||
* This allows for read-only connections without any write permissions
|
||||
* on the state directory to succeed on a closed database. */
|
||||
* on the state directory to succeed on a closed database. Setting the
|
||||
* journal_size_limit to 2^40 bytes results in the WAL files getting
|
||||
* truncated to 0 on exit and limits the on disk size of the WAL files
|
||||
* to 2^40 bytes following a checkpoint */
|
||||
if (sqlite3_exec(db, "pragma main.journal_size_limit = 1099511627776;", 0, 0, 0) != SQLITE_OK)
|
||||
SQLiteError::throw_(db, "setting journal_size_limit");
|
||||
int enable = 1;
|
||||
if (sqlite3_file_control(db, NULL, SQLITE_FCNTL_PERSIST_WAL, &enable) != SQLITE_OK)
|
||||
SQLiteError::throw_(db, "setting persistent WAL mode");
|
||||
|
|
|
@ -220,6 +220,7 @@ libstore = library(
|
|||
nlohmann_json,
|
||||
],
|
||||
cpp_args : cpp_args,
|
||||
cpp_pch : ['../pch/precompiled-headers.hh'],
|
||||
install : true,
|
||||
# FIXME(Qyriad): is this right?
|
||||
install_rpath : libdir,
|
||||
|
|
|
@ -129,6 +129,7 @@ libutil = library(
|
|||
openssl,
|
||||
nlohmann_json,
|
||||
],
|
||||
cpp_pch : ['../pch/precompiled-headers.hh'],
|
||||
implicit_include_directories : true,
|
||||
install : true,
|
||||
)
|
||||
|
|
|
@ -89,6 +89,7 @@ nix = executable(
|
|||
boehm,
|
||||
nlohmann_json,
|
||||
],
|
||||
cpp_pch : ['../pch/precompiled-headers.hh'],
|
||||
install : true,
|
||||
# FIXME(Qyriad): is this right?
|
||||
install_rpath : libdir,
|
||||
|
|
|
@ -68,6 +68,7 @@ libutil_tester = executable(
|
|||
liblixutil_test_support,
|
||||
nlohmann_json,
|
||||
],
|
||||
cpp_pch : ['../../src/pch/precompiled-headers.hh'],
|
||||
)
|
||||
|
||||
test(
|
||||
|
@ -102,6 +103,7 @@ libstore_test_support = library(
|
|||
include_directories : include_directories(
|
||||
'libstore-support',
|
||||
),
|
||||
cpp_pch : ['../../src/pch/precompiled-headers.hh'],
|
||||
)
|
||||
liblixstore_test_support = declare_dependency(
|
||||
include_directories : include_directories('libstore-support'),
|
||||
|
@ -135,6 +137,7 @@ libstore_tester = executable(
|
|||
gtest,
|
||||
nlohmann_json,
|
||||
],
|
||||
cpp_pch : ['../../src/pch/precompiled-headers.hh'],
|
||||
)
|
||||
|
||||
test(
|
||||
|
@ -166,6 +169,7 @@ libexpr_test_support = library(
|
|||
include_directories : include_directories(
|
||||
'libexpr-support',
|
||||
),
|
||||
cpp_pch : ['../../src/pch/precompiled-headers.hh'],
|
||||
)
|
||||
liblixexpr_test_support = declare_dependency(
|
||||
include_directories : include_directories('libexpr-support'),
|
||||
|
@ -199,6 +203,7 @@ libexpr_tester = executable(
|
|||
gtest,
|
||||
nlohmann_json,
|
||||
],
|
||||
cpp_pch : ['../../src/pch/precompiled-headers.hh'],
|
||||
)
|
||||
|
||||
test(
|
||||
|
@ -225,6 +230,7 @@ libcmd_tester = executable(
|
|||
gtest,
|
||||
boost,
|
||||
],
|
||||
cpp_pch : ['../../src/pch/precompiled-headers.hh'],
|
||||
)
|
||||
|
||||
test(
|
||||
|
|
Loading…
Reference in a new issue