OpenSuse Build Service/MeeGo Setup
MeeGo
In general the community OBS should map to the release OBS.
The release OBS projects are:
- MeeGo:1.0
- MeeGo:1.0:Core
- MeeGo:1.0:Core:Update
- MeeGo:1.0:Core:Update:Testing
- MeeGo:1.0:Extra
- MeeGo:1.0:Extra:Update
- MeeGo:1.0:Extra:Update:Testing
- MeeGo:1.0:Handset
- MeeGo:1.0:IVI
- MeeGo:1.0:IVI:Update
- MeeGo:1.0:IVI:Update:Testing
- MeeGo:1.0:Netbook
- MeeGo:1.0:Netbook:Update
- MeeGo:1.0:Netbook:Update:Testing
- MeeGo:1.0:Staging
- MeeGo:1.0:non-oss
- MeeGo:1.0:non-oss:Update
- MeeGo:1.0:non-oss:Update:Testing
We will assume that there are no naming conflicts and consolidate these into the following build targets:
- MeeGo_1.0
- MeeGo_1.0_Update
- MeeGo_1.0_Update_Testing (? do we need this)
and then provide a corresponding virtual target that always points to the current weekly snapshot:
- MeeGo_Current
and 2 named snapshots for previous releases:1.0.80.1.20100514.1
- MeeGo_1.0.80.1.20100514.1
See: http://wiki.meego.com/Release_Engineering/Release_Versioning
MeeGo:1.0:Core
# Specify the OBS we're working on
API=http://api.obs.maemo.org/
# Get the binaries
mkdir -p /backend_storage/MeeGo/1.0/ia32
cd /backend_storage/MeeGo/1.0/ia32
wget -e robots=off --accept \*.rpm --mirror --no-parent --progress=dot \
--no-host-directories --cut-dirs=7 -nv \
http://repo.m2.org/MeeGo/releases/1.0/core/repos/ia32/packages/
# Prepare for the :full dir for the OBS
OBS=/backend_storage/obs/meego1.0
mkdir -p $OBS/i586_full
REPO=/backend_storage/MeeGo/1.0/ia32/
cd $OBS
find $REPO -name *.rpm | xargs -I@ ln @ i586_full
# Not done (11 Jun)
OBS=/backend_storage/obs/meego1.0
mkdir -p $OBS/armel_full
REPO=/backend_storage/MeeGo/1.0/armv7l
cd $OBS
find $REPO -name *rpm | xargs -I@ ln @ armel_full
# On an OBS client
osc -A $API meta prj MeeGo:1.0:Core -F - <<XML
<project name="MeeGo:1.0:Core">
<title>MeeGo 1.0</title>
<description>
MeeGo from http://repo.m2.org/MeeGo/releases/1.0/core/repos
</description>
<person role="maintainer" userid="Admin"/>
<person role="bugowner" userid="Admin"/>
<build>
<enable/>
</build>
<publish>
<disable/>
</publish>
<debuginfo>
<disable/>
</debuginfo>
<repository name="standard">
<arch>armv7el</arch>
<arch>i586</arch>
</repository>
</project>
XML
# Back on OBS server
# Copy the binaries into the new project
cd /srv/obs/build/MeeGo\:1.0\:Core/standard/
mkdir -p i586 armv7el
ln -s $OBS/i586_full i586/:full
ln -s $OBS/armel_full armv7el/:full
/usr/lib/obs/server/bs_admin --rescan-repository MeeGo:1.0:Core standard i586
/usr/lib/obs/server/bs_admin --rescan-repository MeeGo:1.0:Core standard armv7el
chown -R obsrun:obsrun /srv/obs/build/MeeGo:1.0:Core
Since this project is a target it needs a prjconf
MeeGo Current
On the be we must have done:
ln -s /backend_storage/obs/meego/current/armv7l_full/ /srv/obs/build/MeeGo:current/standard/armv7el/:full ln -s /backend_storage/obs/meego/current/ia64_full/ /srv/obs/build/MeeGo:current/standard/ia64/:full
build=1.0.80.9.20100706.1
BASE=/backend_storage/obs/meego
DL=$BASE/${build}/
PRJ=$BASE/current
# download
FROM="mirrors.kernel.org"
FROMDIR="/meego/builds/1.0.80//${build}/"
mkdir -p $DL
cd $DL
LFTPCOMMAND="mirror --parallel=2 -c -i .rpm -x /images/ -x /debug/ $FROMDIR ."
lftp -c "open -e '$LFTPCOMMAND' $FROM"
mkdir -p $BASE/delete_me
mv $BASE/w-2 $BASE/delete_me
# rm -rf delete_me &
mv $BASE/w-1 $BASE/w-2
mv $BASE/current $BASE/w-1
mkdir -p $BASE/current/armv5l_full
mkdir -p $BASE/current/armv7l_full
mkdir -p $BASE/current/i586_full
find $BASE/${build}/core/repos/ia32/ -name *rpm | xargs -I@ ln @ $BASE/current/i586_full
find $BASE/${build}/core/repos/armv5tel/ -name *rpm | xargs -I@ ln @ $BASE/current/armv5l_full
find $BASE/${build}/core/repos/armv7l/ -name *rpm | xargs -I@ ln @ $BASE/current/armv7l_full
chown -R obsrun:obsrun $BASE/current/
Now on the be:
/usr/lib/obs/server/bs_admin --rescan-repository MeeGo:current standard i586 /usr/lib/obs/server/bs_admin --rescan-repository MeeGo:current standard armv5el /usr/lib/obs/server/bs_admin --rescan-repository MeeGo:current standard armv7el
