diff options
Diffstat (limited to 'move.sh')
-rwxr-xr-x | move.sh | 281 |
1 files changed, 281 insertions, 0 deletions
diff --git a/move.sh b/move.sh new file mode 100755 index 0000000000..22caeb8a6f --- /dev/null +++ b/move.sh @@ -0,0 +1,281 @@ +#!/usr/bin/env bash + +in_array() { + local needle=$1; shift + local item + for item in "$@"; do + [[ $item = $needle ]] && return 0 # Found + done + return 1 # Not Found +} + +move_files() ( + for d in libsystemd libudev; do + mkdir src/$d-new + mv -T src/$d src/$d-new/src + mv -T src/$d-new src/$d + done + + for d in basic core shared; do + mv -T src/{,lib}$d + done + + pfix=( + dbus1-generator + debug-generator + fstab-generator + getty-generator + gpt-auto-generator + rc-local-generator + system-update-generator + sysv-generator + + ac-power + activate + analyze + ask-password + backlight + binfmt + bootchart + cgls + cgroups-agent + cgtop + coredump + cryptsetup + delta + detect-virt + escape + firstboot + fsck + hibernate-resume + hwdb + notify + nspawn + path + quotacheck + random-seed + remount-fs + reply-password + rfkill + run + timesync + tmpfiles + tty-ask-password-agent + update-done + update-utmp + user-sessions + vconsole + ) + for d in "${pfix[@]}"; do + mv -T src/{,systemd-}$d + done + + + mv -T {,src/journal/}catalog + + mv -T {shell-completion/bash/,src/kernel-install/bash-completion_}kernel-install + mv -T {shell-completion/zsh/_,src/kernel-install/zsh-completion_}kernel-install + mv -T {man,src/kernel-install}/kernel-install.xml + + mv -T src/lib{shared,core}/linux + + mv -T src/{,libsystemd/}/compat-libs + mkdir src/libsystemd/include + mv -T src/{,libsystemd/include}/systemd + + mkdir src/grp-machine + mv -T src/machine src/grp-machine/libmachine-core + mkdir src/grp-machine/systemd-machined + mv -T src/grp-machine/{libmachine-core,systemd-machined}/machined.c + mkdir src/grp-machine/machinectl + mv -T src/grp-machine/{libmachine-core,machinectl}/machinectl.c + mv -T src/{,grp-machine}/nss-mymachines + + mkdir src/grp-resolve + mv -T src/{resolve,grp-resolve/systemd-resolved} + mv -T src/{,grp-resolve}/nss-resolve + + mkdir src/grp-system + mv -T src/{,grp-system}/systemctl + + mkdir src/libfirewall + mv -T src/lib{shared,firewall}/firewall-util.c + mv -T src/lib{shared,firewall}/firewall-util.h + + mkdir src/grp-system/systemd + mv -T src/{libcore,grp-system/systemd}/main.c + mv -T src/{libcore,grp-system/systemd}/macros.systemd.in + mv -T src/{libcore,grp-system/systemd}/org.freedesktop.systemd1.conf + mv -T src/{libcore,grp-system/systemd}/org.freedesktop.systemd1.policy.in.in + mv -T src/{libcore,grp-system/systemd}/org.freedesktop.systemd1.service + mv -T src/{libcore,grp-system/systemd}/system.conf + mv -T src/{libcore,grp-system/systemd}/systemd.pc.in + mv -T src/{libcore,grp-system/systemd}/triggers.systemd.in + mv -T src/{libcore,grp-system/systemd}/user.conf + + mkdir src/libudev/include + mv -T src/libudev/{src,include}/libudev.h + + mv -T {man,src/systemd-activate}/systemd-activate.xml + + mv -T src/libsystemd/{src,}/libsystemd.pc.in + mv -T src/libsystemd/{src,}/libsystemd.sym + mv -T src/libsystemd/{src,}/.gitignore + mv -T src/libsystemd/{src,libsystemd-internal} + + mkdir src/systemd-shutdown + + mkdir src/grp-coredump + mv -T src/{,grp-coredump}/systemd-coredump + mkdir src/grp-coredump/coredumpctl + mv -T src/grp-coredump/{systemd-coredump,coredumpctl}/coredumpctl.c + + mkdir src/grp-boot + mv -T src/boot/efi src/grp-boot/systemd-boot + mv -T src/boot src/grp-boot/bootctl + mv -T {test,src/grp-boot/systemd-boot}/test-efi-create-disk.sh + + mkdir build-aux + mkdir build-aux/Makefile.{once,each}.{head,tail} + touch build-aux/Makefile.{once,each}.{head,tail}/.gitignore + + mkdir src/libsystemd/libsystemd-journal-internal + + libsystemd_journal_files=( + audit-type.c + audit-type.h + catalog.c + catalog.h + compress.c + compress.h + fsprg.c + fsprg.h + journal-authenticate.c + journal-authenticate.h + journal-def.h + journal-file.c + journal-file.h + journal-internal.h + journal-send.c + journal-vacuum.c + journal-vacuum.h + journal-verify.c + journal-verify.h + lookup3.c + lookup3.h + mmap-cache.c + mmap-cache.h + sd-journal.c + ) + for file in "${libsystemd_journal_files[@]}"; do + mv -T src/{journal,libsystemd/libsystemd-journal-internal}/$file + done + + mkdir src/busctl + mv src/libsystemd/libsystemd-internal/sd-bus/busctl* src/busctl + + mv -T src/{udev,libudev/src}/udev.h + + mv -T src/{bus-proxyd,libbus-proxy-core} + mkdir src/systemd-bus-proxyd + mv src/{libbus-proxy-core,systemd-bus-proxyd}/bus-proxyd.c + mkdir src/systemd-stdio-bridge + mv src/{libbus-proxy-core,systemd-stdio-bridge}/stdio-bridge.c + + mkdir src/grp-timedate + mv -T src/timedate src/grp-timedate/systemd-timedated + mkdir src/grp-timedate/timedatectl + mv -T src/grp-timedate/{systemd-timedated,timedatectl}/timedatectl.c + + mv -T src/{libsystemd/libsystemd-internal/sd-netlink,libshared}/local-addresses.c + mv -T src/{libsystemd/libsystemd-internal/sd-netlink,libshared}/local-addresses.h + mv -T src/{libsystemd/libsystemd-internal/sd-netlink,libshared}/test-local-addresses.c +) + +breakup_makefile() ( + find . \( -name Makefile -o -name '*.mk' \) -delete + + touch .tmp.move.all + files=(.tmp.move.all) + file=/dev/null + IFS='' + while read -r line; do + if [[ $line = '#@'* ]]; then + file="${line#'#@'}" + file="${file%% *}" + elif [[ $file = all ]]; then + printf '%s\n' "$line" | tee -a "${files[@]}" >/dev/null + else + if ! in_array "$file" "${files[@]}"; then + cat .tmp.move.all > "$file" + files+=("$file") + fi + printf '%s\n' "$line" >> "$file" + fi + done < <(fixup_makefile <Makefile.am) + rm .tmp.move.all +) + +fixup_includes() ( + find src \( -name '*.h' -o -name '*.c' \) \ + -exec grep '#include "sd-' -l -- {} + | + xargs -d $'\n' sed -ri 's|#include "(sd-[^"]*)"|#include <systemd/\1>|' +) + +fixup_makefile() { + sed -r \ + -e '/^[^# ]*:/ { s|^(\s*)\S+/|\1$(outdir)/| }' \ + -e 's|^if (.*)|ifneq ($(\1),)|' \ + -e 's|rootprefix|prefix|g' \ + -e 's|rootbin|bin|g' \ + -e 's|rootlib|lib|g' \ + -e 's|--version-script=.*/([^/]+)\.sym|--version-script=$(srcdir)/\1.sym|g' +} + +fixup_makefiles() ( + sed -ri \ + -e '/^ \$\(AM_V_at\)\$\(MKDIR_P\) \$\(dir \$@\)/d' \ + -e 's/ \$\(CFLAGS\) / /g' \ + -e 's/ \$\(CPPFLAGS\) / /g' \ + -e 's/ \$\(AM_CPPFLAGS\) / $(ALL_CPPFLAGS) /g' \ + -e '/^[^# ]*:/ { s|\S+/|$(outdir)/|g }' \ + src/libbasic/Makefile \ + src/libsystemd/libsystemd-journal-internal/Makefile \ + src/udev/Makefile + find -type f -name Makefile|while read -r filename; do + sed -r -i "s|(/\.\.)*/config.mk|/$(realpath -ms --relative-to="${filename%/*}" config.mk)|" "$filename" + done +) + +move() ( + >&2 echo ' => move_files' + move_files + >&2 echo ' => breakup_makefile' + breakup_makefile + >&2 echo ' => fixup_includes' + fixup_includes + >&2 echo ' => fixup_makefiles' + fixup_makefiles +) + +main() { + set -e + + if [[ -n "$(git status -s)" ]] || [[ -n "$(git clean -xdn)" ]]; then + echo 'There are changes in the current directory.' >&2 + exit 1 + fi + + git checkout -b postmove + + move + + git add . + git commit -m './move.sh' + git merge -s ours lukeshu/postmove + git checkout lukeshu/postmove + git merge postmove + git branch -d postmove +} + +main "$@" |