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
openSUSE Build Service is sponsored by