Simplify install/uninstall - sbase - suckless unix tools | |
git clone git://git.suckless.org/sbase | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit ddde8021b371c7e519e8dfbca5c1f403af7099dd | |
parent 6285c22a07893303bc8719afefe3e878ed6bc887 | |
Author: Roberto E. Vargas Caballero <[email protected]> | |
Date: Tue, 26 Sep 2023 23:09:34 +0200 | |
Simplify install/uninstall | |
Diffstat: | |
M Makefile | 38 +++++++++++------------------… | |
A scripts/install | 21 +++++++++++++++++++++ | |
A scripts/mkproto | 24 ++++++++++++++++++++++++ | |
A scripts/uninstall | 32 +++++++++++++++++++++++++++++… | |
4 files changed, 90 insertions(+), 25 deletions(-) | |
--- | |
diff --git a/Makefile b/Makefile | |
@@ -210,19 +210,18 @@ getconf.o: getconf.h | |
getconf.h: | |
scripts/getconf.sh > $@ | |
-install: all | |
- mkdir -p $(DESTDIR)$(PREFIX)/bin | |
- cp -f $(BIN) $(DESTDIR)$(PREFIX)/bin | |
- cd $(DESTDIR)$(PREFIX)/bin && ln -f test [ && chmod 755 $(BIN) | |
- mv -f $(DESTDIR)$(PREFIX)/bin/xinstall $(DESTDIR)$(PREFIX)/bin/install | |
- mkdir -p $(DESTDIR)$(MANPREFIX)/man1 | |
- for m in $(MAN); do sed "s/^\.Os sbase/.Os sbase $(VERSION)/g" < "$$m"… | |
- cd $(DESTDIR)$(MANPREFIX)/man1 && chmod 644 $(MAN) | |
- mv -f $(DESTDIR)$(MANPREFIX)/man1/xinstall.1 $(DESTDIR)$(MANPREFIX)/ma… | |
- | |
-uninstall: | |
- cd $(DESTDIR)$(PREFIX)/bin && rm -f $(BIN) [ install | |
- cd $(DESTDIR)$(MANPREFIX)/man1 && rm -f $(MAN) install.1 | |
+install uninstall: | |
+ scripts/mkproto $@ $(DESTDIR)$(PREFIX) $(DESTDIR)$(MANPREFIX) proto | |
+ scripts/$@ proto | |
+ | |
+sbase-box-install: sbase-box | |
+ scripts/mkproto $@ $(DESTDIR)$(PREFIX) $(DESTDIR)$(MANPREFIX) proto | |
+ scripts/$@ proto | |
+ $(DESTDIR)$(PREFIX)/bin/sbase-box -i $(DESTDIR)$(PREFIX)/bin/ | |
+ | |
+sbase-box-uninstall: sbase-box | |
+ $(DESTDIR)$(PREFIX)/bin/sbase-box -d $(DESTDIR)$(PREFIX)/bin/ | |
+ $(MAKE) uninstall | |
dist: clean | |
mkdir -p sbase-$(VERSION) | |
@@ -235,21 +234,10 @@ sbase-box: $(BIN) | |
scripts/mkbox | |
$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ build/*.c $(LIB) | |
-sbase-box-install: sbase-box | |
- mkdir -p $(DESTDIR)$(PREFIX)/bin | |
- mkdir -p $(DESTDIR)$(MANPREFIX)/man1 | |
- cp -f sbase-box $(DESTDIR)$(PREFIX)/bin | |
- chmod 755 $(DESTDIR)$(PREFIX)/bin/sbase-box | |
- $(DESTDIR)$(PREFIX)/bin/sbase-box -i $(DESTDIR)$(PREFIX)/bin/ | |
- cp -f $(MAN) $(DESTDIR)$(MANPREFIX)/man1/ | |
- mv -f $(DESTDIR)$(MANPREFIX)/man1/xinstall.1 $(DESTDIR)$(MANPREFIX)/ma… | |
- | |
-sbase-box-uninstall: uninstall | |
- cd $(DESTDIR)$(PREFIX)/bin && rm -f sbase-box | |
- | |
clean: | |
rm -f $(BIN) $(OBJ) $(LIB) sbase-box sbase-$(VERSION).tar.gz | |
rm -f getconf.h | |
+ rm -f proto | |
rm -rf build | |
.PHONY: all install uninstall dist sbase-box-install sbase-box-uninstall clean | |
diff --git a/scripts/install b/scripts/install | |
@@ -0,0 +1,21 @@ | |
+#!/bin/sh | |
+ | |
+set -e | |
+ | |
+while read type src dst perm | |
+do | |
+ case $type in | |
+ d) | |
+ mkdir -p $src | |
+ ;; | |
+ c) | |
+ cp $src $dst | |
+ ;; | |
+ *) | |
+ echo install: wrong entry type >&2 | |
+ exit 1 | |
+ ;; | |
+ esac | |
+ | |
+ chmod $perm $dst | |
+done < $1 | |
diff --git a/scripts/mkproto b/scripts/mkproto | |
@@ -0,0 +1,24 @@ | |
+#!/bin/sh | |
+ | |
+usage() | |
+{ | |
+ echo mkproto: prefix manprefix proto>&2 | |
+ exit 1 | |
+} | |
+ | |
+prefix=${1?$(usage)} | |
+manprefix=${2?$(usage)} | |
+proto=${3?$(usage)} | |
+ | |
+trap "rm -f scripts/proto" EXIT INT QUIT TERM | |
+ | |
+(set -e | |
+echo d $prefix/bin $prefix/bin 755 | |
+find . -maxdepth 1 -type f -perm /111 | | |
+sed "s@.*@c & $prefix/bin/& 755@" | |
+ | |
+echo d $manprefix/man1 $manprefix/man1 755 | |
+find . -maxdepth 1 -name '*.1' | | |
+sed "s@.*@c & $manprefix/man1/& 644@") > $proto | |
+ | |
+trap "" EXIT INT QUIT TERM | |
diff --git a/scripts/uninstall b/scripts/uninstall | |
@@ -0,0 +1,32 @@ | |
+#!/bin/sh | |
+ | |
+set -e | |
+ | |
+while read type src dst perm | |
+do | |
+ case $type in | |
+ d) | |
+ echo $type $src $dst $perm | |
+ continue | |
+ ;; | |
+ c) | |
+ rm -f $dst | |
+ ;; | |
+ *) | |
+ echo uninstall: wrong entry type >&2 | |
+ exit 1 | |
+ ;; | |
+ esac | |
+done < $1 | | |
+sort -r | | |
+while read type src dst perm | |
+do | |
+ case $type in | |
+ d) | |
+ if test `ls $dst | wc -l` -eq 0 | |
+ then | |
+ rmdir $dst | |
+ fi | |
+ ;; | |
+ esac | |
+done |