Merge branch 'remove-perl' of https://github.com/shlevy/nix

This commit is contained in:
Eelco Dolstra 2017-03-31 14:13:32 +02:00
commit c0745a2531
No known key found for this signature in database
GPG key ID: 8170B4726D7198DE
16 changed files with 220 additions and 111 deletions

1
.gitignore vendored
View file

@ -1,4 +1,5 @@
Makefile.config Makefile.config
perl/Makefile.config
# / # /
/aclocal.m4 /aclocal.m4

View file

@ -18,7 +18,6 @@ makefiles = \
src/nix-channel/local.mk \ src/nix-channel/local.mk \
src/nix-build/local.mk \ src/nix-build/local.mk \
src/build-remote/local.mk \ src/build-remote/local.mk \
perl/local.mk \
scripts/local.mk \ scripts/local.mk \
corepkgs/local.mk \ corepkgs/local.mk \
misc/systemd/local.mk \ misc/systemd/local.mk \

View file

@ -24,9 +24,6 @@ libdir = @libdir@
libexecdir = @libexecdir@ libexecdir = @libexecdir@
localstatedir = @localstatedir@ localstatedir = @localstatedir@
mandir = @mandir@ mandir = @mandir@
perl = @perl@
perlbindings = @perlbindings@
perllibdir = @perllibdir@
pkglibdir = $(libdir)/$(PACKAGE_NAME) pkglibdir = $(libdir)/$(PACKAGE_NAME)
prefix = @prefix@ prefix = @prefix@
storedir = @storedir@ storedir = @storedir@

View file

@ -120,7 +120,6 @@ AC_PATH_PROG(xmllint, xmllint, false)
AC_PATH_PROG(xsltproc, xsltproc, false) AC_PATH_PROG(xsltproc, xsltproc, false)
AC_PATH_PROG(flex, flex, false) AC_PATH_PROG(flex, flex, false)
AC_PATH_PROG(bison, bison, false) AC_PATH_PROG(bison, bison, false)
NEED_PROG(perl, perl)
NEED_PROG(sed, sed) NEED_PROG(sed, sed)
NEED_PROG(tar, tar) NEED_PROG(tar, tar)
NEED_PROG(bzip2, bzip2) NEED_PROG(bzip2, bzip2)
@ -131,23 +130,6 @@ AC_PATH_PROG(pv, pv, pv)
AC_PATH_PROG(bro, bro, bro) AC_PATH_PROG(bro, bro, bro)
# Test that Perl has the open/fork feature (Perl 5.8.0 and beyond).
AC_MSG_CHECKING([whether Perl is recent enough])
if ! $perl -e 'open(FOO, "-|", "true"); while (<FOO>) { print; }; close FOO or die;'; then
AC_MSG_RESULT(no)
AC_MSG_ERROR([Your Perl version is too old. Nix requires Perl 5.8.0 or newer.])
fi
AC_MSG_RESULT(yes)
# Figure out where to install Perl modules.
AC_MSG_CHECKING([for the Perl installation prefix])
perlversion=$($perl -e 'use Config; print $Config{version};')
perlarchname=$($perl -e 'use Config; print $Config{archname};')
AC_SUBST(perllibdir, [${libdir}/perl5/site_perl/$perlversion/$perlarchname])
AC_MSG_RESULT($perllibdir)
NEED_PROG(cat, cat) NEED_PROG(cat, cat)
NEED_PROG(tr, tr) NEED_PROG(tr, tr)
AC_ARG_WITH(coreutils-bin, AC_HELP_STRING([--with-coreutils-bin=PATH], AC_ARG_WITH(coreutils-bin, AC_HELP_STRING([--with-coreutils-bin=PATH],
@ -213,40 +195,6 @@ if test "$gc" = yes; then
fi fi
# Check for the required Perl dependencies (DBI, DBD::SQLite).
perlFlags="-I$perllibdir"
AC_ARG_WITH(dbi, AC_HELP_STRING([--with-dbi=PATH],
[prefix of the Perl DBI library]),
perlFlags="$perlFlags -I$withval")
AC_ARG_WITH(dbd-sqlite, AC_HELP_STRING([--with-dbd-sqlite=PATH],
[prefix of the Perl DBD::SQLite library]),
perlFlags="$perlFlags -I$withval")
AC_MSG_CHECKING([whether DBD::SQLite works])
if ! $perl $perlFlags -e 'use DBI; use DBD::SQLite;' 2>&5; then
AC_MSG_RESULT(no)
AC_MSG_FAILURE([The Perl modules DBI and/or DBD::SQLite are missing.])
fi
AC_MSG_RESULT(yes)
AC_SUBST(perlFlags)
# Whether to build the Perl bindings
AC_MSG_CHECKING([whether to build the Perl bindings])
AC_ARG_ENABLE(perl-bindings, AC_HELP_STRING([--enable-perl-bindings],
[whether to build the Perl bindings (recommended) [default=yes]]),
perlbindings=$enableval, perlbindings=yes)
if test "$enable_shared" = no; then
# Perl bindings require shared libraries.
perlbindings=no
fi
AC_SUBST(perlbindings)
AC_MSG_RESULT($perlbindings)
AC_ARG_ENABLE(init-state, AC_HELP_STRING([--disable-init-state], AC_ARG_ENABLE(init-state, AC_HELP_STRING([--disable-init-state],
[do not initialise DB etc. in `make install']), [do not initialise DB etc. in `make install']),
init_state=$enableval, init_state=yes) init_state=$enableval, init_state=yes)

View file

@ -14,6 +14,9 @@ in rec {
nixBinDir = fromEnv "NIX_BIN_DIR" "@bindir@"; nixBinDir = fromEnv "NIX_BIN_DIR" "@bindir@";
nixPrefix = "@prefix@"; nixPrefix = "@prefix@";
nixLibexecDir = fromEnv "NIX_LIBEXEC_DIR" "@libexecdir@"; nixLibexecDir = fromEnv "NIX_LIBEXEC_DIR" "@libexecdir@";
nixLocalstateDir = "@localstatedir@";
nixSysconfDir = "@sysconfdir@";
nixStoreDir = fromEnv "NIX_STORE_DIR" "@storedir@";
# If Nix is installed in the Nix store, then automatically add it as # If Nix is installed in the Nix store, then automatically add it as
# a dependency to the core packages. This ensures that they work # a dependency to the core packages. This ensures that they work

View file

@ -42,7 +42,7 @@ purposes. It uses <command>ssh</command> and
<command>nix-copy-closure</command> to copy the build inputs and <command>nix-copy-closure</command> to copy the build inputs and
outputs and perform the remote build. To use it, you should set outputs and perform the remote build. To use it, you should set
<envar>NIX_BUILD_HOOK</envar> to <envar>NIX_BUILD_HOOK</envar> to
<filename><replaceable>prefix</replaceable>/libexec/nix/build-remote.pl</filename>. <filename><replaceable>prefix</replaceable>/libexec/nix/build-remote</filename>.
You should also define a list of available build machines and point You should also define a list of available build machines and point
the environment variable <envar>NIX_REMOTE_SYSTEMS</envar> to the environment variable <envar>NIX_REMOTE_SYSTEMS</envar> to
it. <envar>NIX_REMOTE_SYSTEMS</envar> must be an absolute path. An it. <envar>NIX_REMOTE_SYSTEMS</envar> must be an absolute path. An
@ -68,7 +68,7 @@ bits of information:
should not have a passphrase!</para></listitem> should not have a passphrase!</para></listitem>
<listitem><para>The maximum number of builds that <listitem><para>The maximum number of builds that
<filename>build-remote.pl</filename> will execute in parallel on the <filename>build-remote</filename> will execute in parallel on the
machine. Typically this should be equal to the number of CPU cores. machine. Typically this should be equal to the number of CPU cores.
For instance, the machine <literal>itchy</literal> in the example For instance, the machine <literal>itchy</literal> in the example
will execute up to 8 builds in parallel.</para></listitem> will execute up to 8 builds in parallel.</para></listitem>
@ -80,7 +80,7 @@ bits of information:
<listitem><para>A comma-separated list of <emphasis>supported <listitem><para>A comma-separated list of <emphasis>supported
features</emphasis>. If a derivation has the features</emphasis>. If a derivation has the
<varname>requiredSystemFeatures</varname> attribute, then <varname>requiredSystemFeatures</varname> attribute, then
<filename>build-remote.pl</filename> will only perform the <filename>build-remote</filename> will only perform the
derivation on a machine that has the specified features. For derivation on a machine that has the specified features. For
instance, the attribute instance, the attribute
@ -106,11 +106,11 @@ requiredSystemFeatures = [ "kvm" ];
You should also set up the environment variable You should also set up the environment variable
<envar>NIX_CURRENT_LOAD</envar> to point at a directory (e.g., <envar>NIX_CURRENT_LOAD</envar> to point at a directory (e.g.,
<filename>/var/run/nix/current-load</filename>) that <filename>/var/run/nix/current-load</filename>) that
<filename>build-remote.pl</filename> uses to remember how many builds <filename>build-remote</filename> uses to remember how many builds
it is currently executing remotely. It doesn't look at the actual it is currently executing remotely. It doesn't look at the actual
load on the remote machine, so if you have multiple instances of Nix load on the remote machine, so if you have multiple instances of Nix
running, they should use the same <envar>NIX_CURRENT_LOAD</envar> running, they should use the same <envar>NIX_CURRENT_LOAD</envar>
file. Maybe in the future <filename>build-remote.pl</filename> will file. Maybe in the future <filename>build-remote</filename> will
look at the actual remote load.</para> look at the actual remote load.</para>
</chapter> </chapter>

View file

@ -12,8 +12,6 @@
<listitem><para>A version of GCC or Clang that supports C++11.</para></listitem> <listitem><para>A version of GCC or Clang that supports C++11.</para></listitem>
<listitem><para>Perl 5.8 or higher.</para></listitem>
<listitem><para><command>pkg-config</command> to locate <listitem><para><command>pkg-config</command> to locate
dependencies. If your distribution does not provide it, you can get dependencies. If your distribution does not provide it, you can get
it from <link it from <link
@ -34,11 +32,6 @@
or higher. If your distribution does not provide it, please install or higher. If your distribution does not provide it, please install
it from <link xlink:href="http://www.sqlite.org/" />.</para></listitem> it from <link xlink:href="http://www.sqlite.org/" />.</para></listitem>
<listitem><para>The Perl DBI and DBD::SQLite libraries, which are
available from <link
xlink:href="http://search.cpan.org/">CPAN</link> if your
distribution does not provide them.</para></listitem>
<listitem><para>The <link <listitem><para>The <link
xlink:href="http://www.hboehm.info/gc/">Boehm xlink:href="http://www.hboehm.info/gc/">Boehm
garbage collector</link> to reduce the evaluators memory garbage collector</link> to reduce the evaluators memory

View file

@ -3,7 +3,7 @@ ifeq ($(MAKECMDGOALS), dist)
dist-files += $(shell git --git-dir=.git ls-files || find * -type f) dist-files += $(shell git --git-dir=.git ls-files || find * -type f)
endif endif
dist-files += configure config.h.in nix.spec dist-files += configure config.h.in nix.spec perl/configure
clean-files += Makefile.config clean-files += Makefile.config

14
perl/Makefile Normal file
View file

@ -0,0 +1,14 @@
makefiles = local.mk
GLOBAL_CXXFLAGS += -std=c++11 -g -Wall
-include Makefile.config
OPTIMIZE = 1
ifeq ($(OPTIMIZE), 1)
GLOBAL_CFLAGS += -O3
GLOBAL_CXXFLAGS += -O3
endif
include mk/lib.mk

19
perl/Makefile.config.in Normal file
View file

@ -0,0 +1,19 @@
CC = @CC@
CFLAGS = @CFLAGS@
CXX = @CXX@
CXXFLAGS = @CXXFLAGS@
HAVE_SODIUM = @HAVE_SODIUM@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
SODIUM_LIBS = @SODIUM_LIBS@
NIX_CFLAGS = @NIX_CFLAGS@
NIX_LIBS = @NIX_LIBS@
nixbindir = @nixbindir@
curl = @curl@
nixlibexecdir = @nixlibexecdir@
nixlocalstatedir = @nixlocalstatedir@
perl = @perl@
perllibdir = @perllibdir@
nixstoredir = @nixstoredir@
nixsysconfdir = @nixsysconfdir@
perlbindings = @perlbindings@

117
perl/configure.ac Normal file
View file

@ -0,0 +1,117 @@
AC_INIT(nix-perl, m4_esyscmd([bash -c "echo -n $(cat ../version)$VERSION_SUFFIX"]))
AC_CONFIG_SRCDIR(MANIFEST)
AC_CONFIG_AUX_DIR(../config)
CFLAGS=
CXXFLAGS=
AC_PROG_CC
AC_PROG_CXX
AX_CXX_COMPILE_STDCXX_11
# Use 64-bit file system calls so that we can support files > 2 GiB.
AC_SYS_LARGEFILE
AC_DEFUN([NEED_PROG],
[
AC_PATH_PROG($1, $2)
if test -z "$$1"; then
AC_MSG_ERROR([$2 is required])
fi
])
NEED_PROG(perl, perl)
NEED_PROG(curl, curl)
NEED_PROG(bzip2, bzip2)
NEED_PROG(xz, xz)
# Test that Perl has the open/fork feature (Perl 5.8.0 and beyond).
AC_MSG_CHECKING([whether Perl is recent enough])
if ! $perl -e 'open(FOO, "-|", "true"); while (<FOO>) { print; }; close FOO or die;'; then
AC_MSG_RESULT(no)
AC_MSG_ERROR([Your Perl version is too old. Nix requires Perl 5.8.0 or newer.])
fi
AC_MSG_RESULT(yes)
# Figure out where to install Perl modules.
AC_MSG_CHECKING([for the Perl installation prefix])
perlversion=$($perl -e 'use Config; print $Config{version};')
perlarchname=$($perl -e 'use Config; print $Config{archname};')
AC_SUBST(perllibdir, [${libdir}/perl5/site_perl/$perlversion/$perlarchname])
AC_MSG_RESULT($perllibdir)
AC_ARG_WITH(store-dir, AC_HELP_STRING([--with-store-dir=PATH],
[path of the Nix store (defaults to /nix/store)]),
storedir=$withval, storedir='/nix/store')
AC_SUBST(storedir)
# Look for libsodium, an optional dependency.
PKG_CHECK_MODULES([SODIUM], [libsodium],
[AC_DEFINE([HAVE_SODIUM], [1], [Whether to use libsodium for cryptography.])
CXXFLAGS="$SODIUM_CFLAGS $CXXFLAGS"
have_sodium=1], [have_sodium=])
AC_SUBST(HAVE_SODIUM, [$have_sodium])
# Check for the required Perl dependencies (DBI, DBD::SQLite and WWW::Curl).
perlFlags="-I$perllibdir"
AC_ARG_WITH(dbi, AC_HELP_STRING([--with-dbi=PATH],
[prefix of the Perl DBI library]),
perlFlags="$perlFlags -I$withval")
AC_ARG_WITH(dbd-sqlite, AC_HELP_STRING([--with-dbd-sqlite=PATH],
[prefix of the Perl DBD::SQLite library]),
perlFlags="$perlFlags -I$withval")
AC_ARG_WITH(www-curl, AC_HELP_STRING([--with-www-curl=PATH],
[prefix of the Perl WWW::Curl library]),
perlFlags="$perlFlags -I$withval")
AC_MSG_CHECKING([whether DBD::SQLite works])
if ! $perl $perlFlags -e 'use DBI; use DBD::SQLite;' 2>&5; then
AC_MSG_RESULT(no)
AC_MSG_FAILURE([The Perl modules DBI and/or DBD::SQLite are missing.])
fi
AC_MSG_RESULT(yes)
AC_MSG_CHECKING([whether WWW::Curl works])
if ! $perl $perlFlags -e 'use WWW::Curl;' 2>&5; then
AC_MSG_RESULT(no)
AC_MSG_FAILURE([The Perl module WWW::Curl is missing.])
fi
AC_MSG_RESULT(yes)
AC_SUBST(perlFlags)
PKG_CHECK_MODULES([NIX], [nix-store])
NEED_PROG([NIX_INSTANTIATE_PROGRAM], [nix-instantiate])
# Get nix configure values
nixbindir=$("$NIX_INSTANTIATE_PROGRAM" --eval '<nix/config.nix>' -A nixBinDir | tr -d \")
nixlibexecdir=$("$NIX_INSTANTIATE_PROGRAM" --eval '<nix/config.nix>' -A nixLibexecDir | tr -d \")
nixlocalstatedir=$("$NIX_INSTANTIATE_PROGRAM" --eval '<nix/config.nix>' -A nixLocalstateDir | tr -d \")
nixsysconfdir=$("$NIX_INSTANTIATE_PROGRAM" --eval '<nix/config.nix>' -A nixSysconfDir | tr -d \")
nixstoredir=$("$NIX_INSTANTIATE_PROGRAM" --eval '<nix/config.nix>' -A nixStoreDir | tr -d \")
AC_SUBST(nixbindir)
AC_SUBST(nixlibexecdir)
AC_SUBST(nixlocalstatedir)
AC_SUBST(nixsysconfdir)
AC_SUBST(nixstoredir)
AC_SUBST(perlbindings, "yes")
# Expand all variables in config.status.
test "$prefix" = NONE && prefix=$ac_default_prefix
test "$exec_prefix" = NONE && exec_prefix='${prefix}'
for name in $ac_subst_vars; do
declare $name="$(eval echo "${!name}")"
declare $name="$(eval echo "${!name}")"
declare $name="$(eval echo "${!name}")"
done
rm -f Makefile.config
ln -s ../mk mk
AC_CONFIG_FILES([])
AC_OUTPUT

View file

@ -4,18 +4,18 @@ use MIME::Base64;
$version = "@PACKAGE_VERSION@"; $version = "@PACKAGE_VERSION@";
$binDir = $ENV{"NIX_BIN_DIR"} || "@bindir@"; $binDir = $ENV{"NIX_BIN_DIR"} || "@nixbindir@";
$libexecDir = $ENV{"NIX_LIBEXEC_DIR"} || "@libexecdir@"; $libexecDir = $ENV{"NIX_LIBEXEC_DIR"} || "@nixlibexecdir@";
$stateDir = $ENV{"NIX_STATE_DIR"} || "@localstatedir@/nix"; $stateDir = $ENV{"NIX_STATE_DIR"} || "@nixlocalstatedir@/nix";
$logDir = $ENV{"NIX_LOG_DIR"} || "@localstatedir@/log/nix"; $logDir = $ENV{"NIX_LOG_DIR"} || "@nixlocalstatedir@/log/nix";
$confDir = $ENV{"NIX_CONF_DIR"} || "@sysconfdir@/nix"; $confDir = $ENV{"NIX_CONF_DIR"} || "@nixsysconfdir@/nix";
$storeDir = $ENV{"NIX_STORE_DIR"} || "@storedir@"; $storeDir = $ENV{"NIX_STORE_DIR"} || "@nixstoredir@";
$bzip2 = "@bzip2@"; $bzip2 = "@bzip2@";
$xz = "@xz@"; $xz = "@xz@";
$curl = "@curl@"; $curl = "@curl@";
$useBindings = "@perlbindings@" eq "yes"; $useBindings = 1;
%config = (); %config = ();

View file

@ -1,10 +1,10 @@
nix_perl_sources := \ nix_perl_sources := \
$(d)/lib/Nix/Store.pm \ lib/Nix/Store.pm \
$(d)/lib/Nix/Manifest.pm \ lib/Nix/Manifest.pm \
$(d)/lib/Nix/SSH.pm \ lib/Nix/SSH.pm \
$(d)/lib/Nix/CopyClosure.pm \ lib/Nix/CopyClosure.pm \
$(d)/lib/Nix/Config.pm.in \ lib/Nix/Config.pm.in \
$(d)/lib/Nix/Utils.pm lib/Nix/Utils.pm
nix_perl_modules := $(nix_perl_sources:.in=) nix_perl_modules := $(nix_perl_sources:.in=)
@ -12,12 +12,12 @@ $(foreach x, $(nix_perl_modules), $(eval $(call install-data-in, $(x), $(perllib
ifeq ($(perlbindings), yes) ifeq ($(perlbindings), yes)
$(d)/lib/Nix/Store.cc: $(d)/lib/Nix/Store.xs lib/Nix/Store.cc: lib/Nix/Store.xs
$(trace-gen) xsubpp $^ -output $@ $(trace-gen) xsubpp $^ -output $@
libraries += Store libraries += Store
Store_DIR := $(d)/lib/Nix Store_DIR := lib/Nix
Store_SOURCES := $(Store_DIR)/Store.cc Store_SOURCES := $(Store_DIR)/Store.cc
@ -25,11 +25,10 @@ ifeq ($(perlbindings), yes)
-I$(shell $(perl) -e 'use Config; print $$Config{archlibexp};')/CORE \ -I$(shell $(perl) -e 'use Config; print $$Config{archlibexp};')/CORE \
-D_FILE_OFFSET_BITS=64 \ -D_FILE_OFFSET_BITS=64 \
-Wno-unknown-warning-option -Wno-unused-variable -Wno-literal-suffix \ -Wno-unknown-warning-option -Wno-unused-variable -Wno-literal-suffix \
-Wno-reserved-user-defined-literal -Wno-duplicate-decl-specifier -Wno-pointer-bool-conversion -Wno-reserved-user-defined-literal -Wno-duplicate-decl-specifier -Wno-pointer-bool-conversion \
$(NIX_CFLAGS)
Store_LIBS = libstore libutil Store_LDFLAGS := $(SODIUM_LIBS) $(NIX_LIBS)
Store_LDFLAGS := $(SODIUM_LIBS)
ifeq (CYGWIN,$(findstring CYGWIN,$(OS))) ifeq (CYGWIN,$(findstring CYGWIN,$(OS)))
archlib = $(shell perl -E 'use Config; print $$Config{archlib};') archlib = $(shell perl -E 'use Config; print $$Config{archlib};')
@ -45,4 +44,4 @@ ifeq ($(perlbindings), yes)
endif endif
clean-files += $(d)/lib/Nix/Config.pm $(d)/lib/Nix/Store.cc clean-files += lib/Nix/Config.pm lib/Nix/Store.cc Makefile.config

View file

@ -24,7 +24,7 @@ let
inherit officialRelease; inherit officialRelease;
buildInputs = buildInputs =
[ curl bison flex perl libxml2 libxslt [ curl bison flex libxml2 libxslt
bzip2 xz brotli bzip2 xz brotli
pkgconfig sqlite libsodium boehmgc pkgconfig sqlite libsodium boehmgc
docbook5 docbook5_xsl docbook5 docbook5_xsl
@ -32,11 +32,7 @@ let
git git
]; ];
configureFlags = '' configureFlags = "--enable-gc";
--with-dbi=${perlPackages.DBI}/${perl.libPrefix}
--with-dbd-sqlite=${perlPackages.DBDSQLite}/${perl.libPrefix}
--enable-gc
'';
postUnpack = '' postUnpack = ''
# Clean up when building from a working tree. # Clean up when building from a working tree.
@ -46,6 +42,7 @@ let
''; '';
preConfigure = '' preConfigure = ''
(cd perl ; autoreconf --install --force --verbose)
# TeX needs a writable font cache. # TeX needs a writable font cache.
export VARTEXFONTS=$TMPDIR/texfonts export VARTEXFONTS=$TMPDIR/texfonts
''; '';
@ -74,7 +71,7 @@ let
src = tarball; src = tarball;
buildInputs = buildInputs =
[ curl perl [ curl
bzip2 xz brotli bzip2 xz brotli
openssl pkgconfig sqlite boehmgc openssl pkgconfig sqlite boehmgc
] ]
@ -87,8 +84,6 @@ let
configureFlags = '' configureFlags = ''
--disable-init-state --disable-init-state
--with-dbi=${perlPackages.DBI}/${perl.libPrefix}
--with-dbd-sqlite=${perlPackages.DBDSQLite}/${perl.libPrefix}
--enable-gc --enable-gc
--sysconfdir=/etc --sysconfdir=/etc
''; '';
@ -106,6 +101,32 @@ let
}); });
perl = pkgs.lib.genAttrs systems (system:
let pkgs = import <nixpkgs> { inherit system; }; in with pkgs;
releaseTools.nixBuild {
name = "nix-perl";
src = tarball;
buildInputs =
[ (builtins.getAttr system jobs.build) curl bzip2 xz pkgconfig pkgs.perl ]
++ lib.optional stdenv.isLinux libsodium;
configureFlags = ''
--with-dbi=${perlPackages.DBI}/${pkgs.perl.libPrefix}
--with-dbd-sqlite=${perlPackages.DBDSQLite}/${pkgs.perl.libPrefix}
--with-www-curl=${perlPackages.WWWCurl}/${pkgs.perl.libPrefix}
'';
enableParallelBuilding = true;
postUnpack = "sourceRoot=$sourceRoot/perl";
preBuild = "unset NIX_INDENT_MAKE";
});
binaryTarball = pkgs.lib.genAttrs systems (system: binaryTarball = pkgs.lib.genAttrs systems (system:
# FIXME: temporarily use a different branch for the Darwin build. # FIXME: temporarily use a different branch for the Darwin build.
@ -151,15 +172,13 @@ let
src = tarball; src = tarball;
buildInputs = buildInputs =
[ curl perl bzip2 openssl pkgconfig sqlite xz libsodium [ curl bzip2 openssl pkgconfig sqlite xz libsodium
# These are for "make check" only: # These are for "make check" only:
graphviz libxml2 libxslt graphviz libxml2 libxslt
]; ];
configureFlags = '' configureFlags = ''
--disable-init-state --disable-init-state
--with-dbi=${perlPackages.DBI}/${perl.libPrefix}
--with-dbd-sqlite=${perlPackages.DBDSQLite}/${perl.libPrefix}
''; '';
dontInstall = false; dontInstall = false;
@ -280,7 +299,7 @@ let
src = jobs.tarball; src = jobs.tarball;
diskImage = (diskImageFun vmTools.diskImageFuns) diskImage = (diskImageFun vmTools.diskImageFuns)
{ extraPackages = { extraPackages =
[ "perl-DBD-SQLite" "perl-devel" "sqlite" "sqlite-devel" "bzip2-devel" "emacs" "libcurl-devel" "openssl-devel" "xz-devel" ] [ "sqlite" "sqlite-devel" "bzip2-devel" "emacs" "libcurl-devel" "openssl-devel" "xz-devel" ]
++ extraPackages; }; ++ extraPackages; };
memSize = 1024; memSize = 1024;
meta.schedulingPriority = 50; meta.schedulingPriority = 50;
@ -302,14 +321,14 @@ let
src = jobs.tarball; src = jobs.tarball;
diskImage = (diskImageFun vmTools.diskImageFuns) diskImage = (diskImageFun vmTools.diskImageFuns)
{ extraPackages = { extraPackages =
[ "libdbd-sqlite3-perl" "libsqlite3-dev" "libbz2-dev" "libwww-curl-perl" "libcurl-dev" "libcurl3-nss" "libssl-dev" "liblzma-dev" ] [ "libsqlite3-dev" "libbz2-dev" "libcurl-dev" "libcurl3-nss" "libssl-dev" "liblzma-dev" ]
++ extraPackages; }; ++ extraPackages; };
memSize = 1024; memSize = 1024;
meta.schedulingPriority = 50; meta.schedulingPriority = 50;
postInstall = "make installcheck"; postInstall = "make installcheck";
configureFlags = "--sysconfdir=/etc"; configureFlags = "--sysconfdir=/etc";
debRequires = debRequires =
[ "curl" "libdbd-sqlite3-perl" "libsqlite3-0" "libbz2-1.0" "bzip2" "xz-utils" "libwww-curl-perl" "libssl1.0.0" "liblzma5" ] [ "curl" "libsqlite3-0" "libbz2-1.0" "bzip2" "xz-utils" "libssl1.0.0" "liblzma5" ]
++ extraDebPackages; ++ extraDebPackages;
debMaintainer = "Eelco Dolstra <eelco.dolstra@logicblox.com>"; debMaintainer = "Eelco Dolstra <eelco.dolstra@logicblox.com>";
doInstallCheck = true; doInstallCheck = true;

View file

@ -882,7 +882,7 @@ static void opServe(Strings opFlags, Strings opArgs)
break; break;
} }
case cmdBuildPaths: { /* Used by build-remote.pl. */ case cmdBuildPaths: {
if (!writeAllowed) throw Error("building paths is not allowed"); if (!writeAllowed) throw Error("building paths is not allowed");
PathSet paths = readStorePaths<PathSet>(*store, in); PathSet paths = readStorePaths<PathSet>(*store, in);

View file

@ -5,14 +5,14 @@ clearStore
outPath1=$(echo 'with import ./config.nix; mkDerivation { name = "foo1"; builder = builtins.toFile "builder" "mkdir $out; echo hello > $out/foo"; }' | nix-build - --no-out-link --option auto-optimise-store true) outPath1=$(echo 'with import ./config.nix; mkDerivation { name = "foo1"; builder = builtins.toFile "builder" "mkdir $out; echo hello > $out/foo"; }' | nix-build - --no-out-link --option auto-optimise-store true)
outPath2=$(echo 'with import ./config.nix; mkDerivation { name = "foo2"; builder = builtins.toFile "builder" "mkdir $out; echo hello > $out/foo"; }' | nix-build - --no-out-link --option auto-optimise-store true) outPath2=$(echo 'with import ./config.nix; mkDerivation { name = "foo2"; builder = builtins.toFile "builder" "mkdir $out; echo hello > $out/foo"; }' | nix-build - --no-out-link --option auto-optimise-store true)
inode1="$(perl -e "print ((lstat('$outPath1/foo'))[1])")" inode1="$(stat --format=%i $outPath1/foo)"
inode2="$(perl -e "print ((lstat('$outPath2/foo'))[1])")" inode2="$(stat --format=%i $outPath2/foo)"
if [ "$inode1" != "$inode2" ]; then if [ "$inode1" != "$inode2" ]; then
echo "inodes do not match" echo "inodes do not match"
exit 1 exit 1
fi fi
nlink="$(perl -e "print ((lstat('$outPath1/foo'))[3])")" nlink="$(stat --format=%h $outPath1/foo)"
if [ "$nlink" != 3 ]; then if [ "$nlink" != 3 ]; then
echo "link count incorrect" echo "link count incorrect"
exit 1 exit 1
@ -20,7 +20,7 @@ fi
outPath3=$(echo 'with import ./config.nix; mkDerivation { name = "foo3"; builder = builtins.toFile "builder" "mkdir $out; echo hello > $out/foo"; }' | nix-build - --no-out-link) outPath3=$(echo 'with import ./config.nix; mkDerivation { name = "foo3"; builder = builtins.toFile "builder" "mkdir $out; echo hello > $out/foo"; }' | nix-build - --no-out-link)
inode3="$(perl -e "print ((lstat('$outPath3/foo'))[1])")" inode3="$(stat --format=%i $outPath3/foo)"
if [ "$inode1" = "$inode3" ]; then if [ "$inode1" = "$inode3" ]; then
echo "inodes match unexpectedly" echo "inodes match unexpectedly"
exit 1 exit 1
@ -28,8 +28,8 @@ fi
nix-store --optimise nix-store --optimise
inode1="$(perl -e "print ((lstat('$outPath1/foo'))[1])")" inode1="$(stat --format=%i $outPath1/foo)"
inode3="$(perl -e "print ((lstat('$outPath3/foo'))[1])")" inode3="$(stat --format=%i $outPath3/foo)"
if [ "$inode1" != "$inode3" ]; then if [ "$inode1" != "$inode3" ]; then
echo "inodes do not match" echo "inodes do not match"
exit 1 exit 1