pkg_merge/mergespec.sh
author Jon Tibble <meths@btinternet.com>
Thu, 03 May 2012 18:34:11 +0100
changeset 575 a99c06dc8ffa
parent 508 d26b070f438b
permissions -rwxr-xr-x
Added tag oi_151a_prestable3 for changeset 54f799203c89
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
506
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
     1
#!/bin/ksh
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
     2
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
     3
# merge multiple sub-repositories (for same architecture) into single one
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
     4
# from:
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
     5
#     repo.redist: redist repo created with static manifests
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
     6
#     repo.imspec: created with pkgbuild in inputmethod/specs
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
     7
#     repo.spec: created with pkgbuild in g11n-spec
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
     8
#     repo.import: [workaround] created from SVR4 packages
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
     9
# to:
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    10
#     repo.redist.l10n
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    11
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    12
export LC_ALL=C
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    13
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    14
date
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    15
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    16
if [ $# -eq 0 ] || [ \( "$1" != "sparc" \) -a \( "$1" != "i386" \) ]
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    17
then
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    18
	print -u2 "architecture not specified or invalid value"
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    19
	print -u2 "usage: $0 sparc|i386"
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    20
	exit 1
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    21
else
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    22
	PKGMACH=$1
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    23
fi
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    24
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    25
PKGDEST="${PKGDEST:-`cd ../pkgdest/$PKGMACH; pwd`}"
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    26
SR_STATIC=file://$PKGDEST/repo.redist
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    27
SR_IMSPEC=file://$PKGDEST/repo.imspec
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    28
SR_SPEC=file://$PKGDEST/repo.spec
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    29
SR_IMPORT=file://$PKGDEST/repo.import
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    30
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    31
DRD=$PKGDEST/repo.l10n
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    32
DR=file://$DRD
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    33
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    34
INC=consolidation/l10n/l10n-incorporation
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    35
RED=consolidation/l10n/l10n-redistributable
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    36
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    37
PUBLISHER=${L10N_PUBLISHER:-"l10n-nightly"}
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    38
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    39
rm -rf $DRD
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    40
pkgrepo create --version 3 $DRD
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    41
pkgrepo set -s $DR publisher/prefix=${PUBLISHER}
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    42
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    43
TMPD=$PKGDEST/TMPD.$$
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    44
rm -rf $TMPD; mkdir $TMPD
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    45
TMPMF=$TMPD/tmpmf
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    46
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    47
MF_INC=$TMPD/l10n-incorporation.mf
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    48
MF_RED=$TMPD/l10n-redistributable.mf
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    49
MF_INC_B=${MF_INC}.body
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    50
MF_RED_B=${MF_RED}.body
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    51
cp /dev/null $MF_INC_B
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    52
cp /dev/null $MF_RED_B
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    53
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    54
PUBOPTS="--fmri-in-manifest --no-catalog --no-index"
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    55
PUBLISH="pkgsend -s $DR publish $PUBOPTS"
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    56
LEGACY_REV_DATE=${LEGACY_REV_DATE:-"2010.12.06"}
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    57
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    58
for sr in $SR_STATIC $SR_IMSPEC $SR_SPEC $SR_IMPORT
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    59
do
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    60
	echo "receiving from $sr..."
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    61
	list="List.`echo $sr | sed -e 's;.*/;;'`"
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    62
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    63
	pkgrecv -s $sr --newest > $TMPD/$list
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    64
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    65
	cat $TMPD/$list | while read p
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    66
	do
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    67
		pkgrecv -s $sr -d $TMPD --raw "$p"
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    68
		ps="`echo $p | sed -e 's;^pkg:/;;' -e s:^/$PUBLISHER/::`"
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    69
		pd="`echo $ps | sed \
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    70
			-e 's;/;%2F;g' -e 's;,;%2C;g' -e 's;:;%3A;g' \
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    71
			-e 's;@;/;g'`"
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    72
		mf="$TMPD/$pd/manifest"
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    73
		fmri="`echo $ps | sed -e 's/:20[0-9][0-9].*//'`"
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    74
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    75
		if [ "$sr" != "$SR_STATIC" ] && expr "$fmri" : "SUNW" > /dev/null
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    76
		then
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    77
			echo "[skip] $fmri"
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    78
		elif expr "$fmri" : "entire" > /dev/null
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    79
		then
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    80
			echo "[skip] $fmri"
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    81
		elif expr "$fmri" : "$INC" > /dev/null
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    82
		then
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    83
			if [ "$sr" = "$SR_STATIC" ]
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    84
			then
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    85
				echo "[l10n-incorporation] $fmri"
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    86
				grep -v '^depend ' $mf > $MF_INC
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    87
			else
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    88
				echo "[skip] $fmri"
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    89
			fi
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    90
		elif expr "$fmri" : "$RED" > /dev/null
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    91
		then
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    92
			echo "[l10n-redistributable] $fmri"
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    93
			grep -v '^depend ' $mf > $MF_RED
508
d26b070f438b does not work with "pkg.obsolete" properly
asano
parents: 506
diff changeset
    94
		elif grep '^set name=pkg\.obsolete value=true' $mf > /dev/null
506
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    95
		then
508
d26b070f438b does not work with "pkg.obsolete" properly
asano
parents: 506
diff changeset
    96
			echo "[obsolete] $fmri"
506
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    97
			echo "depend fmri=$fmri type=incorporate" >> $MF_INC_B
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    98
			$PUBLISH -d $TMPD/$pd $mf
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
    99
		elif grep '^set name=pkg\.renamed value=true' $mf > /dev/null
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   100
		then
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   101
			echo "[renamed] $fmri"
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   102
			echo "depend fmri=$fmri type=incorporate" >> $MF_INC_B
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   103
			$PUBLISH -d $TMPD/$pd $mf
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   104
		elif expr "$fmri" : "dummy" > /dev/null
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   105
		then
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   106
			echo "[dummy] $fmri"
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   107
		else
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   108
			if grep "^depend fmri=$INC type=require" $mf > /dev/null
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   109
			then
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   110
				echo "[current] $fmri"
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   111
			else
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   112
				echo "[current-addinc] $fmri"
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   113
				echo "depend fmri=$INC type=require" >> $mf
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   114
			fi
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   115
			if grep '^legacy.*REV=' $mf > /dev/null
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   116
			then
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   117
				echo "adjusting legacy REV date"
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   118
				cp $mf $TMPMF
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   119
				sed -e '/REV=[^ 	]*20[0-9][0-9]\...\...\...\.../s/20[0-9][0-9]\...\...\...\.../'"$LEGACY_REV_DATE"'/' $TMPMF > $mf
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   120
			fi
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   121
# workaround
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   122
# 1
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   123
			if ! egrep -s 'set name=org\.opensolaris\.consolidation ' $mf
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   124
			then
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   125
				echo "WORKAROUND: add org.opensolaris.consolidation"
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   126
				echo "set name=org.opensolaris.consolidation value=l10n" >> $mf
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   127
			fi
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   128
# 2
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   129
			if egrep -s "^dir group=bin.* path=usr$" $mf
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   130
			then
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   131
				echo "WORKAROUND: correct group of usr"
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   132
				cp $mf $TMPMF
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   133
				sed -e '/^dir group=bin.* path=usr$/s;group=bin;group=sys;' $TMPMF > $mf
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   134
			fi
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   135
# 3
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   136
			echo "WORKAROUND: remove pkgbuild's default info.*_url"
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   137
			cp $mf $TMPMF
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   138
			cat $TMPMF | \
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   139
			grep -v '^set name=info\.maintainer_url value=pkgbuild-sfe-devel@sourceforge\.net' | \
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   140
			grep -v '^set name=info\.upstream_url value=http://pkgbuild\.sf\.net/' | \
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   141
			cat > $mf
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   142
# end of workaround
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   143
			echo "depend fmri=$fmri type=incorporate" >> $MF_INC_B
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   144
			echo "depend fmri=$fmri type=require" >> $MF_RED_B
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   145
			$PUBLISH -d $TMPD/$pd $mf
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   146
		fi
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   147
	done
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   148
done
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   149
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   150
sort $MF_INC_B >> $MF_INC
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   151
$PUBLISH -d $TMPD $MF_INC
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   152
sort $MF_RED_B >> $MF_RED
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   153
$PUBLISH -d $TMPD $MF_RED
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   154
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   155
rm -rf $TMPD
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   156
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   157
echo "updating catalog and index..."
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   158
/usr/lib/pkg.depotd -d $DRD --add-content --exit-ready
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   159
07e29ccd3531 IPS transition (g11n (main) part)
asano
parents:
diff changeset
   160
date