GNOME/Packaging/GNOME:STABLE
From openSUSE
This HowTo describes the process of creating and updating GNOME:STABLE:x.yy
Creating GNOME:STABLE:x.yy
When GNOME releases a major version, and GNOME:Factory has been updated, we want to copy these packages to GNOME:STABLE:x.yy.
Here are the steps needed to achieve this (Using GNOME v2.26, and openSUSE 11.1 as an example);
1. Create GNOME:STABLE:2.26
2. Using 'osc meta prj -e GNOME:STABLE:2.26', add the following repositories (Note! The order of the repositories are important);
<repository name="openSUSE_11.1"> <path project="GNOME:Backports:2.26" repository="openSUSE_11.1"/> <path project="openSUSE:11.1:Update" repository="standard"/> <path project="openSUSE:11.1" repository="standard"/> <arch>i586</arch> <arch>x86_64</arch> </repository>
3. Copy all packages, using something like this;
pkgs=`osc rprjresults -c GNOME:Factory|awk -F";" '{print $1}'`; for pkg in $pkgs; do osc copypac --expand GNOME:Factory $pkg GNOME:STABLE:2.26; done
4. Change the development project to GNOME:STABLE:2.26
pkgs=`osc rprjresults -c GNOME:STABLE:2.26|awk -F";" '{print $1}'`; for pkg in $pkgs; do osc meta GNOME:STABLE:2.26 $pkg|sed -e 's/GNOME:Factory/GNOME:STABLE:2.26/g'|osc meta GNOME:STABLE:2.26 $pkg -F -; done
Updating GNOME:STABLE:x.yy
When GNOME releases a new dot release (ie 2.26.1) and GNOME:Factory have been updated, we can generally copy all packages to GNOME:STABLE again.
1. Find out what packages are newer in G:F compared to G:S:2.26. The script at the end of this page will list all packages that are newer (pipe it to a file), for example.
2. Review the list and make sure it only contains packages that should be updated. Some packages might be too new and should not be copied. If in doubt, ask on IRC (freenode/#opensuse-gnome).
3. Do the update, using something like this;
pkgs=`cat outputfile.txt|awk -F";" '{print $1}'`; for pkg in $pkgs; do osc copypac --expand GNOME:Factory $pkg GNOME:STABLE:2.26; done
Script to get list of packages to copy
Please note that this script will not list packages which have changed in G:F if the change is not an upstream version change (eg, just a new patch, or some packaging change).
#!/bin/bash wget 'http://tmp.vuntz.net/opensuse-packages/obs.py?format=csv&project=GNOME:Factory' -O gFactory wget 'http://tmp.vuntz.net/opensuse-packages/obs.py?format=csv&project=GNOME:STABLE:2.26' -O gStable pkgs226=`cat gStable |awk -F";" '{print $1";"$3}'` pkgsFactory=`cat gFactory |awk -F";" '{print $1";"$3}'` set $pkgsFactory for pkg in $pkgsFactory; do last=$pkg done for pkg in $pkgs226; do p226=`echo $pkg|awk -F";" '{print $1}'` v226=`echo $pkg|awk -F";" '{print $2}'` # echo "Package $p226 is version ====> $v226" found=0 try=0 while [ 1 ]; do pF=`echo $1|awk -F";" '{print $1}'` if [ "$pF" = "$p226" ]; then vF=`echo $1|awk -F";" '{print $2}'` found=1 if [ "$vF" \> "$v226" ]; then if [ "$vF" \> "2.26.99" -a "$vF" \< "2.27.99" ]; then echo "===============> $pF is newer in GNOME:Factory, but it might be too new ($v226 vs $vF)" else # echo "$p226 is newer in GNOME:Factory ($v226 vs $vF)" updPack=$updPack" "$1 fi fi break else shift fi if [ $1 = $last -a "$try" = "0" ]; then set $pkgsFactory try=1 elif [ "$try" = "1" ]; then break fi done shift if [ "$found" = "0" ]; then echo "Could not locate $p226 in G:F" fi done echo "List of newer packages" echo "======================" for pkg in $updPack; do echo $pkg done

