5bbd693cae
‘nix-store --export’. * Add a Perl module that provides the functionality of ‘nix-copy-closure --to’. This is used by build-remote.pl so it no longer needs to start a separate nix-copy-closure process. Also, it uses the Perl API to do the export, so it doesn't need to start a separate nix-store process either. As a result, nix-copy-closure and build-remote.pl should no longer fail on very large closures due to an "Argument list too long" error. (Note that having very many dependencies in a single derivation can still fail because the environment can become too large. Can't be helped though.)
33 lines
1.2 KiB
Makefile
33 lines
1.2 KiB
Makefile
perlversion := $(shell perl -e 'use Config; print $$Config{version};')
|
|
perlarchname := $(shell perl -e 'use Config; print $$Config{archname};')
|
|
perllibdir = $(libdir)/perl5/site_perl/$(perlversion)/$(perlarchname)
|
|
|
|
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
|
|
|
|
all: $(PERL_MODULES:.in=)
|
|
ln -sfn $(abs_builddir)/.libs/libNixStore.so lib/Store.so
|
|
|
|
install-exec-local: $(PERL_MODULES:.in=)
|
|
$(INSTALL) -d $(DESTDIR)$(perllibdir)/Nix
|
|
$(INSTALL_DATA) $(PERL_MODULES:.in=) $(DESTDIR)$(perllibdir)/Nix
|
|
$(INSTALL) -d $(DESTDIR)$(perllibdir)/auto/Nix/Store
|
|
ln -sfn $(pkglibdir)/libNixStore.so $(DESTDIR)$(perllibdir)/auto/Nix/Store/Store.so
|
|
|
|
# Awful hackery to get libtool to build Perl XS bindings.
|
|
pkglib_LTLIBRARIES = libNixStore.la
|
|
|
|
libNixStore_la_SOURCES = lib/Nix/Store.cc
|
|
|
|
libNixStore_la_LIBADD = $(top_srcdir)/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
|
|
|
|
lib/Nix/Store.cc: lib/Nix/Store.xs
|
|
xsubpp $^ -output $@
|
|
|
|
EXTRA_DIST = $(PERL_MODULES) lib/Nix/Store.xs
|
|
|
|
include ../substitute.mk
|