--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkg_merge/mergespec.sh Thu Dec 16 18:06:12 2010 +0900
@@ -0,0 +1,160 @@
+#!/bin/ksh
+
+# merge multiple sub-repositories (for same architecture) into single one
+# from:
+# repo.redist: redist repo created with static manifests
+# repo.imspec: created with pkgbuild in inputmethod/specs
+# repo.spec: created with pkgbuild in g11n-spec
+# repo.import: [workaround] created from SVR4 packages
+# to:
+# repo.redist.l10n
+
+export LC_ALL=C
+
+date
+
+if [ $# -eq 0 ] || [ \( "$1" != "sparc" \) -a \( "$1" != "i386" \) ]
+then
+ print -u2 "architecture not specified or invalid value"
+ print -u2 "usage: $0 sparc|i386"
+ exit 1
+else
+ PKGMACH=$1
+fi
+
+PKGDEST="${PKGDEST:-`cd ../pkgdest/$PKGMACH; pwd`}"
+SR_STATIC=file://$PKGDEST/repo.redist
+SR_IMSPEC=file://$PKGDEST/repo.imspec
+SR_SPEC=file://$PKGDEST/repo.spec
+SR_IMPORT=file://$PKGDEST/repo.import
+
+DRD=$PKGDEST/repo.l10n
+DR=file://$DRD
+
+INC=consolidation/l10n/l10n-incorporation
+RED=consolidation/l10n/l10n-redistributable
+
+PUBLISHER=${L10N_PUBLISHER:-"l10n-nightly"}
+
+rm -rf $DRD
+pkgrepo create --version 3 $DRD
+pkgrepo set -s $DR publisher/prefix=${PUBLISHER}
+
+TMPD=$PKGDEST/TMPD.$$
+rm -rf $TMPD; mkdir $TMPD
+TMPMF=$TMPD/tmpmf
+
+MF_INC=$TMPD/l10n-incorporation.mf
+MF_RED=$TMPD/l10n-redistributable.mf
+MF_INC_B=${MF_INC}.body
+MF_RED_B=${MF_RED}.body
+cp /dev/null $MF_INC_B
+cp /dev/null $MF_RED_B
+
+PUBOPTS="--fmri-in-manifest --no-catalog --no-index"
+PUBLISH="pkgsend -s $DR publish $PUBOPTS"
+LEGACY_REV_DATE=${LEGACY_REV_DATE:-"2010.12.06"}
+
+for sr in $SR_STATIC $SR_IMSPEC $SR_SPEC $SR_IMPORT
+do
+ echo "receiving from $sr..."
+ list="List.`echo $sr | sed -e 's;.*/;;'`"
+
+ pkgrecv -s $sr --newest > $TMPD/$list
+
+ cat $TMPD/$list | while read p
+ do
+ pkgrecv -s $sr -d $TMPD --raw "$p"
+ ps="`echo $p | sed -e 's;^pkg:/;;' -e s:^/$PUBLISHER/::`"
+ pd="`echo $ps | sed \
+ -e 's;/;%2F;g' -e 's;,;%2C;g' -e 's;:;%3A;g' \
+ -e 's;@;/;g'`"
+ mf="$TMPD/$pd/manifest"
+ fmri="`echo $ps | sed -e 's/:20[0-9][0-9].*//'`"
+
+ if [ "$sr" != "$SR_STATIC" ] && expr "$fmri" : "SUNW" > /dev/null
+ then
+ echo "[skip] $fmri"
+ elif expr "$fmri" : "entire" > /dev/null
+ then
+ echo "[skip] $fmri"
+ elif expr "$fmri" : "$INC" > /dev/null
+ then
+ if [ "$sr" = "$SR_STATIC" ]
+ then
+ echo "[l10n-incorporation] $fmri"
+ grep -v '^depend ' $mf > $MF_INC
+ else
+ echo "[skip] $fmri"
+ fi
+ elif expr "$fmri" : "$RED" > /dev/null
+ then
+ echo "[l10n-redistributable] $fmri"
+ grep -v '^depend ' $mf > $MF_RED
+ elif grep '^set name=pkg\.obsoleted value=true' $mf > /dev/null
+ then
+ echo "[obsoleted] $fmri"
+ echo "depend fmri=$fmri type=incorporate" >> $MF_INC_B
+ $PUBLISH -d $TMPD/$pd $mf
+ elif grep '^set name=pkg\.renamed value=true' $mf > /dev/null
+ then
+ echo "[renamed] $fmri"
+ echo "depend fmri=$fmri type=incorporate" >> $MF_INC_B
+ $PUBLISH -d $TMPD/$pd $mf
+ elif expr "$fmri" : "dummy" > /dev/null
+ then
+ echo "[dummy] $fmri"
+ else
+ if grep "^depend fmri=$INC type=require" $mf > /dev/null
+ then
+ echo "[current] $fmri"
+ else
+ echo "[current-addinc] $fmri"
+ echo "depend fmri=$INC type=require" >> $mf
+ fi
+ if grep '^legacy.*REV=' $mf > /dev/null
+ then
+ echo "adjusting legacy REV date"
+ cp $mf $TMPMF
+ sed -e '/REV=[^ ]*20[0-9][0-9]\...\...\...\.../s/20[0-9][0-9]\...\...\...\.../'"$LEGACY_REV_DATE"'/' $TMPMF > $mf
+ fi
+# workaround
+# 1
+ if ! egrep -s 'set name=org\.opensolaris\.consolidation ' $mf
+ then
+ echo "WORKAROUND: add org.opensolaris.consolidation"
+ echo "set name=org.opensolaris.consolidation value=l10n" >> $mf
+ fi
+# 2
+ if egrep -s "^dir group=bin.* path=usr$" $mf
+ then
+ echo "WORKAROUND: correct group of usr"
+ cp $mf $TMPMF
+ sed -e '/^dir group=bin.* path=usr$/s;group=bin;group=sys;' $TMPMF > $mf
+ fi
+# 3
+ echo "WORKAROUND: remove pkgbuild's default info.*_url"
+ cp $mf $TMPMF
+ cat $TMPMF | \
+ grep -v '^set name=info\.maintainer_url value=pkgbuild-sfe-devel@sourceforge\.net' | \
+ grep -v '^set name=info\.upstream_url value=http://pkgbuild\.sf\.net/' | \
+ cat > $mf
+# end of workaround
+ echo "depend fmri=$fmri type=incorporate" >> $MF_INC_B
+ echo "depend fmri=$fmri type=require" >> $MF_RED_B
+ $PUBLISH -d $TMPD/$pd $mf
+ fi
+ done
+done
+
+sort $MF_INC_B >> $MF_INC
+$PUBLISH -d $TMPD $MF_INC
+sort $MF_RED_B >> $MF_RED
+$PUBLISH -d $TMPD $MF_RED
+
+rm -rf $TMPD
+
+echo "updating catalog and index..."
+/usr/lib/pkg.depotd -d $DRD --add-content --exit-ready
+
+date