/srv/irclogs.ubuntu.com/2009/07/30/#ubuntu-classroom.txt

=== asorbus is now known as sps
=== sps is now known as shawnps
=== Pricey is now known as PriceChild
=== PriceChild is now known as Pricey
qwebirc66499gl05:27
=== MT- is now known as MT
=== MT is now known as MT-
asacgood morning!07:01
gotunandangood morning !07:02
asacanyone here ;)?07:02
brand0congood evening(?)07:02
asacah good.07:02
gotunandanalmost good afternoon here (india)07:02
amartanigood morning!07:03
Scienceman123Hello07:03
Scienceman1232 am here07:04
asaci almost wondered if anyone would show up at this time ;) ... but great07:04
asacok lets get started. please be a bit patient with me ... its really early and usually i wouldnt be awake now ;)07:05
Scienceman123Me neither :P07:05
asaci really appreciate that you came then ;)07:05
asacgood thing is that - afaik - there is no session directly after this session, so in case it takes a bit longer we won't thrown out. (though i will try to keep it within one hour)07:06
asacso basiclly todays packaging training session is supposed to be about "Mozilla packaging techniques (extensions, patchsystems, bzr)"07:07
=== MT- is now known as MTeck
asacwhy mozilla?07:07
asacMozillateam takes care of a variety of packages surrounding mozilla software07:08
asac+ we have pretty big beasts like tbird/sunbird/firefox/xulrunner07:09
asac+ our expertise touches various packages that interface with mozilla in one way or another ... (cairo, fontconfig,) (plugins and embedding apps)07:09
asac+ xulrunner applications: fennec, prism07:10
asac(and probably know, but I can't reember)07:10
asacmore;)07:10
asac+ lots of extensions07:10
asac+ helper tools to standardize and easy mozilla package maintenance07:10
asacs/easy/ease/07:10
asacso thats quite a lot work; i want to show you know what techniques were established to make the package maintenance as efficient as possible07:12
asacone more adverstiment thing: we have our channel in #ubuntu-mozillteam ... so any questions wrt mozilla packages are best anwered there07:12
asacso today i planned to how we achieve a few of the various objectives; in particular:07:13
asacefficiency and transparency for upstream07:14
asac(damn my typo is still bad ... if you get confused by too many typos let me know ;))07:14
asacwrt to efficiency I want to look at various aspects:07:15
asac1. how to improve efficiency of a team07:16
asac2. how to maintain patches in an efficient way - show tricks07:16
asac3. how source tree layout can contribute to efficiency07:17
asac4. how we make backporting efficient07:17
=== MTeck is now known as MT-
asac5. and special requirements we get by providing daily builds07:18
asacso i want to start with section one of todays session ;) ... "Team & Tools"07:18
asacefficient team maintenance depends on a shared set of tools and best practices07:19
asacbasically the goal is:07:19
asacanyone in a Team should be able to fix/adjust/extend packaging branches without thinking twice07:20
asacthis07:20
asachelps to be better leverage learning effects, but also reduces discussion about such  meta topics itself to a minimum07:20
asacExamples (team & tools):07:21
asac+ mozillateam uses bzr - discussing the benefits of a distributed VCS for a team is a bit beyond the scope of this session, but probably feel obvious to most, right?07:21
asac+ something less obvious, which helps to improve team efficiency is the use of the same changelog format07:22
asacdoesnt sound like a big deal, but besides from improving readability it also helps07:23
asacto avoid regular discussions about how this or that format is better ... so team members can focus on the real work ;)07:24
asactwo examples of changelog formats used; first the comon one:07:25
asac * path/to/file: what did you do07:25
asacthat one is pretty common, but for mozilla (at least the big beast apps mentioned above) it turned out to be suboptimal07:25
asacbasically because most of the work we do is related to patches: updating patches, adding patches, removing patches07:26
=== noodles775 is now known as noodles
=== noodles is now known as noodles775
asacalso we explicitly add some meta information to our patches to increase upstream transparency07:26
asacso our file names would be rather long:07:27
asac* debian/patches/bz386904_config_rules_install_dist_files.patch ...07:27
asacif you have a bunch of those files touched the changelog becomes unreadable ... thats why mozillateam took a different approach and first state what is done and then how and what files touched07:27
asac* i did this07:28
asac  - update debian/patches/bz386904_config_rules_install_dist_files.patch07:28
asac  - update debian/patches/series07:28
asac  - drop debian/patches/yetanother_patch07:28
asacyou can see this format being used in most mozilla related packages in ubuntu i would think07:29
asacnext thing is similar trivial, but even more important: "Branch names"07:29
asacagreeing on how to name branches improves efficiency quite a lot07:29
asacideally, anyone in the team can find any branches by typing in the location bar or console directly07:30
asacour format is:07:30
asac Release branches: lp:~${TEAM}/${PROJECT}/${PACKAGE}.[${RELEASE}|head]07:30
asac(release branches are the main branches that are used to release uploads from)07:30
asac Topic branches lp:~${TEAM}/${PROJECT}/${PACKAGE}.[${RELEASE}|head].${TOPIC_NAME}07:31
asacso for example: lp:~mozillateam/firefox/firefox-3.0.head07:31
asacTEAM = mozillateam07:31
asacPROJECT = firefox07:31
asacPACKAGE = firefox-3.0 (source package)07:31
asacRELEASE = hardy|intrepid|jaunty ... "head"07:32
asachead is a special release name somehow which we use to signal that its the branch for the current development release07:32
asacsoinstead of using .karmic now we are using .head; when we come close to a release we cut off stable releaes branches where we dont do much development on anymore07:33
asacso if you have a "real" release it means in mozillateam land that its a stable maintenance branch07:33
asactwo more things before we do a quick exercise for the team & tools section07:34
asacwe also do "release commits":07:34
asac-> this boosts efficiency because you can easily spot revisions that reflect any given package version07:34
asacwe use bzr-builddeb accors the board as a conventient way to produce sources/binaries etc.07:35
asacand we use debian/rules get-orig-source quite heavily to produce tarballs directly from upstream repositories (e.g. snapshots/dailies/releases)07:36
asachmm... time is running fast. any questions for now?07:36
asacmaybe lets do a simple exercise about "branch names":07:37
asacguess the branch url for the nss jaunty release branch and bzr branch it07:37
asacanyone can guess the name ;)?07:37
asacso the template is: lp:~${TEAM}/${PROJECT}/${PACKAGE}.[${RELEASE}|head]07:38
asacbzr branch lp:~mozillateam/nss/nss.jaunty ;)07:38
asaceveryone got that branch ;O)?07:40
asacok ... so for next excersize you similarly should branch the "nspr" karmic branch as we want to prepare a release ;)07:41
asacbzr branch lp:~mozillateam/nspr/nspr.head07:41
asacso what you usually do during development is to keep the changelog at UNRELEASED (check out debian/changelog)07:43
asaccurrently its karmic, but assume its all the time UNRELEASED until the real upload07:43
asacso when you are done with all the branchwork you do a release commits. Thats basically two commands:07:43
asac1. dch -r -DRELEASE (e.g. dch -r -Dkarmic)07:44
asac-> this updates the changelog timestamps and flipps UNRELEASED to karmic (or whatever you specified in RELEASE07:44
asac2. debcommit -r07:44
asac-> this does the actual release commit. it autoamtically creates a bzr commit log reading like: "releasing 0.0-0ubuntu1"07:45
asacthis helps anyone in the team later to spot the actual release by just looking at changelog07:45
asacalso it creates a tag using the version in changelog - which is a good thing, but the mozillateam usually does not use tags for that07:46
asacso when you did those two commands you basically have prepared a nspr release in mozilla-team-style07:46
asacso seince you are not a mozillateam member, where would you push the branch to in order to contribute?07:47
asacanswer is simple: push your branch up to launchpad using an appropriate topic branch name07:47
asacand request a merge07:47
asacTopic branches lp:~${TEAM}/${PROJECT}/${PACKAGE}.[${RELEASE}|head].${TOPIC_NAME}07:48
asacso for this it could be: lp:~yourname/nss/nss.head.4.8-0ubuntu107:48
asacok thats it for teams and tools :)07:48
asacsince time is already running low i will a bunch of things i said to say ...07:49
asaclets go from team & tools to patches07:49
asacin particular its important that adding patches also causes long term maintenance pain07:49
asacespecially in an environmnet where you want to provide daily builds based on a really active upstream07:50
asaclike firefox07:50
asac(example: https://edge.launchpad.net/~ubuntu-mozilla-daily/+archive)07:50
asacone thing to wake you up:07:51
asac+ seemingly easy patches can become a pain; see http://bazaar.launchpad.net/~chromium-team/chromium-v8/chromium-v8.head/annotate/37/debian/patches/enable_soname.patch07:51
asacthats a patch i recently added to our chromium v8 branch (the chrome javascript engine)07:51
asacanyone has any idea whats so painful about that patch?07:51
asacthe problem is not that its a big patch that is hard to figure how to port in caes upstream changes the underlying file07:53
asacthe problem here is that it touches a context that frequently changes: e.g. MINOR_VERSION, BUILD_NUMBER, PATCH_LEVEL07:53
asacthose regularly change and i am sure if that patch would have been kept we would get build failures every few days in our ~chromium-daily ppa07:54
asacanyone can think of a way to prevent that?07:54
asachere is the better approach (even if its a bit ugly its much less painful):07:55
asachttp://bazaar.launchpad.net/~chromium-team/chromium-v8/chromium-v8.head/revision/39#debian/rules07:55
asacso basically we dont put a patch in there, but rather do the change using sed from debian/rules :)07:55
asacok another thing about patches ...07:56
asac+ dpatch-edit-patch and simple-patchsys is suboptimal approach for a) large packages and b) medium packages that are work intensive07:56
asac - example: adjusting one patch in xulrunner 1.8 (even smaller than 1.9) with dpatch-edit-patch run took several minutes07:56
asac thats time better spend on other things i am sure07:56
asacmozillateam uses quilt ... its a bit more to learn up front, but you can work within a source tree and dont need to regularly create full copies of it and so on07:57
asacas an exercise you could try to adjust the soname patch from above using quilt (not now though).07:58
asaci will stay in the channel if you have questions. or join #ubuntu-mozillateam07:58
asaci will skip two topics now because of time constraints and move directly to last topic: tricks on how to make backports easy07:59
asacabout backporting08:00
asacespecially for the dailies we dont want to maintain branches for each and every ubuntu releaes08:00
asacinstead we take care that .head branches just work everywhere08:00
asacfor that we use various tricks ;)08:00
asacone trick is to enable/disable features based on the version that is available08:01
asacso if firefox 3.0 needs PACKAGE b >= VERSION 1 for a certain feature08:01
asacwe wouldnt add a hard depent to debian/control like b >= VERSION108:01
asacinstead we just add an unversoined dependency on package b to debian/control08:01
asacand then in debian/rules check the installed version and enable/disable a certain feature on demand08:02
asacyou can check that yourself in rules and control of http://code.launchpad.net/~mozillateam/xulrunner/xulrunner-1.9.2.head08:02
asaclook for nspr/nss and cairo and sqlite08:02
asacok since time is off, go ahead and ask me08:04
asacinclude my nick so i can see your questions08:04
asacthe notes i prepared for this session can be found here: http://paste.ubuntu.com/236213/08:04
asacmaybe it helps you to re-read something08:04
asacif you do the exercises and need help, let me know08:05
asacif not today here, you can ask i #ubuntu-mozillateam08:05
asaci didnt touch extension maintainence this cycle because i did it like 4 last time i did a session08:05
asacif you are interested in helping out doing extensions, jump in our channel08:05
asacwe have lots of work todo this cycle08:05
asacand extensions are an easy starter08:06
asacok thanks08:06
asac!08:06
=== croppa_ is now known as croppa
qwebirc2865date -u11:05
=== noodles775 is now known as noodles775-afk
=== noodles775-afk is now known as noodles775
=== noodles775_ is now known as noodles775
=== noodles775 is now known as noodles775-afk
KeifferDoes anyone have invites on DEMONOID or BITME? Could exchange some17:01
=== noodles775-afk is now known as noodles775
squirrel25anyone having trouble getting MPEGs to play ?22:09

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!