[PATCH] gnu: Add tup.

DoneSubmitted by Jakub Kądziołka.
Details
2 participants
  • Jakub Kądziołka
  • Ludovic Courtès
Owner
unassigned
Severity
normal
J
J
Jakub Kądziołka wrote on 7 Jun 2020 21:07
(address . guix-patches@gnu.org)
20200607190711.20988-1-kuba@kadziolka.net
* 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.
---
gnu/local.mk | 1 +
gnu/packages/build-tools.scm | 79 +++++++++++++++++++
.../patches/tup-unbundle-dependencies.patch | 74 +++++++++++++++++
3 files changed, 154 insertions(+)
create mode 100644 gnu/packages/patches/tup-unbundle-dependencies.patch

Toggle diff (204 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index ae8a2275f7..27657b89e6 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1542,6 +1542,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	\
diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm
index 9ff32b22f9..38bd906278 100644
--- a/gnu/packages/build-tools.scm
+++ b/gnu/packages/build-tools.scm
@@ -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")
diff --git a/gnu/packages/patches/tup-unbundle-dependencies.patch b/gnu/packages/patches/tup-unbundle-dependencies.patch
new file mode 100644
index 0000000000..be6aeef9c3
--- /dev/null
+++ b/gnu/packages/patches/tup-unbundle-dependencies.patch
@@ -0,0 +1,74 @@
+From 895a7d4e8200f9430414a5fe47756efb67d2e5d0 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jakub=20K=C4=85dzio=C5=82ka?= <kuba@kadziolka.net>
+Date: Sun, 7 Jun 2020 15:14:42 +0200
+Subject: [PATCH] Unbundle dependencies
+
+---
+ build.sh        | 10 ++++------
+ src/tup/db.c    |  2 +-
+ src/tup/tupid.h |  2 +-
+ 3 files changed, 6 insertions(+), 8 deletions(-)
+
+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
+
-- 
2.26.2
L
L
Ludovic Courtès wrote on 14 Jun 2020 22:58
(name . Jakub Kądziołka)(address . kuba@kadziolka.net)(address . 41753@debbugs.gnu.org)
87imfts6u8.fsf@gnu.org
Hi,

Jakub Kądziołka <kuba@kadziolka.net> skribis:

Toggle quote (4 lines)
> * 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.

[...]

Toggle quote (14 lines)
> --- /dev/null
> +++ b/gnu/packages/patches/tup-unbundle-dependencies.patch
> @@ -0,0 +1,74 @@
> +From 895a7d4e8200f9430414a5fe47756efb67d2e5d0 Mon Sep 17 00:00:00 2001
> +From: =?UTF-8?q?Jakub=20K=C4=85dzio=C5=82ka?= <kuba@kadziolka.net>
> +Date: Sun, 7 Jun 2020 15:14:42 +0200
> +Subject: [PATCH] Unbundle dependencies
> +
> +---
> + build.sh | 10 ++++------
> + src/tup/db.c | 2 +-
> + src/tup/tupid.h | 2 +-
> + 3 files changed, 6 insertions(+), 8 deletions(-)

Nitpick: I’d remove the whole Git header and just keep the subject.

Otherwise LGTM!

Thanks,
Ludo’.
J
J
Jakub Kądziołka wrote on 15 Jun 2020 00:15
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 41753-done@debbugs.gnu.org)
20200614221537.w3d5leewtpf5e4gj@gravity
On Sun, Jun 14, 2020 at 10:58:07PM +0200, Ludovic Courtès wrote:
Toggle quote (28 lines)
> Hi,
>
> Jakub Kądziołka <kuba@kadziolka.net> skribis:
>
> > * 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.
>
> [...]
>
> > --- /dev/null
> > +++ b/gnu/packages/patches/tup-unbundle-dependencies.patch
> > @@ -0,0 +1,74 @@
> > +From 895a7d4e8200f9430414a5fe47756efb67d2e5d0 Mon Sep 17 00:00:00 2001
> > +From: =?UTF-8?q?Jakub=20K=C4=85dzio=C5=82ka?= <kuba@kadziolka.net>
> > +Date: Sun, 7 Jun 2020 15:14:42 +0200
> > +Subject: [PATCH] Unbundle dependencies
> > +
> > +---
> > + build.sh | 10 ++++------
> > + src/tup/db.c | 2 +-
> > + src/tup/tupid.h | 2 +-
> > + 3 files changed, 6 insertions(+), 8 deletions(-)
>
> Nitpick: I’d remove the whole Git header and just keep the subject.
>
> Otherwise LGTM!

Thanks for the review! I have pushed a revised patch as commit
2c1d1b7599a3738cdbdcaa281d56fa47b0b4c025.

Regards,
Jakub Kądziołka
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEE5Xa/ss9usT31cTO54xWnWEYTFWQFAl7moYkACgkQ4xWnWEYT
FWRHvg//VBqW4bUqEhmu/Of5Li/gWzyTC8YCLTQskp0/cT6AFgeS5Yk0tTag+APi
elFDpleQvPKZFJXXc98lMR0vi9D5Q5g0dOBR1A+8MT+C5zN5I8uFo5Np+rm7yJAV
VTW4VKaLMBPQhtZSQPoNRYeSN2kTUaaaKuRLoyJ2PbPMMTQmz/COvJEzAjims9q4
Z8Ql8QnADsidx6tv+KjuHnrFCF8h8VHDndHCdNojsODT845EqFD4uav9O/iHTYYX
ESJm2kydIyycvNuPQSxJvc2etgZmKjBaZe75zHEBN5UiY5C01dzPhRpNvlKYxo2c
tVEbL9OPNYjqfsmrQY9qpZdqXca0V5zsp42xfSDfOZTJCJkgfXWwhctL21vNGncC
urNLz6nGuZ+R+rHwnEIOYzSdAmmR9E0b3qkv8aR+/xTjte8yOxoljbwGBAnLCPmp
8tciJJm9Js6wwCoDQjqz5zat9Jege3Lclqv32yZRabD4pftGz0wCR/dK4E+GGAQ2
kOOLQNxDlAnk0n3QQ1C6Da9urKRDxN/tUKVhW3PHKWr8CYX8N7bwhUpVSN0J5tpB
wTIk/M0/bG93DYU8uuQoyuyOGDoNeFzW8AFVAG0D1xkkQhq1LBSJX8mY5D9uSAxE
yCYl3KW7oBM73PgBz3xY/dhobXPlmvLi81cY4jLaccDyFoMhNjU=
=uS9y
-----END PGP SIGNATURE-----


Closed
?
Your comment

This issue is archived.

To comment on this conversation send email to 41753@debbugs.gnu.org