Skip to content

Commit

Permalink
Remove corepkgs/config.nix
Browse files Browse the repository at this point in the history
This isn't used anywhere except in the configure script of the Perl
bindings. I've changed the latter to use the C++ API's Settings object
at runtime.
  • Loading branch information
edolstra committed Sep 17, 2020
1 parent 787469c commit c9f51e8
Show file tree
Hide file tree
Showing 8 changed files with 19 additions and 106 deletions.
9 changes: 0 additions & 9 deletions .gitignore
Expand Up @@ -12,15 +12,6 @@ perl/Makefile.config
/svn-revision
/libtool

/corepkgs/config.nix

# /corepkgs/channels/
/corepkgs/channels/unpack.sh

# /corepkgs/nar/
/corepkgs/nar/nar.sh
/corepkgs/nar/unnar.sh

# /doc/manual/
/doc/manual/*.1
/doc/manual/*.5
Expand Down
13 changes: 0 additions & 13 deletions corepkgs/config.nix.in

This file was deleted.

4 changes: 1 addition & 3 deletions corepkgs/local.mk
@@ -1,6 +1,4 @@
corepkgs_FILES = \
fetchurl.nix

$(foreach file,config.nix $(corepkgs_FILES),$(eval $(call install-data-in,$(d)/$(file),$(datadir)/nix/corepkgs)))

template-files += $(d)/config.nix
$(foreach file,$(corepkgs_FILES),$(eval $(call install-data-in,$(d)/$(file),$(datadir)/nix/corepkgs)))
13 changes: 0 additions & 13 deletions perl/configure.ac
Expand Up @@ -70,19 +70,6 @@ PKG_CHECK_MODULES([NIX], [nix-store])

NEED_PROG([NIX], [nix])

# Get nix configure values
export NIX_REMOTE=daemon
nixbindir=$("$NIX" --experimental-features nix-command eval --raw -f '<nix/config.nix>' nixBinDir)
nixlibexecdir=$("$NIX" --experimental-features nix-command eval --raw -f '<nix/config.nix>' nixLibexecDir)
nixlocalstatedir=$("$NIX" --experimental-features nix-command eval --raw -f '<nix/config.nix>' nixLocalstateDir)
nixsysconfdir=$("$NIX" --experimental-features nix-command eval --raw -f '<nix/config.nix>' nixSysconfDir)
nixstoredir=$("$NIX" --experimental-features nix-command eval --raw -f '<nix/config.nix>' nixStoreDir)
AC_SUBST(nixbindir)
AC_SUBST(nixlibexecdir)
AC_SUBST(nixlocalstatedir)
AC_SUBST(nixsysconfdir)
AC_SUBST(nixstoredir)

# Expand all variables in config.status.
test "$prefix" = NONE && prefix=$ac_default_prefix
test "$exec_prefix" = NONE && exec_prefix='${prefix}'
Expand Down
10 changes: 2 additions & 8 deletions perl/lib/Nix/Config.pm.in
Expand Up @@ -4,14 +4,8 @@ use MIME::Base64;

$version = "@PACKAGE_VERSION@";

$binDir = $ENV{"NIX_BIN_DIR"} || "@nixbindir@";
$libexecDir = $ENV{"NIX_LIBEXEC_DIR"} || "@nixlibexecdir@";
$stateDir = $ENV{"NIX_STATE_DIR"} || "@nixlocalstatedir@/nix";
$logDir = $ENV{"NIX_LOG_DIR"} || "@nixlocalstatedir@/log/nix";
$confDir = $ENV{"NIX_CONF_DIR"} || "@nixsysconfdir@/nix";
$storeDir = $ENV{"NIX_STORE_DIR"} || "@nixstoredir@";

$useBindings = 1;
$binDir = Nix::Store::getBinDir;
$storeDir = Nix::Store::getStoreDir;

%config = ();

Expand Down
60 changes: 3 additions & 57 deletions perl/lib/Nix/Store.pm
Expand Up @@ -2,7 +2,6 @@ package Nix::Store;

use strict;
use warnings;
use Nix::Config;

require Exporter;

Expand All @@ -22,6 +21,7 @@ our @EXPORT = qw(
addToStore makeFixedOutputPath
derivationFromPath
addTempRoot
getBinDir getStoreDir
);

our $VERSION = '0.15';
Expand All @@ -34,62 +34,8 @@ sub backtick {
return $res;
}

if ($Nix::Config::useBindings) {
require XSLoader;
XSLoader::load('Nix::Store', $VERSION);
} else {

# Provide slow fallbacks of some functions on platforms that don't
# support the Perl bindings.

use File::Temp;
use Fcntl qw/F_SETFD/;

*hashFile = sub {
my ($algo, $base32, $path) = @_;
my $res = backtick("$Nix::Config::binDir/nix-hash", "--flat", $path, "--type", $algo, $base32 ? "--base32" : ());
chomp $res;
return $res;
};

*hashPath = sub {
my ($algo, $base32, $path) = @_;
my $res = backtick("$Nix::Config::binDir/nix-hash", $path, "--type", $algo, $base32 ? "--base32" : ());
chomp $res;
return $res;
};

*hashString = sub {
my ($algo, $base32, $s) = @_;
my $fh = File::Temp->new();
print $fh $s;
my $res = backtick("$Nix::Config::binDir/nix-hash", $fh->filename, "--type", $algo, $base32 ? "--base32" : ());
chomp $res;
return $res;
};

*addToStore = sub {
my ($srcPath, $recursive, $algo) = @_;
die "not implemented" if $recursive || $algo ne "sha256";
my $res = backtick("$Nix::Config::binDir/nix-store", "--add", $srcPath);
chomp $res;
return $res;
};

*isValidPath = sub {
my ($path) = @_;
my $res = backtick("$Nix::Config::binDir/nix-store", "--check-validity", "--print-invalid", $path);
chomp $res;
return $res ne $path;
};

*queryPathHash = sub {
my ($path) = @_;
my $res = backtick("$Nix::Config::binDir/nix-store", "--query", "--hash", $path);
chomp $res;
return $res;
};
}
require XSLoader;
XSLoader::load('Nix::Store', $VERSION);

1;
__END__
10 changes: 10 additions & 0 deletions perl/lib/Nix/Store.xs
Expand Up @@ -351,3 +351,13 @@ void addTempRoot(char * storePath)
} catch (Error & e) {
croak("%s", e.what());
}


SV * getBinDir()
PPCODE:
XPUSHs(sv_2mortal(newSVpv(settings.nixBinDir.c_str(), 0)));


SV * getStoreDir()
PPCODE:
XPUSHs(sv_2mortal(newSVpv(settings.nixStore.c_str(), 0)));
6 changes: 3 additions & 3 deletions tests/recursive.sh
Expand Up @@ -9,9 +9,8 @@ rm -f $TEST_ROOT/result

export unreachable=$(nix add-to-store ./recursive.sh)

nix --experimental-features 'nix-command recursive-nix' build -o $TEST_ROOT/result -L --impure --expr '
NIX_BIN_DIR=$(dirname $(type -p nix)) nix --experimental-features 'nix-command recursive-nix' build -o $TEST_ROOT/result -L --impure --expr '
with import ./config.nix;
with import <nix/config.nix>;
mkDerivation {
name = "recursive";
dummy = builtins.toFile "dummy" "bla bla";
Expand All @@ -24,9 +23,10 @@ nix --experimental-features 'nix-command recursive-nix' build -o $TEST_ROOT/resu
buildCommand = '\'\''
mkdir $out
PATH=${nixBinDir}:$PATH
opts="--experimental-features nix-command"
PATH=${builtins.getEnv "NIX_BIN_DIR"}:$PATH
# Check that we can query/build paths in our input closure.
nix $opts path-info $dummy
nix $opts build $dummy
Expand Down

0 comments on commit c9f51e8

Please sign in to comment.