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:
Jakub Kądziołka 2020-06-07 20:00:15 +02:00
parent 065cb27abb
commit 2c1d1b7599
No known key found for this signature in database
GPG key ID: E315A75846131564
3 changed files with 146 additions and 0 deletions

View file

@ -1541,6 +1541,7 @@ dist_patch_DATA = \
%D%/packages/patches/ttf2eot-cstddef.patch \ %D%/packages/patches/ttf2eot-cstddef.patch \
%D%/packages/patches/ttfautohint-source-date-epoch.patch \ %D%/packages/patches/ttfautohint-source-date-epoch.patch \
%D%/packages/patches/tomb-fix-errors-on-open.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/tuxpaint-stamps-path.patch \
%D%/packages/patches/twinkle-bcg729.patch \ %D%/packages/patches/twinkle-bcg729.patch \
%D%/packages/patches/u-boot-riscv64-fix-extlinux.patch \ %D%/packages/patches/u-boot-riscv64-fix-extlinux.patch \

View file

@ -10,6 +10,7 @@
;;; Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de> ;;; Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>
;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at> ;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at>
;;; Copyright © 2020 Yuval Kogman <nothingmuch@woobling.org> ;;; Copyright © 2020 Yuval Kogman <nothingmuch@woobling.org>
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -36,12 +37,16 @@ (define-module (gnu packages build-tools)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages check) #:use-module (gnu packages check)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages linux)
#:use-module (gnu packages lua) #:use-module (gnu packages lua)
#:use-module (gnu packages package-management) #: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)
#:use-module (gnu packages python-crypto) #:use-module (gnu packages python-crypto)
#:use-module (gnu packages python-web) #:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz) #:use-module (gnu packages python-xyz)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages ninja) #:use-module (gnu packages ninja)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (guix build-system python)) #:use-module (guix build-system python))
@ -276,6 +281,80 @@ (define-public premake5
scripted definition of a software project and outputs @file{Makefile}s or scripted definition of a software project and outputs @file{Makefile}s or
other lower-level build files."))) 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 (define-public osc
(package (package
(name "osc") (name "osc")

View 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