Merge branch 'remove-perl' of https://github.com/shlevy/nix
This commit is contained in:
commit
c0745a2531
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,4 +1,5 @@
|
||||||
Makefile.config
|
Makefile.config
|
||||||
|
perl/Makefile.config
|
||||||
|
|
||||||
# /
|
# /
|
||||||
/aclocal.m4
|
/aclocal.m4
|
||||||
|
|
1
Makefile
1
Makefile
|
@ -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 \
|
||||||
|
|
|
@ -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@
|
||||||
|
|
52
configure.ac
52
configure.ac
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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 evaluator’s memory
|
garbage collector</link> to reduce the evaluator’s memory
|
||||||
|
|
2
local.mk
2
local.mk
|
@ -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
14
perl/Makefile
Normal 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
19
perl/Makefile.config.in
Normal 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
117
perl/configure.ac
Normal 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
|
|
@ -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 = ();
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
49
release.nix
49
release.nix
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue