busybox-links/create-filelists.sh

84 lines
2.9 KiB
Bash
Raw Normal View History

#!/bin/bash
set -euxo pipefail
mkdir {apps,used,missing}
dnf --refresh install -y busybox
busybox_links=$(rpm -ql busybox|grep busybox.links)
for i in $(cat $busybox_links); do touch apps/$(basename $i); done
# No rpm/rpm2cpio, will break build service
rm -f apps/rpm apps/rpm2cpio; \
# No /linuxrc
rm -f apps/linuxrc; \
# Does not really fit
rm apps/[[
for package in coreutils diffutils findutils grep util-linux util-linux-systemd iputils iproute2 gzip sed cpio procps xz bzip2 psmisc kbd sharutils hexedit hostname net-tools net-tools-deprecated traceroute ncurses-utils kmod tar gawk patch attr which bind-utils man sendmail sha3sum shadow less whois unzip vim wget ed bc netcat-openbsd dos2unix telnet tftp time tunctl vlan sysvinit-tools selinux-tools policycoreutils; do
for i in $(dnf rq -l $package |grep "bin/") ; do
prog=$(basename $i)
if [ -f apps/$prog ]; then
touch used/$prog;
echo $i >> filelist-$package.txt
else
touch missing/$prog
fi
done
done
BINDIR=$(rpm -E %_bindir)
SBINDIR=$(rpm -E %{_sbindir})
DATADIR=$(rpm -E %{_datadir})
# Merge net-tools sub-packages
cat filelist-net-tools-deprecated.txt >> filelist-net-tools.txt
rm filelist-net-tools-deprecated.txt
# Create some extra sub-packages
echo -e "$BINDIR/ash" > filelist-sh.txt
touch used/ash
echo -e "$BINDIR/hush" >> filelist-sh.txt
touch used/hush
echo -e "$BINDIR/sh" >> filelist-sh.txt
touch used/sh
echo -e "$SBINDIR/loadfont" >> filelist-kbd.txt
touch used/loadkmap used/loadfont
echo -e "/usr/sbin/addgroup\n/usr/sbin/adduser\n/usr/sbin/delgroup\n/usr/sbin/deluser" >> filelist-shadow.txt
touch used/addgroup used/adduser used/delgroup used/deluser
echo -e "/usr/sbin/syslogd" > filelist-syslogd.txt
touch used/syslogd
# Some iproute2 commands are named sligthly different
echo -e "/usr/sbin/ifdown\n/usr/sbin/ifenslave\n/usr/sbin/ifup\n/usr/sbin/ipaddr\n/usr/sbin/iplink\n/usr/sbin/ipneigh\n/usr/sbin/iproute\n/usr/sbin/iprule\n/usr/sbin/brctl" >> filelist-iproute2.txt
touch used/ifdown used/ifenslave used/ifup used/ipaddr used/iplink used/ipneigh used/iproute used/iprule used/brctl
for i in $(/bin/ls used/); do
rm apps/$i
done
# /usr/bin/last is now in wtmpdb, but should stay in busybox-util-linux
if [ -e apps/last ]; then
echo -e "/usr/bin/last" >> filelist-util-linux.txt
touch used/last
rm -f apps/last
fi
for i in `cat $DATADIR/busybox/busybox.links` ; do
prog=`basename $i`
if [ -f apps/$prog ]; then
echo $i >> filelist-misc.txt
fi
done
sed -e 's|$prefix/bin/busybox|$prefix/usr/bin/busybox|g' \
-e "s|\"bin/busybox\"|\"..$BINDIR/busybox\"|g" \
-e "s|\"busybox\"|\"..$BINDIR/busybox\"|g" \
-e "s|\"../bin/busybox\"|\"..$BINDIR/busybox\"|g" \
-e 's|"../../bin/busybox"|"../bin/busybox"|g' \
-e "s|$DATADIR/busybox/busybox.links|filelist.txt|g" \
$BINDIR/busybox.install > busybox.install
cat filelist-*.txt | sort -u > filelist.txt