Helping out with packaging the next version of GNOME for openSUSE

GNOME:Factory:Next is where we build the latest version of GNOME for
both Factory and openSUSE 11.1.

Here are some quick instruction on how to setup your environment if you
want to help out with package updates;

I will assume that you already have osc installed. All instances of
$USER below should be replaced with your OBS login id. All instances of
$PACKAGE below should be replaced with the package you are/want to work
on.

1. Pull down the osc gnome plugins

git clone http://www.vuntz.net/git/osc-plugins.git/

2. Copy the osc gnome plugin to your osc plugin directory

mkdir -p ~/.osc-plugins/ && cp osc-plugins/obs-dissector/osc-gnome.py ~/.osc-plugins/

3. Create a project in your home called “branches:GNOME:Factory:Next”
and add some repositories to build against;

osc meta prj -e home:$USER:branches:GNOME:Factory:Next

3.1 Make sure your repositories looks like this (also, that it’s not
commented out with the <!– and –> tags)


<repository name="openSUSE_11.1">
<path project="GNOME:Factory:Next" repository="openSUSE_11.1"/>
<path project="openSUSE:11.1" repository="standard"/>
<arch>x86_64</arch>
<arch>i586</arch>
</repository>
<repository name="openSUSE_Factory">
<path project="GNOME:Factory:Next" repository="openSUSE_Factory"/>
<path project="openSUSE:Factory" repository="standard"/>
<arch>x86_64</arch>
<arch>i586</arch>
</repository>

You should now be able to start updating packages in G:F:N.

The following command will list all packages in need of an update;

osc gnome t --xr --xs --project=GNOME:Factory:Next

To start updating a package from the list, use;

osc linkpac GNOME:Factory:Next $PACKAGE home:$USER:branches:GNOME:Factory:Next && osc gnome up $PACKAGE --project=GNOME:Factory:Next

Make changes as required, then commit to your branch (osc co). Once it
builds successfully, use the following to create a request for inclusion
in G:F:N;

osc submitreq create -m "Description of the changes you made" --nodevelproject

Don’t forget to explore other capabilities of ‘osc gnome’ as well :-)

Note; If you don’t want to specify “–project=GNOME:Factory:Next” all the time, add this to ~/.oscrc in the general section;

gnome_projects = GNOME:Factory:Next

If you have any issues, ask us on IRC. We’re on FreeNode/#opensuse-gnome

Happy updating!!

GNOME Main Menu Improvements?

Which one do you like better?

What it looks like today

This one doesn't ellipsize (ie, shorten the word and add "..." if it doesn't fit) but rather word-wrap

This one uses a generic name

This one uses the application name

Closest book meme

  • Grab the nearest book.
  • Open it to page 56.
  • Find the fifth sentence.
  • Post the text of the sentence in your journal along with these instructions.
  • Don’t dig for your favorite book, the cool book, or the intellectual one: pick the CLOSEST.

“It was a clear shot to the shinbone, and Riker hoped it hurt like hell.”

The quote comes from Carol O’Connell; Crime School

Screenshots from openSUSE Beta4 LiveCD GNOME Install

Screenshots from openSUSE Beta4 LiveCD GNOME Install

Wind of change…

Hello world,

Just to let you know, I’ve changed by blog to http://www.coolice.org/blog

Feeds can be picked up from http://www.coolice.org/blog/?feed=rss2

Official drink for openSUSE addicts

Seems openSUSE addicts now have an official drink. In Australia, we currently enjoy an Ad like this:

Howto: Turn a 2 hour meeting into a 14 hour work day

This is an howto for those of you with too much spare time. I will show you how to turn a 2 hour meeting into a 14 hour workday.

1. Move to Sydney
2. Get a job with a company that forces you to use the worlds most useless travel agency
3. Make sure you arrange a meeting with a customer in Melbourne
4. Use said travel agency to book your flight from Sydney to Melbourne at 7.15am. Also make sure to tell them that you want to return that same day at 2am
5. Order a taxi for 5.45am to go to the airport
6. At the airport, try to check in electronically (which, off course, will fail)
7. Queue up to check in
8. Board the plane by going to your gate. Make sure to pass through the security checkpoint
9. Arrive in Melbourne (this should happen automatically if you boarded the right flight) at around 8.45am
10. Queue up for a taxi (this can take somewhere between 5 and 30 minutes)
11. Arrive at destination 45 minutes later (if you are lucky, time is now 9.45 so you could go for a quick coffee)
12. Have meeting with customer
13. Leave customer and try to get a taxi. This, again, is somewhere between 5 and 30 minutes
14. Arrive at airport around 1.30pm
15. Try to check in electronically, which again will fail
16. Queue up to check in (although step 15 and 16 seems repetitive, it’s necessary)
17. Arrive at counter only to be told that there you have no flight booked for the day
18. Go online to frequent flyer members page to find out that the return flight was booked for tomorrow
19. Back to counter only to be told that they can not changed it there. Have to go to their Sales inquiries for that
20. Queue up for their Sales counter
21. Talk to Sales rep, only to find out that they can not change it. Only the travel agency that booked it can
22. Ring travel agency, tell them that you actually wanted to go home the same day. Listen to apologizes while the rep changes your flight. Pay attention when they let you know that you got the last spot on the 3.30pm flight. Make sure you thank them for their efforts.
23. Queue up to check in for your 3.30pm flight
24. Enter the airport (via security check point). Get asked for permission to sweep you for drugs (this step is sort of optional. You can actually refuse, but then you are not allowed to fly)
25. You now have an hour for lunch so eat something (you will need this)
26. At 3.10pm, listen to the announcement that there is a problem with your plane. They will update you as soon as they know more
27. Keep wondering what’s happening (the airline will try to keep you in the dark as much as possible)
28. Listen to several more announcements about how they are trying to fix the issues with your plane. Also watch the boarding time moving forward all the time (3.40pm, 4.10pm, 4.40pm etc)
29. Now, and this is very important, listen to the final announcement where they tell you that the aircraft can not be fixed, but they allocated another one at a different gate.
30. Once you arrive at the gate, listen to the next announcement and laugh to yourself about those poor travelers who’s flight was canceled so that you could get an aircraft. You will feel even better knowing that most of those passengers will not be able to fly to Sydney that Friday night.
31. Finally get on plane and wait for 30-45 minutes while they try to find some missing passengers
32. You should now be on your way back home to Sydney
33. Arrive in Sydney at 6.45pm
34. Line up for taxi (this time, it’s a minimum of 30 minutes wait time)
35. Arrive back home at 7.45pm

For what it’s worth, the meeting was great :-)

Updated; Build Service Collaboration

The new openSUSE Build Service collaboration mechanism rocks. I’ve been playing with it for a couple of days, and thought I blog about my findings, incase someone finds them useful.

How to get started

Create yourself an OBS account by going to https://build.opensuse.org/, then click “Register | Login”
Install the osc package. Easiest way to do that, is by browsing to http://software.opensuse.org/search, search for osc, then use the 1-Click Install for the openSUSE:Tools:Devel repository.
Find a package that you want to contribute to, in my case, I use http://spreadsheets.google.com/ccc?key=pXWjzV1g7sCrvwZoLVGMFWQ&hl=en which contains all GNOME packages that needs to be updated.
Now that you found a package, do the following (I will use cheese as an example package. Also, whenever you see “MBoman”, it should be replaced with your OBS user name);
1. Create a branch where you can work on the package

> osc branch openSUSE:Factory cheese
Note: The branch has been created of a different project,
GNOME:Factory,
which is the primary location of where development for
that package takes place.
That’s also where you would normally make changes against.
A direct branch of the specified package can be forced
with the –nodevelproject option.
A working copy of the branched package can be checked out with:
osc co home:MBoman:branches:GNOME:Factory/cheese

2. Check out the package

> osc co home:MBoman:branches:GNOME:Factory/cheese
A home:MBoman:branches:GNOME:Factory/cheese/cheese-2.22.3.tar.bz2
A home:MBoman:branches:GNOME:Factory/cheese/cheese.changes
A home:MBoman:branches:GNOME:Factory/cheese/cheese.spec
A home:MBoman:branches:GNOME:Factory/cheese/ready

3. Download the latest package (most of the GNOME packages can be found at http://ftp.gnome.org/pub/GNOME/sources/) to home:MBoman:branches:GNOME:Factory/cheese

4. Change to the package directory

> cd home\:MBoman\:branches\:GNOME\:Factory/cheese/

Let’s say that the package in GNOME:Factory was cheese-2.22.3.tar.bz2 and we downloaded cheese-2.23.6.tar.bz2
1. We need to delete the older version from this project (note! *Never* use rm when deleting files here)

> osc del cheese-2.22.3.tar.bz2
D cheese-2.22.3.tar.bz2

2. Then add the new version

> osc add cheese-2.23.6.tar.bz2
A cheese-2.23.6.tar.bz2

3. We then need to change the .spec file to reflect this new version
Open up cheese.spec in your favorite editor, then find the line starting with “Version:”
For this example, you should see something like this;
Version: 2.22.3
Replace the above version with the version of the new package, so it looks like this;
Version: 2.23.6

4. Next, we need to find out what changed between 2.22.3 and 2.23.6. There are a couple of ways to do this, and not all of them works for every package :-/

1) See if you can find a news file for all versions between 2.22.3 and 2.23.6 on the ftp server where you download the package from
2) See if there is a usable NEWS file in svn (http://svn.gnome.org/viewvc/cheese/trunk/)
3) Unpack the tar ball and see if there is a usable NEWS and/or ChangeLog file in there

5. Once you found out what changed, open up cheese.changes in your favorite editor
Couple of things to remember;

* Follow the same format as previous entries
* Wrap lines that exceeds 76 characters
* Don’t use more that 40-50 lines to describe the changes as rpm copies the entire changelog to rpmdb.
* If there are bug entries (ie, #123456), figure out what bugzilla the bugentry comes from, and then change from #123456 to bgo#12346. Note that bgo should be replaced with the proper bugzilla entry from the list at http://en.opensuse.org/SUSE_Package_Conventions/Changelogs#11.1_Bugnumbers_in_changelog

6. I found it very useful to run ‘osc st’ at this stage. It’ll list all changes you’ve done. For a version upgrade, we will want to see 1 or more adds, 1 or more deletes and both .spec and .changes files modified;

> osc st
D cheese-2.22.3.tar.bz2
A cheese-2.23.6.tar.bz2
M cheese.changes
M cheese.spec

7. Commit your changes and see if the package builds. Describe what you’ve done with the -m switch;

> osc commit -m “Updated to 2.23.6″

8. Check the status to make sure the package builds;

> osc r

9. Once the package builds, submit it to the GNOME maintainers (again, use the -m switch to describe your changes);

> osc submitreq create -m ‘Updated to 2.23.6′

The GNOME maintainers will get a notification that you submitted this request.
Once they act upon it, you will get an email back. Basically, it’ll be approved or declined.
You can list existing submissions using this command;

> osc submitreq list GNOME:Factory
666 new (mboman) home:MBoman:branches:GNOME:Factory/cheese -> GNOME:Factory
‘Updated to 2.23.6′

Other things to note;
If you delete or add patches, make sure that you note that in the .changes file as well. Clarify why a patch was deleted.

openSUSE 11.0 Pre-Beta3 Screenshots

Here’s some screenshots from the Pre-Beta3 GNOME LiveCD.

Upgrading 10.3 to 11.0 (Factory)

I’ve started testing 10.3 to 11.0 upgrades to make sure that the Desktop doesn’t break etc.

For my first go, I used a backported version of zypper, since it handles dup (Distribution Upgrade).

In case it’s of interest to other people, here are the steps;

1. Install 10.3
2. Add oss, non-oss and update repos
* zypper sa http://download.opensuse.org/update/10.3/ updates
* zypper sa http://download.opensuse.org/distribution/10.3/repo/oss/ oss
* zypper sa http://download.opensuse.org/distribution/10.3/repo/non-oss/ non-oss
3. Run the following twice (First run will update a few packages which are required to properly apply the rest of the patches) then restart the computer
* zypper up
4. Add the libzypp/zypper backport repository
* zypper sa http://download.opensuse.org/repositories/zypp:/Backport/openSUSE_10.3/ zypp
5. Run the following (Note! This will ask you to remove some YaST packages etc from your install. Answer Yes)
* zypper up -t package
6. Remove all repositories (Repeat the command until zypper tells you there are no repository to remove)
* zypper sd 1
7. Add the Factory repositories
* zypper sa http://download.opensuse.org/distribution/SL-OSS-factory/inst-source/ oss
* zypper sa http://download.opensuse.org/distribution/SL-Factory-non-oss/inst-source-extra/ non-oss
8. Run the following command;
* zypper dup

During Step 8, I got two errors. First one was that it couldn’t find yast2-trans-en_US on the media (the version I had was older than the one it tried to install), so I simply removed the package with ‘rpm -e yast2-trans-en_US’ then run zypper dup again. I got the same error on opensuse-manual_en so removed it with rpm and restarted zypper dup.

Please be advised that the above procedure is not supported and should only be done on non-production installs.