mirror of
git://git.savannah.gnu.org/guix.git
synced 2023-12-14 03:33:07 +01:00
gnu: Add tup.
* gnu/packages/build-tools.scm (tup): New variable. * gnu/packages/patches/tup-unbundle-dependencies.patch: New file. * gnu/local.mk (dist_patch_DATA): Register new file.
This commit is contained in:
parent
065cb27abb
commit
2c1d1b7599
3 changed files with 146 additions and 0 deletions
|
@ -1541,6 +1541,7 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/ttf2eot-cstddef.patch \
|
||||
%D%/packages/patches/ttfautohint-source-date-epoch.patch \
|
||||
%D%/packages/patches/tomb-fix-errors-on-open.patch \
|
||||
%D%/packages/patches/tup-unbundle-dependencies.patch \
|
||||
%D%/packages/patches/tuxpaint-stamps-path.patch \
|
||||
%D%/packages/patches/twinkle-bcg729.patch \
|
||||
%D%/packages/patches/u-boot-riscv64-fix-extlinux.patch \
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
;;; Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>
|
||||
;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at>
|
||||
;;; Copyright © 2020 Yuval Kogman <nothingmuch@woobling.org>
|
||||
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -36,12 +37,16 @@
|
|||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages check)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages lua)
|
||||
#:use-module (gnu packages package-management)
|
||||
#:use-module (gnu packages pcre)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages python-crypto)
|
||||
#:use-module (gnu packages python-web)
|
||||
#:use-module (gnu packages python-xyz)
|
||||
#:use-module (gnu packages sqlite)
|
||||
#:use-module (gnu packages ninja)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system python))
|
||||
|
@ -276,6 +281,80 @@ other lower-level build files.")
|
|||
scripted definition of a software project and outputs @file{Makefile}s or
|
||||
other lower-level build files.")))
|
||||
|
||||
(define-public tup
|
||||
(package
|
||||
(name "tup")
|
||||
(version "0.7.8")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://gittup.org/tup/releases/tup-v"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1z8d5mmddiw3ckdvy88bi48aa5bm0hrid6g9c9hp2ynmpzywmp2h"))
|
||||
(patches (search-patches "tup-unbundle-dependencies.patch"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
;; NOTE: Tup uses a slightly modified Lua, so it cannot be
|
||||
;; unbundled. See: src/lula/tup-lua.patch
|
||||
(delete-file-recursively "src/pcre")
|
||||
(delete-file-recursively "src/sqlite3")
|
||||
#t))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
;; There is a bootstrap script, but it doesn't do what you think - it
|
||||
;; builds tup.
|
||||
(delete 'bootstrap)
|
||||
(replace 'configure
|
||||
(lambda _
|
||||
(substitute* "src/tup/link.sh"
|
||||
(("`git describe`") ,version))
|
||||
(with-output-to-file "tup.config"
|
||||
(lambda _
|
||||
(format #t "CONFIG_TUP_USE_SYSTEM_SQLITE=y~%")))
|
||||
#t))
|
||||
(delete 'check)
|
||||
(replace 'build
|
||||
(lambda _
|
||||
;; Based on bootstrap-nofuse.sh, but with a detour to patch-shebang.
|
||||
(invoke "./build.sh")
|
||||
(invoke "./build/tup" "init")
|
||||
(invoke "./build/tup" "generate" "--verbose" "build-nofuse.sh")
|
||||
(patch-shebang "build-nofuse.sh")
|
||||
(invoke "./build-nofuse.sh")))
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((outdir (assoc-ref outputs "out"))
|
||||
(ftdetect (string-append outdir
|
||||
"/share/vim/vimfiles/ftdetect")))
|
||||
(install-file "tup" (string-append outdir "/bin"))
|
||||
(install-file "tup.1" (string-append outdir "/share/man/man1"))
|
||||
(install-file "contrib/syntax/tup.vim"
|
||||
(string-append outdir "/share/vim/vimfiles/syntax"))
|
||||
(mkdir-p ftdetect)
|
||||
(with-output-to-file (string-append ftdetect "/tup.vim")
|
||||
(lambda _
|
||||
(display "au BufNewFile,BufRead Tupfile,*.tup setf tup")))
|
||||
#t))))))
|
||||
(inputs
|
||||
`(("fuse" ,fuse)
|
||||
("pcre" ,pcre)
|
||||
("pcre" ,pcre "bin") ; pcre-config
|
||||
("sqlite" ,sqlite)))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
(home-page "http://gittup.org/tup/")
|
||||
(synopsis "Fast build system that's hard to get wrong")
|
||||
(description "Tup is a generic build system based on a directed acyclic
|
||||
graphs of commands to be executed. Tup instruments your build to detect the
|
||||
exact dependencies of the commands, allowing you to take advantage of ideal
|
||||
parallelism during incremental builds, and detecting any situations where
|
||||
a build worked by accident.")
|
||||
(license license:gpl2)))
|
||||
|
||||
(define-public osc
|
||||
(package
|
||||
(name "osc")
|
||||
|
|
66
gnu/packages/patches/tup-unbundle-dependencies.patch
Normal file
66
gnu/packages/patches/tup-unbundle-dependencies.patch
Normal file
|
@ -0,0 +1,66 @@
|
|||
Allow building tup after removing some bundled sources from the source
|
||||
tree.
|
||||
|
||||
diff --git a/build.sh b/build.sh
|
||||
index 2937116d..eab650f7 100755
|
||||
--- a/build.sh
|
||||
+++ b/build.sh
|
||||
@@ -16,7 +16,7 @@ else
|
||||
echo "Error: invalid TUP_SERVER \"$server\"" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
-LDFLAGS="$LDFLAGS -lm"
|
||||
+LDFLAGS="$LDFLAGS -lm -lsqlite3 `pcre-config --libs`"
|
||||
: ${CC:=gcc}
|
||||
case "$os" in
|
||||
Linux)
|
||||
@@ -65,17 +65,15 @@ mkdir luabuiltin
|
||||
|
||||
CFLAGS="$CFLAGS -DTUP_SERVER=\"$server\""
|
||||
CFLAGS="$CFLAGS -DHAVE_CONFIG_H"
|
||||
+CFLAGS="$CFLAGS `pcre-config --cflags`"
|
||||
|
||||
-for i in ../src/tup/*.c ../src/tup/tup/main.c ../src/tup/monitor/null.c ../src/tup/flock/fcntl.c ../src/inih/ini.c ../src/pcre/*.c $plat_files; do
|
||||
+for i in ../src/tup/*.c ../src/tup/tup/main.c ../src/tup/monitor/null.c ../src/tup/flock/fcntl.c ../src/inih/ini.c $plat_files; do
|
||||
echo " bootstrap CC $CFLAGS $i"
|
||||
# Put -I. first so we find our new luabuiltin.h file, not one built
|
||||
# by a previous 'tup upd'.
|
||||
- $CC $CFLAGS -c $i -I. -I../src -I../src/pcre $plat_cflags
|
||||
+ $CC $CFLAGS -c $i -I. -I../src $plat_cflags
|
||||
done
|
||||
|
||||
-echo " bootstrap CC $CFLAGS ../src/sqlite3/sqlite3.c"
|
||||
-$CC $CFLAGS -c ../src/sqlite3/sqlite3.c -DSQLITE_TEMP_STORE=2 -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION $plat_cflags
|
||||
-
|
||||
echo " bootstrap LD tup $LDFLAGS"
|
||||
echo "const char *tup_version(void) {return \"$label\";}" | $CC -x c -c - -o tup_version.o
|
||||
$CC *.o -o tup -lpthread $plat_ldflags $LDFLAGS
|
||||
diff --git a/src/tup/db.c b/src/tup/db.c
|
||||
index 55ee3edd..9bdf7a80 100644
|
||||
--- a/src/tup/db.c
|
||||
+++ b/src/tup/db.c
|
||||
@@ -46,7 +46,7 @@
|
||||
#include <errno.h>
|
||||
#include <ctype.h>
|
||||
#include <sys/stat.h>
|
||||
-#include "sqlite3/sqlite3.h"
|
||||
+#include <sqlite3.h>
|
||||
|
||||
#define DB_VERSION 17
|
||||
#define PARSER_VERSION 12
|
||||
diff --git a/src/tup/tupid.h b/src/tup/tupid.h
|
||||
index 7b36ae46..19aed438 100644
|
||||
--- a/src/tup/tupid.h
|
||||
+++ b/src/tup/tupid.h
|
||||
@@ -21,7 +21,7 @@
|
||||
#ifndef tup_tupid_h
|
||||
#define tup_tupid_h
|
||||
|
||||
-#include "sqlite3/sqlite3.h"
|
||||
+#include <sqlite3.h>
|
||||
|
||||
typedef sqlite3_int64 tupid_t;
|
||||
|
||||
--
|
||||
2.26.2
|
||||
|
Loading…
Reference in a new issue