File pre_checkin.sh of Package texlive
#!/bin/bash
#
# TeXLive pre checking script -- generates hopefully
# both spec files for noarch and any arch from
# the texlive.spec.in
#
if test -n "$1" -a "$1" = "clean" ; then
rm -f texlive.spec
rm -f texlive-bin.spec
rm -f texlive-bin.changes
exit 0
fi
input=texlive.spec.in
PATH=$PATH:/mounts/work/src/bin/tools:/work/src/bin/tools
for a in noarch any; do
case "$a" in
noarch)
ARCH=''
NAME=texlive
BUILDARCH="BuildArch: noarch"
CHANGE_NOBIN='\%@@CHANGE_NOBIN@@%d'
REMOVE_NOBIN='\%@@(END|BEGIN)_NOBIN@@%d'
REMOVE_SCRIPTS='\%@@(NOT|ELSE)_SCRIPTS@@%,\%@@END_SCRIPTS@@%d;\%@@BEGIN_SCRIPTS@@%d'
REMOVE_NFS='\%@@(END|BEGIN)_NFS@@%d'
PREREQ="s;^@@PREREQ(-[[:alnum:]]+)@@;PreReq: ${NAME}-bin\1;g"
PREREQADD="s;([[:blank:]]*)@@PREREQADD@@;\1${NAME}-bin;g"
PROVIDES='s;@@PROVIDES:[[:blank:]]*([[:print:]]+)@@;Provides: \1;g'
OBSOLETES='s;@@OBSOLETES:[[:blank:]]*([[:print:]]+)@@;Obsoletes: \1;g'
CONFLICTS='s;@@CONFLICTS:[[:blank:]]*([[:print:]]+)@@;Conflicts: \1;g'
RECOMMENDS='s;@@RECOMMENDS:[[:blank:]]*([[:print:]]+)@@;Recommends: \1;g'
SUGGESTS='s;@@SUGGESTS:[[:blank:]]*([[:print:]]+)@@;Suggests: \1;g'
NOSOURCE='\%@@NO(SOURCE|PATCH):[[:blank:]]*all@@%d'
NODEBUGINFO='s;^(#[[:blank:]]*)(norootforbuild);\1\2\n\1nodebuginfo;'
SRCHINT='\n%nil'
;;
any)
ARCH='-bin'
NAME=texlive$ARCH
BUILDARCH="ExcludeArch: noarch"
CHANGE_NOBIN='\%@@CHANGE_NOBIN@@%,\%@@END_NOBIN@@% {
s%^([[:blank:]]+)[[:alnum:]-]+([[:blank:]]+)%\1base\2%;
\%@@(END|CHANGE)_NOBIN@@%d; }'
REMOVE_NOBIN='\%@@BEGIN_NOBIN@@%,\%@@END_NOBIN@@%d'
REMOVE_SCRIPTS='\%@@BEGIN_SCRIPTS@@%,\%@@ELSE_SCRIPTS@@%d;\%@@(NOT|END)_SCRIPTS@@%d'
REMOVE_NFS='\%@@BEGIN_NFS@@%,\%@@END_NFS@@%d'
PREREQ="s;^@@PREREQ(-[[:alnum:]]+)@@;PreReq: /bin/uname /usr/bin/tr;g"
PREREQADD='s%([[:blank:]]*)@@PREREQADD@@%%g'
PROVIDES='\%@@PROVIDES:[[:blank:]]*([[:print:]]+)@@%d'
OBSOLETES='\%@@OBSOLETES:[[:blank:]]*([[:print:]]+)@@%d'
CONFLICTS='\%@@CONFLICTS:[[:blank:]]*([[:print:]]+)@@%d'
RECOMMENDS='\%@@RECOMMENDS:[[:blank:]]*([[:print:]]+)@@%d'
SUGGESTS='\%@@SUGGESTS:[[:blank:]]*([[:print:]]+)@@%d'
NOSOURCE='
/^Source[0-9]*:[[:blank:]]+.*/H
/^Patch[0-9]*:[[:blank:]]+.*/H
\%^@@NOSOURCE:[[:blank:]]*all@@% {
g
s/^\n*//g
s/Patch[^\n]*\n//g
s/Source(0|):[^\n]*/NoSource: 0/g
s/Source([0-9]+):[^\n]*/NoSource: \1/g
P
D
h
}
\%^@@NOPATCH:[[:blank:]]*all@@% {
g
s/^\n*//g
s/Source[^\n]*\n//g
s/Patch(0|):[^\n]*/NoPatch: 0/g
s/Patch([0-9]+):[^\n]*/NoPatch: \1/g
P
D
h
}'
NODEBUGINFO=''
SRCHINT='\nSources and patches are provided with the source rpm of the package texlive.\\\n%nil'
;;
esac
output=texlive${ARCH}.spec
WARNING="s;@@WARNING@@;This file was automatically generated from $input by ${0##*/}\\\\${SRCHINT};"
sed -r -e "s%@@ARCH@@%${ARCH}%g" \
-e "s%@@NAME@@%${NAME}%g" \
-e "s%@@BUILDARCH@@%${BUILDARCH}%g" \
-e "$CHANGE_NOBIN" \
-e "$REMOVE_NOBIN" \
-e "$REMOVE_SCRIPTS" \
-e "$REMOVE_NFS" \
-e "$PREREQ" \
-e "$PREREQADD" \
-e "$PROVIDES" \
-e "$OBSOLETES" \
-e "$RECOMMENDS" \
-e "$SUGGESTS" \
-e "$NOSOURCE" \
-e "$NODEBUGINFO" \
-e "$WARNING" \
< $input > $output
if type -p convert_changes_to_rpm_changelog > /dev/null 2>&1 ; then
sed -rni '1,$H; ${g;s/^\n*//g;s/(%changelog).*/\1/p;}' $output
convert_changes_to_rpm_changelog < texlive.changes >> $output
fi
if test $(id -u) -eq 0 ; then
chown --reference=$input $output
fi
case "$a" in
any)
if test -e texlive.changes -a -n "$ARCH" ; then
rm -f texlive${ARCH}.changes
ln -f texlive.changes texlive${ARCH}.changes
fi
esac
done