summaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile148
1 files changed, 99 insertions, 49 deletions
diff --git a/Makefile b/Makefile
index 13a4661..d652f32 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,6 @@
-# Copyright (C) 2014-2020 Daniel Baumann <daniel.baumann@open-infrastructure.net>
+# Open Infrastructure: compute-tools
+
+# Copyright (C) 2014-2022 Daniel Baumann <daniel.baumann@open-infrastructure.net>
#
# SPDX-License-Identifier: GPL-3.0+
#
@@ -13,7 +15,7 @@
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
SHELL := sh -e
@@ -21,23 +23,22 @@ PROJECT = open-infrastructure
SOFTWARE = compute-tools
PROGRAM = container
-SCRIPTS = bin/* lib/*/*
+SCRIPTS = bin/* libexec/*/*
+
+VERSION := $(shell cat VERSION.txt)
all: build
test:
- @echo -n "Checking for syntax errors"
-
+ @echo -n "Checking for syntax errors with sh... "
@for SCRIPT in $(SCRIPTS); \
do \
sh -n $${SCRIPT}; \
echo -n "."; \
done
-
@echo " done."
- @echo -n "Checking for bashisms"
-
+ @echo -n "Checking for bashisms... "
@if [ -x /usr/bin/checkbashisms ]; \
then \
for SCRIPT in $(SCRIPTS); \
@@ -48,28 +49,43 @@ test:
else \
echo "Note: devscripts not installed, skipping checkbashisms."; \
fi
+ @echo " done."
+ # FIXME: fail hard on shellcheck once all issues are fixed
+ @echo -n "Checking with shellcheck... "
+ @if [ -x /usr/bin/shellcheck ]; \
+ then \
+ for SCRIPT in $(SCRIPTS); \
+ do \
+ shellcheck $${SCRIPT} || true; \
+ echo -n "."; \
+ done; \
+ else \
+ echo "Note: shellcheck not installed, skipping shellcheck."; \
+ fi
@echo " done."
-build: share/man/*.txt
+build: share/man/*.rst
$(MAKE) -C share/man
- sed -n '/^NAME/,$$p' share/man/$(SOFTWARE).7.txt > README.txt
+ sed -n '/^===/,$$p' share/man/$(SOFTWARE).7.rst > README.txt
install: build
- mkdir -p $(DESTDIR)/etc/$(PROJECT)/$(PROGRAM)/config
- mkdir -p $(DESTDIR)/etc/$(PROJECT)/$(PROGRAM)/debconf
- mkdir -p $(DESTDIR)/etc/$(PROJECT)/$(PROGRAM)/hooks
+ mkdir -p $(DESTDIR)/etc/$(SOFTWARE)/config
+ mkdir -p $(DESTDIR)/etc/$(SOFTWARE)/debconf
+ mkdir -p $(DESTDIR)/etc/$(SOFTWARE)/hooks
+ mkdir -p $(DESTDIR)/etc/$(SOFTWARE)/keys
+ mkdir -p $(DESTDIR)/etc/${SOFTWARE}/container.conf.d
mkdir -p $(DESTDIR)/usr/bin
cp -r bin/* $(DESTDIR)/usr/bin
- mkdir -p $(DESTDIR)/usr/lib/$(PROJECT)
- cp -r lib/* $(DESTDIR)/usr/lib/$(PROJECT)
+ mkdir -p $(DESTDIR)/usr/libexec
+ cp -r libexec/* $(DESTDIR)/usr/libexec
- mkdir -p $(DESTDIR)/usr/share/$(PROJECT)/$(PROGRAM)
- cp -r VERSION.txt $(DESTDIR)/usr/share/$(PROJECT)/$(PROGRAM)
- cp -r share/config share/hooks share/scripts $(DESTDIR)/usr/share/$(PROJECT)/$(PROGRAM)
+ mkdir -p $(DESTDIR)/usr/share/$(SOFTWARE)
+ cp -r VERSION.txt $(DESTDIR)/usr/share/$(SOFTWARE)
+ cp -r share/config share/hooks share/keys share/build-scripts share/get-scripts $(DESTDIR)/usr/share/$(SOFTWARE)
mkdir -p $(DESTDIR)/usr/share/bash-completion/completions
cp -r share/bash-completion/* $(DESTDIR)/usr/share/bash-completion/completions
@@ -77,6 +93,9 @@ install: build
mkdir -p $(DESTDIR)/etc/logrotate.d
cp -r share/logrotate/* $(DESTDIR)/etc/logrotate.d
+ mkdir -p $(DESTDIR)/etc/needrestart/conf.d
+ cp -r share/needrestart/* $(DESTDIR)/etc/needrestart/conf.d
+
mkdir -p $(DESTDIR)/etc/sysctl.d
cp -r share/procps/* $(DESTDIR)/etc/sysctl.d
@@ -102,31 +121,34 @@ install: build
ln -sf container-shell.1 $(DESTDIR)/usr/share/man/man1/cntsh.1
ln -sf container $(DESTDIR)/usr/share/bash-completion/completions/cnt
- ln -sf debconf $(DESTDIR)/usr/share/$(PROJECT)/$(PROGRAM)/scripts/debian
- ln -sf debconf.d $(DESTDIR)/usr/share/$(PROJECT)/$(PROGRAM)/scripts/debian.d
- ln -sf container-create-debconf.1 $(DESTDIR)/usr/share/man/man1/container-create-debian.1
- ln -sf debconf $(DESTDIR)/usr/share/$(PROJECT)/$(PROGRAM)/scripts/progress-linux
- ln -sf debconf.d $(DESTDIR)/usr/share/$(PROJECT)/$(PROGRAM)/scripts/progress-linux.d
- ln -sf container-create-debconf.1 $(DESTDIR)/usr/share/man/man1/container-create-progress-linux.1
- ln -sf debootstrap $(DESTDIR)/usr/share/$(PROJECT)/$(PROGRAM)/scripts/mmdebstrap
- ln -sf container-create-debootstrap.1 $(DESTDIR)/usr/share/man/man1/container-create-mmdebstrap.1
-
- ln -sf create $(DESTDIR)/usr/lib/$(PROJECT)/$(PROGRAM)/cr
- ln -sf list $(DESTDIR)/usr/lib/$(PROJECT)/$(PROGRAM)/ls
- ln -sf move $(DESTDIR)/usr/lib/$(PROJECT)/$(PROGRAM)/mv
- ln -sf remove $(DESTDIR)/usr/lib/$(PROJECT)/$(PROGRAM)/rm
- ln -sf restart $(DESTDIR)/usr/lib/$(PROJECT)/$(PROGRAM)/rs
- ln -sf start $(DESTDIR)/usr/lib/$(PROJECT)/$(PROGRAM)/s
- ln -sf status $(DESTDIR)/usr/lib/$(PROJECT)/$(PROGRAM)/st
- ln -sf stop $(DESTDIR)/usr/lib/$(PROJECT)/$(PROGRAM)/t
+ ln -sf debconf $(DESTDIR)/usr/share/$(SOFTWARE)/build-scripts/debian
+ ln -sf debconf.d $(DESTDIR)/usr/share/$(SOFTWARE)/build-scripts/debian.d
+ ln -sf container-build-debconf.1 $(DESTDIR)/usr/share/man/man1/container-build-debian.1
+ ln -sf debconf $(DESTDIR)/usr/share/$(SOFTWARE)/build-scripts/progress-linux
+ ln -sf debconf.d $(DESTDIR)/usr/share/$(SOFTWARE)/build-scripts/progress-linux.d
+ ln -sf container-build-debconf.1 $(DESTDIR)/usr/share/man/man1/container-build-progress-linux.1
+ ln -sf debootstrap $(DESTDIR)/usr/share/$(SOFTWARE)/build-scripts/mmdebstrap
+ ln -sf container-build-debootstrap.1 $(DESTDIR)/usr/share/man/man1/container-build-mmdebstrap.1
+
+ ln -sf build $(DESTDIR)/usr/libexec/$(PROGRAM)/b
+ ln -sf get $(DESTDIR)/usr/libexec/$(PROGRAM)/g
+ ln -sf list $(DESTDIR)/usr/libexec/$(PROGRAM)/ls
+ ln -sf move $(DESTDIR)/usr/libexec/$(PROGRAM)/mv
+ ln -sf remove $(DESTDIR)/usr/libexec/$(PROGRAM)/rm
+ ln -sf rebuild $(DESTDIR)/usr/libexec/$(PROGRAM)/rb
+ ln -sf restart $(DESTDIR)/usr/libexec/$(PROGRAM)/rs
+ ln -sf start $(DESTDIR)/usr/libexec/$(PROGRAM)/s
+ ln -sf status $(DESTDIR)/usr/libexec/$(PROGRAM)/st
+ ln -sf stop $(DESTDIR)/usr/libexec/$(PROGRAM)/t
+ ln -sf update $(DESTDIR)/usr/libexec/$(PROGRAM)/u
mkdir -p $(DESTDIR)/lib/systemd/system
cp -r share/systemd/* $(DESTDIR)/lib/systemd/system
- mkdir -p $(DESTDIR)/var/log/$(PROJECT)
+ mkdir -p $(DESTDIR)/var/log/$(SOFTWARE)
uninstall:
- rmdir --ignore-fail-on-non-empty --parents $(DESTDIR)/var/log/$(PROJECT) || true
+ rmdir --ignore-fail-on-non-empty --parents $(DESTDIR)/var/log/$(SOFTWARE) || true
for FILE in share/systemd/*; \
do \
@@ -147,9 +169,9 @@ uninstall:
rm -f $(DESTDIR)/usr/bin/cntsh
rm -f $(DESTDIR)/usr/share/man/man1/cntsh.1
rm -f $(DESTDIR)/usr/share/bash-completion/completions/cnt
- rm -f $(DESTDIR)/usr/share/man/man1/container-create-debian.1
- rm -f $(DESTDIR)/usr/share/man/man1/container-create-progress-linux.1
- rm -f $(DESTDIR)/usr/share/man/man1/container-create-mmdebstrap.1
+ rm -f $(DESTDIR)/usr/share/man/man1/container-build-debian.1
+ rm -f $(DESTDIR)/usr/share/man/man1/container-build-progress-linux.1
+ rm -f $(DESTDIR)/usr/share/man/man1/container-build-mmdebstrap.1
for FILE in share/sudo/*; \
do \
@@ -161,6 +183,11 @@ uninstall:
rm -f $(DESTDIR)/etc/sysctl.d/$$(basename $${FILE}); \
done
+ for FILE in share/needrestart/*; \
+ do \
+ rm -f $(DESTDIR)/etc/needrestart/conf.d/$$(basename $${FILE}); \
+ done
+
for FILE in share/logrotate/*; \
do \
rm -f $(DESTDIR)/etc/logrotate.d/$$(basename $${FILE}); \
@@ -174,11 +201,11 @@ uninstall:
rm -rf $(DESTDIR)/usr/share/doc/$(SOFTWARE)
rmdir --ignore-fail-on-non-empty --parents $(DESTDIR)/usr/share/doc || true
- rm -rf $(DESTDIR)/usr/share/$(PROJECT)/$(PROGRAM)
+ rm -rf $(DESTDIR)/usr/share/$(SOFTWARE)
rmdir --ignore-fail-on-non-empty --parents $(DESTDIR)/usr/share || true
- rm -rf $(DESTDIR)/usr/lib/$(PROJECT)/$(PROGRAM)
- rmdir --ignore-fail-on-non-empty --parents $(DESTDIR)/usr/lib || true
+ rm -rf $(DESTDIR)/usr/libexec/$(PROGRAM)
+ rmdir --ignore-fail-on-non-empty --parents $(DESTDIR)/usr/libexec || true
for FILE in bin/*; \
do \
@@ -186,11 +213,12 @@ uninstall:
done
rmdir --ignore-fail-on-non-empty --parents $(DESTDIR)/usr/bin || true
- rmdir --ignore-fail-on-non-empty --parents $(DESTDIR)/etc/$(PROJECT)/$(PROGRAM)/config || true
- rmdir --ignore-fail-on-non-empty --parents $(DESTDIR)/etc/$(PROJECT)/$(PROGRAM)/debconf || true
- rmdir --ignore-fail-on-non-empty --parents $(DESTDIR)/etc/$(PROJECT)/$(PROGRAM)/hooks || true
- rmdir --ignore-fail-on-non-empty --parents $(DESTDIR)/etc/$(PROJECT)/$(PROGRAM) || true
- rmdir --ignore-fail-on-non-empty --parents $(DESTDIR)/etc/$(PROJECT) || true
+ rmdir --ignore-fail-on-non-empty --parents $(DESTDIR)/etc/$(SOFTWARE)/config || true
+ rmdir --ignore-fail-on-non-empty --parents $(DESTDIR)/etc/$(SOFTWARE)/debconf || true
+ rmdir --ignore-fail-on-non-empty --parents $(DESTDIR)/etc/$(SOFTWARE)/hooks || true
+ rmdir --ignore-fail-on-non-empty --parents $(DESTDIR)/etc/$(SOFTWARE)/keys || true
+ rmdir --ignore-fail-on-non-empty --parents $(DESTDIR)/etc/$(SOFTWARE)/container.conf.d || true
+ rmdir --ignore-fail-on-non-empty --parents $(DESTDIR)/etc/$(SOFTWARE) || true
rmdir --ignore-fail-on-non-empty --parents $(DESTDIR)/etc || true
rmdir --ignore-fail-on-non-empty --parents $(DESTDIR) || true
@@ -200,6 +228,28 @@ clean:
rm -f README.txt
-distclean:
+distclean: clean
+ rm -rf $(SOFTWARE)-$(VERSION)
reinstall: uninstall install
+
+release: distclean
+ git commit -a -s -S -m 'Releasing version $(VERSION).' || true
+ git tag -s -m 'Tagging version $(VERSION).' v$(VERSION) || true
+
+ mkdir -p $(SOFTWARE)-$(VERSION)
+ find . -mindepth 1 -maxdepth 1 -and -not -name ".git*" -and -not -name debian -and -not -name $(SOFTWARE)-$(VERSION) -exec cp \-a {} $(SOFTWARE)-$(VERSION) \;
+
+ for FORMAT in xz lzip; \
+ do \
+ EXTENSION=$$(echo $${FORMAT} | cut -b-2); \
+ tar --$${FORMAT} -cf ../$(SOFTWARE)-$(VERSION).tar.$${EXTENSION} $(SOFTWARE)-$(VERSION); \
+ sha512sum ../$(SOFTWARE)-$(VERSION).tar.$${EXTENSION} > ../$(SOFTWARE)-$(VERSION).tar.$${EXTENSION}.sha512; \
+ gpg --default-key 0xB62C61A10B93195F --armor -b ../$(SOFTWARE)-$(VERSION).tar.$${EXTENSION}; \
+ mv ../$(SOFTWARE)-$(VERSION).tar.$${EXTENSION}.asc ../$(SOFTWARE)-$(VERSION).tar.$${EXTENSION}.sig; \
+ done
+
+ rm -rf $(SOFTWARE)-$(VERSION)
+
+upload:
+ scp ../$(SOFTWARE)-$(VERSION).* get.open-infrastructure.net:/srv/get.open-infrastructure.net/software/$(SOFTWARE)/upstream