forked from lix-project/lix
Merge branch 'make'
This commit is contained in:
commit
2f9bb5c7e7
22
.gitignore
vendored
22
.gitignore
vendored
|
@ -1,5 +1,4 @@
|
||||||
Makefile
|
Makefile.config
|
||||||
Makefile.in
|
|
||||||
|
|
||||||
# /
|
# /
|
||||||
/aclocal.m4
|
/aclocal.m4
|
||||||
|
@ -12,15 +11,6 @@ Makefile.in
|
||||||
/NEWS
|
/NEWS
|
||||||
/libtool
|
/libtool
|
||||||
|
|
||||||
# /config/
|
|
||||||
/config/config.guess
|
|
||||||
/config/config.sub
|
|
||||||
/config/depcomp
|
|
||||||
/config/install-sh
|
|
||||||
/config/missing
|
|
||||||
/config/mkinstalldirs
|
|
||||||
/config/ltmain.sh
|
|
||||||
|
|
||||||
/corepkgs/config.nix
|
/corepkgs/config.nix
|
||||||
|
|
||||||
# /corepkgs/buildenv/
|
# /corepkgs/buildenv/
|
||||||
|
@ -95,10 +85,6 @@ Makefile.in
|
||||||
|
|
||||||
# /src/nix-log2xml/
|
# /src/nix-log2xml/
|
||||||
/src/nix-log2xml/nix-log2xml
|
/src/nix-log2xml/nix-log2xml
|
||||||
/src/nix-log2xml/test*.*
|
|
||||||
/src/nix-log2xml/*.log
|
|
||||||
/src/nix-log2xml/*.xml
|
|
||||||
/src/nix-log2xml/*.html
|
|
||||||
|
|
||||||
# /src/nix-store/
|
# /src/nix-store/
|
||||||
/src/nix-store/nix-store
|
/src/nix-store/nix-store
|
||||||
|
@ -108,7 +94,6 @@ Makefile.in
|
||||||
|
|
||||||
# /tests/
|
# /tests/
|
||||||
/tests/test-tmp
|
/tests/test-tmp
|
||||||
/tests/config.nix
|
|
||||||
/tests/common.sh
|
/tests/common.sh
|
||||||
/tests/dummy
|
/tests/dummy
|
||||||
/tests/result*
|
/tests/result*
|
||||||
|
@ -121,13 +106,10 @@ Makefile.in
|
||||||
/perl/lib/Nix/Config.pm
|
/perl/lib/Nix/Config.pm
|
||||||
/perl/lib/Nix/Store.cc
|
/perl/lib/Nix/Store.cc
|
||||||
|
|
||||||
.deps
|
|
||||||
.libs
|
|
||||||
*.a
|
*.a
|
||||||
*.lo
|
|
||||||
*.la
|
|
||||||
*.o
|
*.o
|
||||||
*.so
|
*.so
|
||||||
|
*.dep
|
||||||
*~
|
*~
|
||||||
|
|
||||||
# GNU Global
|
# GNU Global
|
||||||
|
|
24
Makefile
Normal file
24
Makefile
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
makefiles = \
|
||||||
|
local.mk \
|
||||||
|
src/boost/format/local.mk \
|
||||||
|
src/libutil/local.mk \
|
||||||
|
src/libstore/local.mk \
|
||||||
|
src/libmain/local.mk \
|
||||||
|
src/libexpr/local.mk \
|
||||||
|
src/nix-hash/local.mk \
|
||||||
|
src/nix-store/local.mk \
|
||||||
|
src/nix-instantiate/local.mk \
|
||||||
|
src/nix-env/local.mk \
|
||||||
|
src/nix-daemon/local.mk \
|
||||||
|
src/nix-log2xml/local.mk \
|
||||||
|
src/bsdiff-4.3/local.mk \
|
||||||
|
perl/local.mk \
|
||||||
|
scripts/local.mk \
|
||||||
|
corepkgs/local.mk \
|
||||||
|
misc/emacs/local.mk \
|
||||||
|
doc/manual/local.mk \
|
||||||
|
tests/local.mk
|
||||||
|
|
||||||
|
include Makefile.config
|
||||||
|
|
||||||
|
include mk/lib.mk
|
42
Makefile.am
42
Makefile.am
|
@ -1,42 +0,0 @@
|
||||||
SUBDIRS = src perl scripts corepkgs doc misc tests
|
|
||||||
EXTRA_DIST = substitute.mk nix.spec nix.spec.in bootstrap.sh \
|
|
||||||
NEWS version misc/systemd/nix-daemon.service
|
|
||||||
|
|
||||||
pkginclude_HEADERS = config.h
|
|
||||||
|
|
||||||
include ./substitute.mk
|
|
||||||
|
|
||||||
nix.spec: nix.spec.in
|
|
||||||
|
|
||||||
install-data-local: init-state
|
|
||||||
$(INSTALL) -d $(DESTDIR)$(sysconfdir)/nix
|
|
||||||
$(INSTALL) -d $(DESTDIR)$(docdir)
|
|
||||||
$(INSTALL_DATA) README $(DESTDIR)$(docdir)/
|
|
||||||
|
|
||||||
if INIT_STATE
|
|
||||||
|
|
||||||
# For setuid operation, you can enable the following:
|
|
||||||
# INIT_FLAGS = -g @NIX_GROUP@ -o @NIX_USER@
|
|
||||||
# GROUP_WRITABLE = -m 775
|
|
||||||
|
|
||||||
init-state:
|
|
||||||
$(INSTALL) $(INIT_FLAGS) -d $(DESTDIR)$(localstatedir)/nix
|
|
||||||
$(INSTALL) $(INIT_FLAGS) -d $(DESTDIR)$(localstatedir)/nix/db
|
|
||||||
$(INSTALL) $(INIT_FLAGS) -d $(DESTDIR)$(localstatedir)/log/nix
|
|
||||||
$(INSTALL) $(INIT_FLAGS) -d $(DESTDIR)$(localstatedir)/log/nix/drvs
|
|
||||||
$(INSTALL) $(INIT_FLAGS) -d $(DESTDIR)$(localstatedir)/nix/profiles
|
|
||||||
$(INSTALL) $(INIT_FLAGS) -d $(DESTDIR)$(localstatedir)/nix/gcroots
|
|
||||||
$(INSTALL) $(INIT_FLAGS) -d $(DESTDIR)$(localstatedir)/nix/temproots
|
|
||||||
$(INSTALL) $(INIT_FLAGS) -d $(DESTDIR)$(localstatedir)/nix/userpool
|
|
||||||
-$(INSTALL) $(INIT_FLAGS) -d $(DESTDIR)$(storedir)
|
|
||||||
$(INSTALL) $(INIT_FLAGS) $(GROUP_WRITABLE) -d $(DESTDIR)$(localstatedir)/nix/manifests
|
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
init-state:
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
NEWS:
|
|
||||||
$(MAKE) -C doc/manual NEWS.txt
|
|
||||||
cp $(srcdir)/doc/manual/NEWS.txt NEWS
|
|
32
Makefile.config.in
Normal file
32
Makefile.config.in
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
BDW_GC_LIBS = @BDW_GC_LIBS@
|
||||||
|
CC = @CC@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CXX = @CXX@
|
||||||
|
CXXFLAGS = @CXXFLAGS@
|
||||||
|
HAVE_OPENSSL = @HAVE_OPENSSL@
|
||||||
|
OPENSSL_LIBS = @OPENSSL_LIBS@
|
||||||
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
bash = @bash@
|
||||||
|
bindir = @bindir@
|
||||||
|
bsddiff_compat_include = @bsddiff_compat_include@
|
||||||
|
datadir = @datadir@
|
||||||
|
datarootdir = @datarootdir@
|
||||||
|
dblatex = @dblatex@
|
||||||
|
docbookrng = @docbookrng@
|
||||||
|
docbookxsl = @docbookxsl@
|
||||||
|
docdir = @docdir@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
libdir = @libdir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
mandir = @mandir@
|
||||||
|
perl = @perl@
|
||||||
|
perlbindings = @perlbindings@
|
||||||
|
perllibdir = @perllibdir@
|
||||||
|
pkglibdir = $(libdir)/$(PACKAGE_NAME)
|
||||||
|
prefix = @prefix@
|
||||||
|
storedir = @storedir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
xmllint = @xmllint@
|
||||||
|
xsltproc = @xsltproc@
|
1537
config/config.guess
vendored
Executable file
1537
config/config.guess
vendored
Executable file
File diff suppressed because it is too large
Load diff
1786
config/config.sub
vendored
Executable file
1786
config/config.sub
vendored
Executable file
File diff suppressed because it is too large
Load diff
527
config/install-sh
Executable file
527
config/install-sh
Executable file
|
@ -0,0 +1,527 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# install - install a program, script, or datafile
|
||||||
|
|
||||||
|
scriptversion=2011-11-20.07; # UTC
|
||||||
|
|
||||||
|
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||||
|
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||||
|
# following copyright and license.
|
||||||
|
#
|
||||||
|
# Copyright (C) 1994 X Consortium
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||||
|
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
|
||||||
|
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
# Except as contained in this notice, the name of the X Consortium shall not
|
||||||
|
# be used in advertising or otherwise to promote the sale, use or other deal-
|
||||||
|
# ings in this Software without prior written authorization from the X Consor-
|
||||||
|
# tium.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# FSF changes to this file are in the public domain.
|
||||||
|
#
|
||||||
|
# Calling this script install-sh is preferred over install.sh, to prevent
|
||||||
|
# 'make' implicit rules from creating a file called install from it
|
||||||
|
# when there is no Makefile.
|
||||||
|
#
|
||||||
|
# This script is compatible with the BSD install script, but was written
|
||||||
|
# from scratch.
|
||||||
|
|
||||||
|
nl='
|
||||||
|
'
|
||||||
|
IFS=" "" $nl"
|
||||||
|
|
||||||
|
# set DOITPROG to echo to test this script
|
||||||
|
|
||||||
|
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||||
|
doit=${DOITPROG-}
|
||||||
|
if test -z "$doit"; then
|
||||||
|
doit_exec=exec
|
||||||
|
else
|
||||||
|
doit_exec=$doit
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Put in absolute file names if you don't have them in your path;
|
||||||
|
# or use environment vars.
|
||||||
|
|
||||||
|
chgrpprog=${CHGRPPROG-chgrp}
|
||||||
|
chmodprog=${CHMODPROG-chmod}
|
||||||
|
chownprog=${CHOWNPROG-chown}
|
||||||
|
cmpprog=${CMPPROG-cmp}
|
||||||
|
cpprog=${CPPROG-cp}
|
||||||
|
mkdirprog=${MKDIRPROG-mkdir}
|
||||||
|
mvprog=${MVPROG-mv}
|
||||||
|
rmprog=${RMPROG-rm}
|
||||||
|
stripprog=${STRIPPROG-strip}
|
||||||
|
|
||||||
|
posix_glob='?'
|
||||||
|
initialize_posix_glob='
|
||||||
|
test "$posix_glob" != "?" || {
|
||||||
|
if (set -f) 2>/dev/null; then
|
||||||
|
posix_glob=
|
||||||
|
else
|
||||||
|
posix_glob=:
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
'
|
||||||
|
|
||||||
|
posix_mkdir=
|
||||||
|
|
||||||
|
# Desired mode of installed file.
|
||||||
|
mode=0755
|
||||||
|
|
||||||
|
chgrpcmd=
|
||||||
|
chmodcmd=$chmodprog
|
||||||
|
chowncmd=
|
||||||
|
mvcmd=$mvprog
|
||||||
|
rmcmd="$rmprog -f"
|
||||||
|
stripcmd=
|
||||||
|
|
||||||
|
src=
|
||||||
|
dst=
|
||||||
|
dir_arg=
|
||||||
|
dst_arg=
|
||||||
|
|
||||||
|
copy_on_change=false
|
||||||
|
no_target_directory=
|
||||||
|
|
||||||
|
usage="\
|
||||||
|
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
|
||||||
|
or: $0 [OPTION]... SRCFILES... DIRECTORY
|
||||||
|
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
|
||||||
|
or: $0 [OPTION]... -d DIRECTORIES...
|
||||||
|
|
||||||
|
In the 1st form, copy SRCFILE to DSTFILE.
|
||||||
|
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
|
||||||
|
In the 4th, create DIRECTORIES.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
--help display this help and exit.
|
||||||
|
--version display version info and exit.
|
||||||
|
|
||||||
|
-c (ignored)
|
||||||
|
-C install only if different (preserve the last data modification time)
|
||||||
|
-d create directories instead of installing files.
|
||||||
|
-g GROUP $chgrpprog installed files to GROUP.
|
||||||
|
-m MODE $chmodprog installed files to MODE.
|
||||||
|
-o USER $chownprog installed files to USER.
|
||||||
|
-s $stripprog installed files.
|
||||||
|
-t DIRECTORY install into DIRECTORY.
|
||||||
|
-T report an error if DSTFILE is a directory.
|
||||||
|
|
||||||
|
Environment variables override the default commands:
|
||||||
|
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
|
||||||
|
RMPROG STRIPPROG
|
||||||
|
"
|
||||||
|
|
||||||
|
while test $# -ne 0; do
|
||||||
|
case $1 in
|
||||||
|
-c) ;;
|
||||||
|
|
||||||
|
-C) copy_on_change=true;;
|
||||||
|
|
||||||
|
-d) dir_arg=true;;
|
||||||
|
|
||||||
|
-g) chgrpcmd="$chgrpprog $2"
|
||||||
|
shift;;
|
||||||
|
|
||||||
|
--help) echo "$usage"; exit $?;;
|
||||||
|
|
||||||
|
-m) mode=$2
|
||||||
|
case $mode in
|
||||||
|
*' '* | *' '* | *'
|
||||||
|
'* | *'*'* | *'?'* | *'['*)
|
||||||
|
echo "$0: invalid mode: $mode" >&2
|
||||||
|
exit 1;;
|
||||||
|
esac
|
||||||
|
shift;;
|
||||||
|
|
||||||
|
-o) chowncmd="$chownprog $2"
|
||||||
|
shift;;
|
||||||
|
|
||||||
|
-s) stripcmd=$stripprog;;
|
||||||
|
|
||||||
|
-t) dst_arg=$2
|
||||||
|
# Protect names problematic for 'test' and other utilities.
|
||||||
|
case $dst_arg in
|
||||||
|
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
||||||
|
esac
|
||||||
|
shift;;
|
||||||
|
|
||||||
|
-T) no_target_directory=true;;
|
||||||
|
|
||||||
|
--version) echo "$0 $scriptversion"; exit $?;;
|
||||||
|
|
||||||
|
--) shift
|
||||||
|
break;;
|
||||||
|
|
||||||
|
-*) echo "$0: invalid option: $1" >&2
|
||||||
|
exit 1;;
|
||||||
|
|
||||||
|
*) break;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
|
||||||
|
# When -d is used, all remaining arguments are directories to create.
|
||||||
|
# When -t is used, the destination is already specified.
|
||||||
|
# Otherwise, the last argument is the destination. Remove it from $@.
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
if test -n "$dst_arg"; then
|
||||||
|
# $@ is not empty: it contains at least $arg.
|
||||||
|
set fnord "$@" "$dst_arg"
|
||||||
|
shift # fnord
|
||||||
|
fi
|
||||||
|
shift # arg
|
||||||
|
dst_arg=$arg
|
||||||
|
# Protect names problematic for 'test' and other utilities.
|
||||||
|
case $dst_arg in
|
||||||
|
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $# -eq 0; then
|
||||||
|
if test -z "$dir_arg"; then
|
||||||
|
echo "$0: no input file specified." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# It's OK to call 'install-sh -d' without argument.
|
||||||
|
# This can happen when creating conditional directories.
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -z "$dir_arg"; then
|
||||||
|
do_exit='(exit $ret); exit $ret'
|
||||||
|
trap "ret=129; $do_exit" 1
|
||||||
|
trap "ret=130; $do_exit" 2
|
||||||
|
trap "ret=141; $do_exit" 13
|
||||||
|
trap "ret=143; $do_exit" 15
|
||||||
|
|
||||||
|
# Set umask so as not to create temps with too-generous modes.
|
||||||
|
# However, 'strip' requires both read and write access to temps.
|
||||||
|
case $mode in
|
||||||
|
# Optimize common cases.
|
||||||
|
*644) cp_umask=133;;
|
||||||
|
*755) cp_umask=22;;
|
||||||
|
|
||||||
|
*[0-7])
|
||||||
|
if test -z "$stripcmd"; then
|
||||||
|
u_plus_rw=
|
||||||
|
else
|
||||||
|
u_plus_rw='% 200'
|
||||||
|
fi
|
||||||
|
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
|
||||||
|
*)
|
||||||
|
if test -z "$stripcmd"; then
|
||||||
|
u_plus_rw=
|
||||||
|
else
|
||||||
|
u_plus_rw=,u+rw
|
||||||
|
fi
|
||||||
|
cp_umask=$mode$u_plus_rw;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
for src
|
||||||
|
do
|
||||||
|
# Protect names problematic for 'test' and other utilities.
|
||||||
|
case $src in
|
||||||
|
-* | [=\(\)!]) src=./$src;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if test -n "$dir_arg"; then
|
||||||
|
dst=$src
|
||||||
|
dstdir=$dst
|
||||||
|
test -d "$dstdir"
|
||||||
|
dstdir_status=$?
|
||||||
|
else
|
||||||
|
|
||||||
|
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
|
||||||
|
# might cause directories to be created, which would be especially bad
|
||||||
|
# if $src (and thus $dsttmp) contains '*'.
|
||||||
|
if test ! -f "$src" && test ! -d "$src"; then
|
||||||
|
echo "$0: $src does not exist." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -z "$dst_arg"; then
|
||||||
|
echo "$0: no destination specified." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
dst=$dst_arg
|
||||||
|
|
||||||
|
# If destination is a directory, append the input filename; won't work
|
||||||
|
# if double slashes aren't ignored.
|
||||||
|
if test -d "$dst"; then
|
||||||
|
if test -n "$no_target_directory"; then
|
||||||
|
echo "$0: $dst_arg: Is a directory" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
dstdir=$dst
|
||||||
|
dst=$dstdir/`basename "$src"`
|
||||||
|
dstdir_status=0
|
||||||
|
else
|
||||||
|
# Prefer dirname, but fall back on a substitute if dirname fails.
|
||||||
|
dstdir=`
|
||||||
|
(dirname "$dst") 2>/dev/null ||
|
||||||
|
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
|
||||||
|
X"$dst" : 'X\(//\)[^/]' \| \
|
||||||
|
X"$dst" : 'X\(//\)$' \| \
|
||||||
|
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
|
||||||
|
echo X"$dst" |
|
||||||
|
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
|
||||||
|
s//\1/
|
||||||
|
q
|
||||||
|
}
|
||||||
|
/^X\(\/\/\)[^/].*/{
|
||||||
|
s//\1/
|
||||||
|
q
|
||||||
|
}
|
||||||
|
/^X\(\/\/\)$/{
|
||||||
|
s//\1/
|
||||||
|
q
|
||||||
|
}
|
||||||
|
/^X\(\/\).*/{
|
||||||
|
s//\1/
|
||||||
|
q
|
||||||
|
}
|
||||||
|
s/.*/./; q'
|
||||||
|
`
|
||||||
|
|
||||||
|
test -d "$dstdir"
|
||||||
|
dstdir_status=$?
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
obsolete_mkdir_used=false
|
||||||
|
|
||||||
|
if test $dstdir_status != 0; then
|
||||||
|
case $posix_mkdir in
|
||||||
|
'')
|
||||||
|
# Create intermediate dirs using mode 755 as modified by the umask.
|
||||||
|
# This is like FreeBSD 'install' as of 1997-10-28.
|
||||||
|
umask=`umask`
|
||||||
|
case $stripcmd.$umask in
|
||||||
|
# Optimize common cases.
|
||||||
|
*[2367][2367]) mkdir_umask=$umask;;
|
||||||
|
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
|
||||||
|
|
||||||
|
*[0-7])
|
||||||
|
mkdir_umask=`expr $umask + 22 \
|
||||||
|
- $umask % 100 % 40 + $umask % 20 \
|
||||||
|
- $umask % 10 % 4 + $umask % 2
|
||||||
|
`;;
|
||||||
|
*) mkdir_umask=$umask,go-w;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# With -d, create the new directory with the user-specified mode.
|
||||||
|
# Otherwise, rely on $mkdir_umask.
|
||||||
|
if test -n "$dir_arg"; then
|
||||||
|
mkdir_mode=-m$mode
|
||||||
|
else
|
||||||
|
mkdir_mode=
|
||||||
|
fi
|
||||||
|
|
||||||
|
posix_mkdir=false
|
||||||
|
case $umask in
|
||||||
|
*[123567][0-7][0-7])
|
||||||
|
# POSIX mkdir -p sets u+wx bits regardless of umask, which
|
||||||
|
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
||||||
|
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
|
||||||
|
|
||||||
|
if (umask $mkdir_umask &&
|
||||||
|
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
if test -z "$dir_arg" || {
|
||||||
|
# Check for POSIX incompatibilities with -m.
|
||||||
|
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
|
||||||
|
# other-writable bit of parent directory when it shouldn't.
|
||||||
|
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
|
||||||
|
ls_ld_tmpdir=`ls -ld "$tmpdir"`
|
||||||
|
case $ls_ld_tmpdir in
|
||||||
|
d????-?r-*) different_mode=700;;
|
||||||
|
d????-?--*) different_mode=755;;
|
||||||
|
*) false;;
|
||||||
|
esac &&
|
||||||
|
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
|
||||||
|
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
|
||||||
|
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
then posix_mkdir=:
|
||||||
|
fi
|
||||||
|
rmdir "$tmpdir/d" "$tmpdir"
|
||||||
|
else
|
||||||
|
# Remove any dirs left behind by ancient mkdir implementations.
|
||||||
|
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
|
||||||
|
fi
|
||||||
|
trap '' 0;;
|
||||||
|
esac;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if
|
||||||
|
$posix_mkdir && (
|
||||||
|
umask $mkdir_umask &&
|
||||||
|
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
|
||||||
|
)
|
||||||
|
then :
|
||||||
|
else
|
||||||
|
|
||||||
|
# The umask is ridiculous, or mkdir does not conform to POSIX,
|
||||||
|
# or it failed possibly due to a race condition. Create the
|
||||||
|
# directory the slow way, step by step, checking for races as we go.
|
||||||
|
|
||||||
|
case $dstdir in
|
||||||
|
/*) prefix='/';;
|
||||||
|
[-=\(\)!]*) prefix='./';;
|
||||||
|
*) prefix='';;
|
||||||
|
esac
|
||||||
|
|
||||||
|
eval "$initialize_posix_glob"
|
||||||
|
|
||||||
|
oIFS=$IFS
|
||||||
|
IFS=/
|
||||||
|
$posix_glob set -f
|
||||||
|
set fnord $dstdir
|
||||||
|
shift
|
||||||
|
$posix_glob set +f
|
||||||
|
IFS=$oIFS
|
||||||
|
|
||||||
|
prefixes=
|
||||||
|
|
||||||
|
for d
|
||||||
|
do
|
||||||
|
test X"$d" = X && continue
|
||||||
|
|
||||||
|
prefix=$prefix$d
|
||||||
|
if test -d "$prefix"; then
|
||||||
|
prefixes=
|
||||||
|
else
|
||||||
|
if $posix_mkdir; then
|
||||||
|
(umask=$mkdir_umask &&
|
||||||
|
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
|
||||||
|
# Don't fail if two instances are running concurrently.
|
||||||
|
test -d "$prefix" || exit 1
|
||||||
|
else
|
||||||
|
case $prefix in
|
||||||
|
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
|
||||||
|
*) qprefix=$prefix;;
|
||||||
|
esac
|
||||||
|
prefixes="$prefixes '$qprefix'"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
prefix=$prefix/
|
||||||
|
done
|
||||||
|
|
||||||
|
if test -n "$prefixes"; then
|
||||||
|
# Don't fail if two instances are running concurrently.
|
||||||
|
(umask $mkdir_umask &&
|
||||||
|
eval "\$doit_exec \$mkdirprog $prefixes") ||
|
||||||
|
test -d "$dstdir" || exit 1
|
||||||
|
obsolete_mkdir_used=true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -n "$dir_arg"; then
|
||||||
|
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
|
||||||
|
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
|
||||||
|
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
|
||||||
|
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
|
||||||
|
else
|
||||||
|
|
||||||
|
# Make a couple of temp file names in the proper directory.
|
||||||
|
dsttmp=$dstdir/_inst.$$_
|
||||||
|
rmtmp=$dstdir/_rm.$$_
|
||||||
|
|
||||||
|
# Trap to clean up those temp files at exit.
|
||||||
|
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
|
||||||
|
|
||||||
|
# Copy the file name to the temp name.
|
||||||
|
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
|
||||||
|
|
||||||
|
# and set any options; do chmod last to preserve setuid bits.
|
||||||
|
#
|
||||||
|
# If any of these fail, we abort the whole thing. If we want to
|
||||||
|
# ignore errors from any of these, just make sure not to ignore
|
||||||
|
# errors from the above "$doit $cpprog $src $dsttmp" command.
|
||||||
|
#
|
||||||
|
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
|
||||||
|
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
|
||||||
|
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
|
||||||
|
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
|
||||||
|
|
||||||
|
# If -C, don't bother to copy if it wouldn't change the file.
|
||||||
|
if $copy_on_change &&
|
||||||
|
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
|
||||||
|
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
|
||||||
|
|
||||||
|
eval "$initialize_posix_glob" &&
|
||||||
|
$posix_glob set -f &&
|
||||||
|
set X $old && old=:$2:$4:$5:$6 &&
|
||||||
|
set X $new && new=:$2:$4:$5:$6 &&
|
||||||
|
$posix_glob set +f &&
|
||||||
|
|
||||||
|
test "$old" = "$new" &&
|
||||||
|
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
rm -f "$dsttmp"
|
||||||
|
else
|
||||||
|
# Rename the file to the real destination.
|
||||||
|
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
|
||||||
|
|
||||||
|
# The rename failed, perhaps because mv can't rename something else
|
||||||
|
# to itself, or perhaps because mv is so ancient that it does not
|
||||||
|
# support -f.
|
||||||
|
{
|
||||||
|
# Now remove or move aside any old file at destination location.
|
||||||
|
# We try this two ways since rm can't unlink itself on some
|
||||||
|
# systems and the destination file might be busy for other
|
||||||
|
# reasons. In this case, the final cleanup might fail but the new
|
||||||
|
# file should still install successfully.
|
||||||
|
{
|
||||||
|
test ! -f "$dst" ||
|
||||||
|
$doit $rmcmd -f "$dst" 2>/dev/null ||
|
||||||
|
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
|
||||||
|
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
|
||||||
|
} ||
|
||||||
|
{ echo "$0: cannot unlink or rename $dst" >&2
|
||||||
|
(exit 1); exit 1
|
||||||
|
}
|
||||||
|
} &&
|
||||||
|
|
||||||
|
# Now rename the file to the real destination.
|
||||||
|
$doit $mvcmd "$dsttmp" "$dst"
|
||||||
|
}
|
||||||
|
fi || exit 1
|
||||||
|
|
||||||
|
trap '' 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Local variables:
|
||||||
|
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||||
|
# time-stamp-start: "scriptversion="
|
||||||
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
|
# time-stamp-time-zone: "UTC"
|
||||||
|
# time-stamp-end: "; # UTC"
|
||||||
|
# End:
|
88
configure.ac
88
configure.ac
|
@ -1,9 +1,6 @@
|
||||||
AC_INIT(nix, m4_esyscmd([echo -n $(cat ./version)$VERSION_SUFFIX]))
|
AC_INIT(nix, m4_esyscmd([bash -c "echo -n $(cat ./version)$VERSION_SUFFIX"]))
|
||||||
AC_CONFIG_SRCDIR(README)
|
AC_CONFIG_SRCDIR(README)
|
||||||
AC_CONFIG_AUX_DIR(config)
|
AC_CONFIG_AUX_DIR(config)
|
||||||
AM_INIT_AUTOMAKE([dist-bzip2 foreign])
|
|
||||||
|
|
||||||
AC_DEFINE_UNQUOTED(NIX_VERSION, ["$VERSION"], [Nix version.])
|
|
||||||
|
|
||||||
AC_PROG_SED
|
AC_PROG_SED
|
||||||
|
|
||||||
|
@ -50,17 +47,6 @@ AC_DEFINE_UNQUOTED(SYSTEM, ["$system"], [platform identifier (`cpu-os')])
|
||||||
test "$localstatedir" = '${prefix}/var' && localstatedir=/nix/var
|
test "$localstatedir" = '${prefix}/var' && localstatedir=/nix/var
|
||||||
|
|
||||||
|
|
||||||
# Windows-specific stuff. On Cygwin, dynamically linking against the
|
|
||||||
# ATerm DLL works, except that it requires the ATerm "lib" directory
|
|
||||||
# to be in $PATH, as Windows doesn't have anything like an RPATH
|
|
||||||
# embedded in executable. Since this is kind of annoying, we use
|
|
||||||
# static libraries for now.
|
|
||||||
if test "$sys_name" = "cygwin"; then
|
|
||||||
AC_DISABLE_SHARED
|
|
||||||
AC_ENABLE_STATIC
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# Solaris-specific stuff.
|
# Solaris-specific stuff.
|
||||||
if test "$sys_name" = sunos; then
|
if test "$sys_name" = sunos; then
|
||||||
# Solaris requires -lsocket -lnsl for network functions
|
# Solaris requires -lsocket -lnsl for network functions
|
||||||
|
@ -73,21 +59,6 @@ CXXFLAGS=${CXXFLAGS:--g -O3 -Wall}
|
||||||
AC_PROG_CC
|
AC_PROG_CC
|
||||||
AC_PROG_CXX
|
AC_PROG_CXX
|
||||||
|
|
||||||
# To build programs to be run in the build machine.
|
|
||||||
if test "$CC_FOR_BUILD" = ""; then
|
|
||||||
if test "$cross_compiling" = "yes"; then
|
|
||||||
AC_CHECK_PROGS(CC_FOR_BUILD, gcc cc)
|
|
||||||
else
|
|
||||||
CC_FOR_BUILD="$CC"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
AC_SUBST([CC_FOR_BUILD])
|
|
||||||
|
|
||||||
# We are going to use libtool.
|
|
||||||
AC_DISABLE_STATIC
|
|
||||||
AC_ENABLE_SHARED
|
|
||||||
AC_PROG_LIBTOOL
|
|
||||||
|
|
||||||
|
|
||||||
# Use 64-bit file system calls so that we can support files > 2 GiB.
|
# Use 64-bit file system calls so that we can support files > 2 GiB.
|
||||||
AC_SYS_LARGEFILE
|
AC_SYS_LARGEFILE
|
||||||
|
@ -209,7 +180,7 @@ AC_MSG_RESULT(yes)
|
||||||
AC_MSG_CHECKING([for the Perl installation prefix])
|
AC_MSG_CHECKING([for the Perl installation prefix])
|
||||||
perlversion=$($perl -e 'use Config; print $Config{version};')
|
perlversion=$($perl -e 'use Config; print $Config{version};')
|
||||||
perlarchname=$($perl -e 'use Config; print $Config{archname};')
|
perlarchname=$($perl -e 'use Config; print $Config{archname};')
|
||||||
AC_SUBST(perllibdir, [$\(libdir\)/perl5/site_perl/$perlversion/$perlarchname])
|
AC_SUBST(perllibdir, [${libdir}/perl5/site_perl/$perlversion/$perlarchname])
|
||||||
AC_MSG_RESULT($perllibdir)
|
AC_MSG_RESULT($perllibdir)
|
||||||
|
|
||||||
|
|
||||||
|
@ -232,12 +203,6 @@ AC_ARG_WITH(docbook-xsl, AC_HELP_STRING([--with-docbook-xsl=PATH],
|
||||||
AC_SUBST(docbookxsl)
|
AC_SUBST(docbookxsl)
|
||||||
|
|
||||||
|
|
||||||
AC_ARG_WITH(xml-flags, AC_HELP_STRING([--with-xml-flags=FLAGS],
|
|
||||||
[extra flags to be passed to xmllint and xsltproc]),
|
|
||||||
xmlflags=$withval, xmlflags=)
|
|
||||||
AC_SUBST(xmlflags)
|
|
||||||
|
|
||||||
|
|
||||||
AC_ARG_WITH(store-dir, AC_HELP_STRING([--with-store-dir=PATH],
|
AC_ARG_WITH(store-dir, AC_HELP_STRING([--with-store-dir=PATH],
|
||||||
[path of the Nix store (defaults to /nix/store)]),
|
[path of the Nix store (defaults to /nix/store)]),
|
||||||
storedir=$withval, storedir='/nix/store')
|
storedir=$withval, storedir='/nix/store')
|
||||||
|
@ -245,15 +210,15 @@ AC_SUBST(storedir)
|
||||||
|
|
||||||
|
|
||||||
# Look for OpenSSL, an optional dependency.
|
# Look for OpenSSL, an optional dependency.
|
||||||
AC_PATH_PROG(openssl_prog, openssl, openssl) # if not found, call openssl in $PATH
|
AC_PATH_PROG(openssl, openssl, openssl) # if not found, call openssl in $PATH
|
||||||
AC_SUBST(openssl_prog)
|
AC_SUBST(openssl)
|
||||||
AC_DEFINE_UNQUOTED(OPENSSL_PATH, ["$openssl_prog"], [Path of the OpenSSL binary])
|
AC_DEFINE_UNQUOTED(OPENSSL_PATH, ["$openssl"], [Path of the OpenSSL binary])
|
||||||
|
|
||||||
PKG_CHECK_MODULES([OPENSSL], [libcrypto],
|
PKG_CHECK_MODULES([OPENSSL], [libcrypto],
|
||||||
[AC_DEFINE([HAVE_OPENSSL], [1], [Whether to use OpenSSL.])
|
[AC_DEFINE([HAVE_OPENSSL], [1], [Whether to use OpenSSL.])
|
||||||
CXXFLAGS="$OPENSSL_CFLAGS $CXXFLAGS"
|
CXXFLAGS="$OPENSSL_CFLAGS $CXXFLAGS"
|
||||||
have_openssl=1], [true])
|
have_openssl=1], [have_openssl=])
|
||||||
AM_CONDITIONAL(HAVE_OPENSSL, test "$have_openssl" = 1)
|
AC_SUBST(HAVE_OPENSSL, [$have_openssl])
|
||||||
|
|
||||||
|
|
||||||
# Look for libbz2, a required dependency.
|
# Look for libbz2, a required dependency.
|
||||||
|
@ -319,7 +284,6 @@ if test "$enable_shared" = no; then
|
||||||
# Perl bindings require shared libraries.
|
# Perl bindings require shared libraries.
|
||||||
perlbindings=no
|
perlbindings=no
|
||||||
fi
|
fi
|
||||||
AM_CONDITIONAL(PERL_BINDINGS, test "$perlbindings" = "yes")
|
|
||||||
AC_SUBST(perlbindings)
|
AC_SUBST(perlbindings)
|
||||||
AC_MSG_RESULT($perlbindings)
|
AC_MSG_RESULT($perlbindings)
|
||||||
|
|
||||||
|
@ -327,7 +291,7 @@ 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)
|
||||||
AM_CONDITIONAL(INIT_STATE, test "$init_state" = "yes")
|
#AM_CONDITIONAL(INIT_STATE, test "$init_state" = "yes")
|
||||||
|
|
||||||
|
|
||||||
# Setuid installations.
|
# Setuid installations.
|
||||||
|
@ -361,29 +325,15 @@ fi
|
||||||
AC_SUBST(tarFlags)
|
AC_SUBST(tarFlags)
|
||||||
|
|
||||||
|
|
||||||
AM_CONFIG_HEADER([config.h])
|
# Expand all variables in config.status.
|
||||||
AC_CONFIG_FILES([Makefile
|
test "$prefix" = NONE && prefix=$ac_default_prefix
|
||||||
src/Makefile
|
test "$exec_prefix" = NONE && exec_prefix='${prefix}'
|
||||||
src/boost/Makefile
|
for name in $ac_subst_vars; do
|
||||||
src/boost/format/Makefile
|
declare $name="$(eval echo "${!name}")"
|
||||||
src/libutil/Makefile
|
declare $name="$(eval echo "${!name}")"
|
||||||
src/libstore/Makefile
|
declare $name="$(eval echo "${!name}")"
|
||||||
src/libmain/Makefile
|
done
|
||||||
src/nix-store/Makefile
|
|
||||||
src/nix-hash/Makefile
|
AC_CONFIG_HEADER([config.h])
|
||||||
src/libexpr/Makefile
|
AC_CONFIG_FILES([])
|
||||||
src/nix-instantiate/Makefile
|
|
||||||
src/nix-env/Makefile
|
|
||||||
src/nix-daemon/Makefile
|
|
||||||
src/nix-log2xml/Makefile
|
|
||||||
src/bsdiff-4.3/Makefile
|
|
||||||
perl/Makefile
|
|
||||||
scripts/Makefile
|
|
||||||
corepkgs/Makefile
|
|
||||||
doc/Makefile
|
|
||||||
doc/manual/Makefile
|
|
||||||
misc/Makefile
|
|
||||||
misc/emacs/Makefile
|
|
||||||
tests/Makefile
|
|
||||||
])
|
|
||||||
AC_OUTPUT
|
AC_OUTPUT
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
all-local: config.nix
|
|
||||||
|
|
||||||
files = nar.nix buildenv.nix buildenv.pl unpack-channel.nix derivation.nix fetchurl.nix \
|
|
||||||
imported-drv-to-derivation.nix
|
|
||||||
|
|
||||||
install-exec-local:
|
|
||||||
$(INSTALL) -d $(DESTDIR)$(datadir)/nix/corepkgs
|
|
||||||
$(INSTALL_DATA) config.nix $(files) $(DESTDIR)$(datadir)/nix/corepkgs
|
|
||||||
|
|
||||||
include ../substitute.mk
|
|
||||||
|
|
||||||
EXTRA_DIST = config.nix.in $(files)
|
|
|
@ -4,7 +4,7 @@ let
|
||||||
if val != "" then val else def;
|
if val != "" then val else def;
|
||||||
in {
|
in {
|
||||||
perl = "@perl@";
|
perl = "@perl@";
|
||||||
shell = "@shell@";
|
shell = "@bash@";
|
||||||
coreutils = "@coreutils@";
|
coreutils = "@coreutils@";
|
||||||
bzip2 = "@bzip2@";
|
bzip2 = "@bzip2@";
|
||||||
gzip = "@gzip@";
|
gzip = "@gzip@";
|
||||||
|
|
5
corepkgs/local.mk
Normal file
5
corepkgs/local.mk
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
corepkgs_FILES = nar.nix buildenv.nix buildenv.pl unpack-channel.nix derivation.nix fetchurl.nix imported-drv-to-derivation.nix
|
||||||
|
|
||||||
|
$(foreach file,config.nix $(corepkgs_FILES),$(eval $(call install-data-in,$(d)/$(file),$(datadir)/nix/corepkgs)))
|
||||||
|
|
||||||
|
template-files += $(d)/config.nix
|
|
@ -1 +0,0 @@
|
||||||
SUBDIRS = manual
|
|
|
@ -1,117 +0,0 @@
|
||||||
XMLLINT = $(xmllint) --nonet $(xmlflags)
|
|
||||||
XSLTPROC = $(xsltproc) --nonet $(xmlflags) \
|
|
||||||
--param section.autolabel 1 \
|
|
||||||
--param section.label.includes.component.label 1 \
|
|
||||||
--param html.stylesheet \'style.css\' \
|
|
||||||
--param xref.with.number.and.title 1 \
|
|
||||||
--param toc.section.depth 3 \
|
|
||||||
--param admon.style \'\' \
|
|
||||||
--param callout.graphics.extension \'.gif\' \
|
|
||||||
--param contrib.inline.enabled 0
|
|
||||||
|
|
||||||
dblatex_opts = \
|
|
||||||
-P doc.collab.show=0 \
|
|
||||||
-P latex.output.revhistory=0
|
|
||||||
|
|
||||||
# Note: we use GIF for now, since the PNGs shipped with Docbook aren't
|
|
||||||
# transparent.
|
|
||||||
|
|
||||||
man1_MANS = nix-env.1 nix-build.1 nix-shell.1 nix-store.1 nix-instantiate.1 \
|
|
||||||
nix-collect-garbage.1 nix-push.1 nix-pull.1 \
|
|
||||||
nix-prefetch-url.1 nix-channel.1 \
|
|
||||||
nix-install-package.1 nix-hash.1 nix-copy-closure.1
|
|
||||||
|
|
||||||
man5_MANS = nix.conf.5
|
|
||||||
|
|
||||||
man8_MANS = nix-daemon.8
|
|
||||||
|
|
||||||
FIGURES = figures/user-environments.png
|
|
||||||
|
|
||||||
MANUAL_SRCS = manual.xml introduction.xml installation.xml \
|
|
||||||
package-management.xml writing-nix-expressions.xml builtins.xml \
|
|
||||||
build-farm.xml \
|
|
||||||
$(man1_MANS:.1=.xml) $(man8_MANS:.8=.xml) \
|
|
||||||
troubleshooting.xml bugs.xml opt-common.xml opt-common-syn.xml opt-inst-syn.xml \
|
|
||||||
env-common.xml quick-start.xml nix-lang-ref.xml glossary.xml \
|
|
||||||
conf-file.xml release-notes.xml \
|
|
||||||
style.css images
|
|
||||||
|
|
||||||
# Do XInclude processing.
|
|
||||||
manual.xmli: $(MANUAL_SRCS) version.txt
|
|
||||||
$(XMLLINT) --xinclude $< -o $@.tmp
|
|
||||||
mv $@.tmp $@
|
|
||||||
|
|
||||||
# Note: RelaxNG validation requires xmllint >= 2.7.4.
|
|
||||||
manual.is-valid: manual.xmli
|
|
||||||
$(XSLTPROC) --novalid --stringparam profile.condition manual \
|
|
||||||
$(docbookxsl)/profiling/profile.xsl $< 2> /dev/null | \
|
|
||||||
$(XMLLINT) --noout --relaxng $(docbookrng)/docbook.rng -
|
|
||||||
touch $@
|
|
||||||
|
|
||||||
version.txt:
|
|
||||||
echo -n $(VERSION) > version.txt
|
|
||||||
|
|
||||||
man $(MANS): manual.is-valid
|
|
||||||
$(XSLTPROC) --stringparam profile.condition manpage \
|
|
||||||
$(docbookxsl)/profiling/profile.xsl manual.xmli 2> /dev/null | \
|
|
||||||
$(XSLTPROC) $(docbookxsl)/manpages/docbook.xsl -
|
|
||||||
|
|
||||||
manual.html: $(MANUAL_SRCS) manual.is-valid images
|
|
||||||
$(XSLTPROC) --xinclude --stringparam profile.condition manual \
|
|
||||||
$(docbookxsl)/profiling/profile.xsl manual.xml | \
|
|
||||||
$(XSLTPROC) --output manual.html $(docbookxsl)/html/docbook.xsl -
|
|
||||||
|
|
||||||
manual.pdf: $(MANUAL_SRCS) manual.is-valid images
|
|
||||||
if test "$(dblatex)" != ""; then \
|
|
||||||
$(XSLTPROC) --xinclude --stringparam profile.condition manual \
|
|
||||||
$(docbookxsl)/profiling/profile.xsl manual.xml | \
|
|
||||||
$(dblatex) -o manual.pdf $(dblatex_opts) -; \
|
|
||||||
else \
|
|
||||||
echo "Please install dblatex and rerun configure."; \
|
|
||||||
exit 1; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
NEWS_OPTS = \
|
|
||||||
--stringparam generate.toc "article nop" \
|
|
||||||
--stringparam section.autolabel.max.depth 0 \
|
|
||||||
--stringparam header.rule 0
|
|
||||||
|
|
||||||
NEWS.html: release-notes.xml
|
|
||||||
$(XSLTPROC) --xinclude --output $@ $(NEWS_OPTS) \
|
|
||||||
$(docbookxsl)/html/docbook.xsl release-notes.xml
|
|
||||||
|
|
||||||
NEWS.txt: release-notes.xml
|
|
||||||
$(XSLTPROC) --xinclude quote-literals.xsl release-notes.xml | \
|
|
||||||
$(XSLTPROC) --output $@.tmp.html $(NEWS_OPTS) \
|
|
||||||
$(docbookxsl)/html/docbook.xsl -
|
|
||||||
LANG=en_US $(w3m) -dump $@.tmp.html > $@
|
|
||||||
rm $@.tmp.html
|
|
||||||
|
|
||||||
|
|
||||||
all-local: manual.html NEWS.html NEWS.txt
|
|
||||||
|
|
||||||
install-data-local: manual.html
|
|
||||||
$(INSTALL) -d $(DESTDIR)$(docdir)/manual
|
|
||||||
$(INSTALL_DATA) manual.html $(DESTDIR)$(docdir)/manual
|
|
||||||
ln -sf manual.html $(DESTDIR)$(docdir)/manual/index.html
|
|
||||||
$(INSTALL_DATA) style.css $(DESTDIR)$(docdir)/manual
|
|
||||||
cp -r images $(DESTDIR)$(docdir)/manual/images
|
|
||||||
$(INSTALL) -d $(DESTDIR)$(docdir)/manual/figures
|
|
||||||
$(INSTALL_DATA) $(FIGURES) $(DESTDIR)$(docdir)/manual/figures
|
|
||||||
$(INSTALL) -d $(DESTDIR)$(docdir)/release-notes
|
|
||||||
$(INSTALL_DATA) NEWS.html $(DESTDIR)$(docdir)/release-notes/index.html
|
|
||||||
$(INSTALL_DATA) style.css $(DESTDIR)$(docdir)/release-notes/
|
|
||||||
|
|
||||||
images:
|
|
||||||
mkdir images
|
|
||||||
# cp $(docbookxsl)/images/*.gif images
|
|
||||||
mkdir images/callouts
|
|
||||||
cp $(docbookxsl)/images/callouts/*.gif images/callouts
|
|
||||||
chmod -R +w images
|
|
||||||
|
|
||||||
KEEP = manual.html manual.xmli manual.is-valid version.txt $(MANS) NEWS.html NEWS.txt
|
|
||||||
|
|
||||||
EXTRA_DIST = $(MANUAL_SRCS) $(FIGURES) $(KEEP)
|
|
||||||
|
|
||||||
DISTCLEANFILES = $(KEEP)
|
|
86
doc/manual/local.mk
Normal file
86
doc/manual/local.mk
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
XSLTPROC = $(xsltproc) --nonet $(xmlflags) \
|
||||||
|
--param section.autolabel 1 \
|
||||||
|
--param section.label.includes.component.label 1 \
|
||||||
|
--param html.stylesheet \'style.css\' \
|
||||||
|
--param xref.with.number.and.title 1 \
|
||||||
|
--param toc.section.depth 3 \
|
||||||
|
--param admon.style \'\' \
|
||||||
|
--param callout.graphics.extension \'.gif\' \
|
||||||
|
--param contrib.inline.enabled 0
|
||||||
|
|
||||||
|
MANUAL_SRCS := $(wildcard $(d)/*.xml)
|
||||||
|
|
||||||
|
|
||||||
|
# Do XInclude processing / RelaxNG validation
|
||||||
|
$(d)/manual.xmli: $(d)/manual.xml $(MANUAL_SRCS) $(d)/version.txt
|
||||||
|
$(trace-gen) $(xmllint) --nonet --xinclude $< -o $@.tmp
|
||||||
|
@mv $@.tmp $@
|
||||||
|
|
||||||
|
$(d)/version.txt:
|
||||||
|
$(trace-gen) echo -n $(PACKAGE_VERSION) > $@
|
||||||
|
|
||||||
|
# Note: RelaxNG validation requires xmllint >= 2.7.4.
|
||||||
|
$(d)/manual.is-valid: $(d)/manual.xmli
|
||||||
|
$(trace-gen) $(XSLTPROC) --novalid --stringparam profile.condition manual \
|
||||||
|
$(docbookxsl)/profiling/profile.xsl $< 2> /dev/null | \
|
||||||
|
$(xmllint) --nonet --noout --relaxng $(docbookrng)/docbook.rng -
|
||||||
|
@touch $@
|
||||||
|
|
||||||
|
clean-files += $(d)/manual.xmli $(d)/version.txt $(d)/manual.is-valid
|
||||||
|
|
||||||
|
dist-files += $(d)/manual.xmli $(d)/version.txt $(d)/manual.is-valid
|
||||||
|
|
||||||
|
|
||||||
|
# Generate man pages.
|
||||||
|
man-pages := $(foreach n, \
|
||||||
|
nix-env.1 nix-build.1 nix-shell.1 nix-store.1 nix-instantiate.1 \
|
||||||
|
nix-collect-garbage.1 nix-push.1 nix-pull.1 \
|
||||||
|
nix-prefetch-url.1 nix-channel.1 \
|
||||||
|
nix-install-package.1 nix-hash.1 nix-copy-closure.1 \
|
||||||
|
nix.conf.5 nix-daemon.8, \
|
||||||
|
$(d)/$(n))
|
||||||
|
|
||||||
|
$(man-pages): $(d)/manual.xmli $(d)/manual.is-valid
|
||||||
|
$(trace-gen) $(XSLTPROC) --stringparam profile.condition manpage \
|
||||||
|
$(docbookxsl)/profiling/profile.xsl $< 2> /dev/null | \
|
||||||
|
(cd doc/manual && $(XSLTPROC) $(docbookxsl)/manpages/docbook.xsl -)
|
||||||
|
|
||||||
|
clean-files += $(d)/*.1 $(d)/*.5 $(d)/*.8
|
||||||
|
|
||||||
|
dist-files += $(man-pages)
|
||||||
|
|
||||||
|
|
||||||
|
# Generate the HTML manual.
|
||||||
|
$(d)/manual.html: $(d)/manual.xml $(MANUAL_SRCS) $(d)/manual.is-valid
|
||||||
|
$(trace-gen) $(XSLTPROC) --xinclude --stringparam profile.condition manual \
|
||||||
|
$(docbookxsl)/profiling/profile.xsl $< | \
|
||||||
|
$(XSLTPROC) --output $@ $(docbookxsl)/html/docbook.xsl -
|
||||||
|
|
||||||
|
$(foreach file, $(d)/manual.html $(d)/style.css, $(eval $(call install-data-in, $(file), $(docdir)/manual)))
|
||||||
|
|
||||||
|
$(foreach file, $(wildcard $(d)/figures/*.png), $(eval $(call install-data-in, $(file), $(docdir)/manual/figures)))
|
||||||
|
|
||||||
|
$(foreach file, $(wildcard $(docbookxsl)/images/callouts/*.gif), $(eval $(call install-data-in, $(file), $(docdir)/manual/images/callouts)))
|
||||||
|
|
||||||
|
$(eval $(call install-symlink, manual.html, $(docdir)/manual/index.html))
|
||||||
|
|
||||||
|
all: $(d)/manual.html
|
||||||
|
|
||||||
|
clean-files += $(d)/manual.html
|
||||||
|
|
||||||
|
dist-files += $(d)/manual.html
|
||||||
|
|
||||||
|
|
||||||
|
# Generate the PDF manual.
|
||||||
|
$(d)/manual.pdf: $(d)/manual.xml $(MANUAL_SRCS) $(d)/manual.is-valid
|
||||||
|
$(trace-gen) if test "$(dblatex)" != ""; then \
|
||||||
|
cd doc/manual && $(XSLTPROC) --xinclude --stringparam profile.condition manual \
|
||||||
|
$(docbookxsl)/profiling/profile.xsl manual.xml | \
|
||||||
|
$(dblatex) -o manual.pdf $(dblatex_opts) -; \
|
||||||
|
else \
|
||||||
|
echo "Please install dblatex and rerun configure."; \
|
||||||
|
exit 1; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
clean-files += $(d)/manual.pdf
|
||||||
|
|
7
local.mk
Normal file
7
local.mk
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
ifeq ($(MAKECMDGOALS), dist)
|
||||||
|
dist-files += $(shell git ls-files) $(shell git ls-files)
|
||||||
|
endif
|
||||||
|
|
||||||
|
dist-files += configure config.h.in
|
||||||
|
|
||||||
|
GLOBAL_CXXFLAGS += -I . -I src -I src/libutil -I src/libstore -I src/libmain -I src/libexpr
|
|
@ -1 +0,0 @@
|
||||||
SUBDIRS = emacs
|
|
|
@ -1,5 +0,0 @@
|
||||||
EXTRA_DIST = nix-mode.el
|
|
||||||
|
|
||||||
install-data-local:
|
|
||||||
$(INSTALL) -d $(DESTDIR)$(datadir)/emacs/site-lisp
|
|
||||||
$(INSTALL_DATA) $(srcdir)/nix-mode.el $(DESTDIR)$(datadir)/emacs/site-lisp
|
|
1
misc/emacs/local.mk
Normal file
1
misc/emacs/local.mk
Normal file
|
@ -0,0 +1 @@
|
||||||
|
$(eval $(call install-data-in,$(d)/nix-mode.el,$(datadir)/emacs/site-lisp))
|
11
mk/clean.mk
Normal file
11
mk/clean.mk
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
clean-files :=
|
||||||
|
|
||||||
|
clean:
|
||||||
|
$(suppress) rm -fv -- $(clean-files)
|
||||||
|
|
||||||
|
dryclean:
|
||||||
|
@for i in $(clean-files); do if [ -e $$i ]; then echo $$i; fi; done | sort
|
||||||
|
|
||||||
|
print-top-help += \
|
||||||
|
echo " clean: Delete generated files"; \
|
||||||
|
echo " dryclean: Show what files would be deleted by 'make clean'";
|
17
mk/dist.mk
Normal file
17
mk/dist.mk
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
ifdef PACKAGE_NAME
|
||||||
|
|
||||||
|
dist-name = $(PACKAGE_NAME)-$(PACKAGE_VERSION)
|
||||||
|
|
||||||
|
dist: $(dist-name).tar.bz2 $(dist-name).tar.xz
|
||||||
|
|
||||||
|
$(dist-name).tar.bz2: $(dist-files)
|
||||||
|
$(trace-gen) tar cfj $@ $(sort $(dist-files)) --transform 's,^,$(dist-name)/,'
|
||||||
|
|
||||||
|
$(dist-name).tar.xz: $(dist-files)
|
||||||
|
$(trace-gen) tar cfJ $@ $(sort $(dist-files)) --transform 's,^,$(dist-name)/,'
|
||||||
|
|
||||||
|
clean-files += $(dist-name).tar.bz2 $(dist-name).tar.xz
|
||||||
|
|
||||||
|
print-top-help += echo " dist: Generate a source distribution";
|
||||||
|
|
||||||
|
endif
|
7
mk/functions.mk
Normal file
7
mk/functions.mk
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# Utility function for recursively finding files, e.g.
|
||||||
|
# ‘$(call rwildcard, path/to/dir, *.c *.h)’.
|
||||||
|
rwildcard=$(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
|
||||||
|
|
||||||
|
# Given a file name, produce the corresponding dependency file
|
||||||
|
# (e.g. ‘foo/bar.o’ becomes ‘foo/.bar.o.dep’).
|
||||||
|
filename-to-dep = $(dir $1).$(notdir $1).dep
|
57
mk/install.mk
Normal file
57
mk/install.mk
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
# Add a rule for creating $(1) as a directory. This template may be
|
||||||
|
# called multiple times for the same directory.
|
||||||
|
define create-dir =
|
||||||
|
ifndef $(1)_SEEN
|
||||||
|
$(1)_SEEN = 1
|
||||||
|
$(1):
|
||||||
|
$$(trace-install) install -d $(1)
|
||||||
|
endif
|
||||||
|
endef
|
||||||
|
|
||||||
|
|
||||||
|
# Add a rule for installing file $(1) as file $(2) with mode $(3).
|
||||||
|
# The directory containing $(2) will be created automatically.
|
||||||
|
define install-file-as =
|
||||||
|
|
||||||
|
install: $(2)
|
||||||
|
|
||||||
|
$$(eval $$(call create-dir,$$(dir $(2))))
|
||||||
|
|
||||||
|
$(2): $(1) | $$(dir $(2))
|
||||||
|
$$(trace-install) install -m $(3) $(1) $(2)
|
||||||
|
|
||||||
|
endef
|
||||||
|
|
||||||
|
|
||||||
|
# Add a rule for installing file $(1) in directory $(2) with mode
|
||||||
|
# $(3). The directory will be created automatically.
|
||||||
|
define install-file-in =
|
||||||
|
$$(eval $$(call install-file-as,$(1),$(2)/$$(notdir $(1)),$(3)))
|
||||||
|
endef
|
||||||
|
|
||||||
|
|
||||||
|
define install-program-in =
|
||||||
|
$$(eval $$(call install-file-in,$(1),$(2),0755))
|
||||||
|
endef
|
||||||
|
|
||||||
|
|
||||||
|
define install-data-in =
|
||||||
|
$$(eval $$(call install-file-in,$(1),$(2),0644))
|
||||||
|
endef
|
||||||
|
|
||||||
|
|
||||||
|
# Install a symlink from $(2) to $(1). Note that $(1) need not exist.
|
||||||
|
define install-symlink =
|
||||||
|
|
||||||
|
install: $(2)
|
||||||
|
|
||||||
|
$$(eval $$(call create-dir,$$(dir $(2))))
|
||||||
|
|
||||||
|
$(2): | $$(dir $(2))
|
||||||
|
$$(trace-install) ln -sfn $(1) $(2)
|
||||||
|
|
||||||
|
endef
|
||||||
|
|
||||||
|
|
||||||
|
print-top-help += \
|
||||||
|
echo " install: Install into \$$(prefix) (currently set to '$(prefix)')";
|
29
mk/jars.mk
Normal file
29
mk/jars.mk
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
define build-jar =
|
||||||
|
$(1)_NAME ?= $(1)
|
||||||
|
|
||||||
|
_d := $$(strip $$($(1)_DIR))
|
||||||
|
|
||||||
|
$(1)_PATH := $$(_d)/$$($(1)_NAME).jar
|
||||||
|
|
||||||
|
$(1)_TMPDIR := $$(_d)/.$$($(1)_NAME).jar.tmp
|
||||||
|
|
||||||
|
$$($(1)_PATH): $$($(1)_SOURCES)
|
||||||
|
@rm -rf $$($(1)_TMPDIR)
|
||||||
|
@mkdir -p $$($(1)_TMPDIR)
|
||||||
|
$$(trace-javac) javac $(GLOBAL_JAVACFLAGS) $$($(1)_JAVACFLAGS) -d $$($(1)_TMPDIR) $$($(1)_SOURCES)
|
||||||
|
$$(trace-jar) jar cf $$($(1)_PATH) -C $$($(1)_TMPDIR) .
|
||||||
|
@rm -rf $$($(1)_TMPDIR)
|
||||||
|
|
||||||
|
$(1)_INSTALL_DIR ?= $$(libdir)/java
|
||||||
|
|
||||||
|
$(1)_INSTALL_PATH := $$($(1)_INSTALL_DIR)/$$($(1)_NAME).jar
|
||||||
|
|
||||||
|
$$(eval $$(call install-file-as, $$($(1)_PATH), $$($(1)_INSTALL_PATH), 0644))
|
||||||
|
|
||||||
|
install: $$($(1)_INSTALL_PATH)
|
||||||
|
|
||||||
|
jars-list += $$($(1)_PATH)
|
||||||
|
|
||||||
|
clean-files += $$($(1)_PATH)
|
||||||
|
|
||||||
|
endef
|
128
mk/lib.mk
Normal file
128
mk/lib.mk
Normal file
|
@ -0,0 +1,128 @@
|
||||||
|
default: all
|
||||||
|
|
||||||
|
|
||||||
|
# Get rid of default suffixes. FIXME: is this a good idea?
|
||||||
|
.SUFFIXES:
|
||||||
|
|
||||||
|
|
||||||
|
# Initialise some variables.
|
||||||
|
bin-scripts :=
|
||||||
|
noinst-scripts :=
|
||||||
|
man-pages :=
|
||||||
|
install-tests :=
|
||||||
|
dist-files :=
|
||||||
|
OS = $(shell uname -s)
|
||||||
|
|
||||||
|
|
||||||
|
# Default installation paths.
|
||||||
|
prefix ?= /usr/local
|
||||||
|
libdir ?= $(prefix)/lib
|
||||||
|
bindir ?= $(prefix)/bin
|
||||||
|
libexecdir ?= $(prefix)/libexec
|
||||||
|
datadir ?= $(prefix)/share
|
||||||
|
localstatedir ?= $(prefix)/var
|
||||||
|
sysconfdir ?= $(prefix)/etc
|
||||||
|
mandir ?= $(prefix)/share/man
|
||||||
|
|
||||||
|
|
||||||
|
# Pass -fPIC if we're building dynamic libraries.
|
||||||
|
BUILD_SHARED_LIBS ?= 1
|
||||||
|
|
||||||
|
ifeq ($(BUILD_SHARED_LIBS), 1)
|
||||||
|
GLOBAL_CFLAGS += -fPIC
|
||||||
|
GLOBAL_CXXFLAGS += -fPIC
|
||||||
|
ifneq ($(OS), Darwin)
|
||||||
|
GLOBAL_LDFLAGS += -Wl,--no-copy-dt-needed-entries
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
# Pass -g if we want debug info.
|
||||||
|
BUILD_DEBUG ?= 1
|
||||||
|
|
||||||
|
ifeq ($(BUILD_DEBUG), 1)
|
||||||
|
GLOBAL_CFLAGS += -g
|
||||||
|
GLOBAL_CXXFLAGS += -g
|
||||||
|
GLOBAL_JAVACFLAGS += -g
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
include mk/functions.mk
|
||||||
|
include mk/tracing.mk
|
||||||
|
include mk/clean.mk
|
||||||
|
include mk/install.mk
|
||||||
|
include mk/libraries.mk
|
||||||
|
include mk/programs.mk
|
||||||
|
include mk/jars.mk
|
||||||
|
include mk/patterns.mk
|
||||||
|
include mk/templates.mk
|
||||||
|
include mk/tests.mk
|
||||||
|
|
||||||
|
|
||||||
|
# Include all sub-Makefiles.
|
||||||
|
define include-sub-makefile =
|
||||||
|
d := $$(patsubst %/,%,$$(dir $(1)))
|
||||||
|
include $(1)
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(foreach mf, $(makefiles), $(eval $(call include-sub-makefile, $(mf))))
|
||||||
|
|
||||||
|
|
||||||
|
# Instantiate stuff.
|
||||||
|
$(foreach lib, $(libraries), $(eval $(call build-library,$(lib))))
|
||||||
|
$(foreach prog, $(programs), $(eval $(call build-program,$(prog))))
|
||||||
|
$(foreach jar, $(jars), $(eval $(call build-jar,$(jar))))
|
||||||
|
$(foreach script, $(bin-scripts), $(eval $(call install-program-in,$(script),$(bindir))))
|
||||||
|
$(foreach script, $(bin-scripts), $(eval programs-list += $(script)))
|
||||||
|
$(foreach script, $(noinst-scripts), $(eval programs-list += $(script)))
|
||||||
|
$(foreach template, $(template-files), $(eval $(call instantiate-template,$(template))))
|
||||||
|
$(foreach test, $(install-tests), $(eval $(call run-install-test,$(test))))
|
||||||
|
$(foreach file, $(man-pages), $(eval $(call install-data-in, $(file), $(mandir)/man$(patsubst .%,%,$(suffix $(file))))))
|
||||||
|
|
||||||
|
|
||||||
|
include mk/dist.mk
|
||||||
|
|
||||||
|
|
||||||
|
.PHONY: default all man help
|
||||||
|
|
||||||
|
all: $(programs-list) $(libs-list) $(jars-list) $(man-pages)
|
||||||
|
|
||||||
|
man: $(man-pages)
|
||||||
|
|
||||||
|
|
||||||
|
help:
|
||||||
|
@echo "The following targets are available:"
|
||||||
|
@echo ""
|
||||||
|
@echo " default: Build default targets"
|
||||||
|
ifdef man-pages
|
||||||
|
@echo " man: Generate manual pages"
|
||||||
|
endif
|
||||||
|
@$(print-top-help)
|
||||||
|
ifdef programs-list
|
||||||
|
@echo ""
|
||||||
|
@echo "The following programs can be built:"
|
||||||
|
@echo ""
|
||||||
|
@for i in $(programs-list); do echo " $$i"; done
|
||||||
|
endif
|
||||||
|
ifdef libs-list
|
||||||
|
@echo ""
|
||||||
|
@echo "The following libraries can be built:"
|
||||||
|
@echo ""
|
||||||
|
@for i in $(libs-list); do echo " $$i"; done
|
||||||
|
endif
|
||||||
|
ifdef jars-list
|
||||||
|
@echo ""
|
||||||
|
@echo "The following JARs can be built:"
|
||||||
|
@echo ""
|
||||||
|
@for i in $(jars-list); do echo " $$i"; done
|
||||||
|
endif
|
||||||
|
@echo ""
|
||||||
|
@echo "The following variables control the build:"
|
||||||
|
@echo ""
|
||||||
|
@echo " BUILD_SHARED_LIBS ($(BUILD_SHARED_LIBS)): Whether to build shared libraries"
|
||||||
|
@echo " BUILD_DEBUG ($(BUILD_DEBUG)): Whether to include debug symbols"
|
||||||
|
@echo " CC ($(CC)): C compiler to be used"
|
||||||
|
@echo " CFLAGS: Flags for the C compiler"
|
||||||
|
@echo " CXX ($(CXX)): C++ compiler to be used"
|
||||||
|
@echo " CXXFLAGS: Flags for the C++ compiler"
|
||||||
|
@$(print-var-help)
|
116
mk/libraries.mk
Normal file
116
mk/libraries.mk
Normal file
|
@ -0,0 +1,116 @@
|
||||||
|
libs-list :=
|
||||||
|
|
||||||
|
ifeq ($(OS), Darwin)
|
||||||
|
SO_EXT = dylib
|
||||||
|
else
|
||||||
|
SO_EXT = so
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Build a library with symbolic name $(1). The library is defined by
|
||||||
|
# various variables prefixed by ‘$(1)_’:
|
||||||
|
#
|
||||||
|
# - $(1)_NAME: the name of the library (e.g. ‘libfoo’); defaults to
|
||||||
|
# $(1).
|
||||||
|
#
|
||||||
|
# - $(1)_DIR: the directory where the (non-installed) library will be
|
||||||
|
# placed.
|
||||||
|
#
|
||||||
|
# - $(1)_SOURCES: the source files of the library.
|
||||||
|
#
|
||||||
|
# - $(1)_CXXFLAGS: additional C++ compiler flags.
|
||||||
|
#
|
||||||
|
# - $(1)_LIBS: the symbolic names of other libraries on which this
|
||||||
|
# library depends.
|
||||||
|
#
|
||||||
|
# - $(1)_ALLOW_UNDEFINED: if set, the library is allowed to have
|
||||||
|
# undefined symbols. Has no effect for static libraries.
|
||||||
|
#
|
||||||
|
# - $(1)_LDFLAGS: additional linker flags.
|
||||||
|
#
|
||||||
|
# - $(1)_LDFLAGS_PROPAGATED: additional linker flags, also propagated
|
||||||
|
# to the linking of programs/libraries that use this library.
|
||||||
|
#
|
||||||
|
# - $(1)_FORCE_INSTALL: if defined, the library will be installed even
|
||||||
|
# if it's not needed (i.e. dynamically linked) by a program.
|
||||||
|
#
|
||||||
|
# - $(1)_INSTALL_DIR: the directory where the library will be
|
||||||
|
# installed. Defaults to $(libdir).
|
||||||
|
#
|
||||||
|
# - BUILD_SHARED_LIBS: if equal to ‘1’, a dynamic library will be
|
||||||
|
# built, otherwise a static library.
|
||||||
|
define build-library =
|
||||||
|
$(1)_NAME ?= $(1)
|
||||||
|
_d := $$(strip $$($(1)_DIR))
|
||||||
|
_srcs := $$(sort $$(foreach src, $$($(1)_SOURCES), $$(src)))
|
||||||
|
$(1)_OBJS := $$(addsuffix .o, $$(basename $$(_srcs)))
|
||||||
|
_libs := $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_PATH))
|
||||||
|
|
||||||
|
$(1)_INSTALL_DIR ?= $$(libdir)
|
||||||
|
|
||||||
|
$(1)_LDFLAGS_USE :=
|
||||||
|
$(1)_LDFLAGS_USE_INSTALLED :=
|
||||||
|
|
||||||
|
ifeq ($(BUILD_SHARED_LIBS), 1)
|
||||||
|
|
||||||
|
ifdef $(1)_ALLOW_UNDEFINED
|
||||||
|
ifeq ($(OS), Darwin)
|
||||||
|
$(1)_LDFLAGS += -undefined suppress -flat_namespace
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
ifneq ($(OS), Darwin)
|
||||||
|
$(1)_LDFLAGS += -Wl,-z,defs
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
$(1)_PATH := $$(_d)/$$($(1)_NAME).$(SO_EXT)
|
||||||
|
|
||||||
|
$$($(1)_PATH): $$($(1)_OBJS) $$(_libs)
|
||||||
|
$$(trace-ld) $(CXX) -o $$@ -shared $(GLOBAL_LDFLAGS) $$($(1)_OBJS) $$($(1)_LDFLAGS) $$($(1)_LDFLAGS_PROPAGATED) $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_LDFLAGS_USE))
|
||||||
|
|
||||||
|
$(1)_LDFLAGS_USE += -L$$(_d) -Wl,-rpath,$$(abspath $$(_d)) -l$$(patsubst lib%,%,$$(strip $$($(1)_NAME)))
|
||||||
|
|
||||||
|
$(1)_INSTALL_PATH := $$($(1)_INSTALL_DIR)/$$($(1)_NAME).$(SO_EXT)
|
||||||
|
|
||||||
|
_libs_final := $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_INSTALL_PATH))
|
||||||
|
|
||||||
|
$$(eval $$(call create-dir,$$($(1)_INSTALL_DIR)))
|
||||||
|
|
||||||
|
$$($(1)_INSTALL_PATH): $$($(1)_OBJS) $$(_libs_final) | $$($(1)_INSTALL_DIR)
|
||||||
|
$$(trace-ld) $(CXX) -o $$@ -shared $(GLOBAL_LDFLAGS) $$($(1)_OBJS) $$($(1)_LDFLAGS) $$($(1)_LDFLAGS_PROPAGATED) $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_LDFLAGS_USE_INSTALLED))
|
||||||
|
|
||||||
|
$(1)_LDFLAGS_USE_INSTALLED += -L$$($(1)_INSTALL_DIR) -Wl,-rpath,$$($(1)_INSTALL_DIR) -l$$(patsubst lib%,%,$$(strip $$($(1)_NAME)))
|
||||||
|
|
||||||
|
ifdef $(1)_FORCE_INSTALL
|
||||||
|
install: $$($(1)_INSTALL_PATH)
|
||||||
|
endif
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
$(1)_PATH := $$(_d)/$$($(1)_NAME).a
|
||||||
|
|
||||||
|
$$($(1)_PATH): $$($(1)_OBJS)
|
||||||
|
$(trace-ar) ar crs $$@ $$?
|
||||||
|
|
||||||
|
$(1)_LDFLAGS_USE += $$($(1)_PATH) $$($(1)_LDFLAGS)
|
||||||
|
|
||||||
|
$(1)_INSTALL_PATH := $$(libdir)/$$($(1)_NAME).a
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
$(1)_LDFLAGS_USE += $$($(1)_LDFLAGS_PROPAGATED)
|
||||||
|
$(1)_LDFLAGS_USE_INSTALLED += $$($(1)_LDFLAGS_PROPAGATED)
|
||||||
|
|
||||||
|
# Propagate CXXFLAGS to the individual object files.
|
||||||
|
$$(foreach obj, $$($(1)_OBJS), $$(eval $$(obj)_CXXFLAGS=$$($(1)_CXXFLAGS)))
|
||||||
|
|
||||||
|
# Make each object file depend on the common dependencies.
|
||||||
|
$$(foreach obj, $$($(1)_OBJS), $$(eval $$(obj): $$($(1)_COMMON_DEPS)))
|
||||||
|
|
||||||
|
# Include .dep files, if they exist.
|
||||||
|
$(1)_DEPS := $$(foreach fn, $$($(1)_OBJS), $$(call filename-to-dep, $$(fn)))
|
||||||
|
-include $$($(1)_DEPS)
|
||||||
|
|
||||||
|
libs-list += $$($(1)_PATH)
|
||||||
|
clean-files += $$(_d)/*.a $$(_d)/*.$(SO_EXT) $$(_d)/*.o $$(_d)/.*.dep $$($(1)_DEPS) $$($(1)_OBJS)
|
||||||
|
dist-files += $$(_srcs)
|
||||||
|
endef
|
8
mk/patterns.mk
Normal file
8
mk/patterns.mk
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
%.o: %.cc
|
||||||
|
$(trace-cxx) $(CXX) -o $@ -c $< $(GLOBAL_CXXFLAGS) $(CXXFLAGS) $($@_CXXFLAGS) -MMD -MF $(call filename-to-dep, $@) -MP
|
||||||
|
|
||||||
|
%.o: %.cpp
|
||||||
|
$(trace-cxx) $(CXX) -o $@ -c $< $(GLOBAL_CXXFLAGS) $(CXXFLAGS) $($@_CXXFLAGS) -MMD -MF $(call filename-to-dep, $@) -MP
|
||||||
|
|
||||||
|
%.o: %.c
|
||||||
|
$(trace-cc) $(CC) -o $@ -c $< $(GLOBAL_CFLAGS) $(CFLAGS) $($@_CFLAGS) -MMD -MF $(call filename-to-dep, $@) -MP
|
62
mk/programs.mk
Normal file
62
mk/programs.mk
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
programs-list :=
|
||||||
|
|
||||||
|
# Build a program with symbolic name $(1). The program is defined by
|
||||||
|
# various variables prefixed by ‘$(1)_’:
|
||||||
|
#
|
||||||
|
# - $(1)_DIR: the directory where the (non-installed) program will be
|
||||||
|
# placed.
|
||||||
|
#
|
||||||
|
# - $(1)_SOURCES: the source files of the program.
|
||||||
|
#
|
||||||
|
# - $(1)_LIBS: the symbolic names of libraries on which this program
|
||||||
|
# depends.
|
||||||
|
#
|
||||||
|
# - $(1)_LDFLAGS: additional linker flags.
|
||||||
|
#
|
||||||
|
# - $(1)_INSTALL_DIR: the directory where the program will be
|
||||||
|
# installed; defaults to $(bindir).
|
||||||
|
define build-program =
|
||||||
|
_d := $$($(1)_DIR)
|
||||||
|
_srcs := $$(sort $$(foreach src, $$($(1)_SOURCES), $$(src)))
|
||||||
|
$(1)_OBJS := $$(addsuffix .o, $$(basename $$(_srcs)))
|
||||||
|
_libs := $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_PATH))
|
||||||
|
$(1)_PATH := $$(_d)/$(1)
|
||||||
|
|
||||||
|
$$($(1)_PATH): $$($(1)_OBJS) $$(_libs)
|
||||||
|
$$(trace-ld) $(CXX) -o $$@ $(GLOBAL_LDFLAGS) $$($(1)_OBJS) $$($(1)_LDFLAGS) $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_LDFLAGS_USE))
|
||||||
|
|
||||||
|
$(1)_INSTALL_DIR ?= $$(bindir)
|
||||||
|
$(1)_INSTALL_PATH := $$($(1)_INSTALL_DIR)/$(1)
|
||||||
|
|
||||||
|
$$(eval $$(call create-dir,$$($(1)_INSTALL_DIR)))
|
||||||
|
|
||||||
|
install: $$($(1)_INSTALL_PATH)
|
||||||
|
|
||||||
|
ifeq ($(BUILD_SHARED_LIBS), 1)
|
||||||
|
|
||||||
|
_libs_final := $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_INSTALL_PATH))
|
||||||
|
|
||||||
|
$$($(1)_INSTALL_PATH): $$($(1)_OBJS) $$(_libs_final) | $$($(1)_INSTALL_DIR)
|
||||||
|
$$(trace-ld) $(CXX) -o $$@ $(GLOBAL_LDFLAGS) $$($(1)_OBJS) $$($(1)_LDFLAGS) $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_LDFLAGS_USE_INSTALLED))
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
$$($(1)_INSTALL_PATH): $$($(1)_PATH) | $$($(1)_INSTALL_DIR)
|
||||||
|
install -t $$($(1)_INSTALL_DIR) $$<
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Propagate CXXFLAGS to the individual object files.
|
||||||
|
$$(foreach obj, $$($(1)_OBJS), $$(eval $$(obj)_CXXFLAGS=$$($(1)_CXXFLAGS)))
|
||||||
|
|
||||||
|
# Make each object file depend on the common dependencies.
|
||||||
|
$$(foreach obj, $$($(1)_OBJS), $$(eval $$(obj): $$($(1)_COMMON_DEPS)))
|
||||||
|
|
||||||
|
# Include .dep files, if they exist.
|
||||||
|
$(1)_DEPS := $$(foreach fn, $$($(1)_OBJS), $$(call filename-to-dep, $$(fn)))
|
||||||
|
-include $$($(1)_DEPS)
|
||||||
|
|
||||||
|
programs-list += $$($(1)_PATH)
|
||||||
|
clean-files += $$($(1)_PATH) $$(_d)/*.o $$(_d)/.*.dep $$($(1)_DEPS) $$($(1)_OBJS)
|
||||||
|
dist-files += $$(_srcs)
|
||||||
|
endef
|
12
mk/templates.mk
Normal file
12
mk/templates.mk
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
template-files :=
|
||||||
|
|
||||||
|
# Create the file $(1) from $(1).in by running config.status (which
|
||||||
|
# substitutes all ‘@var@’ variables set by the configure script).
|
||||||
|
define instantiate-template =
|
||||||
|
|
||||||
|
clean-files += $(1)
|
||||||
|
|
||||||
|
endef
|
||||||
|
|
||||||
|
%: %.in
|
||||||
|
$(trace-gen) ./config.status --quiet --file $@
|
29
mk/tests.mk
Normal file
29
mk/tests.mk
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
# Run program $1 as part of ‘make installcheck’.
|
||||||
|
define run-install-test =
|
||||||
|
|
||||||
|
installcheck: $1
|
||||||
|
|
||||||
|
# Run the test in its own directory to mimick Automake behaviour.
|
||||||
|
$1.run: $1 $(_PREV_TEST)
|
||||||
|
|
||||||
|
_installcheck-list += $1
|
||||||
|
|
||||||
|
endef
|
||||||
|
|
||||||
|
installcheck:
|
||||||
|
@total=0; failed=0; for i in $(_installcheck-list); do \
|
||||||
|
total=$$((total + 1)); \
|
||||||
|
echo "running test $$i"; \
|
||||||
|
if (cd $$(dirname $$i) && $(tests-environment) $$(basename $$i)); then \
|
||||||
|
echo "PASS: $$i"; \
|
||||||
|
else \
|
||||||
|
echo "FAIL: $$i"; \
|
||||||
|
failed=$$((failed + 1)); \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
if [ "$$failed" != 0 ]; then \
|
||||||
|
echo "$$failed out of $$total tests failed "; \
|
||||||
|
exit 1; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
.PHONY: check installcheck
|
16
mk/tracing.mk
Normal file
16
mk/tracing.mk
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
V ?= 0
|
||||||
|
|
||||||
|
ifeq ($(V), 0)
|
||||||
|
|
||||||
|
trace-gen = @echo " GEN " $@;
|
||||||
|
trace-cc = @echo " CC " $@;
|
||||||
|
trace-cxx = @echo " CXX " $@;
|
||||||
|
trace-ld = @echo " LD " $@;
|
||||||
|
trace-ar = @echo " AR " $@;
|
||||||
|
trace-install = @echo " INST " $@;
|
||||||
|
trace-javac = @echo " JAVAC " $@;
|
||||||
|
trace-jar = @echo " JAR " $@;
|
||||||
|
|
||||||
|
suppress = @
|
||||||
|
|
||||||
|
endif
|
|
@ -1,38 +0,0 @@
|
||||||
PERL_MODULES = lib/Nix/Store.pm lib/Nix/Manifest.pm lib/Nix/GeneratePatches.pm lib/Nix/SSH.pm lib/Nix/CopyClosure.pm lib/Nix/Config.pm.in lib/Nix/Utils.pm lib/Nix/Crypto.pm
|
|
||||||
|
|
||||||
all: $(PERL_MODULES:.in=)
|
|
||||||
|
|
||||||
install-exec-local: $(PERL_MODULES:.in=) install-perl-xs
|
|
||||||
$(INSTALL) -d $(DESTDIR)$(perllibdir)/Nix
|
|
||||||
$(INSTALL_DATA) $(PERL_MODULES:.in=) $(DESTDIR)$(perllibdir)/Nix
|
|
||||||
|
|
||||||
if PERL_BINDINGS
|
|
||||||
install-perl-xs:
|
|
||||||
$(INSTALL) -d $(DESTDIR)$(perllibdir)/auto/Nix/Store
|
|
||||||
ln -sfn $(pkglibdir)/libNixStore$(dynlib_suffix) $(DESTDIR)$(perllibdir)/auto/Nix/Store/Store$(dynlib_suffix)
|
|
||||||
|
|
||||||
# Awful hackery to get libtool to build Perl XS bindings.
|
|
||||||
pkglib_LTLIBRARIES = libNixStore.la
|
|
||||||
|
|
||||||
nodist_libNixStore_la_SOURCES = lib/Nix/Store.cc
|
|
||||||
|
|
||||||
CLEANFILES = lib/Nix/Store.cc
|
|
||||||
|
|
||||||
libNixStore_la_LIBADD = $(top_builddir)/src/libstore/libstore.la
|
|
||||||
|
|
||||||
AM_CXXFLAGS = \
|
|
||||||
-I$(top_srcdir)/src -I$(top_srcdir)/src/libutil -I$(top_srcdir)/src/libstore \
|
|
||||||
-I$(shell $(perl) -e 'use Config; print $$Config{archlibexp};')/CORE \
|
|
||||||
-D_FILE_OFFSET_BITS=64
|
|
||||||
|
|
||||||
lib/Nix/Store.cc: lib/Nix/Store.xs
|
|
||||||
$(INSTALL) -d lib/Nix
|
|
||||||
xsubpp $^ -output $@
|
|
||||||
|
|
||||||
else
|
|
||||||
install-perl-xs:
|
|
||||||
endif
|
|
||||||
|
|
||||||
EXTRA_DIST = $(PERL_MODULES) lib/Nix/Store.xs
|
|
||||||
|
|
||||||
include ../substitute.mk
|
|
|
@ -1,6 +1,6 @@
|
||||||
package Nix::Config;
|
package Nix::Config;
|
||||||
|
|
||||||
$version = "@version@";
|
$version = "@PACKAGE_VERSION@";
|
||||||
|
|
||||||
$binDir = $ENV{"NIX_BIN_DIR"} || "@bindir@";
|
$binDir = $ENV{"NIX_BIN_DIR"} || "@bindir@";
|
||||||
$libexecDir = $ENV{"NIX_LIBEXEC_DIR"} || "@libexecdir@";
|
$libexecDir = $ENV{"NIX_LIBEXEC_DIR"} || "@libexecdir@";
|
||||||
|
|
|
@ -225,7 +225,7 @@ sub generatePatches {
|
||||||
}
|
}
|
||||||
|
|
||||||
my $time1 = time();
|
my $time1 = time();
|
||||||
my $res = system("ulimit -t $timeLimit; $Nix::Config::libexecDir/bsdiff $tmpDir/A $tmpDir/B $tmpDir/DIFF");
|
my $res = system("ulimit -t $timeLimit; $Nix::Config::libexecDir/nix/bsdiff $tmpDir/A $tmpDir/B $tmpDir/DIFF");
|
||||||
my $time2 = time();
|
my $time2 = time();
|
||||||
if ($res) {
|
if ($res) {
|
||||||
warn "binary diff computation aborted after ", $time2 - $time1, " seconds\n";
|
warn "binary diff computation aborted after ", $time2 - $time1, " seconds\n";
|
||||||
|
|
|
@ -35,6 +35,10 @@ MODULE = Nix::Store PACKAGE = Nix::Store
|
||||||
PROTOTYPES: ENABLE
|
PROTOTYPES: ENABLE
|
||||||
|
|
||||||
|
|
||||||
|
#undef dNOOP // Hack to work around "error: declaration of 'Perl___notused' has a different language linkage" error message on clang.
|
||||||
|
#define dNOOP
|
||||||
|
|
||||||
|
|
||||||
void init()
|
void init()
|
||||||
CODE:
|
CODE:
|
||||||
doInit();
|
doInit();
|
||||||
|
|
40
perl/local.mk
Normal file
40
perl/local.mk
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
nix_perl_sources := \
|
||||||
|
$(d)/lib/Nix/Store.pm \
|
||||||
|
$(d)/lib/Nix/Manifest.pm \
|
||||||
|
$(d)/lib/Nix/GeneratePatches.pm \
|
||||||
|
$(d)/lib/Nix/SSH.pm \
|
||||||
|
$(d)/lib/Nix/CopyClosure.pm \
|
||||||
|
$(d)/lib/Nix/Config.pm.in \
|
||||||
|
$(d)/lib/Nix/Utils.pm \
|
||||||
|
$(d)/lib/Nix/Crypto.pm
|
||||||
|
|
||||||
|
nix_perl_modules := $(nix_perl_sources:.in=)
|
||||||
|
|
||||||
|
$(foreach x, $(nix_perl_modules), $(eval $(call install-data-in, $(x), $(perllibdir)/Nix)))
|
||||||
|
|
||||||
|
ifeq ($(perlbindings), yes)
|
||||||
|
|
||||||
|
$(d)/lib/Nix/Store.cc: $(d)/lib/Nix/Store.xs
|
||||||
|
$(trace-gen) xsubpp $^ -output $@
|
||||||
|
|
||||||
|
libraries += Store
|
||||||
|
|
||||||
|
Store_DIR := $(d)/lib/Nix
|
||||||
|
|
||||||
|
Store_SOURCES := $(Store_DIR)/Store.cc
|
||||||
|
|
||||||
|
Store_LIBS = libstore
|
||||||
|
|
||||||
|
Store_CXXFLAGS = \
|
||||||
|
-I$(shell $(perl) -e 'use Config; print $$Config{archlibexp};')/CORE \
|
||||||
|
-D_FILE_OFFSET_BITS=64
|
||||||
|
|
||||||
|
Store_ALLOW_UNDEFINED = 1
|
||||||
|
|
||||||
|
Store_FORCE_INSTALL = 1
|
||||||
|
|
||||||
|
Store_INSTALL_DIR = $(perllibdir)/auto/Nix/Store
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
clean-files += $(d)/lib/Nix/Config.pm $(d)/lib/Nix/Store.cc
|
11
release.nix
11
release.nix
|
@ -30,7 +30,6 @@ let
|
||||||
configureFlags = ''
|
configureFlags = ''
|
||||||
--with-docbook-rng=${docbook5}/xml/rng/docbook
|
--with-docbook-rng=${docbook5}/xml/rng/docbook
|
||||||
--with-docbook-xsl=${docbook5_xsl}/xml/xsl/docbook
|
--with-docbook-xsl=${docbook5_xsl}/xml/xsl/docbook
|
||||||
--with-xml-flags=--nonet
|
|
||||||
--with-dbi=${perlPackages.DBI}/${perl.libPrefix}
|
--with-dbi=${perlPackages.DBI}/${perl.libPrefix}
|
||||||
--with-dbd-sqlite=${perlPackages.DBDSQLite}/${perl.libPrefix}
|
--with-dbd-sqlite=${perlPackages.DBDSQLite}/${perl.libPrefix}
|
||||||
--with-www-curl=${perlPackages.WWWCurl}/${perl.libPrefix}
|
--with-www-curl=${perlPackages.WWWCurl}/${perl.libPrefix}
|
||||||
|
@ -49,16 +48,15 @@ let
|
||||||
distPhase =
|
distPhase =
|
||||||
''
|
''
|
||||||
runHook preDist
|
runHook preDist
|
||||||
make dist-gzip
|
make dist
|
||||||
make dist-xz
|
|
||||||
mkdir -p $out/tarballs
|
mkdir -p $out/tarballs
|
||||||
cp *.tar.* $out/tarballs
|
cp *.tar.* $out/tarballs
|
||||||
'';
|
'';
|
||||||
|
|
||||||
preDist = ''
|
preDist = ''
|
||||||
make -C doc/manual install prefix=$out
|
make install docdir=$out/share/doc/nix makefiles=doc/manual/local.mk
|
||||||
|
|
||||||
make -C doc/manual manual.pdf prefix=$out
|
make doc/manual/manual.pdf
|
||||||
cp doc/manual/manual.pdf $out/manual.pdf
|
cp doc/manual/manual.pdf $out/manual.pdf
|
||||||
|
|
||||||
# The PDF containes filenames of included graphics (see
|
# The PDF containes filenames of included graphics (see
|
||||||
|
@ -99,9 +97,12 @@ let
|
||||||
|
|
||||||
makeFlags = "profiledir=$(out)/etc/profile.d";
|
makeFlags = "profiledir=$(out)/etc/profile.d";
|
||||||
|
|
||||||
|
preBuild = "unset NIX_INDENT_MAKE";
|
||||||
|
|
||||||
installFlags = "sysconfdir=$(out)/etc";
|
installFlags = "sysconfdir=$(out)/etc";
|
||||||
|
|
||||||
doInstallCheck = true;
|
doInstallCheck = true;
|
||||||
|
installCheckFlags = "sysconfdir=$(out)/etc";
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,41 +0,0 @@
|
||||||
bin_SCRIPTS = nix-collect-garbage \
|
|
||||||
nix-pull nix-push nix-prefetch-url \
|
|
||||||
nix-install-package nix-channel nix-build \
|
|
||||||
nix-copy-closure nix-generate-patches
|
|
||||||
|
|
||||||
noinst_SCRIPTS = nix-profile.sh \
|
|
||||||
find-runtime-roots.pl build-remote.pl nix-reduce-build \
|
|
||||||
copy-from-other-stores.pl nix-http-export.cgi
|
|
||||||
|
|
||||||
profiledir = $(sysconfdir)/profile.d
|
|
||||||
|
|
||||||
install-exec-local: download-using-manifests.pl copy-from-other-stores.pl download-from-binary-cache.pl find-runtime-roots.pl
|
|
||||||
$(INSTALL) -d $(DESTDIR)$(profiledir)
|
|
||||||
$(INSTALL_DATA) nix-profile.sh $(DESTDIR)$(profiledir)/nix.sh
|
|
||||||
$(INSTALL) -d $(DESTDIR)$(libexecdir)/nix
|
|
||||||
$(INSTALL_PROGRAM) find-runtime-roots.pl $(DESTDIR)$(libexecdir)/nix
|
|
||||||
$(INSTALL_PROGRAM) build-remote.pl $(DESTDIR)$(libexecdir)/nix
|
|
||||||
$(INSTALL) -d $(DESTDIR)$(libexecdir)/nix/substituters
|
|
||||||
$(INSTALL_PROGRAM) download-using-manifests.pl copy-from-other-stores.pl download-from-binary-cache.pl $(DESTDIR)$(libexecdir)/nix/substituters
|
|
||||||
$(INSTALL) -d $(DESTDIR)$(sysconfdir)/nix
|
|
||||||
ln -sf nix-build $(DESTDIR)$(bindir)/nix-shell
|
|
||||||
|
|
||||||
include ../substitute.mk
|
|
||||||
|
|
||||||
EXTRA_DIST = nix-collect-garbage.in \
|
|
||||||
nix-pull.in nix-push.in nix-profile.sh.in \
|
|
||||||
nix-prefetch-url.in nix-install-package.in \
|
|
||||||
nix-channel.in \
|
|
||||||
nix-build.in \
|
|
||||||
download-using-manifests.pl.in \
|
|
||||||
copy-from-other-stores.pl.in \
|
|
||||||
download-from-binary-cache.pl.in \
|
|
||||||
nix-copy-closure.in \
|
|
||||||
find-runtime-roots.pl.in \
|
|
||||||
build-remote.pl.in \
|
|
||||||
nix-reduce-build.in \
|
|
||||||
nix-http-export.cgi.in \
|
|
||||||
nix-generate-patches.in
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f $(bin_SCRIPTS) $(noinst_SCRIPTS)
|
|
|
@ -317,7 +317,7 @@ while (scalar @path > 0) {
|
||||||
# Apply the patch to the NAR archive produced in step 1 (for
|
# Apply the patch to the NAR archive produced in step 1 (for
|
||||||
# the already present path) or a later step (for patch sequences).
|
# the already present path) or a later step (for patch sequences).
|
||||||
print STDERR " applying patch...\n";
|
print STDERR " applying patch...\n";
|
||||||
system("$Nix::Config::libexecDir/bspatch $tmpNar $tmpNar2 $patchPath") == 0
|
system("$Nix::Config::libexecDir/nix/bspatch $tmpNar $tmpNar2 $patchPath") == 0
|
||||||
or die "cannot apply patch `$patchPath' to $tmpNar\n";
|
or die "cannot apply patch `$patchPath' to $tmpNar\n";
|
||||||
|
|
||||||
if ($curStep < $maxStep) {
|
if ($curStep < $maxStep) {
|
||||||
|
|
37
scripts/local.mk
Normal file
37
scripts/local.mk
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
nix_bin_scripts := \
|
||||||
|
$(d)/nix-build \
|
||||||
|
$(d)/nix-channel \
|
||||||
|
$(d)/nix-collect-garbage \
|
||||||
|
$(d)/nix-copy-closure \
|
||||||
|
$(d)/nix-generate-patches \
|
||||||
|
$(d)/nix-install-package \
|
||||||
|
$(d)/nix-prefetch-url \
|
||||||
|
$(d)/nix-pull \
|
||||||
|
$(d)/nix-push
|
||||||
|
|
||||||
|
bin-scripts += $(nix_bin_scripts)
|
||||||
|
|
||||||
|
nix_substituters := \
|
||||||
|
$(d)/copy-from-other-stores.pl \
|
||||||
|
$(d)/download-from-binary-cache.pl \
|
||||||
|
$(d)/download-using-manifests.pl
|
||||||
|
|
||||||
|
nix_noinst_scripts := \
|
||||||
|
$(d)/build-remote.pl \
|
||||||
|
$(d)/find-runtime-roots.pl \
|
||||||
|
$(d)/nix-http-export.cgi \
|
||||||
|
$(d)/nix-profile.sh \
|
||||||
|
$(d)/nix-reduce-build \
|
||||||
|
$(nix_substituters)
|
||||||
|
|
||||||
|
noinst-scripts += $(nix_noinst_scripts)
|
||||||
|
|
||||||
|
profiledir = $(sysconfdir)/profile.d
|
||||||
|
|
||||||
|
$(eval $(call install-file-as, $(d)/nix-profile.sh, $(profiledir)/nix.sh, 0644))
|
||||||
|
$(eval $(call install-program-in, $(d)/find-runtime-roots.pl, $(libexecdir)/nix))
|
||||||
|
$(eval $(call install-program-in, $(d)/build-remote.pl, $(libexecdir)/nix))
|
||||||
|
$(foreach prog, $(nix_substituters), $(eval $(call install-program-in, $(prog), $(libexecdir)/nix/substituters)))
|
||||||
|
$(eval $(call install-symlink, nix-build, $(bindir)/nix-shell))
|
||||||
|
|
||||||
|
clean-files += $(nix_bin_scripts) $(nix_noinst_scripts)
|
|
@ -1,4 +1,4 @@
|
||||||
#! @shell@
|
#! @bash@
|
||||||
|
|
||||||
WORKING_DIRECTORY=$(mktemp -d "${TMPDIR:-/tmp}"/nix-reduce-build-XXXXXX);
|
WORKING_DIRECTORY=$(mktemp -d "${TMPDIR:-/tmp}"/nix-reduce-build-XXXXXX);
|
||||||
cd "$WORKING_DIRECTORY";
|
cd "$WORKING_DIRECTORY";
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
SUBDIRS = boost libutil libstore libmain nix-store nix-hash \
|
|
||||||
libexpr nix-instantiate nix-env nix-daemon \
|
|
||||||
nix-log2xml bsdiff-4.3
|
|
|
@ -1,8 +0,0 @@
|
||||||
SUBDIRS = format
|
|
||||||
|
|
||||||
nobase_pkginclude_HEADERS = assert.hpp checked_delete.hpp format.hpp \
|
|
||||||
shared_ptr.hpp weak_ptr.hpp throw_exception.hpp \
|
|
||||||
enable_shared_from_this.hpp \
|
|
||||||
detail/shared_count.hpp detail/workaround.hpp
|
|
||||||
|
|
||||||
pkgincludedir = ${includedir}/nix/boost
|
|
|
@ -1,12 +0,0 @@
|
||||||
pkglib_LTLIBRARIES = libformat.la
|
|
||||||
|
|
||||||
libformat_la_SOURCES = format_implementation.cc free_funcs.cc \
|
|
||||||
parsing.cc
|
|
||||||
|
|
||||||
pkginclude_HEADERS = exceptions.hpp feed_args.hpp format_class.hpp \
|
|
||||||
format_fwd.hpp group.hpp internals.hpp internals_fwd.hpp \
|
|
||||||
macros_default.hpp
|
|
||||||
|
|
||||||
pkgincludedir = ${includedir}/nix/boost/format
|
|
||||||
|
|
||||||
AM_CXXFLAGS = -Wall -I$(srcdir)/../..
|
|
7
src/boost/format/local.mk
Normal file
7
src/boost/format/local.mk
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
libraries += libformat
|
||||||
|
|
||||||
|
libformat_NAME = libnixformat
|
||||||
|
|
||||||
|
libformat_DIR := $(d)
|
||||||
|
|
||||||
|
libformat_SOURCES := $(wildcard $(d)/*.cc)
|
|
@ -1,13 +0,0 @@
|
||||||
EXTRA_DIST = compat-include
|
|
||||||
|
|
||||||
libexec_PROGRAMS = bsdiff bspatch
|
|
||||||
|
|
||||||
bsdiff_SOURCES = bsdiff.c
|
|
||||||
|
|
||||||
bsdiff_LDADD = -lbz2
|
|
||||||
|
|
||||||
bspatch_SOURCES = bspatch.c
|
|
||||||
|
|
||||||
bspatch_LDADD = -lbz2
|
|
||||||
|
|
||||||
AM_CFLAGS = -O3 ${bsddiff_compat_include}
|
|
11
src/bsdiff-4.3/local.mk
Normal file
11
src/bsdiff-4.3/local.mk
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
programs += bsdiff bspatch
|
||||||
|
|
||||||
|
bsdiff_DIR := $(d)
|
||||||
|
bsdiff_SOURCES := $(d)/bsdiff.c
|
||||||
|
bsdiff_LDFLAGS = -lbz2 $(bsddiff_compat_include)
|
||||||
|
bsdiff_INSTALL_DIR = $(libexecdir)/nix
|
||||||
|
|
||||||
|
bspatch_DIR := $(d)
|
||||||
|
bspatch_SOURCES := $(d)/bspatch.c
|
||||||
|
bspatch_LDFLAGS = -lbz2 $(bsddiff_compat_include)
|
||||||
|
bspatch_INSTALL_DIR = $(libexecdir)/nix
|
|
@ -1,40 +0,0 @@
|
||||||
pkglib_LTLIBRARIES = libexpr.la
|
|
||||||
|
|
||||||
libexpr_la_SOURCES = \
|
|
||||||
nixexpr.cc eval.cc primops.cc lexer-tab.cc parser-tab.cc \
|
|
||||||
get-drvs.cc attr-path.cc value-to-xml.cc value-to-json.cc \
|
|
||||||
common-opts.cc names.cc
|
|
||||||
|
|
||||||
pkginclude_HEADERS = \
|
|
||||||
nixexpr.hh eval.hh eval-inline.hh lexer-tab.hh parser-tab.hh \
|
|
||||||
get-drvs.hh attr-path.hh value-to-xml.hh value-to-json.hh \
|
|
||||||
common-opts.hh names.hh symbol-table.hh value.hh
|
|
||||||
|
|
||||||
libexpr_la_LIBADD = ../libutil/libutil.la ../libstore/libstore.la \
|
|
||||||
../boost/format/libformat.la @BDW_GC_LIBS@
|
|
||||||
|
|
||||||
BUILT_SOURCES = \
|
|
||||||
parser-tab.hh lexer-tab.hh parser-tab.cc lexer-tab.cc
|
|
||||||
|
|
||||||
EXTRA_DIST = lexer.l parser.y
|
|
||||||
|
|
||||||
AM_CXXFLAGS = \
|
|
||||||
-I$(srcdir)/.. \
|
|
||||||
-I$(srcdir)/../libutil -I$(srcdir)/../libstore
|
|
||||||
|
|
||||||
|
|
||||||
# Parser generation.
|
|
||||||
|
|
||||||
parser-tab.cc parser-tab.hh: parser.y
|
|
||||||
$(bison) -v -o parser-tab.cc $(srcdir)/parser.y -d
|
|
||||||
|
|
||||||
lexer-tab.cc lexer-tab.hh: lexer.l
|
|
||||||
$(flex) --outfile lexer-tab.cc --header-file=lexer-tab.hh $(srcdir)/lexer.l
|
|
||||||
|
|
||||||
|
|
||||||
# SDF stuff (not built by default).
|
|
||||||
nix.tbl: nix.sdf
|
|
||||||
sdf2table -m Nix -s -i nix.sdf -o nix.tbl
|
|
||||||
|
|
||||||
test.ast: test.nix nix.tbl
|
|
||||||
sglri -p nix.tbl -i test.nix -o test.ast
|
|
|
@ -129,7 +129,15 @@ string showType(const Value & v)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Symbol getName(const AttrName & name, EvalState & state, Env & env) {
|
/* Called when the Boehm GC runs out of memory. */
|
||||||
|
static void * oomHandler(size_t requested)
|
||||||
|
{
|
||||||
|
/* Convert this to a proper C++ exception. */
|
||||||
|
throw std::bad_alloc();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static Symbol getName(const AttrName & name, EvalState & state, Env & env) {
|
||||||
if (name.symbol.set()) {
|
if (name.symbol.set()) {
|
||||||
return name.symbol;
|
return name.symbol;
|
||||||
} else {
|
} else {
|
||||||
|
@ -168,8 +176,16 @@ EvalState::EvalState()
|
||||||
countCalls = getEnv("NIX_COUNT_CALLS", "0") != "0";
|
countCalls = getEnv("NIX_COUNT_CALLS", "0") != "0";
|
||||||
|
|
||||||
#if HAVE_BOEHMGC
|
#if HAVE_BOEHMGC
|
||||||
static bool gcInitialised = true;
|
static bool gcInitialised = false;
|
||||||
if (gcInitialised) {
|
if (!gcInitialised) {
|
||||||
|
|
||||||
|
/* Initialise the Boehm garbage collector. This isn't
|
||||||
|
necessary on most platforms, but for portability we do it
|
||||||
|
anyway. */
|
||||||
|
GC_INIT();
|
||||||
|
|
||||||
|
GC_oom_fn = oomHandler;
|
||||||
|
|
||||||
/* Set the initial heap size to something fairly big (25% of
|
/* Set the initial heap size to something fairly big (25% of
|
||||||
physical RAM, up to a maximum of 384 MiB) so that in most
|
physical RAM, up to a maximum of 384 MiB) so that in most
|
||||||
cases we don't need to garbage collect at all. (Collection
|
cases we don't need to garbage collect at all. (Collection
|
||||||
|
@ -193,6 +209,7 @@ EvalState::EvalState()
|
||||||
debug(format("setting initial heap size to %1% bytes") % size);
|
debug(format("setting initial heap size to %1% bytes") % size);
|
||||||
GC_expand_hp(size);
|
GC_expand_hp(size);
|
||||||
}
|
}
|
||||||
|
|
||||||
gcInitialised = true;
|
gcInitialised = true;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -82,8 +82,6 @@ void copyContext(const Value & v, PathSet & context);
|
||||||
paths. */
|
paths. */
|
||||||
typedef std::map<Path, Path> SrcToStore;
|
typedef std::map<Path, Path> SrcToStore;
|
||||||
|
|
||||||
struct EvalState;
|
|
||||||
|
|
||||||
|
|
||||||
std::ostream & operator << (std::ostream & str, const Value & v);
|
std::ostream & operator << (std::ostream & str, const Value & v);
|
||||||
|
|
||||||
|
@ -216,9 +214,9 @@ private:
|
||||||
|
|
||||||
inline Value * lookupVar(Env * env, const ExprVar & var, bool noEval);
|
inline Value * lookupVar(Env * env, const ExprVar & var, bool noEval);
|
||||||
|
|
||||||
friend class ExprVar;
|
friend struct ExprVar;
|
||||||
friend class ExprAttrs;
|
friend struct ExprAttrs;
|
||||||
friend class ExprLet;
|
friend struct ExprLet;
|
||||||
|
|
||||||
Expr * parse(const char * text, const Path & path,
|
Expr * parse(const char * text, const Path & path,
|
||||||
const Path & basePath, StaticEnv & staticEnv);
|
const Path & basePath, StaticEnv & staticEnv);
|
||||||
|
@ -278,9 +276,9 @@ private:
|
||||||
typedef std::map<Pos, unsigned int> AttrSelects;
|
typedef std::map<Pos, unsigned int> AttrSelects;
|
||||||
AttrSelects attrSelects;
|
AttrSelects attrSelects;
|
||||||
|
|
||||||
friend class ExprOpUpdate;
|
friend struct ExprOpUpdate;
|
||||||
friend class ExprOpConcatLists;
|
friend struct ExprOpConcatLists;
|
||||||
friend class ExprSelect;
|
friend struct ExprSelect;
|
||||||
friend void prim_getAttr(EvalState & state, Value * * args, Value & v);
|
friend void prim_getAttr(EvalState & state, Value * * args, Value & v);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
24
src/libexpr/local.mk
Normal file
24
src/libexpr/local.mk
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
libraries += libexpr
|
||||||
|
|
||||||
|
libexpr_NAME = libnixexpr
|
||||||
|
|
||||||
|
libexpr_DIR := $(d)
|
||||||
|
|
||||||
|
libexpr_SOURCES := $(wildcard $(d)/*.cc) $(d)/lexer-tab.cc $(d)/parser-tab.cc
|
||||||
|
|
||||||
|
libexpr_LIBS = libutil libstore libformat
|
||||||
|
|
||||||
|
# The dependency on libgc must be propagated (i.e. meaning that
|
||||||
|
# programs/libraries that use libexpr must explicitly pass -lgc),
|
||||||
|
# because inline functions in libexpr's header files call libgc.
|
||||||
|
libexpr_LDFLAGS_PROPAGATED = $(BDW_GC_LIBS)
|
||||||
|
|
||||||
|
$(d)/parser-tab.cc $(d)/parser-tab.hh: $(d)/parser.y
|
||||||
|
$(trace-gen) bison -v -o $(libexpr_DIR)/parser-tab.cc $< -d
|
||||||
|
|
||||||
|
$(d)/lexer-tab.cc $(d)/lexer-tab.hh: $(d)/lexer.l
|
||||||
|
$(trace-gen) flex --outfile $(libexpr_DIR)/lexer-tab.cc --header-file=$(libexpr_DIR)/lexer-tab.hh $<
|
||||||
|
|
||||||
|
clean-files += $(d)/parser-tab.cc $(d)/parser-tab.hh $(d)/lexer-tab.cc $(d)/lexer-tab.hh
|
||||||
|
|
||||||
|
dist-files += $(d)/parser-tab.cc $(d)/parser-tab.hh $(d)/lexer-tab.cc $(d)/lexer-tab.hh
|
|
@ -48,7 +48,7 @@ std::ostream & operator << (std::ostream & str, const Pos & pos);
|
||||||
|
|
||||||
struct Env;
|
struct Env;
|
||||||
struct Value;
|
struct Value;
|
||||||
struct EvalState;
|
class EvalState;
|
||||||
struct StaticEnv;
|
struct StaticEnv;
|
||||||
struct Expr;
|
struct Expr;
|
||||||
|
|
||||||
|
@ -71,6 +71,7 @@ string showAttrPath(const AttrPath & attrPath);
|
||||||
|
|
||||||
struct Expr
|
struct Expr
|
||||||
{
|
{
|
||||||
|
virtual ~Expr() { };
|
||||||
virtual void show(std::ostream & str);
|
virtual void show(std::ostream & str);
|
||||||
virtual void bindVars(const StaticEnv & env);
|
virtual void bindVars(const StaticEnv & env);
|
||||||
virtual void eval(EvalState & state, Env & env, Value & v);
|
virtual void eval(EvalState & state, Env & env, Value & v);
|
||||||
|
|
|
@ -252,7 +252,7 @@ void yyerror(YYLTYPE * loc, yyscan_t scanner, ParseData * data, const char * err
|
||||||
nix::Formals * formals;
|
nix::Formals * formals;
|
||||||
nix::Formal * formal;
|
nix::Formal * formal;
|
||||||
nix::NixInt n;
|
nix::NixInt n;
|
||||||
char * id; // !!! -> Symbol
|
const char * id; // !!! -> Symbol
|
||||||
char * path;
|
char * path;
|
||||||
char * uri;
|
char * uri;
|
||||||
std::vector<nix::AttrName> * attrNames;
|
std::vector<nix::AttrName> * attrNames;
|
||||||
|
@ -414,7 +414,7 @@ expr_simple
|
||||||
string_parts
|
string_parts
|
||||||
: STR
|
: STR
|
||||||
| string_parts_interpolated { $$ = new ExprConcatStrings(true, $1); }
|
| string_parts_interpolated { $$ = new ExprConcatStrings(true, $1); }
|
||||||
| { $$ = new ExprString(data->symbols.create("")) }
|
| { $$ = new ExprString(data->symbols.create("")); }
|
||||||
;
|
;
|
||||||
|
|
||||||
string_parts_interpolated
|
string_parts_interpolated
|
||||||
|
|
|
@ -1322,6 +1322,7 @@ void EvalState::createBaseEnv()
|
||||||
/* Add a wrapper around the derivation primop that computes the
|
/* Add a wrapper around the derivation primop that computes the
|
||||||
`drvPath' and `outPath' attributes lazily. */
|
`drvPath' and `outPath' attributes lazily. */
|
||||||
string path = findFile("nix/derivation.nix");
|
string path = findFile("nix/derivation.nix");
|
||||||
|
assert(!path.empty());
|
||||||
sDerivationNix = symbols.create(path);
|
sDerivationNix = symbols.create(path);
|
||||||
evalFile(path, v);
|
evalFile(path, v);
|
||||||
addConstant("derivation", v);
|
addConstant("derivation", v);
|
||||||
|
|
|
@ -22,13 +22,13 @@ typedef enum {
|
||||||
} ValueType;
|
} ValueType;
|
||||||
|
|
||||||
|
|
||||||
struct Bindings;
|
class Bindings;
|
||||||
struct Env;
|
struct Env;
|
||||||
struct Expr;
|
struct Expr;
|
||||||
struct ExprLambda;
|
struct ExprLambda;
|
||||||
struct PrimOp;
|
struct PrimOp;
|
||||||
struct PrimOp;
|
struct PrimOp;
|
||||||
struct Symbol;
|
class Symbol;
|
||||||
|
|
||||||
|
|
||||||
typedef long NixInt;
|
typedef long NixInt;
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
pkglib_LTLIBRARIES = libmain.la
|
|
||||||
|
|
||||||
libmain_la_SOURCES = shared.cc stack.cc
|
|
||||||
|
|
||||||
libmain_la_LIBADD = ../libstore/libstore.la @BDW_GC_LIBS@
|
|
||||||
|
|
||||||
pkginclude_HEADERS = shared.hh
|
|
||||||
|
|
||||||
AM_CXXFLAGS = \
|
|
||||||
-I$(srcdir)/.. -I$(srcdir)/../libutil \
|
|
||||||
-I$(srcdir)/../libstore
|
|
11
src/libmain/local.mk
Normal file
11
src/libmain/local.mk
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
libraries += libmain
|
||||||
|
|
||||||
|
libmain_NAME = libnixmain
|
||||||
|
|
||||||
|
libmain_DIR := $(d)
|
||||||
|
|
||||||
|
libmain_SOURCES := $(wildcard $(d)/*.cc)
|
||||||
|
|
||||||
|
libmain_LIBS = libstore libutil libformat
|
||||||
|
|
||||||
|
libmain_ALLOW_UNDEFINED = 1
|
|
@ -15,10 +15,6 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
|
||||||
#if HAVE_BOEHMGC
|
|
||||||
#include <gc/gc.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
namespace nix {
|
namespace nix {
|
||||||
|
|
||||||
|
@ -236,14 +232,6 @@ static void initAndRun(int argc, char * * argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Called when the Boehm GC runs out of memory. */
|
|
||||||
static void * oomHandler(size_t requested)
|
|
||||||
{
|
|
||||||
/* Convert this to a proper C++ exception. */
|
|
||||||
throw std::bad_alloc();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void showManPage(const string & name)
|
void showManPage(const string & name)
|
||||||
{
|
{
|
||||||
string cmd = "man " + name;
|
string cmd = "man " + name;
|
||||||
|
@ -273,14 +261,6 @@ int main(int argc, char * * argv)
|
||||||
|
|
||||||
std::ios::sync_with_stdio(false);
|
std::ios::sync_with_stdio(false);
|
||||||
|
|
||||||
#if HAVE_BOEHMGC
|
|
||||||
/* Initialise the Boehm garbage collector. This isn't necessary
|
|
||||||
on most platforms, but for portability we do it anyway. */
|
|
||||||
GC_INIT();
|
|
||||||
|
|
||||||
GC_oom_fn = oomHandler;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
try {
|
try {
|
||||||
initAndRun(argc, argv);
|
initAndRun(argc, argv);
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
pkglib_LTLIBRARIES = libstore.la
|
|
||||||
|
|
||||||
libstore_la_SOURCES = \
|
|
||||||
store-api.cc local-store.cc remote-store.cc derivations.cc build.cc misc.cc \
|
|
||||||
globals.cc references.cc pathlocks.cc gc.cc \
|
|
||||||
optimise-store.cc
|
|
||||||
|
|
||||||
pkginclude_HEADERS = \
|
|
||||||
store-api.hh local-store.hh remote-store.hh derivations.hh misc.hh \
|
|
||||||
globals.hh references.hh pathlocks.hh \
|
|
||||||
worker-protocol.hh
|
|
||||||
|
|
||||||
libstore_la_LIBADD = ../libutil/libutil.la ../boost/format/libformat.la @SQLITE3_LIBS@ -lbz2
|
|
||||||
|
|
||||||
EXTRA_DIST = schema.sql
|
|
||||||
|
|
||||||
AM_CXXFLAGS = -Wall \
|
|
||||||
-I$(srcdir)/.. -I$(srcdir)/../libutil \
|
|
||||||
-DNIX_STORE_DIR=\"$(storedir)\" \
|
|
||||||
-DNIX_DATA_DIR=\"$(datadir)\" \
|
|
||||||
-DNIX_STATE_DIR=\"$(localstatedir)/nix\" \
|
|
||||||
-DNIX_LOG_DIR=\"$(localstatedir)/log/nix\" \
|
|
||||||
-DNIX_CONF_DIR=\"$(sysconfdir)/nix\" \
|
|
||||||
-DNIX_LIBEXEC_DIR=\"$(libexecdir)\" \
|
|
||||||
-DNIX_BIN_DIR=\"$(bindir)\" \
|
|
||||||
-DNIX_VERSION=\"$(VERSION)\" \
|
|
||||||
-I$(srcdir)/.. -I$(srcdir)/../libutil \
|
|
||||||
-I$(srcdir)/../libstore
|
|
||||||
|
|
||||||
local-store.lo: schema.sql.hh
|
|
||||||
|
|
||||||
%.sql.hh: %.sql
|
|
||||||
sed -e 's/"/\\"/g' -e 's/\(.*\)/"\1\\n"/' < $< > $@ || (rm $@ && exit 1)
|
|
|
@ -75,12 +75,9 @@ using std::map;
|
||||||
static string pathNullDevice = "/dev/null";
|
static string pathNullDevice = "/dev/null";
|
||||||
|
|
||||||
|
|
||||||
static const uid_t rootUserId = 0;
|
|
||||||
|
|
||||||
|
|
||||||
/* Forward definition. */
|
/* Forward definition. */
|
||||||
class Worker;
|
class Worker;
|
||||||
class HookInstance;
|
struct HookInstance;
|
||||||
|
|
||||||
|
|
||||||
/* A pointer to a goal. */
|
/* A pointer to a goal. */
|
||||||
|
|
|
@ -22,8 +22,6 @@ static string gcLockName = "gc.lock";
|
||||||
static string tempRootsDir = "temproots";
|
static string tempRootsDir = "temproots";
|
||||||
static string gcRootsDir = "gcroots";
|
static string gcRootsDir = "gcroots";
|
||||||
|
|
||||||
static const int defaultGcLevel = 1000;
|
|
||||||
|
|
||||||
|
|
||||||
/* Acquire the global GC lock. This is used to prevent new Nix
|
/* Acquire the global GC lock. This is used to prevent new Nix
|
||||||
processes from starting after the temporary root files have been
|
processes from starting after the temporary root files have been
|
||||||
|
|
|
@ -212,7 +212,7 @@ Settings::SettingsMap Settings::getOverrides()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const string nixVersion = NIX_VERSION;
|
const string nixVersion = PACKAGE_VERSION;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
28
src/libstore/local.mk
Normal file
28
src/libstore/local.mk
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
libraries += libstore
|
||||||
|
|
||||||
|
libstore_NAME = libnixstore
|
||||||
|
|
||||||
|
libstore_DIR := $(d)
|
||||||
|
|
||||||
|
libstore_SOURCES := $(wildcard $(d)/*.cc)
|
||||||
|
|
||||||
|
libstore_LIBS = libutil libformat
|
||||||
|
|
||||||
|
libstore_LDFLAGS = -lsqlite3 -lbz2
|
||||||
|
|
||||||
|
libstore_CXXFLAGS = \
|
||||||
|
-DNIX_STORE_DIR=\"$(storedir)\" \
|
||||||
|
-DNIX_DATA_DIR=\"$(datadir)\" \
|
||||||
|
-DNIX_STATE_DIR=\"$(localstatedir)/nix\" \
|
||||||
|
-DNIX_LOG_DIR=\"$(localstatedir)/log/nix\" \
|
||||||
|
-DNIX_CONF_DIR=\"$(sysconfdir)/nix\" \
|
||||||
|
-DNIX_LIBEXEC_DIR=\"$(libexecdir)\" \
|
||||||
|
-DNIX_BIN_DIR=\"$(bindir)\" \
|
||||||
|
-DPACKAGE_VERSION=\"$(PACKAGE_VERSION)\"
|
||||||
|
|
||||||
|
$(d)/local-store.cc: $(d)/schema.sql.hh
|
||||||
|
|
||||||
|
%.sql.hh: %.sql
|
||||||
|
$(trace-gen) sed -e 's/"/\\"/g' -e 's/\(.*\)/"\1\\n"/' < $< > $@ || (rm $@ && exit 1)
|
||||||
|
|
||||||
|
clean-files += $(d)/schema.sql.hh
|
|
@ -1,18 +0,0 @@
|
||||||
pkglib_LTLIBRARIES = libutil.la
|
|
||||||
|
|
||||||
libutil_la_SOURCES = util.cc hash.cc serialise.cc \
|
|
||||||
archive.cc xml-writer.cc affinity.cc
|
|
||||||
|
|
||||||
libutil_la_LIBADD = ../boost/format/libformat.la
|
|
||||||
|
|
||||||
pkginclude_HEADERS = util.hh hash.hh serialise.hh \
|
|
||||||
archive.hh xml-writer.hh types.hh affinity.hh
|
|
||||||
|
|
||||||
if !HAVE_OPENSSL
|
|
||||||
libutil_la_SOURCES += \
|
|
||||||
md5.c md5.h sha1.c sha1.h sha256.c sha256.h md32_common.h
|
|
||||||
else
|
|
||||||
libutil_la_LIBADD += @OPENSSL_LIBS@
|
|
||||||
endif
|
|
||||||
|
|
||||||
AM_CXXFLAGS = -Wall -I$(srcdir)/..
|
|
15
src/libutil/local.mk
Normal file
15
src/libutil/local.mk
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
libraries += libutil
|
||||||
|
|
||||||
|
libutil_NAME = libnixutil
|
||||||
|
|
||||||
|
libutil_DIR := $(d)
|
||||||
|
|
||||||
|
libutil_SOURCES := $(wildcard $(d)/*.cc)
|
||||||
|
|
||||||
|
ifeq ($(HAVE_OPENSSL), 1)
|
||||||
|
libutil_LDFLAGS = $(OPENSSL_LIBS)
|
||||||
|
else
|
||||||
|
libutil_SOURCES += $(d)/md5.c $(d)/sha1.c $(d)/sha256.c
|
||||||
|
endif
|
||||||
|
|
||||||
|
libutil_LIBS = libformat
|
|
@ -1,12 +0,0 @@
|
||||||
bin_PROGRAMS = nix-daemon
|
|
||||||
|
|
||||||
nix_daemon_SOURCES = nix-daemon.cc
|
|
||||||
nix_daemon_LDADD = ../libmain/libmain.la ../libstore/libstore.la ../libutil/libutil.la \
|
|
||||||
../boost/format/libformat.la
|
|
||||||
|
|
||||||
AM_CXXFLAGS = \
|
|
||||||
-I$(srcdir)/.. -I$(srcdir)/../libutil \
|
|
||||||
-I$(srcdir)/../libstore -I$(srcdir)/../libmain
|
|
||||||
|
|
||||||
install-exec-local:
|
|
||||||
ln -sf nix-daemon $(DESTDIR)$(bindir)/nix-worker
|
|
9
src/nix-daemon/local.mk
Normal file
9
src/nix-daemon/local.mk
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
programs += nix-daemon
|
||||||
|
|
||||||
|
nix-daemon_DIR := $(d)
|
||||||
|
|
||||||
|
nix-daemon_SOURCES := $(d)/nix-daemon.cc
|
||||||
|
|
||||||
|
nix-daemon_LIBS = libmain libstore libutil libformat
|
||||||
|
|
||||||
|
$(eval $(call install-symlink, nix-daemon, $(bindir)/nix-worker))
|
|
@ -1,12 +0,0 @@
|
||||||
bin_PROGRAMS = nix-env
|
|
||||||
|
|
||||||
nix_env_SOURCES = nix-env.cc profiles.cc profiles.hh user-env.cc user-env.hh
|
|
||||||
|
|
||||||
nix_env_LDADD = ../libmain/libmain.la ../libexpr/libexpr.la \
|
|
||||||
../libstore/libstore.la ../libutil/libutil.la \
|
|
||||||
../boost/format/libformat.la
|
|
||||||
|
|
||||||
AM_CXXFLAGS = \
|
|
||||||
-I$(srcdir)/.. \
|
|
||||||
-I$(srcdir)/../libutil -I$(srcdir)/../libstore \
|
|
||||||
-I$(srcdir)/../libexpr -I$(srcdir)/../libmain -I../libexpr
|
|
7
src/nix-env/local.mk
Normal file
7
src/nix-env/local.mk
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
programs += nix-env
|
||||||
|
|
||||||
|
nix-env_DIR := $(d)
|
||||||
|
|
||||||
|
nix-env_SOURCES := $(wildcard $(d)/*.cc)
|
||||||
|
|
||||||
|
nix-env_LIBS = libexpr libmain libstore libutil libformat
|
|
@ -1,5 +1,5 @@
|
||||||
|
#include "user-env.hh"
|
||||||
#include "util.hh"
|
#include "util.hh"
|
||||||
#include "get-drvs.hh"
|
|
||||||
#include "derivations.hh"
|
#include "derivations.hh"
|
||||||
#include "store-api.hh"
|
#include "store-api.hh"
|
||||||
#include "globals.hh"
|
#include "globals.hh"
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
bin_PROGRAMS = nix-hash
|
|
||||||
|
|
||||||
nix_hash_SOURCES = nix-hash.cc
|
|
||||||
nix_hash_LDADD = ../libmain/libmain.la ../libstore/libstore.la ../libutil/libutil.la \
|
|
||||||
../boost/format/libformat.la
|
|
||||||
|
|
||||||
AM_CXXFLAGS = \
|
|
||||||
-I$(srcdir)/.. -I$(srcdir)/../libutil -I$(srcdir)/../libstore -I$(srcdir)/../libmain
|
|
7
src/nix-hash/local.mk
Normal file
7
src/nix-hash/local.mk
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
programs += nix-hash
|
||||||
|
|
||||||
|
nix-hash_DIR := $(d)
|
||||||
|
|
||||||
|
nix-hash_SOURCES := $(d)/nix-hash.cc
|
||||||
|
|
||||||
|
nix-hash_LIBS = libmain libstore libutil libformat
|
|
@ -1,10 +0,0 @@
|
||||||
bin_PROGRAMS = nix-instantiate
|
|
||||||
|
|
||||||
nix_instantiate_SOURCES = nix-instantiate.cc
|
|
||||||
nix_instantiate_LDADD = ../libmain/libmain.la ../libexpr/libexpr.la \
|
|
||||||
../libstore/libstore.la ../libutil/libutil.la \
|
|
||||||
../boost/format/libformat.la
|
|
||||||
|
|
||||||
AM_CXXFLAGS = \
|
|
||||||
-I$(srcdir)/.. -I$(srcdir)/../libutil -I$(srcdir)/../libstore \
|
|
||||||
-I$(srcdir)/../libexpr -I$(srcdir)/../libmain -I../libexpr
|
|
7
src/nix-instantiate/local.mk
Normal file
7
src/nix-instantiate/local.mk
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
programs += nix-instantiate
|
||||||
|
|
||||||
|
nix-instantiate_DIR := $(d)
|
||||||
|
|
||||||
|
nix-instantiate_SOURCES := $(d)/nix-instantiate.cc
|
||||||
|
|
||||||
|
nix-instantiate_LIBS = libexpr libmain libstore libutil libformat
|
|
@ -1,17 +0,0 @@
|
||||||
bin_PROGRAMS = nix-log2xml
|
|
||||||
|
|
||||||
nix_log2xml_SOURCES = log2xml.cc
|
|
||||||
|
|
||||||
%.xml: %.log nix-log2xml
|
|
||||||
./nix-log2xml < $< > $@
|
|
||||||
|
|
||||||
%.html: %.xml mark-errors.xsl log2html.xsl
|
|
||||||
$(xsltproc) mark-errors.xsl $< | $(xsltproc) log2html.xsl - > $@
|
|
||||||
|
|
||||||
LOG2HTML = $(srcdir)/mark-errors.xsl $(srcdir)/log2html.xsl $(srcdir)/treebits.js
|
|
||||||
|
|
||||||
EXTRA_DIST = $(LOG2HTML)
|
|
||||||
|
|
||||||
install-data-local:
|
|
||||||
$(INSTALL) -d $(DESTDIR)$(datadir)/nix/log2html
|
|
||||||
$(INSTALL_DATA) $(LOG2HTML) $(DESTDIR)$(datadir)/nix/log2html
|
|
8
src/nix-log2xml/local.mk
Normal file
8
src/nix-log2xml/local.mk
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
programs += nix-log2xml
|
||||||
|
|
||||||
|
nix-log2xml_DIR := $(d)
|
||||||
|
|
||||||
|
nix-log2xml_SOURCES := $(d)/log2xml.cc
|
||||||
|
|
||||||
|
$(foreach file, mark-errors.xsl log2html.xsl treebits.js, \
|
||||||
|
$(eval $(call install-data-in, $(d)/$(file), $(datadir)/nix/log2html)))
|
|
@ -1,12 +0,0 @@
|
||||||
bin_PROGRAMS = nix-store
|
|
||||||
|
|
||||||
nix_store_SOURCES = \
|
|
||||||
nix-store.cc dotgraph.cc dotgraph.hh \
|
|
||||||
xmlgraph.cc xmlgraph.hh
|
|
||||||
|
|
||||||
nix_store_LDADD = ../libmain/libmain.la ../libstore/libstore.la ../libutil/libutil.la \
|
|
||||||
../boost/format/libformat.la -lbz2
|
|
||||||
|
|
||||||
AM_CXXFLAGS = \
|
|
||||||
-I$(srcdir)/.. -I$(srcdir)/../libutil \
|
|
||||||
-I$(srcdir)/../libstore -I$(srcdir)/../libmain
|
|
9
src/nix-store/local.mk
Normal file
9
src/nix-store/local.mk
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
programs += nix-store
|
||||||
|
|
||||||
|
nix-store_DIR := $(d)
|
||||||
|
|
||||||
|
nix-store_SOURCES := $(wildcard $(d)/*.cc)
|
||||||
|
|
||||||
|
nix-store_LIBS = libmain libstore libutil libformat
|
||||||
|
|
||||||
|
nix-store_LDFLAGS = -lbz2
|
|
@ -1,43 +0,0 @@
|
||||||
%: %.in Makefile
|
|
||||||
sed \
|
|
||||||
-e "s^@abs_top_srcdir\@^$(abs_top_srcdir)^g" \
|
|
||||||
-e "s^@abs_top_builddir\@^$(abs_top_builddir)^g" \
|
|
||||||
-e "s^@extra1\@^$(extra1)^g" \
|
|
||||||
-e "s^@prefix\@^$(prefix)^g" \
|
|
||||||
-e "s^@bindir\@^$(bindir)^g" \
|
|
||||||
-e "s^@datadir\@^$(datadir)^g" \
|
|
||||||
-e "s^@sysconfdir\@^$(sysconfdir)^g" \
|
|
||||||
-e "s^@profiledir\@^$(profiledir)^g" \
|
|
||||||
-e "s^@localstatedir\@^$(localstatedir)^g" \
|
|
||||||
-e "s^@datadir\@^$(datadir)^g" \
|
|
||||||
-e "s^@libdir\@^$(libdir)^g" \
|
|
||||||
-e "s^@libexecdir\@^$(libexecdir)^g" \
|
|
||||||
-e "s^@storedir\@^$(storedir)^g" \
|
|
||||||
-e "s^@system\@^$(system)^g" \
|
|
||||||
-e "s^@shell\@^$(bash)^g" \
|
|
||||||
-e "s^@curl\@^$(curl)^g" \
|
|
||||||
-e "s^@bzip2\@^$(bzip2)^g" \
|
|
||||||
-e "s^@xz\@^$(xz)^g" \
|
|
||||||
-e "s^@perl\@^$(perl)^g" \
|
|
||||||
-e "s^@perlFlags\@^$(perlFlags)^g" \
|
|
||||||
-e "s^@coreutils\@^$(coreutils)^g" \
|
|
||||||
-e "s^@sed\@^$(sed)^g" \
|
|
||||||
-e "s^@tar\@^$(tar)^g" \
|
|
||||||
-e "s^@tarFlags\@^$(tarFlags)^g" \
|
|
||||||
-e "s^@gzip\@^$(gzip)^g" \
|
|
||||||
-e "s^@pv\@^$(pv)^g" \
|
|
||||||
-e "s^@tr\@^$(tr)^g" \
|
|
||||||
-e "s^@dot\@^$(dot)^g" \
|
|
||||||
-e "s^@xmllint\@^$(xmllint)^g" \
|
|
||||||
-e "s^@xmlflags\@^$(xmlflags)^g" \
|
|
||||||
-e "s^@xsltproc\@^$(xsltproc)^g" \
|
|
||||||
-e "s^@sqlite_bin\@^$(sqlite_bin)^g" \
|
|
||||||
-e "s^@version\@^$(VERSION)^g" \
|
|
||||||
-e "s^@perlbindings\@^$(perlbindings)^g" \
|
|
||||||
-e "s^@testPath\@^$(coreutils):$$(dirname $$(type -p expr))^g" \
|
|
||||||
-e "s^@openssl\@^$(openssl_prog)^g" \
|
|
||||||
< $< > $@ || rm $@
|
|
||||||
if test -x $<; then chmod +x $@; fi
|
|
||||||
|
|
||||||
$(CONFIG_HEADER):
|
|
||||||
true
|
|
|
@ -1,52 +0,0 @@
|
||||||
TESTS_ENVIRONMENT = NIX_REMOTE= $(bash) -e
|
|
||||||
|
|
||||||
extra1 = $(shell pwd)/test-tmp/shared
|
|
||||||
|
|
||||||
TESTS = init.sh hash.sh lang.sh add.sh simple.sh dependencies.sh \
|
|
||||||
parallel.sh build-hook.sh substitutes.sh substitutes2.sh \
|
|
||||||
fallback.sh nix-push.sh gc.sh gc-concurrent.sh verify.sh nix-pull.sh \
|
|
||||||
referrers.sh user-envs.sh logging.sh nix-build.sh misc.sh fixed.sh \
|
|
||||||
gc-runtime.sh install-package.sh check-refs.sh filter-source.sh \
|
|
||||||
remote-store.sh export.sh export-graph.sh negative-caching.sh \
|
|
||||||
binary-patching.sh timeout.sh secure-drv-outputs.sh nix-channel.sh \
|
|
||||||
multiple-outputs.sh import-derivation.sh fetchurl.sh optimise-store.sh \
|
|
||||||
binary-cache.sh nix-profile.sh
|
|
||||||
|
|
||||||
XFAIL_TESTS =
|
|
||||||
|
|
||||||
profiledir = $(sysconfdir)/profile.d
|
|
||||||
|
|
||||||
include ../substitute.mk
|
|
||||||
|
|
||||||
$(TESTS): common.sh config.nix
|
|
||||||
|
|
||||||
EXTRA_DIST = $(TESTS) \
|
|
||||||
config.nix.in \
|
|
||||||
simple.nix simple.builder.sh \
|
|
||||||
hash-check.nix \
|
|
||||||
dependencies.nix dependencies.builder*.sh \
|
|
||||||
parallel.nix parallel.builder.sh \
|
|
||||||
build-hook.nix build-hook.hook.sh \
|
|
||||||
substituter.sh substituter2.sh \
|
|
||||||
gc-concurrent.nix gc-concurrent.builder.sh gc-concurrent2.builder.sh \
|
|
||||||
user-envs.nix user-envs.builder.sh \
|
|
||||||
fixed.nix fixed.builder1.sh fixed.builder2.sh \
|
|
||||||
gc-runtime.nix \
|
|
||||||
check-refs.nix \
|
|
||||||
filter-source.nix \
|
|
||||||
export-graph.nix \
|
|
||||||
negative-caching.nix \
|
|
||||||
binary-patching.nix \
|
|
||||||
timeout.nix timeout.builder.sh \
|
|
||||||
secure-drv-outputs.nix \
|
|
||||||
multiple-outputs.nix \
|
|
||||||
import-derivation.nix \
|
|
||||||
fetchurl.nix \
|
|
||||||
$(wildcard lang/*.nix) $(wildcard lang/*.exp) $(wildcard lang/*.exp.xml) $(wildcard lang/*.flags) $(wildcard lang/dir*/*.nix) \
|
|
||||||
common.sh.in
|
|
||||||
|
|
||||||
# Hacky.
|
|
||||||
check-am:
|
|
||||||
@echo "Warning: Nix has no 'make check'. Please install Nix and run 'make installcheck' instead."
|
|
||||||
|
|
||||||
installcheck: check-TESTS
|
|
|
@ -1,7 +1,6 @@
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
datadir="@datadir@"
|
datadir="@datadir@"
|
||||||
profiledir="@profiledir@"
|
|
||||||
|
|
||||||
export TEST_ROOT=$(pwd)/test-tmp
|
export TEST_ROOT=$(pwd)/test-tmp
|
||||||
export NIX_STORE_DIR
|
export NIX_STORE_DIR
|
||||||
|
@ -16,7 +15,7 @@ export NIX_STATE_DIR=$TEST_ROOT/var/nix
|
||||||
export NIX_DB_DIR=$TEST_ROOT/db
|
export NIX_DB_DIR=$TEST_ROOT/db
|
||||||
export NIX_CONF_DIR=$TEST_ROOT/etc
|
export NIX_CONF_DIR=$TEST_ROOT/etc
|
||||||
export NIX_MANIFESTS_DIR=$TEST_ROOT/var/nix/manifests
|
export NIX_MANIFESTS_DIR=$TEST_ROOT/var/nix/manifests
|
||||||
export SHARED=$TEST_ROOT/shared
|
export _NIX_TEST_SHARED=$TEST_ROOT/shared
|
||||||
export NIX_REMOTE=$NIX_REMOTE_
|
export NIX_REMOTE=$NIX_REMOTE_
|
||||||
|
|
||||||
export PATH=@bindir@:$PATH
|
export PATH=@bindir@:$PATH
|
||||||
|
@ -24,11 +23,10 @@ export PATH=@bindir@:$PATH
|
||||||
export NIX_BUILD_HOOK=
|
export NIX_BUILD_HOOK=
|
||||||
export dot=@dot@
|
export dot=@dot@
|
||||||
export xmllint="@xmllint@"
|
export xmllint="@xmllint@"
|
||||||
export xmlflags="@xmlflags@"
|
|
||||||
export xsltproc="@xsltproc@"
|
export xsltproc="@xsltproc@"
|
||||||
export SHELL="@shell@"
|
export SHELL="@bash@"
|
||||||
|
|
||||||
export version=@version@
|
export version=@PACKAGE_VERSION@
|
||||||
export system=@system@
|
export system=@system@
|
||||||
|
|
||||||
readLink() {
|
readLink() {
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
|
with import <nix/config.nix>;
|
||||||
|
|
||||||
rec {
|
rec {
|
||||||
shell = "@shell@";
|
inherit shell;
|
||||||
|
|
||||||
path = "@testPath@";
|
path = coreutils;
|
||||||
|
|
||||||
system = "@system@";
|
system = builtins.currentSystem;
|
||||||
|
|
||||||
shared = "@extra1@";
|
shared = builtins.getEnv "_NIX_TEST_SHARED";
|
||||||
|
|
||||||
mkDerivation = args:
|
mkDerivation = args:
|
||||||
derivation ({
|
derivation ({
|
21
tests/local.mk
Normal file
21
tests/local.mk
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
check:
|
||||||
|
@echo "Warning: Nix has no 'make check'. Please install Nix and run 'make installcheck' instead."
|
||||||
|
|
||||||
|
nix_tests = \
|
||||||
|
init.sh hash.sh lang.sh add.sh simple.sh dependencies.sh \
|
||||||
|
parallel.sh build-hook.sh substitutes.sh substitutes2.sh \
|
||||||
|
fallback.sh nix-push.sh gc.sh gc-concurrent.sh verify.sh nix-pull.sh \
|
||||||
|
referrers.sh user-envs.sh logging.sh nix-build.sh misc.sh fixed.sh \
|
||||||
|
gc-runtime.sh install-package.sh check-refs.sh filter-source.sh \
|
||||||
|
remote-store.sh export.sh export-graph.sh negative-caching.sh \
|
||||||
|
binary-patching.sh timeout.sh secure-drv-outputs.sh nix-channel.sh \
|
||||||
|
multiple-outputs.sh import-derivation.sh fetchurl.sh optimise-store.sh \
|
||||||
|
binary-cache.sh nix-profile.sh
|
||||||
|
|
||||||
|
install-tests += $(foreach x, $(nix_tests), tests/$(x))
|
||||||
|
|
||||||
|
tests-environment = NIX_REMOTE= $(bash) -e
|
||||||
|
|
||||||
|
clean-files += $(d)/common.sh
|
||||||
|
|
||||||
|
installcheck: $(d)/common.sh
|
|
@ -11,7 +11,7 @@ nix-log2xml < $TEST_ROOT/log.esc > $TEST_ROOT/log.xml
|
||||||
|
|
||||||
# Is this well-formed XML?
|
# Is this well-formed XML?
|
||||||
if test "$xmllint" != "false"; then
|
if test "$xmllint" != "false"; then
|
||||||
$xmllint $xmlflags --noout $TEST_ROOT/log.xml || fail "malformed XML"
|
$xmllint --noout $TEST_ROOT/log.xml || fail "malformed XML"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Convert to HTML.
|
# Convert to HTML.
|
||||||
|
|
|
@ -3,8 +3,8 @@ source common.sh
|
||||||
home=$TEST_ROOT/home
|
home=$TEST_ROOT/home
|
||||||
rm -rf $home
|
rm -rf $home
|
||||||
mkdir -p $home
|
mkdir -p $home
|
||||||
HOME=$home $SHELL -e -c ". $profiledir/nix.sh"
|
HOME=$home $SHELL -e -c ". ../scripts/nix-profile.sh"
|
||||||
HOME=$home $SHELL -e -c ". $profiledir/nix.sh" # test idempotency
|
HOME=$home $SHELL -e -c ". ../scripts/nix-profile.sh" # test idempotency
|
||||||
|
|
||||||
[ -L $home/.nix-profile ]
|
[ -L $home/.nix-profile ]
|
||||||
[ -e $home/.nix-channels ]
|
[ -e $home/.nix-channels ]
|
||||||
|
|
|
@ -6,7 +6,7 @@ echo "testing nix-build -j..."
|
||||||
|
|
||||||
clearStore
|
clearStore
|
||||||
|
|
||||||
rm -f $SHARED.cur $SHARED.max
|
rm -f $_NIX_TEST_SHARED.cur $_NIX_TEST_SHARED.max
|
||||||
|
|
||||||
outPath=$(nix-build -j10000 parallel.nix --no-out-link)
|
outPath=$(nix-build -j10000 parallel.nix --no-out-link)
|
||||||
|
|
||||||
|
@ -15,8 +15,8 @@ echo "output path is $outPath"
|
||||||
text=$(cat "$outPath")
|
text=$(cat "$outPath")
|
||||||
if test "$text" != "abacade"; then exit 1; fi
|
if test "$text" != "abacade"; then exit 1; fi
|
||||||
|
|
||||||
if test "$(cat $SHARED.cur)" != 0; then fail "wrong current process count"; fi
|
if test "$(cat $_NIX_TEST_SHARED.cur)" != 0; then fail "wrong current process count"; fi
|
||||||
if test "$(cat $SHARED.max)" != 3; then fail "not enough parallelism"; fi
|
if test "$(cat $_NIX_TEST_SHARED.max)" != 3; then fail "not enough parallelism"; fi
|
||||||
|
|
||||||
|
|
||||||
# Second, test that parallel invocations of nix-build perform builds
|
# Second, test that parallel invocations of nix-build perform builds
|
||||||
|
@ -25,7 +25,7 @@ echo "testing multiple nix-build -j1..."
|
||||||
|
|
||||||
clearStore
|
clearStore
|
||||||
|
|
||||||
rm -f $SHARED.cur $SHARED.max
|
rm -f $_NIX_TEST_SHARED.cur $_NIX_TEST_SHARED.max
|
||||||
|
|
||||||
drvPath=$(nix-instantiate parallel.nix --argstr sleepTime 15)
|
drvPath=$(nix-instantiate parallel.nix --argstr sleepTime 15)
|
||||||
|
|
||||||
|
@ -52,5 +52,5 @@ wait $pid2 || fail "instance 2 failed: $?"
|
||||||
wait $pid3 || fail "instance 3 failed: $?"
|
wait $pid3 || fail "instance 3 failed: $?"
|
||||||
wait $pid4 || fail "instance 4 failed: $?"
|
wait $pid4 || fail "instance 4 failed: $?"
|
||||||
|
|
||||||
if test "$(cat $SHARED.cur)" != 0; then fail "wrong current process count"; fi
|
if test "$(cat $_NIX_TEST_SHARED.cur)" != 0; then fail "wrong current process count"; fi
|
||||||
if test "$(cat $SHARED.max)" != 3; then fail "not enough parallelism"; fi
|
if test "$(cat $_NIX_TEST_SHARED.max)" != 3; then fail "not enough parallelism"; fi
|
||||||
|
|
Loading…
Reference in a new issue