diff --git a/Makefile b/Makefile index 83d0c64..8659b60 100644 --- a/Makefile +++ b/Makefile @@ -3,15 +3,19 @@ # Please modify config.mk and not this sinclude config.mk -.PHONY: clean install uninstall all +.PHONY: clean install uninstall all tools -build: rc +build: rc tools all: build +tools: + make -C tools + rc: rc.in sed -r \ -e 's%@ETC@%$(ETC)%' \ + -e 's%@BASH_PATH@%$(BASH_PATH)%' \ rc.in > rc chmod 750 $@ @@ -19,6 +23,8 @@ rc: rc.in clean: rm rc + make -C tools clean + install: build install -dm755 $(BINDIR) install -dm755 $(ETCDIR) @@ -29,5 +35,9 @@ install: build install -m755 tools/killall5 $(BINDIR)/killall5 + make -C tools install + uninstall: rm $(BINDIR)/rc + + make -C tools uninstall diff --git a/config.mk b/config.mk index 3bee6fa..33951f3 100644 --- a/config.mk +++ b/config.mk @@ -4,5 +4,7 @@ USR ?= /usr/local ETC ?= /etc BIN ?= $(USR)/bin +BASH_PATH ?= /bin/bash + BINDIR = $(DESTDIR)$(PREFIX)$(BIN) ETCDIR = $(DESTDIR)$(PREFIX)$(ETC) diff --git a/rc.in b/rc.in index a76edd8..6ae9a1a 100644 --- a/rc.in +++ b/rc.in @@ -1,15 +1,16 @@ -#!/bin/bash +#!@BASH_PATH@ +declare -A cfg_mounts # Default virtual mounts for linux systems -cfg_mounts+=( 'proc:proc:/proc:' ) -cfg_mounts+=( 'run:tmpfs:/run:' ) -cfg_mounts+=( 'sys:sysfs:/sys:' ) +cfg_mounts[proc]='proc:/proc' +cfg_mounts[run]='tmpfs:/run' +cfg_mounts[sys]='sysfs:/sys' # devfs and its children -cfg_mounts+=( 'dev:devtmpfs:/dev:' ) -cfg_mounts+=( 'pts:devpts:/dev/pts:noexec,nosuid,gid=5,mode=0620' ) -cfg_mounts+=( 'mqueue:mqueue:/dev/mqueue:noexec,nosuid,nodev' ) -cfg_mounts+=( 'shm:tmpfs:/dev/shm:defaults,mode=0777' ) +cfg_mounts[dev]='devtmpfs:/dev' +cfg_mounts[pts]='devpts:/dev/pts:noexec,nosuid,gid=5,mode=0620' +cfg_mounts[mqueue]='mqueue:/dev/mqueue:noexec,nosuid,nodev' +cfg_mounts[shm]='tmpfs:/dev/shm:defaults,mode=0777' # Some temporary directories cfg_tmpdirs+=( '/run/lock' '/run/lock/lvm' '/run/lvm' '/run/user' ) @@ -52,8 +53,8 @@ rc.tmpfiles() { } rc.mount_misc() { - for m in "${cfg_mounts[@]}"; do - echo "$m" | while IFS=':' read fs fs_type mountpoint mount_options; do + for fs in "${!cfg_mounts[@]}"; do + echo "$fs" | while IFS=':' read fs_type mountpoint mount_options; do [[ "$mount_options" ]] || { mount_options='defaults'; } mountpoint -q "$mountpoint" || { diff --git a/tools/Makefile b/tools/Makefile new file mode 100644 index 0000000..3b2e807 --- /dev/null +++ b/tools/Makefile @@ -0,0 +1,29 @@ +# spark-rc tools makefile + +# Please modify config.mk and not this +sinclude ../config.mk + +.PHONY: clean install uninstall all + +build: killall5 + +all: build + +killall5: killall5.in + sed -r \ + -e 's%@BASH_PATH@%$(BASH_PATH)%' \ + killall5.in > killall5 + + chmod 750 $@ + +clean: + rm killall5 + +install: build + install -dm755 $(BINDIR) + install -dm755 $(ETCDIR) + + install -m750 killall5 $(BINDIR)/killall5 + +uninstall: + rm $(BINDIR)/killall5 diff --git a/tools/killall5 b/tools/killall5.in old mode 100755 new mode 100644 similarity index 97% rename from tools/killall5 rename to tools/killall5.in index efd8ac1..e3fa5a3 --- a/tools/killall5 +++ b/tools/killall5.in @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!@BASH_PATH@ # A simple reimplementation of killall5 from sysvinit-tools get_my_tree() {