Release new version 1:20210208+grml.5
[live-boot-grml.git] / Makefile
index 1018daf..c64c8c3 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -2,14 +2,16 @@
 
 SHELL := sh -e
 
-LANGUAGES = de
+LANGUAGES = $(shell cd manpages/po && ls)
 
-all: test build
+SCRIPTS = backend/*/* frontend/* components/*
+
+all: build
 
 test:
        @echo -n "Checking for syntax errors"
 
-       @for SCRIPT in bin/* hooks/* scripts/live scripts/live-functions scripts/live-helpers scripts/*/*; \
+       @for SCRIPT in $(SCRIPTS); \
        do \
                sh -n $${SCRIPT}; \
                echo -n "."; \
@@ -17,53 +19,53 @@ test:
 
        @echo " done."
 
-       @echo -n "Checking for bashisms"
-
        @# We can't just fail yet on bashisms (FIXME)
-       @if [ -x /usr/bin/checkbashisms ]; \
+       @if [ -x "$$(which checkbashisms 2>/dev/null)" ]; \
        then \
-               for SCRIPT in bin/* hooks/* scripts/live scripts/live-functions scripts/live-helpers scripts/*/*; \
+               echo -n "Checking for bashisms"; \
+               for SCRIPT in $(SCRIPTS); \
                do \
-                       checkbashisms $${SCRIPT} || true; \
+                       checkbashisms -f -x $${SCRIPT} || true; \
                        echo -n "."; \
                done; \
+               echo " done."; \
        else \
-               echo "WARNING: skipping bashism test - you need to install devscripts."; \
+               echo "W: checkbashisms - command not found"; \
+               echo "I: checkbashisms can be obtained from: "; \
+               echo "I:   https://salsa.debian.org/debian/devscripts.git"; \
+               echo "I: On Debian based systems, checkbashisms can be installed with:"; \
+               echo "I:   apt-get install devscripts"; \
        fi
 
-       @echo " done."
-
 build:
-       @echo "Nothing to build."
+       $(MAKE) -C $(CURDIR)/manpages
 
 install:
-       # (FIXME)
-       # Installing configuration
-       install -D -m 0644 conf/live.conf $(DESTDIR)/etc/live.conf
-       install -D -m 0644 conf/compcache $(DESTDIR)/usr/share/initramfs-tools/conf.d/compcache
+       # Installing components
+       mkdir -p $(DESTDIR)/lib/live/boot
+       cp components/* $(DESTDIR)/lib/live/boot
 
        # Installing executables
-       mkdir -p $(DESTDIR)/sbin
-       cp bin/live-getty bin/live-login bin/live-new-uuid bin/live-snapshot bin/live-swapfile $(DESTDIR)/sbin
-
-       mkdir -p $(DESTDIR)/usr/share/live-boot
-       cp bin/live-preseed bin/live-reconfigure contrib/languagelist $(DESTDIR)/usr/share/live-boot
+       mkdir -p $(DESTDIR)/usr/share/initramfs-tools/hooks
+       for f in backend/initramfs-tools/*.hook; do \
+               cp $${f} $(DESTDIR)/usr/share/initramfs-tools/hooks/$$(basename $${f} .hook); \
+       done
+       mkdir -p $(DESTDIR)/usr/share/initramfs-tools/scripts
+       for f in backend/initramfs-tools/*.script; do \
+               cp $${f} $(DESTDIR)/usr/share/initramfs-tools/scripts/$$(basename $${f} .script); \
+       done
 
-       mkdir -p $(DESTDIR)/usr/share/initramfs-tools
-       cp -r hooks scripts $(DESTDIR)/usr/share/initramfs-tools
+       mkdir -p $(DESTDIR)/bin
+       cp frontend/* $(DESTDIR)/bin
 
        # Installing docs
-       mkdir -p $(DESTDIR)/usr/share/doc/live-boot
-       cp -r COPYING docs/* $(DESTDIR)/usr/share/doc/live-boot
-
-       mkdir -p $(DESTDIR)/usr/share/doc/live-boot/examples
-       cp -r conf/* $(DESTDIR)/usr/share/doc/live-boot/examples
-       # (FIXME)
+       mkdir -p $(DESTDIR)/usr/share/doc/live-boot-grml
+       cp -r COPYING $(DESTDIR)/usr/share/doc/live-boot-grml
 
        # Installing manpages
        for MANPAGE in manpages/en/*; \
        do \
-               SECTION="$$(basename $${MANPAGE} | awk -F. '{ print $$2 }')"; \
+               SECTION="$$(basename $${MANPAGE} | sed -e 's|\.|\n|g' | tail -n1)"; \
                install -D -m 0644 $${MANPAGE} $(DESTDIR)/usr/share/man/man$${SECTION}/$$(basename $${MANPAGE}); \
        done
 
@@ -71,31 +73,36 @@ install:
        do \
                for MANPAGE in manpages/$${LANGUAGE}/*; \
                do \
-                       SECTION="$$(basename $${MANPAGE} | awk -F. '{ print $$3 }')"; \
+                       SECTION="$$(basename $${MANPAGE} | sed -e 's|\.|\n|g' | tail -n1)"; \
                        install -D -m 0644 $${MANPAGE} $(DESTDIR)/usr/share/man/$${LANGUAGE}/man$${SECTION}/$$(basename $${MANPAGE} .$${LANGUAGE}.$${SECTION}).$${SECTION}; \
                done; \
        done
 
 uninstall:
-       # (FIXME)
-       # Uninstalling configuration
-       rm -f $(DESTDIR)/etc/live.conf
-
        # Uninstalling executables
-       rm -f $(DESTDIR)/sbin/live-getty $(DESTDIR)/sbin/live-login $(DESTDIR)/sbin/live-snapshot $(DESTDIR)/sbin/live-swapfile
-       rm -rf $(DESTDIR)/usr/share/live-boot
+       rm -f $(DESTDIR)/bin/live-boot
+       rm -f $(DESTDIR)/bin/live-swapfile
+       rmdir --ignore-fail-on-non-empty $(DESTDIR)/bin > /dev/null 2>&1 || true
+
        rm -f $(DESTDIR)/usr/share/initramfs-tools/hooks/live
-       rm -rf $(DESTDIR)/usr/share/initramfs-tools/scripts/live*
-       rm -f $(DESTDIR)/usr/share/initramfs-tools/scripts/local-top/live
+       rm -f $(DESTDIR)/usr/share/initramfs-tools/scripts/live
+
+       rmdir --ignore-fail-on-non-empty $(DESTDIR)/usr/share/initramfs-tools/hooks > /dev/null 2>&1 || true
+       rmdir --ignore-fail-on-non-empty $(DESTDIR)/usr/share/initramfs-tools/scripts > /dev/null 2>&1 || true
+       rmdir --ignore-fail-on-non-empty $(DESTDIR)/usr/share/initramfs-tools > /dev/null 2>&1 || true
+       rmdir --ignore-fail-on-non-empty $(DESTDIR)/usr/share > /dev/null 2>&1 || true
+       rmdir --ignore-fail-on-non-empty $(DESTDIR)/usr > /dev/null 2>&1 || true
 
        # Uninstalling docs
-       rm -rf $(DESTDIR)/usr/share/doc/live-boot
-       # (FIXME)
+       rm -rf $(DESTDIR)/usr/share/doc/live-boot-grml
+       rmdir --ignore-fail-on-non-empty $(DESTDIR)/usr/share/doc > /dev/null 2>&1 || true
+       rmdir --ignore-fail-on-non-empty $(DESTDIR)/usr/share > /dev/null 2>&1 || true
+       rmdir --ignore-fail-on-non-empty $(DESTDIR)/usr > /dev/null 2>&1 || true
 
        # Uninstalling manpages
        for MANPAGE in manpages/en/*; \
        do \
-               SECTION="$$(basename $${MANPAGE} | awk -F. '{ print $$2 }')"; \
+               SECTION="$$(basename $${MANPAGE} | sed -e 's|\.|\n|g' | tail -n1)"; \
                rm -f $(DESTDIR)/usr/share/man/man$${SECTION}/$$(basename $${MANPAGE} .en.$${SECTION}).$${SECTION}; \
        done
 
@@ -103,13 +110,27 @@ uninstall:
        do \
                for MANPAGE in manpages/$${LANGUAGE}/*; \
                do \
-                       SECTION="$$(basename $${MANPAGE} | awk -F. '{ print $$3 }')"; \
+                       SECTION="$$(basename $${MANPAGE} | sed -e 's|\.|\n|g' | tail -n1)"; \
                        rm -f $(DESTDIR)/usr/share/man/$${LANGUAGE}/man$${SECTION}/$$(basename $${MANPAGE} .$${LANGUAGE}.$${SECTION}).$${SECTION}; \
                done; \
        done
 
+       for SECTION in $(for MANPAGE in $(ls manpages/en/*); do basename $${MANPAGE} | sed -e 's|\.|\n|g' | tail -n1; done | sort -u); \
+       do \
+               rmdir --ignore-fail-on-non-empty $(DESTDIR)/usr/share/man/man$${SECTION} > /dev/null 2>&1 || true; \
+               rmdir --ignore-fail-on-non-empty $(DESTDIR)/usr/share/man/*/man$${SECTION} > /dev/null 2>&1 || true; \
+       done
+
+       rmdir --ignore-fail-on-non-empty $(DESTDIR)/usr/share/man > /dev/null 2>&1 || true
+       rmdir --ignore-fail-on-non-empty $(DESTDIR)/usr/share > /dev/null 2>&1 || true
+       rmdir --ignore-fail-on-non-empty $(DESTDIR)/usr > /dev/null 2>&1 || true
+
+       rmdir --ignore-fail-on-non-empty $(DESTDIR) > /dev/null 2>&1 || true
+
 clean:
+       @echo "Nothing to clean."
 
-distclean:
+distclean: clean
+       @echo "Nothing to distclean."
 
 reinstall: uninstall install