Blame kernel-subpackage-build

Bernhard M. Wiedemann 6ebc4a
#!/bin/bash -xe
Bernhard M. Wiedemann 6ebc4a
# %scriptdir/kernel-subpackage-build %kernel_package_name %rpm_kver-%rpm_krel %package_name-%version-%release
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
scriptdir=$(dirname $0)
Bernhard M. Wiedemann 6ebc4a
kernel_package_name=$1
Bernhard M. Wiedemann 6ebc4a
kernel_nvrq=$(echo $1-$2 | sed -e 's/[.]/[.]/g')
Bernhard M. Wiedemann 6ebc4a
package_nvr=$3
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
set -o pipefail
Bernhard M. Wiedemann 6ebc4a
install -d -m 0755 $RPM_BUILD_ROOT/boot
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
$scriptdir/splitflist $kernel_package_name kernel.flist kernel-ghost.flist
32c425
echo Ghost files:
Bernhard M. Wiedemann 6ebc4a
cat kernel-ghost.flist
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
rpm -q --qf '%{PREIN}' $kernel_package_name | sed -e "s/$kernel_nvrq/$package_nvr/g" > prein.sh
ab3bb5
rpm -q --qf '%{POSTIN}' $kernel_package_name | sed -e "s/$kernel_nvrq/$package_nvr/g" > postin.sh
7a4f11
rpm -q --qf '%{PREUN}' $kernel_package_name | sed -e "s/$kernel_nvrq/$package_nvr/g" > preun.sh
Bernhard M. Wiedemann 6ebc4a
rpm -q --qf '%{POSTUN}' $kernel_package_name | sed -e "s/$kernel_nvrq/$package_nvr/g" > postun.sh
7a4f11
rpm -q --qf '%{POSTTRANS}' $kernel_package_name | sed -e "s/$kernel_nvrq/$package_nvr/g" > posttrans.sh
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
[ -z "$(rpm -q --triggers $kernel_package_name)" ] # not handled
Bernhard M. Wiedemann 6ebc4a
32c425
KREL=$(sed -rne '/^(\/usr)?\/lib\/modules\/([^/]+)$/{s,.*/,,;p;q}' < kernel.flist)
32c425
grep -q /usr/lib/modules/ kernel.flist && USR=/usr
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
$scriptdir/mergedep $KREL > modules.dep
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
$scriptdir/moddep modules.dep request-modules modules
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
$scriptdir/modflist kernel.flist modules modules.flist /lib/modules/$KREL/modules.builtin
32c425
grep -v "^$USR/lib/modules/$KREL\\(\$\\|/kernel\\)" < kernel.flist >> modules.flist || :
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
tar -C / -cf- -T modules.flist | tar -C $RPM_BUILD_ROOT -xvf-
Bernhard M. Wiedemann 6ebc4a
32c425
[ -z "$USR" ] || ln -s usr/lib $RPM_BUILD_ROOT/lib
Bernhard M. Wiedemann 6ebc4a
moderr="$(/usr/sbin/depmod -b $RPM_BUILD_ROOT -e -F /boot/System.map-$KREL $KREL 2>&1 > /dev/null)"
32c425
[ -z "$USR" ] || rm $RPM_BUILD_ROOT/lib
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
if [ "$moderr" ] ; then
Bernhard M. Wiedemann 6ebc4a
echo Picked modules have errors:
Bernhard M. Wiedemann 6ebc4a
echo $moderr
Bernhard M. Wiedemann 6ebc4a
exit 1
Bernhard M. Wiedemann 6ebc4a
fi
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
echo "%defattr(-,root,root)" > subpackage.flist
32c425
echo "%dir $USR/lib/modules/$KREL" >> subpackage.flist
32c425
grep -v "^$USR/lib/modules/$KREL\\(\$\\|/kernel\\)" < kernel.flist >> subpackage.flist || :
32c425
echo $USR/lib/modules/$KREL/kernel >> subpackage.flist
32c425
while read name rest; do
32c425
echo "%ghost $name"
32c425
done < kernel-ghost.flist >> subpackage.flist
32c425
32c425
# recreate ghost files in build root
32c425
while read name mode size mtime link; do
32c425
  t=$(( mode&0170000 ))
32c425
  p="${mode:0-4:4}"
32c425
  (( p != 0 )) || p=''
32c425
  if (( t == 0100000 )); then
32c425
    install -D -m "${p:-0644}" /dev/null "$RPM_BUILD_ROOT$name"
32c425
    dd if=/dev/null bs=1 count=0 status=none seek="$size" of="$RPM_BUILD_ROOT$name"
32c425
    touch -h --date="@$mtime" "$RPM_BUILD_ROOT$name"
32c425
  elif (( t == 0040000 )); then
32c425
    install -d -m "${p:-0755}" "$RPM_BUILD_ROOT$name"
32c425
    touch -h -date="@$mtime" "$RPM_BUILD_ROOT$name"
32c425
  elif (( t == 0120000 )); then
32c425
    ln -s "$link" "$RPM_BUILD_ROOT$name"
32c425
    touch -h --date="@$mtime" "$RPM_BUILD_ROOT$name"
32c425
  fi
32c425
done < kernel-ghost.flist