# GNU Guix --- Functional package management for GNU # Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> # Copyright © 2016 Mathieu Lirzin <mthl@gnu.org> # # This file is part of GNU Guix. # # GNU Guix is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or (at # your option) any later version. # # GNU Guix is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. # # Integration of the `guix-daemon' code taken from upstream Nix. # BUILT_SOURCES += nix/libstore/schema.sql.hh CLEANFILES += $(BUILT_SOURCES) etc/guix-daemon.service etc/guix-daemon.conf noinst_LIBRARIES = libformat.a libutil.a libstore.a # Use '-std=c++11' for 'std::shared_ptr', 'auto', lambdas, and more. AM_CXXFLAGS = -Wall -std=c++11 libformat_a_SOURCES = \ nix/boost/format/free_funcs.cc \ nix/boost/format/parsing.cc \ nix/boost/format/format_implementation.cc libformat_headers = \ nix/boost/throw_exception.hpp \ nix/boost/format.hpp \ nix/boost/assert.hpp \ nix/boost/format/macros_default.hpp \ nix/boost/format/format_fwd.hpp \ nix/boost/format/format_class.hpp \ nix/boost/format/exceptions.hpp \ nix/boost/format/group.hpp \ nix/boost/format/feed_args.hpp \ nix/boost/format/internals_fwd.hpp \ nix/boost/format/internals.hpp libformat_a_CPPFLAGS = \ -I$(top_srcdir)/nix libutil_a_SOURCES = \ nix/libutil/archive.cc \ nix/libutil/affinity.cc \ nix/libutil/serialise.cc \ nix/libutil/util.cc \ nix/libutil/xml-writer.cc \ nix/libutil/hash.cc \ nix/libutil/gcrypt-hash.cc libutil_headers = \ nix/libutil/affinity.hh \ nix/libutil/hash.hh \ nix/libutil/serialise.hh \ nix/libutil/xml-writer.hh \ nix/libutil/util.hh \ nix/libutil/archive.hh \ nix/libutil/types.hh \ nix/libutil/gcrypt-hash.hh \ nix/libutil/md5.h \ nix/libutil/sha1.h \ nix/libutil/sha256.h \ nix/libutil/sha512.h libutil_a_CPPFLAGS = \ -I$(top_builddir)/nix \ -I$(top_srcdir)/nix/libutil \ $(libformat_a_CPPFLAGS) libstore_a_SOURCES = \ nix/libstore/gc.cc \ nix/libstore/globals.cc \ nix/libstore/misc.cc \ nix/libstore/references.cc \ nix/libstore/store-api.cc \ nix/libstore/optimise-store.cc \ nix/libstore/local-store.cc \ nix/libstore/build.cc \ nix/libstore/pathlocks.cc \ nix/libstore/derivations.cc libstore_headers = \ nix/libstore/references.hh \ nix/libstore/pathlocks.hh \ nix/libstore/globals.hh \ nix/libstore/worker-protocol.hh \ nix/libstore/derivations.hh \ nix/libstore/misc.hh \ nix/libstore/local-store.hh \ nix/libstore/store-api.hh libstore_a_CPPFLAGS = \ $(libutil_a_CPPFLAGS) \ -I$(top_srcdir)/nix/libstore \ -I$(top_builddir)/nix/libstore \ -DNIX_STORE_DIR=\"$(storedir)\" \ -DNIX_DATA_DIR=\"$(datadir)\" \ -DNIX_STATE_DIR=\"$(localstatedir)/guix\" \ -DNIX_LOG_DIR=\"$(localstatedir)/log/guix\" \ -DNIX_CONF_DIR=\"$(sysconfdir)/guix\" \ -DNIX_LIBEXEC_DIR=\"$(libexecdir)\" \ -DNIX_BIN_DIR=\"$(bindir)\" \ -DOPENSSL_PATH="\"guix-authenticate\"" \ -DDEFAULT_CHROOT_DIRS="\"\"" libstore_a_CXXFLAGS = $(AM_CXXFLAGS) \ $(SQLITE3_CFLAGS) $(LIBGCRYPT_CFLAGS) bin_PROGRAMS = guix-daemon sbin_PROGRAMS = guix-register guix_daemon_SOURCES = \ nix/nix-daemon/nix-daemon.cc \ nix/nix-daemon/guix-daemon.cc guix_daemon_CPPFLAGS = \ -DLOCALEDIR=\"$(localedir)\" \ $(libutil_a_CPPFLAGS) \ -I$(top_srcdir)/nix/libstore guix_daemon_LDADD = \ libstore.a libutil.a libformat.a -lbz2 \ $(SQLITE3_LIBS) $(LIBGCRYPT_LIBS) guix_daemon_headers = \ nix/nix-daemon/shared.hh guix_register_SOURCES = \ nix/guix-register/guix-register.cc guix_register_CPPFLAGS = \ $(libutil_a_CPPFLAGS) \ $(libstore_a_CPPFLAGS) \ -I$(top_srcdir)/nix/libstore # XXX: Should we start using shared libs? guix_register_LDADD = \ libstore.a libutil.a libformat.a -lbz2 \ $(SQLITE3_LIBS) $(LIBGCRYPT_LIBS) noinst_HEADERS = \ $(libformat_headers) $(libutil_headers) $(libstore_headers) \ $(guix_daemon_headers) nix/libstore/schema.sql.hh: nix/libstore/schema.sql $(AM_V_GEN)$(GUILE) --no-auto-compile -c \ "(use-modules (rnrs io ports)) \ (call-with-output-file \"$@\" \ (lambda (out) \ (call-with-input-file \"$^\" \ (lambda (in) \ (write (get-string-all in) out)))))" nodist_pkglibexec_SCRIPTS = \ nix/scripts/list-runtime-roots \ nix/scripts/substitute if BUILD_DAEMON_OFFLOAD nodist_pkglibexec_SCRIPTS += \ nix/scripts/offload endif BUILD_DAEMON_OFFLOAD # XXX: It'd be better to hide it in $(pkglibexecdir). nodist_libexec_SCRIPTS = \ nix/scripts/guix-authenticate # The '.service' file for systemd. systemdservicedir = $(libdir)/systemd/system nodist_systemdservice_DATA = etc/guix-daemon.service etc/guix-daemon.service: etc/guix-daemon.service.in \ $(top_builddir)/config.status $(AM_V_GEN)$(MKDIR_P) "`dirname $@`"; \ $(SED) -e 's|@''bindir''@|$(bindir)|' < \ "$(srcdir)/etc/guix-daemon.service.in" > "$@.tmp"; \ mv "$@.tmp" "$@" # The '.conf' job for Upstart. upstartjobdir = $(libdir)/upstart/system nodist_upstartjob_DATA = etc/guix-daemon.conf etc/guix-daemon.conf: etc/guix-daemon.conf.in \ $(top_builddir)/config.status $(AM_V_GEN)$(MKDIR_P) "`dirname $@`"; \ $(SED) -e 's|@''bindir''@|$(bindir)|' < \ "$(srcdir)/etc/guix-daemon.conf.in" > "$@.tmp"; \ mv "$@.tmp" "$@" EXTRA_DIST += \ nix/libstore/schema.sql \ nix/AUTHORS \ nix/COPYING \ etc/guix-daemon.service.in \ etc/guix-daemon.conf.in if CAN_RUN_TESTS AM_TESTS_ENVIRONMENT += \ top_builddir="$(abs_top_builddir)" TESTS += \ tests/guix-daemon.sh endif CAN_RUN_TESTS clean-local: -if test -d "$(GUIX_TEST_ROOT)"; then \ find "$(GUIX_TEST_ROOT)" | xargs chmod +w; \ fi -rm -rf "$(GUIX_TEST_ROOT)"