From c72c2cc00b2a9e2c7ce7ba0ff22908c209f24822 Mon Sep 17 00:00:00 2001 From: merakor Date: Sun, 20 Dec 2020 08:13:57 +0000 Subject: try out the redo build system FossilOrigin-Name: 6ca0330a7e548be4e516ad6c275b2878a1521d2de5263fd75defc16f8f52c93b --- default.do | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 default.do (limited to 'default.do') diff --git a/default.do b/default.do new file mode 100644 index 0000000..2d091c6 --- /dev/null +++ b/default.do @@ -0,0 +1,42 @@ +. ./config.rc + +# Extensionless name of file +fn="${1%.*}" + +case "$1" in + bin/cpt-readlink|bin/cpt-stat) + redo-ifchange "$1.o" + "$CC" -o "$3" $LDFLAGS "$1.o" $LIBS + ;; + *.o) + [ -f "${1%.o}.c" ] || exit 99 + redo-ifchange "$fn.c" + "$CC" -c -o "$3" $CFLAGS "$fn.c" + ;; + *.info) + redo-ifchange "$fn.texi" + $MAKEINFO "$fn.texi" -o "$3" + ;; + *.texi) + [ -f "$fn.org" ] || exit 99 + redo-ifchange "$fn.org" + $EMACS "$fn.org" --batch -f org-texinfo-export-to-texinfo + mv "$1" "$3" + ;; + "cpt-$VERSION.tar.xz") + redo doc/cpt.info + rm -rf -- "cpt-$VERSION" + find . -type f ! -name '.*' ! -path './.*' | + while read -r file; do + mkdir -p "cpt-$VERSION/${file%/*}" + cp "$file" "cpt-$VERSION/$file" + done + tar cf "cpt-$VERSION.tar" "cpt-$VERSION" + xz -z "cpt-$VERSION.tar" + rm -rf -- "cpt-$VERSION" + mv "$1" "$3" + ;; + *) + echo "Unknown target $1" + exit 99 +esac -- cgit v1.2.3 From 7722519b9e9f47b61243cf591abdc614f53c27df Mon Sep 17 00:00:00 2001 From: merakor Date: Sun, 20 Dec 2020 09:53:31 +0000 Subject: update redo files FossilOrigin-Name: 1096355ead3f8b366f9cf1428369d38cc9735d78da31e8fcfbb3c7ce046d1db0 --- all.do | 2 -- clean.do | 4 ++-- config.rc | 2 +- default.do | 29 ++++++++++++++++++----------- dist.do | 3 --- docs/default.do | 24 ++++++++++++++++++++++++ 6 files changed, 45 insertions(+), 19 deletions(-) delete mode 100644 all.do delete mode 100644 dist.do create mode 100644 docs/default.do (limited to 'default.do') diff --git a/all.do b/all.do deleted file mode 100644 index 60dfc91..0000000 --- a/all.do +++ /dev/null @@ -1,2 +0,0 @@ -. ./config.rc -redo-ifchange bin/all doc/cpt.info diff --git a/clean.do b/clean.do index 389daf3..b30f907 100644 --- a/clean.do +++ b/clean.do @@ -1,5 +1,5 @@ . ./config.rc -redo bin/clean +redo bin/clean src/clean redo_clean rm -f "cpt-$VERSION.tar.xz" -find doc -name '*.info' -exec rm -f -- {} + +find docs -name '*.info' -exec rm -f -- {} + diff --git a/config.rc b/config.rc index d1b2281..b6dc81e 100644 --- a/config.rc +++ b/config.rc @@ -38,7 +38,7 @@ PHONY() { trap 'case " $PHONY " in *" $1 "*) rm -f $3; esac' EXIT INT } -setv VERSION = 5.1.0 +setv VERSION = 5.1.1 # Paths setv PREFIX = /usr/local diff --git a/default.do b/default.do index 2d091c6..d8c1cd9 100644 --- a/default.do +++ b/default.do @@ -4,6 +4,15 @@ fn="${1%.*}" case "$1" in + all) redo-ifchange src/cpt-lib bin/all docs/cpt.info ;; + dist) + redo clean + redo "cpt-$VERSION.tar.xz" + ;; + src/cpt-lib) + redo-ifchange "$1.in" + sed "s|@VERSION@|$VERSION|g" < "$1.in" > "$3" + ;; bin/cpt-readlink|bin/cpt-stat) redo-ifchange "$1.o" "$CC" -o "$3" $LDFLAGS "$1.o" $LIBS @@ -13,18 +22,8 @@ case "$1" in redo-ifchange "$fn.c" "$CC" -c -o "$3" $CFLAGS "$fn.c" ;; - *.info) - redo-ifchange "$fn.texi" - $MAKEINFO "$fn.texi" -o "$3" - ;; - *.texi) - [ -f "$fn.org" ] || exit 99 - redo-ifchange "$fn.org" - $EMACS "$fn.org" --batch -f org-texinfo-export-to-texinfo - mv "$1" "$3" - ;; "cpt-$VERSION.tar.xz") - redo doc/cpt.info + redo docs/cpt.info rm -rf -- "cpt-$VERSION" find . -type f ! -name '.*' ! -path './.*' | while read -r file; do @@ -36,7 +35,15 @@ case "$1" in rm -rf -- "cpt-$VERSION" mv "$1" "$3" ;; + test) + redo src/test + ;; + src/clean) + rm -f src/cpt-lib + ;; *) echo "Unknown target $1" exit 99 esac + +PHONY all dist test clean src/clean diff --git a/dist.do b/dist.do deleted file mode 100644 index c7f21f1..0000000 --- a/dist.do +++ /dev/null @@ -1,3 +0,0 @@ -. ./config.rc -redo clean -redo "cpt-$VERSION.tar.xz" diff --git a/docs/default.do b/docs/default.do new file mode 100644 index 0000000..2742edb --- /dev/null +++ b/docs/default.do @@ -0,0 +1,24 @@ +. ../config.rc + +# Extensionless name of file +fn="${1%.*}" + +case "$1" in + all) redo-ifchange info ;; + info) redo-ifchange cpt.info ;; + *.info) + redo-ifchange "$fn.texi" + $MAKEINFO "$fn.texi" -o "$3" + ;; + *.texi) + [ -f "$fn.org" ] || exit 99 + redo-ifchange "$fn.org" + $EMACS "$fn.org" --batch -f org-texinfo-export-to-texinfo + mv "$1" "$3" + ;; + *) + echo "Unknown target $1" + exit 99 +esac + +PHONY all info html -- cgit v1.2.3 From 96a1f4d2a70e1631564c00fa33e7f11c5e331573 Mon Sep 17 00:00:00 2001 From: merakor Date: Sun, 20 Dec 2020 19:59:49 +0000 Subject: cpt: update redo build files FossilOrigin-Name: de567d5766f6af7e5659f2afbef6a566b386c63659f0f8b292f905e38b53c272 --- config.rc | 51 +++++++++++++++++++++++++++++---------------------- default.do | 6 ++++-- install.do | 16 ++++++++++++++++ src/test.do | 4 ++++ uninstall.do | 9 +++++++++ 5 files changed, 62 insertions(+), 24 deletions(-) create mode 100644 install.do create mode 100644 src/test.do create mode 100644 uninstall.do (limited to 'default.do') diff --git a/config.rc b/config.rc index b6dc81e..f09b44c 100644 --- a/config.rc +++ b/config.rc @@ -14,6 +14,31 @@ setv() { esac } +setv VERSION = 5.1.1 + +# Paths +setv PREFIX = /usr/local +setv BINDIR = "${PREFIX}/bin" +setv SHAREDIR = "${PREFIX}/share" +setv DOCDIR = "${SHAREDIR}/doc" +setv CPTDOC = "${DOCDIR}/cpt" +setv MANPREFIX = "${SHAREDIR}/man" +setv MAN1 = "${MANPREFIX}/man1" + +# Flags +setv CFLAGS = -std=c99 -Wpedantic -Wall -Os +setv CFLAGS += -D_XOPEN_SOURCE=700 +setv LDFLAGS = -s -static +setv LIBS = -lc + +setv CC = cc +setv LD = "${CC}" + +# Documentation tools +setv EMACS = emacs +setv MAKEINFO = makeinfo + +# Helper functions redo_clean() { # Clean function for various redo implementations [ -r .do_built ] && { @@ -38,29 +63,11 @@ PHONY() { trap 'case " $PHONY " in *" $1 "*) rm -f $3; esac' EXIT INT } -setv VERSION = 5.1.1 - -# Paths -setv PREFIX = /usr/local -setv BINDIR = "${PREFIX}/bin" -setv SHAREDIR = "${PREFIX}/share" -setv DOCDIR = "${SHAREDIR}/doc" -setv CPTDOC = "${DOCDIR}/cpt" -setv MANPREFIX = "${SHAREDIR}/man" -setv MAN1 = "${MANPREFIX}/man1" - -# Flags -setv CFLAGS = -std=c99 -Wpedantic -Wall -Os -setv CFLAGS += -D_XOPEN_SOURCE=700 -setv LDFLAGS = -s -static -setv LIBS = -lc - -setv CC = cc -setv LD = "${CC}" +getbin() { + # Function to get all executables + find src contrib bin -name 'cpt-*' ! -name '*.in' ! -name '*.[coh]' +} -# Documentation tools -setv EMACS = emacs -setv MAKEINFO = makeinfo # Phony targets PHONY all dist clean install uninstall test diff --git a/default.do b/default.do index d8c1cd9..f0ebcf4 100644 --- a/default.do +++ b/default.do @@ -25,9 +25,11 @@ case "$1" in "cpt-$VERSION.tar.xz") redo docs/cpt.info rm -rf -- "cpt-$VERSION" - find . -type f ! -name '.*' ! -path './.*' | + mkdir -p "cpt-$VERSION" + { git ls-tree -r HEAD --name-only && echo docs/cpt.info ;} | while read -r file; do - mkdir -p "cpt-$VERSION/${file%/*}" + [ "${file##*/*}" ] || + mkdir -p "cpt-$VERSION/${file%/*}" cp "$file" "cpt-$VERSION/$file" done tar cf "cpt-$VERSION.tar" "cpt-$VERSION" diff --git a/install.do b/install.do new file mode 100644 index 0000000..cc11bd4 --- /dev/null +++ b/install.do @@ -0,0 +1,16 @@ +. ./config.rc +redo all + +# Install executables. +mkdir -p "${DESTDIR}${BINDIR}" +getbin | while read -r file; do + cp "$file" "${DESTDIR}${BINDIR}/${file##*/}" + chmod 755 "${DESTDIR}${BINDIR}/${file##*/}" +done + +# Install manual pages. +mkdir -p "${DESTDIR}${MAN1}" +for man in man/*.1; do + cp "$man" "${DESTDIR}${MAN1}/${man##*/}" + chmod 644 "${DESTDIR}${MAN1}/${man##*/}" +done diff --git a/src/test.do b/src/test.do new file mode 100644 index 0000000..9d32aef --- /dev/null +++ b/src/test.do @@ -0,0 +1,4 @@ +. ../config.rc +redo-ifchange cpt-lib +shellcheck -x -f gcc ./cpt* ../contrib/* +PHONY diff --git a/uninstall.do b/uninstall.do new file mode 100644 index 0000000..d2f4585 --- /dev/null +++ b/uninstall.do @@ -0,0 +1,9 @@ +. ./config.rc + +getbin | while read -r file; do + rm -f "${DESTDIR}${BINDIR}/${file##*/}" +done + +for man in man/*.1; do + rm -f "${DESTDIR}${MAN1}/${man##*/}" +done -- cgit v1.2.3 From 957dd999d5b9d56e29a355efeeb284b296a70b81 Mon Sep 17 00:00:00 2001 From: merakor Date: Sun, 20 Dec 2020 21:20:16 +0000 Subject: default.do: remove second PHONY call, add PHONY call to src/clean FossilOrigin-Name: 3d8973d0ab4bd8fe91cd1f5de2d993dbd232c73b725fd9a901ce2dabdcc15842 --- default.do | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'default.do') diff --git a/default.do b/default.do index f0ebcf4..9407c6e 100644 --- a/default.do +++ b/default.do @@ -42,10 +42,9 @@ case "$1" in ;; src/clean) rm -f src/cpt-lib + PHONY ;; *) echo "Unknown target $1" exit 99 esac - -PHONY all dist test clean src/clean -- cgit v1.2.3 From 388586b7ceac1470e741b2967e5ba33c8d99ef7b Mon Sep 17 00:00:00 2001 From: merakor Date: Sun, 20 Dec 2020 21:20:58 +0000 Subject: bin: add tests FossilOrigin-Name: ec194605cd8c21140304faf47b67f419967b7606155d7afb0e6d9f83c7622d46 --- bin/test.do | 11 +++++++++++ default.do | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 bin/test.do (limited to 'default.do') diff --git a/bin/test.do b/bin/test.do new file mode 100644 index 0000000..4794751 --- /dev/null +++ b/bin/test.do @@ -0,0 +1,11 @@ +. ../config.rc +redo all +exec >&2 + +./cpt-readlink . +./cpt-readlink .. +./cpt-readlink /bin +./cpt-stat /bin +./cpt-stat cpt-readlink.o + +PHONY diff --git a/default.do b/default.do index 9407c6e..6e2d555 100644 --- a/default.do +++ b/default.do @@ -38,7 +38,7 @@ case "$1" in mv "$1" "$3" ;; test) - redo src/test + redo src/test bin/test ;; src/clean) rm -f src/cpt-lib -- cgit v1.2.3 From ed0fd37a7dd2b9683dbc45964334defe6c0e5982 Mon Sep 17 00:00:00 2001 From: merakor Date: Mon, 21 Dec 2020 09:07:42 +0000 Subject: default.do: run docs/all instead of docs/cpt.info FossilOrigin-Name: 5fb5e5902106aa153d1d68dcf6ab19640f47dc07804c8ab487ba1549ec349fbb --- default.do | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'default.do') diff --git a/default.do b/default.do index 6e2d555..c16f5f8 100644 --- a/default.do +++ b/default.do @@ -4,7 +4,7 @@ fn="${1%.*}" case "$1" in - all) redo-ifchange src/cpt-lib bin/all docs/cpt.info ;; + all) redo-ifchange src/cpt-lib bin/all docs/all ;; dist) redo clean redo "cpt-$VERSION.tar.xz" -- cgit v1.2.3