summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@sbcglobal.net>2016-10-27 00:07:35 -0400
committerLuke Shumaker <lukeshu@sbcglobal.net>2016-10-27 00:07:35 -0400
commit93fd8d3a035f6acb134adff0d6b34e7fba5e72af (patch)
treec90c8871f6fcf184651c266eff8075085987977e /tools
parent7b997776df38e196b4a779ee4e6be3acd0a363e2 (diff)
parentf0f1df7d0a18ba2db795a610f27c1922cdbf6ed6 (diff)
Merge branch 'notsystemd/postmove' into notsystemd/master
Diffstat (limited to 'tools')
-rw-r--r--tools/.gitignore1
-rwxr-xr-xtools/notsd-find-renames2
-rwxr-xr-xtools/notsd-fixup57
-rwxr-xr-xtools/notsd-fixup--includes540
-rwxr-xr-xtools/notsd-fixup--makefiles30
-rwxr-xr-xtools/notsd-move179
6 files changed, 468 insertions, 341 deletions
diff --git a/tools/.gitignore b/tools/.gitignore
new file mode 100644
index 0000000000..4bba404d19
--- /dev/null
+++ b/tools/.gitignore
@@ -0,0 +1 @@
+/notsd-fixup--includes.cache
diff --git a/tools/notsd-find-renames b/tools/notsd-find-renames
new file mode 100755
index 0000000000..fe90e325f6
--- /dev/null
+++ b/tools/notsd-find-renames
@@ -0,0 +1,2 @@
+#!/bin/sh
+git diff --find-renames -l1000 --stat=300,290 "${1:-notsystemd/postmove}" "${2:-notsystemd/master}" |sed -n '/=>/s/\s*|.*//p' \ No newline at end of file
diff --git a/tools/notsd-fixup b/tools/notsd-fixup
index 99ae0981a3..71b3bf4dfa 100755
--- a/tools/notsd-fixup
+++ b/tools/notsd-fixup
@@ -1,50 +1,25 @@
#!/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
- {
- <"$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() (
- dirs=($(find "$@" -type d -name include))
- if [[ ${#dirs[@]} -gt 0 ]]; then
- find "${dirs[@]}" -type d | while read -r dir; do
- printf '=> libdir %q\n' "$dir"
- lib="${dir##*/}"
- find "$dir" -type f | while read -r filename; do
- printf ' => sed -ir %q %q\n' "s|$lib/||" "$filename"
- sed -r "s|$lib/||" < "$filename" | build-aux/write-ifchanged "$filename"
- done
- done
- fi
-
- find "$@" \( -name '*.h' -o -name '*.c' -o -name '*.gperf' \) -type f | while read -r filename; do
- "$0"--includes "$filename"
- done
-)
+# Copyright (C) 2015-2016 Luke Shumaker
main() {
set -e
set -o pipefail
export LC_COLLATE=C
- fixup_makefiles "$@"
- fixup_includes "$@"
+
+ # We wrap the programs called by xargs with `sh` because xargs only exits early
+ # if the status is 255, but we want to exit early for all non-zero statuses.
+ # We use xargs instead of `find -exec` because `-exec` won't do much of
+ # anything useful with the exit status.
+
+ # Makefiles
+ find "$@" -type f -name Makefile -print0 |
+ xargs -r0 sh -c "$0--makefiles \"\$@\" || exit 255" --
+
+ # C includes
+ rm -rf -- "$0"--includes.cache
+ find "$@" \( -name '*.h' -o -name '*.c' -o -name '*.gperf' -o -name '*.gperf.m4' \) -type f -print0 |
+ xargs -r0 sh -c "$0--includes \"\$@\" || exit 255" --
+ rm -rf -- "$0"--includes.cache
}
main "$@"
diff --git a/tools/notsd-fixup--includes b/tools/notsd-fixup--includes
index 33218233d5..a636c78be6 100755
--- a/tools/notsd-fixup--includes
+++ b/tools/notsd-fixup--includes
@@ -1,235 +1,305 @@
-#!/usr/bin/env bash
-
-panic() {
- >&2 echo panic
- exit 2
-}
-
-out() {
- printf '%q ' "$@"
-}
-
-# system
-# linux
-# public
-# 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
- *-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/libsystemd-basic/src;;
- 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 systemd-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/}"
- ;;
- */include-staging/*)
- out protected "${file##*/include-staging/}"
- ;;
- *)
- 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
-}
-
-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"
- 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
- phase0 "$line"
- ;;
- esac
-}
-
-main() {
- current_file="$1"
- printf ' => %q %q\n' "$0" "$current_file"
- set -o pipefail
- {
- IFS=''
- while read -r line; do
- "$phase" "$line"
- IFS=''
- done
- "$hook"
- } < "$current_file" | build-aux/write-ifchanged "$current_file"
-}
-
-main "$@"
+#!/usr/bin/env python3
+
+# If you are thinking "this file looks gross!", it is. It
+# started out as a set of Bash one-liners. Which got turned
+# into a script. Which grew somewhat organically. Not huge,
+# but given that it started as some one liners, that's not a
+# very pretty several hunderd lines. Then got fairly litterally
+# translated into this, for speed. So yes, it is gross.
+# Rewrites welcome; just don't introduce any behavioral changes
+# (easy since `tools/notsd-move` runs it on the entire repo and
+# puts the results in git history).
+
+import atexit
+import filecmp
+import json
+import os
+import re
+import shlex
+import subprocess
+import sys
+
+################################################################
+# Everything else in this program is just fluff and bookkeeping
+# around around calling classify().
+
+# Return a tuple of (class/group, path); which is a class that
+# the header path belongs to, and a normalized path for it.
+#
+# There are a fixed number of classes that it may put a header
+# in; in order of most-public to most-private:
+#
+# system
+# linux
+# public
+# protected
+# private
+def classify(expensive, current_file, path):
+ if re.fullmatch('.*/include(-staging)?/.*/.*', current_file):
+ lib = os.path.basename(os.path.dirname(current_file))
+ if path.startswith(lib+'/'):
+ path = re.sub('^'+lib+'/', path)
+ if path.startswith('linux/'):
+ return 'linux', path
+ elif expensive.exists(os.path.join(os.path.dirname(current_file), path)):
+ return 'private', path
+ elif not path.startswith('systemd/') and path != 'libudev.h' and expensive.cpp(path):
+ return 'system', path
+ else:
+ if path.endswith('-to-name.h') or path.endswith('-from-name.h'):
+ base = re.fullmatch('(.*)-(to|from)-name\.h', os.path.basename(path)).group(1)
+ d={
+ 'dns_type' : 'src/grp-resolve/systemd-resolved',
+ 'keyboard-keys' : 'src/grp-udev/libudev-core',
+ 'af' : 'src/libsystemd-basic/src',
+ 'arphrd' : 'src/libsystemd-basic/src',
+ 'cap' : 'src/libsystemd-basic/src',
+ 'errno' : 'src/libsystemd-basic/src',
+ 'audit_type' : 'src/libsystemd/src/sd-journal',
+ }
+ file = os.path.join(d[base], os.path.basename(path))
+ if current_file.startswith(d[base]):
+ return 'private', os.path.basename(file)
+ elif '/include/' in file:
+ return 'protected', re.sub('.*/include/', '', file)
+ else:
+ return 'protected', os.path.basename(file)
+ elif path in [ 'asm/sgidefs.h', 'dbus/dbus.h', 'efi.h', 'efilib.h', 'gio/gio.h', 'glib.h', 'libmount.h' ]:
+ return 'system', path
+ elif os.path.basename(path) == 'util.h':
+ if '/systemd-boot/' in current_file:
+ return 'private', 'util.h'
+ else:
+ return 'protected', 'systemd-basic/util.h'
+ else:
+ find = expensive.find(os.path.basename(path))
+ if len(find) == 1:
+ file = find[0]
+ if '/src/' in file:
+ if os.path.dirname(current_file) == os.path.dirname(file):
+ return 'private', os.path.basename(file)
+ else:
+ return 'protected', re.sub('.*/src/', '', file)
+ elif ('/libsystemd/include/' in file) or ('/libudev/include/' in file):
+ return 'public', re.sub('.*/include/', '', file)
+ elif '/include/' in file:
+ return 'protected', re.sub('.*/include/', '', file)
+ elif '/include-staging/' in file:
+ return 'protected', re.sub('.*/include-staging/', '', file)
+ else:
+ if os.path.dirname(current_file) == os.path.dirname(file):
+ return 'private', os.path.basename(file)
+ else:
+ return 'protected', os.path.basename(file)
+ else:
+ sys.exit('Cannot figure out: {0}'.format(path))
+
+################################################################
+# Cache expensive things
+
+class Cache:
+ def __init__(self, filename):
+ self.cache = {
+ 'find': None,
+ 'cpp': {}
+ }
+ self.dirty = True
+
+ if os.path.isfile(filename):
+ with open(filename) as file:
+ self.cache = json.load(file)
+ self.dirty = False
+
+ def save(self, filename):
+ if self.dirty:
+ with open(filename, 'w') as file:
+ json.dump(self.cache, file)
+
+ def real_cpp(path):
+ # `cpp -include "$path" <<<'' &>/dev/null`
+ print(' -> cpp({0})'.format(path), file=sys.stderr)
+ with subprocess.Popen(['cpp', '-include', path],
+ stdin=subprocess.PIPE,
+ stdout=subprocess.DEVNULL,
+ stderr=subprocess.DEVNULL) as proc:
+ proc.stdin.close()
+ return proc.wait() == 0
+
+ def real_find():
+ # This can probably be done with os.walk or something,
+ # but since it is only called once, it isn't a good
+ # place to start optimizing.
+ #
+ # `find src -name '*.h' \( -type l -printf 'l %p\n' -o -type f -printf 'f %p\n' \)`
+ print(' -> find()', file=sys.stderr)
+ ret = {}
+ with subprocess.Popen(['find', 'src', '-name', '*.h', '(', '-type', 'l', '-printf', 'l %p\n', '-o', '-type', 'f', '-printf', 'f %p\n', ')'],
+ stdin=subprocess.DEVNULL,
+ stdout=subprocess.PIPE, universal_newlines=True,
+ stderr=subprocess.DEVNULL) as proc:
+ for line in proc.stdout:
+ t, p = line.rstrip('\n').split(' ', 1)
+ ret[p]=t
+ return ret
+
+ def cpp(self, path):
+ # `cpp -include "$path" <<<'' &>/dev/null`
+ if path not in self.cache['cpp']:
+ self.cache['cpp'][path] = Cache.real_cpp(path)
+ self.dirty = True
+ return self.cache['cpp'][path]
+
+ def exists(self, path):
+ # `test -f "$path"`
+ if not self.cache['find']:
+ self.cache['find'] = Cache.real_find()
+ self.dirty = True
+ return path in self.cache['find']
+
+ def find(self, name):
+ # `find src -type f -name "$name"`
+ if not self.cache['find']:
+ self.cache['find'] = Cache.real_find()
+ self.dirty = True
+ return [p for p in self.cache['find'].keys() if self.cache['find'][p]=='f' and os.path.basename(p) == name]
+
+################################################################
+# Data structure for storing a chunk of `#include` lines.
+
+class IncludeSection:
+ def __init__(self):
+ self.trailing_nl = ''
+ self.system = []
+ self.linux = []
+ self.public = []
+ self.protected = []
+ self.typedef = []
+ self.typedef_last = True
+ self.private = []
+ def print(self, file=sys.stdout):
+ b=''
+ if len(self.system) > 0:
+ for line in sorted(set(self.system)):
+ print(line, file=file)
+ b='\n'
+ if len(self.linux) > 0:
+ print(b, end='', file=file)
+ for line in self.linux:
+ print(line, file=file)
+ b='\n'
+ if len(self.public) > 0:
+ print(b, end='', file=file)
+ for line in sorted(set(self.public)):
+ print(line, file=file)
+ b='\n'
+ if len(self.protected) > 0:
+ print(b, end='', file=file)
+ for line in sorted(set(self.protected)):
+ print(line, file=file)
+ b='\n'
+ if len(self.typedef) > 0 and not self.typedef_last:
+ print(b, end='', file=file)
+ for line in sorted(set(self.typedef)):
+ print(line, file=file)
+ b='\n'
+ if len(self.private) > 0:
+ print(b, end='', file=file)
+ for line in sorted(set(self.private)):
+ print(line, file=file)
+ b='\n'
+ if len(self.typedef) > 0 and self.typedef_last:
+ print(b, end='', file=file)
+ for line in self.typedef:
+ print(line, file=file)
+ print(self.trailing_nl, end='', file=file)
+ def add(self, group, path, extra):
+ if group == 'system':
+ self.system.append('#include <{0}>{1}'.format(path, extra))
+ elif group == 'linux':
+ self.linux.append('#include <{0}>{1}'.format(path, extra))
+ elif group == 'public':
+ self.public.append('#include <{0}>{1}'.format(path, extra))
+ elif group == 'protected':
+ self.protected.append('#include "{0}"{1}'.format(path, extra))
+ elif group == 'private':
+ if len(self.typedef) > 0:
+ self.typedef_last = False
+ self.private.append('#include "{0}"{1}'.format(path, extra))
+ else:
+ sys.exit('panic: unrecognized line class: {0}'.format(group))
+
+################################################################
+# The main program loop
+
+class Parser:
+ def __init__(self, cache, ifilename, ofilename):
+ self.cache = cache
+ self.ifilename = os.path.normpath(ifilename)
+ self.ofilename = ofilename
+
+ self.includes = None
+ self.phase = self.phase0
+
+ def phase0(self, line, ofile):
+ self.phase = self.phase0
+
+ if re.fullmatch('#include.*|typedef .*;', line):
+ self.includes = IncludeSection()
+ self.phase1(line, ofile)
+ else:
+ print(line, file=ofile)
+
+ def phase1(self, line, ofile):
+ self.phase = self.phase1
+
+ if line == '':
+ self.includes.trailing_nl += '\n'
+ elif line.startswith('#include'):
+ self.includes.trailing_nl = ''
+ match = re.fullmatch('^#include [<"]([^">]*)[">](.*)', line)
+ if match:
+ group, path = classify(self.cache, self.ifilename, match.group(1))
+ self.includes.add(group, path, match.group(2))
+ else:
+ sys.exit('panic: malformed #include line')
+ elif re.fullmatch('typedef .*;', line):
+ self.includes.trailing_nl = ''
+ self.includes.typedef.append(line)
+ else:
+ self.includes.print(file=ofile)
+ self.includes = None
+ self.phase0(line, ofile)
+
+ def run(self):
+ print(' => {0} {1}'.format(
+ shlex.quote(__file__),
+ shlex.quote(self.ifilename),
+ ), file=sys.stderr)
+ with open(self.ofilename, 'w') as ofile:
+ with open(self.ifilename) as ifile:
+ for line in ifile:
+ self.phase(line.rstrip('\n'), ofile)
+ if self.includes:
+ self.includes.print(file=ofile)
+
+def main(argv):
+ cache = Cache(__file__+'.cache')
+ tmpfilename = ''
+ def cleanup():
+ if tmpfilename != '':
+ try:
+ os.unlink(tmpfilename)
+ except FileNotFoundError:
+ pass
+ atexit.register(cleanup)
+ for filename in argv[1:]:
+ tmpfilename = os.path.join(os.path.dirname(filename), '.tmp.'+os.path.basename(filename)+'.tmp')
+ Parser(cache, filename, tmpfilename).run()
+ if not filecmp.cmp(filename, tmpfilename):
+ os.rename(tmpfilename, filename)
+ cleanup()
+ tmpfilename = ''
+ cache.save(__file__+'.cache')
+
+if __name__ == '__main__':
+ main(sys.argv)
diff --git a/tools/notsd-fixup--makefiles b/tools/notsd-fixup--makefiles
new file mode 100755
index 0000000000..f89e4b075b
--- /dev/null
+++ b/tools/notsd-fixup--makefiles
@@ -0,0 +1,30 @@
+#!/usr/bin/env bash
+
+doit() {
+ local filename=$1
+ {
+ <"$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"
+}
+
+main() {
+ set -e
+ set -o pipefail
+ local filename
+ for filename in "$@"; do
+ >&2 printf ' => %q %q\n' "$0" "$filename"
+ doit "$filename"
+ done
+}
+
+main "$@"
diff --git a/tools/notsd-move b/tools/notsd-move
index 2f6ad3f1b0..36ca546a63 100755
--- a/tools/notsd-move
+++ b/tools/notsd-move
@@ -10,23 +10,30 @@ in_array() (
return 1 # Not Found
)
-split_lib() {
+split_lib() (
+ shopt -s nullglob
local d=$1
+ local t
- local t=("$d"/test-*)
- if [[ -f ${t[0]} ]]; then
+ if t=("$d"/test-*) && [[ ${#t[@]} -gt 0 ]]; then
mkdir "$d/test"
- mv "$d"/test-* -t "$d/test"
+ mv -t "$d/test" -- "${t[@]}"
fi
- mkdir "$d/src"
- mv "$d"/*.c -t "$d/src"
+ if t=("$d"/*.c) && [[ ${#t[@]} -gt 0 ]]; then
+ mkdir "$d/src"
+ mv -t "$d/src" -- "${t[@]}"
+ fi
- local h=${d##*/lib}
- mkdir "$d/include"
- mkdir "$d/include/$h"
- mv "$d"/*.h -t "$d/include/$h"
-}
+ if t=("$d"/*.h) && [[ ${#t[@]} -gt 0 ]]; then
+ local h=${d##*/lib}
+ mkdir "$d/include"
+ mkdir "$d/include/$h"
+ mv -t "$d/include/$h" -- "${t[@]}"
+ else
+ return 1
+ fi
+)
grp() {
local grp=$1
@@ -41,7 +48,6 @@ grp() {
move_files() (
# first focus on getting directories to the right names.
- mv -T src/{,systemd-}dbus1-generator
mv -T src/{,systemd-}debug-generator
mv -T src/{,systemd-}fstab-generator
mv -T src/{,systemd-}getty-generator
@@ -119,21 +125,49 @@ move_files() (
src/core/umount*
mv -T src/{,lib}core
- mv -T src/{,lib}basic
- mv -T src/{,lib}shared
+ mv -T src/{,libsystemd-}basic
+ mv -T src/{,libsystemd-}shared
- mv -T src/lib{shared,core}/linux
+ mv -T src/lib{systemd-shared,core}/linux
- mkdir src/libfirewall
- mv -T src/lib{shared,firewall}/firewall-util.c
- mv -T src/lib{shared,firewall}/firewall-util.h
+ mkdir src/libsystemd-firewall
+ mv -T src/libsystemd-{shared,firewall}/firewall-util.c
+ mv -T src/libsystemd-{shared,firewall}/firewall-util.h
- split_lib src/libbasic
- split_lib src/libsystemd-network
+ mkdir src/libsystemd-gcrypt
+ mv -T src/libsystemd-{shared,gcrypt}/gcrypt-util.c
+ mv -T src/libsystemd-{shared,gcrypt}/gcrypt-util.h
+
+ mkdir src/libsystemd-blkid
+ mv -T src/libsystemd-{basic,blkid}/blkid-util.h
+
+ mkdir src/libsystemd-microhttpd
+ mv -t src/libsystemd-microhttpd \
+ src/journal-remote/microhttpd*
- split_lib src/libshared
- mv src/libshared/{test,include/shared}/test-tables.h
- rmdir src/libshared/test
+ split_lib src/libcore
+ split_lib src/libsystemd-basic
+ split_lib src/libsystemd-shared
+ split_lib src/libsystemd-network
+ split_lib src/libsystemd-firewall
+ split_lib src/libsystemd-gcrypt
+ split_lib src/libsystemd-blkid
+ split_lib src/libsystemd-microhttpd
+
+ mv -t src/libcore/src \
+ src/libcore/linux \
+ src/libcore/include/core/dbus*.h
+ mv -T src/libcore/{src,include/core}/dbus-manager.h
+ mv -T src/libcore/{include/core,src}/audit-fd.h
+ mv -T src/libcore/{include/core,src}/load-dropin.h
+ mv -T src/libcore/{include/core,src}/locale-setup.h
+ mv -T src/libcore/{include/core,src}/selinux-access.h
+ mv -T src/libcore/{include/core,src}/transaction.h
+ mv -T src/libcore/{include/core,src}/unit-printf.h
+ mv -T src/libcore/{,src}/load-fragment-gperf.gperf.m4
+
+ mv src/libsystemd-shared/{test,include/systemd-shared}/test-tables.h
+ rmdir src/libsystemd-shared/test
mkdir src/systemd-hibernate-resume-generator
mv -t src/systemd-hibernate-resume-generator \
@@ -153,6 +187,7 @@ move_files() (
src/resolve/.gitignore \
src/resolve/*
rmdir src/resolve
+ split_lib src/libbasic-dns
# src/import => src/{libimport,systemd-{export,importd,import}}
mkdir src/libimport
@@ -178,7 +213,7 @@ move_files() (
src/import/curl-util*
rmdir src/import
- # src/journal => src/..
+ # src/journal => src/...
mkdir src/libjournal-core
mv -t src/libjournal-core \
src/journal/.gitignore \
@@ -221,6 +256,8 @@ move_files() (
src/journal/mmap-cache.h \
src/journal/sd-journal.c
rmdir src/journal
+ split_lib src/libjournal-core
+ mv -T src/libjournal-core/{,src/}journald-gperf.gperf
# src/network => src/...
mkdir src/systemd-networkd-wait-online
@@ -242,15 +279,17 @@ move_files() (
src/network/test-*
rmdir src/network
- # src/machine => src/{machinectl,systemd-machined}
- mkdir src/machinectl
- mv -t src/machinectl \
- src/machine/machinectl*
- mkdir src/systemd-machined
+ # src/machine => src/{machinectl,systemd-machined,libmachine-core}
+ mkdir src/machinectl src/systemd-machined src/libmachine-core
+ mv -T src/{machine,machinectl}/machinectl.c
+ mv -T src/{machine,systemd-machined}/machined.c
mv -t src/systemd-machined \
src/machine/.gitignore \
+ src/machine/org.*
+ mv -t src/libmachine-core \
src/machine/*
rmdir src/machine
+ split_lib src/libmachine-core
# src/coredump => src/{coredumpctl,systemd-coredump}
mkdir src/coredumpctl
@@ -285,8 +324,7 @@ move_files() (
mv -t src/grp-remote.d \
src/journal-remote/.gitignore \
src/journal-remote/browse.html \
- src/journal-remote/log-generator.py \
- src/journal-remote/microhttpd*
+ src/journal-remote/log-generator.py
rmdir src/journal-remote
# src/locale => src/...
@@ -441,7 +479,7 @@ move_files() (
units/machine.slice*
# muck
- mv -t src/libbasic/include/basic src/libbasic/.gitignore
+ mv -t src/libsystemd-basic/src src/libsystemd-basic/.gitignore
mv -T {test,src/systemd-boot}/test-efi-create-disk.sh
mv -t src/systemd-tmpfiles units/systemd-tmpfiles*
mv -t src/systemd-tmpfiles \
@@ -460,7 +498,7 @@ move_files() (
mkdir src/libudev/include
mv -T src/libudev/{src,include}/libudev.h
mv -T src/{systemd-networkd,libnetworkd-core}/networkd.h
- mv -T src/{systemd-resolved,libbasic-dns}/resolved-def.h
+ mv -T src/{systemd-resolved,libbasic-dns/include/basic-dns}/resolved-def.h
mv -t src/cdrom_id rules/*cdrom*
mv -t src/mtd_probe rules/*mtd*
mv -t src/v4l_id rules/*v4l*
@@ -469,9 +507,10 @@ move_files() (
src/libsystemd/include/systemd/sd-ipv4* \
src/libsystemd/include/systemd/sd-lldp* \
src/libsystemd/include/systemd/sd-ndisc*
- for l in device hwdb netlink network resolve; do
- mv -T src/libsystemd/include/systemd/sd-$l.h src/libsystemd/src/sd-$l/sd-$l.h
- done
+ mkdir src/libsystemd/include-staging{,/systemd-staging}
+ mv -t src/libsystemd/include-staging/systemd-staging \
+ src/libsystemd/include/systemd/sd-{device,hwdb,netlink,network,resolve}.h
+
mkdir src/grp-journal.d
mv -t src/grp-journal.d tmpfiles.d/journal-nocow.*
mv -t src/grp-remote.d tmpfiles.d/systemd-remote.*
@@ -578,6 +617,7 @@ move_files() (
src/systemd-hibernate-resume-generator \
src/systemd-sleep
grp src/grp-remote \
+ src/libsystemd-microhttpd \
src/systemd-journal-gatewayd \
src/systemd-journal-remote \
src/systemd-journal-upload
@@ -597,6 +637,7 @@ move_files() (
src/systemd-inhibit \
src/systemd-logind
grp src/grp-machine \
+ src/libmachine-core \
src/machinectl \
src/nss-mymachines \
src/systemd-machined
@@ -648,6 +689,17 @@ move_files() (
src/systemd-path \
src/systemd-socket-activate
+ mv -t src/grp-udev \
+ src/grp-udev/rules/*
+ cat src/grp-udev/rules/.gitignore >> src/grp-udev/.gitignore
+ rm src/grp-udev/rules/.gitignore
+ rmdir src/grp-udev/rules
+
+ mv -t src/grp-journal/systemd-journald \
+ src/grp-journal/catalog/.gitignore \
+ src/grp-journal/catalog/*
+ rmdir src/grp-journal/catalog
+
mv -t src/systemd-timesyncd system-preset/??-timesyncd.preset
for file in system-preset/??-*.preset; do
base="${file##*/??-}"
@@ -656,6 +708,16 @@ move_files() (
mv -t src/grp-"$base" "$file"
done
rmdir system-preset
+
+ mv -t src/libsystemd/src/sd-bus \
+ src/libsystemd-shared/src/bus-util.c \
+ src/libsystemd-shared/include/systemd-shared/bus-util.h
+
+ ln -srT src/libsystemd/include/systemd/_sd-common.h src/libsystemd-network/include/systemd-network/_sd-common.h
+ ln -srT src/libsystemd/include/systemd/_sd-common.h src/grp-utils/systemd-path/_sd-common.h
+ ln -srT src/grp-login/systemd-logind/logind-acl.h src/grp-udev/libudev-core/logind-acl.h
+ ln -srT src/grp-login/systemd-logind/logind-acl.c src/grp-udev/libudev-core/logind-acl.c
+ ln -srT src/libsystemd/src/sd-login/sd-login.c src/grp-udev/libudev-core/sd-login.c
)
breakup_makefile() (
@@ -698,44 +760,18 @@ breakup_makefile() (
sed -ri \
-e '/^[^# ]*:/ { s|\S+/|$(outdir)/|g }' \
- src/libbasic/include/basic/Makefile \
+ src/libsystemd-basic/src/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
)
@@ -744,11 +780,23 @@ fixup_makefile() {
-e '#### Specific complete strings #####' \
-e 's|\$\(CPP\) \$\(CFLAGS\) \$\(AM_CPPFLAGS\) \$\(CPPFLAGS\)|$(CPP) $(sd.ALL_CPPFLAGS)|g' \
-e '/^ \$\(AM_V_at\)\$\(MKDIR_P\) \$\(dir \$@\)/d' \
+ \
-e '#### General cases #################' \
-e '/^[^# ]*:/ { s|^(\s*)\S+/|\1$(outdir)/| }' \
-e 's|^if (.*)|ifneq ($(\1),)|' \
-e '/^\s*\$\(AM_(C|CPP|LD)FLAGS\b/d' \
- -e 's|--version-script=.*/([^/]+)\.sym|--version-script=$(srcdir)/\1.sym|g'
+ -e 's|--version-script=.*/([^/]+)\.sym|--version-script=$(srcdir)/\1.sym|g' \
+ \
+ -e '#### Rename helpers ################' \
+ -e 's|libbasic_la|libsystemd_basic_la|g' \
+ -e 's|libbasic|libsystemd-basic|g' \
+ -e 's|libsystemd-basic-dns|libbasic-dns|g' \
+ \
+ -e 's|libshared_la|libsystemd_shared_la|g' \
+ -e 's|libshared|libsystemd-shared|g' \
+ \
+ -e 's|libfirewall_la|libsystemd_firewall_la|g' \
+ -e 's|libfirewall|libsystemd-firewall|g'
}
breakup_zshcompletion() (
@@ -784,6 +832,7 @@ run() (
move() (
find . \( -name Makefile -o -name '*.mk' \) -delete
+ find src -type d -empty -exec rmdir -p --ignore-fail-on-non-empty -- {} +
>&2 echo ' => breakup_zshcompletion'
run breakup_zshcompletion
@@ -807,7 +856,7 @@ main() {
git add .
git commit -m './tools/notsd-move'
- git merge -s ours notsystemd/postmove
+ git merge --no-edit -s ours notsystemd/postmove
git checkout notsystemd/postmove
git merge tmp/postmove
git branch -d tmp/postmove