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