Release new version 1:20210208+grml.5
[live-boot-grml.git] / Makefile
index ab5403f..c64c8c3 100644 (file)
--- a/Makefile
+++ b/Makefile
 # Makefile
 
-TRANSLATIONS="it"
+SHELL := sh -e
+
+LANGUAGES = $(shell cd manpages/po && ls)
+
+SCRIPTS = backend/*/* frontend/* components/*
 
 all: build
 
 test:
-       set -e; for SCRIPT in bin/* hooks/* scripts/live scripts/live-functions scripts/live-helpers scripts/*/*; \
+       @echo -n "Checking for syntax errors"
+
+       @for SCRIPT in $(SCRIPTS); \
        do \
-               sh -n $$SCRIPT; \
+               sh -n $${SCRIPT}; \
+               echo -n "."; \
        done
 
-build:
+       @echo " done."
 
-install: test build
-       # Installing configuration
-       install -D -m 0644 conf/live.conf $(DESTDIR)/etc/live.conf
+       @# We can't just fail yet on bashisms (FIXME)
+       @if [ -x "$$(which checkbashisms 2>/dev/null)" ]; \
+       then \
+               echo -n "Checking for bashisms"; \
+               for SCRIPT in $(SCRIPTS); \
+               do \
+                       checkbashisms -f -x $${SCRIPT} || true; \
+                       echo -n "."; \
+               done; \
+               echo " done."; \
+       else \
+               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
 
-       # Installing executables
-       mkdir -p $(DESTDIR)/sbin
-       cp bin/live-getty bin/live-login bin/live-snapshot $(DESTDIR)/sbin
+build:
+       $(MAKE) -C $(CURDIR)/manpages
 
-       mkdir -p $(DESTDIR)/usr/share/live-initramfs
-       cp bin/live-preseed bin/live-reconfigure $(DESTDIR)/usr/share/live-initramfs
+install:
+       # Installing components
+       mkdir -p $(DESTDIR)/lib/live/boot
+       cp components/* $(DESTDIR)/lib/live/boot
 
-       mkdir -p $(DESTDIR)/usr/share/initramfs-tools
-       cp -r hooks scripts $(DESTDIR)/usr/share/initramfs-tools
+       # Installing executables
+       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
 
-       # Installing documentation
-       mkdir -p $(DESTDIR)/usr/share/doc/live-initramfs
-       cp -r COPYING docs/* $(DESTDIR)/usr/share/doc/live-initramfs
+       mkdir -p $(DESTDIR)/bin
+       cp frontend/* $(DESTDIR)/bin
 
-       mkdir -p $(DESTDIR)/usr/share/doc/live-initramfs/examples
-       cp -r conf/live.conf $(DESTDIR)/usr/share/doc/live-initramfs/examples
+       # Installing docs
+       mkdir -p $(DESTDIR)/usr/share/doc/live-boot-grml
+       cp -r COPYING $(DESTDIR)/usr/share/doc/live-boot-grml
 
        # Installing manpages
-       set -e; for MANPAGE in manpages/*.en.1; \
-       do \
-               install -D -m 0644 $$MANPAGE $(DESTDIR)/usr/share/man/man1/`basename $$MANPAGE .en.1`.1; \
-       done
-
-       set -e; for MANPAGE in manpages/*.en.7; \
+       for MANPAGE in manpages/en/*; \
        do \
-               install -D -m 0644 $$MANPAGE $(DESTDIR)/usr/share/man/man7/`basename $$MANPAGE .en.7`.7; \
+               SECTION="$$(basename $${MANPAGE} | sed -e 's|\.|\n|g' | tail -n1)"; \
+               install -D -m 0644 $${MANPAGE} $(DESTDIR)/usr/share/man/man$${SECTION}/$$(basename $${MANPAGE}); \
        done
 
-       set -e; for TRANSLATIONS in $$TRANSLATIONS; \
+       for LANGUAGE in $(LANGUAGES); \
        do \
-               for MANPAGE in manpages/*.$$TRANSLATION.1; \
+               for MANPAGE in manpages/$${LANGUAGE}/*; \
                do \
-                       install -D -m 0644 $$MANPAGE $(DESTDIR)/usr/share/man/$$TRANSLATION/man1/`basename $$MANPAGE .$$TRANSLATION.1`.1; \
-               done; \
-               for MANPAGE in manpages/*.$$TRANSLATION.7; \
-               do \
-                       install -D -m 0644 $$MANPAGE $(DESTDIR)/usr/share/man/$$TRANSLATION/man7/`basename $$MANPAGE .$$TRANSLATION.7`.7; \
+                       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
 
-       # Temporary symlinks
-       ln -sf live-initramfs.7.gz $(DESTDIR)/usr/share/man/man7/live-getty.7.gz
-       ln -sf live-initramfs.7.gz $(DESTDIR)/usr/share/man/man7/live-login.7.gz
-
 uninstall:
-       # Uninstalling configuration
-       rm -f $(DESTDIR)/etc/live.conf
-
        # Uninstalling executables
-       rm -f $(DESTDIR)/sbin/live-getty $(DESTDIR)/sbin/live-login $(DESTDIR)/sbin/live-snapshot
-       rm -rf $(DESTDIR)/usr/share/live-initramfs
+       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
 
-       # Uninstalling documentation
-       rm -rf $(DESTDIR)/usr/share/doc/live-initramfs
+       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 manpages
-       set -e; for MANPAGE in manpages/*.en.1; \
-       do \
-               rm -f $(DESTDIR)/usr/share/man/man1/`basename $$MANPAGE .en.1`.1; \
-       done
+       # Uninstalling docs
+       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
 
-       set -e; for MANPAGE in manpages/*.en.7; \
+       # Uninstalling manpages
+       for MANPAGE in manpages/en/*; \
        do \
-               rm -f $(DESTDIR)/usr/share/man/man7/`basename $$MANPAGE .en.7`.7; \
+               SECTION="$$(basename $${MANPAGE} | sed -e 's|\.|\n|g' | tail -n1)"; \
+               rm -f $(DESTDIR)/usr/share/man/man$${SECTION}/$$(basename $${MANPAGE} .en.$${SECTION}).$${SECTION}; \
        done
 
-       set -e; for TRANSLATIONS in $$TRANSLATIONS; \
+       for LANGUAGE in $(LANGUAGES); \
        do \
-               for MANPAGE in manpages/*.$$TRANSLATION.1; \
-               do \
-                       install -D -m 0644 $$MANPAGE $(DESTDIR)/usr/share/man/$$TRANSLATION/man1/`basename $$MANPAGE .$$TRANSLATION.1`.1; \
-               done; \
-               for MANPAGE in manpages/*.$$TRANSLATION.7; \
+               for MANPAGE in manpages/$${LANGUAGE}/*; \
                do \
-                       install -D -m 0644 $$MANPAGE $(DESTDIR)/usr/share/man/$$TRANSLATION/man7/`basename $$MANPAGE .$$TRANSLATION.7`.7; \
+                       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
 
-       # Temporary symlinks
-       rm -f $(DESTDIR)/usr/share/man/man7/live-getty.7.gz
-       rm -f $(DESTDIR)/usr/share/man/man7/live-login.7.gz
-
-update:
-       set -e; for FILE in docs/parameters.txt; \
+       for SECTION in $(for MANPAGE in $(ls manpages/en/*); do basename $${MANPAGE} | sed -e 's|\.|\n|g' | tail -n1; done | sort -u); \
        do \
-               sed -i  -e 's/2007\\-11\\-05/2007\\-11\\-12/' \
-                       -e 's/2007-11-05/2007-11-12/' \
-                       -e 's/05.11.2007/12.11.2007/' \
-                       -e 's/1.110.5/1.110.6/' \
-               $$FILE; \
+               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