summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbuild-aux/write-ifchanged25
-rwxr-xr-xtools/notsd-find-includes70
-rwxr-xr-xtools/notsd-fixup42
-rwxr-xr-xtools/notsd-fixup--includes393
-rwxr-xr-xtools/notsd-move35
5 files changed, 335 insertions, 230 deletions
diff --git a/build-aux/write-ifchanged b/build-aux/write-ifchanged
new file mode 100755
index 0000000000..185ceb0039
--- /dev/null
+++ b/build-aux/write-ifchanged
@@ -0,0 +1,25 @@
+#!/usr/bin/env bash
+# Copyright (C) 2015 Luke Shumaker
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+outfile=$1
+tmpfile="$(dirname "$outfile")/.tmp${outfile##*/}"
+
+cat > "$tmpfile" || exit $?
+if cmp -s "$tmpfile" "$outfile"; then
+ rm -f "$tmpfile" || :
+else
+ mv -f "$tmpfile" "$outfile"
+fi
diff --git a/tools/notsd-find-includes b/tools/notsd-find-includes
index 6dfb406fa3..494398b082 100755
--- a/tools/notsd-find-includes
+++ b/tools/notsd-find-includes
@@ -3,50 +3,50 @@
phase=phase0
phase0() {
- phase=phase0
- local line="$1"
- case "$line" in
- '#include'*|'typedef '*';')
- phase1 "$line"
- ;;
- *)
- ;;
- esac
+ phase=phase0
+ local line="$1"
+ case "$line" in
+ '#include'*|'typedef '*';')
+ phase1 "$line"
+ ;;
+ *)
+ ;;
+ esac
}
phase1() {
- phase=phase1
- local line="$1"
- case "$line" in
- '')
- ;;
- '#include'*)
- ;;
- 'typedef '*';')
- ;;
- *)
- phase2 "$line"
- ;;
- esac
+ phase=phase1
+ local line="$1"
+ case "$line" in
+ '')
+ ;;
+ '#include'*)
+ ;;
+ 'typedef '*';')
+ ;;
+ *)
+ phase2 "$line"
+ ;;
+ esac
}
phase2() {
- phase=phase2
- local line="$1"
- printf '%s\n' "$line"
- cat
+ phase=phase2
+ local line="$1"
+ printf '%s\n' "$line"
+ cat
}
main() {
- current_file="$1"
- set -o pipefail
- {
- IFS=''
- while read -r line; do
- "$phase" "$line"
- IFS=''
- done
- } < "$current_file" | grep '^#include' | ifne printf '%s\n' "$current_file"
+ current_file="$1"
+ set -o pipefail
+ {
+ IFS=''
+ while read -r line; do
+ "$phase" "$line"
+ IFS=''
+ done
+ } < "$current_file" | grep '^#include' | ifne printf '%s\n' "$current_file"
}
main "$@"
diff --git a/tools/notsd-fixup b/tools/notsd-fixup
index feec1b8921..77df56fff4 100755
--- a/tools/notsd-fixup
+++ b/tools/notsd-fixup
@@ -1,25 +1,45 @@
#!/usr/bin/env bash
+# The reason we do `find`/`while read`-loops instead of `find -exec` commands
+# is that we want errors from the inner loop to bubble up.
+
fixup_makefiles() (
- find -type f -name Makefile|while read -r filename; do
- sed -r -i "s|(/\.\.)*/config.mk|/$(realpath -ms --relative-to="${filename%/*}" config.mk)|" "$filename"
+ find "$@" -type f -name Makefile | while read -r filename; do
+ {
+ <"$filename" sed -r \
+ -e "s|(/\.\.)*/config.mk|/$(realpath -ms --relative-to="$(dirname -- "$filename")" config.mk)|" \
+ -e '/^nested\.subdirs/d' \
+ -e '/^include \$\(topsrcdir\)\/build-aux\/Makefile\.tail\.mk$/d'
+ echo
+ find "$(dirname "$filename")" -mindepth 2 -maxdepth 2 -name Makefile -print0 |
+ xargs -r0 dirname -z -- |
+ xargs -r0 basename -a -z |
+ xargs -r0 printf 'nested.subdirs += %s\n' | sort
+ echo
+ echo 'include $(topsrcdir)/build-aux/Makefile.tail.mk'
+ } | cat -s | build-aux/write-ifchanged "$filename"
done
)
fixup_includes() (
- find $(find . -type d -name include) -type d | while read -r dir; do
- lib="${dir##*/}"
- pushd "$dir"
- find . -type f -exec sed -ri -e "s|$lib/||" -- {} +
- popd
- done
+ find $(find . -type d -name include) -type d | while read -r dir; do
+ lib="${dir##*/}"
+ pushd "$dir" >/dev/null
+ find . -type f -exec sed -ri -e "s|$lib/||" -- {} +
+ popd >/dev/null
+ done
- find src \( -name '*.h' -o -name '*.c' \) -type f -exec "$0"--includes {} \;
+ find "$@" \( -name '*.h' -o -name '*.c' -o -name '*.gperf' \) -type f | while read -r filename; do
+ "$0"--includes "$filename"
+ done
)
main() {
- fixup_makefiles
- fixup_includes
+ set -e
+ set -o pipefail
+ export LC_COLLATE=C
+ fixup_makefiles "$@"
+ fixup_includes "$@"
}
main "$@"
diff --git a/tools/notsd-fixup--includes b/tools/notsd-fixup--includes
index 957733cdc0..315be32c8d 100755
--- a/tools/notsd-fixup--includes
+++ b/tools/notsd-fixup--includes
@@ -1,12 +1,12 @@
#!/usr/bin/env bash
panic() {
- >&2 echo panic
- exit 2
+ >&2 echo panic
+ exit 2
}
out() {
- printf '%q ' "$@"
+ printf '%q ' "$@"
}
# system
@@ -15,201 +15,226 @@ out() {
# protected
# private
classify() {
- local path=$1
- if [[ "$path" = linux/* ]]; then
- out linux "$path"
- elif [[ -f "${current_file%/*}/${path}" ]]; then
- out private "$path"
- elif [[ "$path" != systemd/* ]] &&
- [[ "$path" != libudev.h ]] &&
- cpp -include "$path" <<<'' &>/dev/null;
- then
- out system "$path"
- else
- case "$path" in
- asm/sgidefs.h|dbus/dbus.h|efi.h|efilib.h|gio/gio.h|glib.h|libmount.h)
- out system "$path"
- ;;
- util.h|*/util.h)
- if [[ "$current_file" = */systemd-boot/* ]]; then
- out private util.h
- else
- out protected basic/util.h
- fi
- ;;
- *)
- file=$(find src -type f -name "${path##*/}")
- if [[ -f "$file" ]]; then
- case "$file" in
- */src/*)
- if [[ "${current_file%/*}" = "${file%/*}" ]]; then
- out private "${file##*/}"
- else
- out protected "${file##*/src/}"
- fi
- ;;
- */libsystemd/include/*|*/libudev/include/*)
- out public "${file##*/include/}"
- ;;
- */include/*)
- out protected "${file##*/include/}"
- ;;
- *)
- if [[ "${current_file%/*}" = "${file%/*}" ]]; then
- out private "${file##*/}"
- else
- out protected "${file##*/}"
- fi
- ;;
- esac
- else
- >&2 printf 'Cannot figure out: %q\n' "$path"
- exit 2
- fi
- ;;
- esac
- fi
+ local path=$1
+ if [[ "$path" = linux/* ]]; then
+ out linux "$path"
+ elif [[ -f "${current_file%/*}/${path}" ]]; then
+ out private "$path"
+ elif [[ "$path" != systemd/* ]] &&
+ [[ "$path" != libudev.h ]] &&
+ cpp -include "$path" <<<'' &>/dev/null; then
+ out system "$path"
+ else
+ case "$path" in
+ *-to-name.h|*-from-name.h)
+ base="${path##*/}"
+ base="${base%-to-name.h}"
+ base="${base%-from-name.h}"
+ case "$base" in
+ dns_type) d=src/grp-resolve/systemd-resolved;;
+ keyboard-keys) d=src/grp-udev/libudev-core;;
+ af|arphrd|cap|errno) d=src/libbasic/include/basic;;
+ audit_type) d=src/libsystemd/src/sd-journal;;
+ *)
+ >&2 printf 'Unknown gperf base: %q\n' "$base"
+ >&2 printf 'Cannot figure out: %q\n' "$path"
+ exit 2
+ ;;
+ esac
+ file="$d/${path##*/}"
+ if [[ "$current_file" = "$d"/* ]]; then
+ out private "${file##*/}"
+ elif [[ "$file" = */include/* ]]; then
+ out protected "${file##*/include/}"
+ else
+ out protected "${file##*/}"
+ fi
+ ;;
+ asm/sgidefs.h|dbus/dbus.h|efi.h|efilib.h|gio/gio.h|glib.h|libmount.h)
+ out system "$path"
+ ;;
+ util.h|*/util.h)
+ if [[ "$current_file" = */systemd-boot/* ]]; then
+ out private util.h
+ else
+ out protected basic/util.h
+ fi
+ ;;
+ *)
+ file=$(find src -type f -name "${path##*/}")
+ if [[ -f "$file" ]]; then
+ case "$file" in
+ */src/*)
+ if [[ "${current_file%/*}" = "${file%/*}" ]]; then
+ out private "${file##*/}"
+ else
+ out protected "${file##*/src/}"
+ fi
+ ;;
+ */libsystemd/include/*|*/libudev/include/*)
+ out public "${file##*/include/}"
+ ;;
+ */include/*)
+ out protected "${file##*/include/}"
+ ;;
+ *)
+ if [[ "${current_file%/*}" = "${file%/*}" ]]; then
+ out private "${file##*/}"
+ else
+ out protected "${file##*/}"
+ fi
+ ;;
+ esac
+ else
+ >&2 printf 'Cannot figure out: %q\n' "$path"
+ exit 2
+ fi
+ ;;
+ esac
+ fi
}
phase=phase0
hook=:
phase0() {
- phase=phase0
- hook=:
- local line="$1"
- case "$line" in
- '#include'*|'typedef '*';')
- phase1 "$line"
- ;;
- *)
- printf '%s\n' "$line"
- ;;
- esac
+ phase=phase0
+ hook=:
+ local line="$1"
+ case "$line" in
+ '#include'*|'typedef '*';')
+ phase1 "$line"
+ ;;
+ *)
+ printf '%s\n' "$line"
+ ;;
+ esac
}
-phase1_tail=
-system=()
-linux=()
-public=()
-protected=()
-typedef=(); typedef_last=true
-private=()
+phase1_init() {
+ phase1_tail=
+ system=()
+ linux=()
+ public=()
+ protected=()
+ typedef=(); typedef_last=true
+ private=()
+}
+phase1_init
phase1_flush() {
- local b=:
- if [[ ${#system[@]} -gt 0 ]]; then
- printf '%s\n' "${system[@]}" | sort -u
- b=echo
- fi
- if [[ ${#linux[@]} -gt 0 ]]; then
- $b
- printf '%s\n' "${linux[@]}"
- b=echo
- fi
- if [[ ${#public[@]} -gt 0 ]]; then
- $b
- printf '%s\n' "${public[@]}" | sort -u
- b=echo
- fi
- if [[ ${#protected[@]} -gt 0 ]]; then
- $b
- printf '%s\n' "${protected[@]}" | sort -u
- b=echo
- fi
- if [[ ${#typedef[@]} -gt 0 ]] && ! $typedef_last; then
- $b
- printf '%s\n' "${typedef[@]}" | sort -u
- b=echo
- fi
- if [[ ${#private[@]} -gt 0 ]]; then
- $b
- printf '%s\n' "${private[@]}" | sort -u
- b=echo
- fi
- if [[ ${#typedef[@]} -gt 0 ]] && $typedef_last; then
- $b
- printf '%s\n' "${typedef[@]}"
- fi
- printf '%s' "$phase1_tail"
+ local b=:
+ if [[ ${#system[@]} -gt 0 ]]; then
+ printf '%s\n' "${system[@]}" | sort -u
+ b=echo
+ fi
+ if [[ ${#linux[@]} -gt 0 ]]; then
+ $b
+ printf '%s\n' "${linux[@]}"
+ b=echo
+ fi
+ if [[ ${#public[@]} -gt 0 ]]; then
+ $b
+ printf '%s\n' "${public[@]}" | sort -u
+ b=echo
+ fi
+ if [[ ${#protected[@]} -gt 0 ]]; then
+ $b
+ printf '%s\n' "${protected[@]}" | sort -u
+ b=echo
+ fi
+ if [[ ${#typedef[@]} -gt 0 ]] && ! $typedef_last; then
+ $b
+ printf '%s\n' "${typedef[@]}" | sort -u
+ b=echo
+ fi
+ if [[ ${#private[@]} -gt 0 ]]; then
+ $b
+ printf '%s\n' "${private[@]}" | sort -u
+ b=echo
+ fi
+ if [[ ${#typedef[@]} -gt 0 ]] && $typedef_last; then
+ $b
+ printf '%s\n' "${typedef[@]}"
+ fi
+ printf '%s' "$phase1_tail"
+ phase1_init
}
phase1() {
- phase=phase1
- hook=phase1_flush
- local line="$1"
- case "$line" in
- '')
- phase1_tail+=$'\n'
- ;;
- '#include'*)
- phase1_tail=''
- local re='^#include [<"]([^">]*)[">](.*)'
- if [[ "$line" =~ $re ]]; then
- IFS=' '
- local buf
- buf="$(classify "${BASH_REMATCH[1]}")" || panic
- read -r class path <<<"$buf"
- case "$class" in
- system)
- printf -v line '#include <%s>%s' "$path" "${BASH_REMATCH[2]}"
- system+=("$line")
- ;;
- linux)
- printf -v line '#include <%s>%s' "$path" "${BASH_REMATCH[2]}"
- linux+=("$line")
- ;;
- public)
- printf -v line '#include <%s>%s' "$path" "${BASH_REMATCH[2]}"
- public+=("$line")
- ;;
- protected)
- printf -v line '#include "%s"%s' "$path" "${BASH_REMATCH[2]}"
- protected+=("$line")
- ;;
- private)
- if [[ ${#typedef[@]} -gt 0 ]]; then
- typedef_last=false
- fi
- printf -v line '#include "%s"%s' "$path" "${BASH_REMATCH[2]}"
- private+=("$line")
- ;;
- esac
- else
- panic
- fi
- ;;
- 'typedef '*';')
- phase1_tail=''
- typedef+=("$line")
- ;;
- *)
- phase1_flush
- phase2 "$line"
- ;;
- esac
-}
-
-phase2() {
- phase=phase2
- hook=:
- local line="$1"
- printf '%s\n' "$line"
- cat
+ phase=phase1
+ hook=phase1_flush
+ local line="$1"
+ case "$line" in
+ '')
+ phase1_tail+=$'\n'
+ ;;
+ '#include'*)
+ phase1_tail=''
+ local re='^#include [<"]([^">]*)[">](.*)'
+ if [[ "$line" =~ $re ]]; then
+ IFS=' '
+ local buf
+ buf="$(classify "${BASH_REMATCH[1]}")" || panic
+ read -r class path <<<"$buf"
+ case "$class" in
+ system)
+ printf -v line '#include <%s>%s' "$path" "${BASH_REMATCH[2]}"
+ system+=("$line")
+ ;;
+ linux)
+ printf -v line '#include <%s>%s' "$path" "${BASH_REMATCH[2]}"
+ linux+=("$line")
+ ;;
+ public)
+ printf -v line '#include <%s>%s' "$path" "${BASH_REMATCH[2]}"
+ public+=("$line")
+ ;;
+ protected)
+ printf -v line '#include "%s"%s' "$path" "${BASH_REMATCH[2]}"
+ protected+=("$line")
+ ;;
+ private)
+ if [[ ${#typedef[@]} -gt 0 ]]; then
+ typedef_last=false
+ fi
+ printf -v line '#include "%s"%s' "$path" "${BASH_REMATCH[2]}"
+ private+=("$line")
+ ;;
+ esac
+ else
+ panic
+ fi
+ ;;
+ 'typedef '*';')
+ phase1_tail=''
+ typedef+=("$line")
+ ;;
+ *)
+ phase1_flush
+ phase0 "$line"
+ ;;
+ esac
}
main() {
- current_file="$1"
- printf ' => %s\n' "$current_file"
- set -o pipefail
- trap 'rm -f -- "$current_file.tmp"' EXIT
- {
- IFS=''
- while read -r line; do
- "$phase" "$line"
- IFS=''
- done
- "$hook"
- } < "$current_file" > "$current_file.tmp"
- mv -Tf "$current_file.tmp" "$current_file"
+ current_file="$1"
+ printf ' => %q %q\n' "$0" "$current_file"
+ set -o pipefail
+ trap 'rm -f -- "$current_file.tmp"' EXIT
+ {
+ IFS=''
+ while read -r line; do
+ "$phase" "$line"
+ IFS=''
+ done
+ "$hook"
+ } < "$current_file" > "$current_file.tmp"
+ # I specificially don't use write-ifchanged because I don't want the
+ # temporary file to have the .c suffix.
+ if cmp -s "$current_file.tmp" "$current_file"; then
+ rm -f "$current_file.tmp" || :
+ else
+ mv -Tf "$current_file.tmp" "$current_file"
+ fi
}
main "$@"
diff --git a/tools/notsd-move b/tools/notsd-move
index 5ae639fe26..bf0646528f 100755
--- a/tools/notsd-move
+++ b/tools/notsd-move
@@ -706,6 +706,41 @@ breakup_makefile() (
src/libsystemd/src/Makefile \
src/libsystemd/src/sd-journal/Makefile \
src/grp-udev/libudev-core/Makefile
+
+ ln -sT ../grp-system/libcore/mount-setup.h src/systemd-remount-fs/mount-setup.h
+ ln -sT ../grp-system/libcore/mount-setup.c src/systemd-remount-fs/mount-setup.c
+ ln -sT ../libcore/mount-setup.h src/grp-system/systemd-shutdown/mount-setup.h
+ ln -sT ../libcore/mount-setup.c src/grp-system/systemd-shutdown/mount-setup.c
+ ln -sT ../libcore/killall.h src/grp-system/systemd-shutdown/killall.h
+ ln -sT ../libcore/killall.c src/grp-system/systemd-shutdown/killall.c
+ ln -sT ../../libcore/mount-setup.h src/grp-system/grp-utils/systemd-fstab-generator/mount-setup.h
+ ln -sT ../../libcore/mount-setup.c src/grp-system/grp-utils/systemd-fstab-generator/mount-setup.c
+ ln -sT ../grp-system/libcore/mount-setup.h src/systemd-nspawn/mount-setup.h
+ ln -sT ../grp-system/libcore/loopback-setup.h src/systemd-nspawn/loopback-setup.h
+ ln -sT ../grp-system/libcore/loopback-setup.c src/systemd-nspawn/loopback-setup.c
+ ln -sT ../grp-system/libcore/machine-id-setup.h src/systemd-nspawn/machine-id-setup.h
+ ln -sT ../grp-system/libcore/machine-id-setup.c src/systemd-nspawn/machine-id-setup.c
+ ln -sT ../grp-system/libcore/mount-setup.c src/systemd-nspawn/mount-setup.c
+ ln -sT ../../../libsystemd/include/systemd/_sd-common.h src/libsystemd-network/include/systemd-network/_sd-common.h
+ ln -sT ../../libsystemd/include/systemd/_sd-common.h src/grp-utils/systemd-path/_sd-common.h
+ ln -sT ../../grp-login/systemd-logind/logind-acl.h src/grp-udev/libudev-core/logind-acl.h
+ ln -sT ../../libsystemd/src/sd-login/sd-login.c src/grp-udev/libudev-core/sd-login.c
+ ln -sT ../../grp-login/systemd-logind/logind-acl.c src/grp-udev/libudev-core/logind-acl.c
+ ln -sT ../../../libshared/include/shared/gcrypt-util.h src/libsystemd/src/sd-journal/gcrypt-util.h
+ ln -sT ../../../libshared/src/gcrypt-util.c src/libsystemd/src/sd-journal/gcrypt-util.c
+ ln -sT ../grp-system/libcore/machine-id-setup.h src/systemd-machine-id-setup/machine-id-setup.h
+ ln -sT ../grp-system/libcore/machine-id-setup.c src/systemd-machine-id-setup/machine-id-setup.c
+
+ ln -sT ../subdir.mk src/libsystemd/src/sd-network/Makefile
+ ln -sT ../subdir.mk src/libsystemd/src/sd-bus/Makefile
+ ln -sT ../subdir.mk src/libsystemd/src/sd-event/Makefile
+ ln -sT ../subdir.mk src/libsystemd/src/sd-login/Makefile
+ ln -sT ../subdir.mk src/libsystemd/src/sd-resolve/Makefile
+ ln -sT ../subdir.mk src/libsystemd/src/sd-daemon/Makefile
+ ln -sT ../subdir.mk src/libsystemd/src/sd-netlink/Makefile
+ ln -sT ../subdir.mk src/libsystemd/src/sd-id128/Makefile
+ ln -sT ../subdir.mk src/libsystemd/src/sd-hwdb/Makefile
+ ln -sT ../subdir.mk src/libsystemd/src/sd-device/Makefile
)
fixup_makefile() {