The Mer Wiki now uses your Mer user account and password (create account on https://bugs.merproject.org/)
Contribution in detail
(summary) |
(Add a section on handling new packages) |
||
Line 89: | Line 89: | ||
git commit -s --amend | git commit -s --amend | ||
git push origin HEAD:refs/for/master | git push origin HEAD:refs/for/master | ||
+ | |||
+ | = New Packages = | ||
+ | Occasionally a new package is required in Mer. | ||
+ | |||
+ | The process is similar to the normal contribution with some minor variations. | ||
+ | |||
+ | # Build your package in the community OBS | ||
+ | # Propose a new package on irc, mailing list or via a bug to Mer Core/.Project-core | ||
+ | # Wait for the git repo to be created | ||
+ | # Checkout your package from your OBS project | ||
+ | # Prepare a git repo and add your code. Then do a signed-off commit. | ||
+ | # Link your local git repository to the remote mer-core/gerrit repository | ||
+ | # Push your code for review and CI | ||
+ | |||
+ | So having prepared and built your package on OBS, go to the osc package directory | ||
+ | osc co <PRJ> <PKG> | ||
+ | cd <PRJ>/<PKG> | ||
+ | |||
+ | Then prepare the git repo (skipping the .osc/ dir) | ||
+ | git init . | ||
+ | git add * | ||
+ | git commit -s | ||
+ | |||
+ | Now add the Mer git repository (using your name/package) | ||
+ | git remote add gerrit ssh://<yourlogin>@review.merproject.org:29418/mer-core/<packagename> | ||
+ | |||
+ | A quick way to check all is well is | ||
+ | git remote update | ||
+ | |||
+ | Finally, to push the new code and start a CI run: | ||
+ | git push gerrit HEAD:refs/for/master | ||
+ | |||
+ | You should get back a message like: | ||
+ | remote: New Changes: | ||
+ | remote: http://review.merproject.org/XXX | ||
+ | |||
+ | This will now be scheduled for a CI build and test; then it will be | ||
+ | manually reviewed and hopefully, accepted. | ||
+ | |||
+ | If changes '''are''' needed at this point, the code is already in gerrit so it follows the normal modification process. |
Revision as of 13:11, 26 January 2012
Contents |
Local build of current version
Need prerequisites for osc and build
Summary
- branch OBS package
- clone mer/git package from Mer master repo
- checkout OBS package into git repo (how to avoid duplicate download?) OBS and mer/git package should be identical (osc diff / git diff)
- unpack source and apply patches into local build root
- now have 3 copies of source: obs co as tarball, git co as tarball, local unpack in chroot
- take snapshot of chroot (for later diff)
- hack in chroot until ready (potentially needing to install new pkgs for new BRs)
- Create patch
- Modify packaging
- Submit to cobs
Branch the package to work on it
osc -A https://obs branch Mer.org:Core:i586 systemd
A bug in the OBS means that the new branch project will not have the correct repos so add them manually. Even if you add them through the OBS web interface they will miss the arch field.
osc -A https://obs meta prj home:YOURNAME -e
<repository name="Mer_Core_i586"> <path repository="Core_i586" project="Mer.org:Core:i586"/> <arch>i586</arch> </repository>
The repository needs to be set to publish too.
Checkout:
osc -A https://obs co home:Admin:branches:Mer.org:Core:i586/systemd cd home:Admin:branches:Mer.org:Core:i586/systemd osc build i586
Pull the latest Mer version from the gerrit git repo
Clone the git repo metadata besides your OSC checkout:
cd home:Admin:branches:Mer.org:Core:i586/systemd git clone --bare ssh://your_username@review.merproject.org:29418/mer-core/systemd .git git config -f .git/config core.bare false
Check out the latest content from git:
git reset --hard
Hack
You can now edit the code and packaging.
Build
Of course you'll need to do one or more builds to verify the code.
osc ar osc ci osc chroot osc build
Create image
Use a suitable .ks
IMG supports a feature called "Extra repositories and packages" This allows you to use a standard kickstart and add a specific repository to use for overrides.
Select the OBS and enter the repository/repo eg:
home:Admin:branches:Mer.org:Core:i586/Mer_Core_i586
Build a suitable image, install and test
DEVICE=/dev/sdh curl http://imgw1/images/web/root/1-20111110-090037/meego-nemo-trial-1.2.90.20111110.1000.iso | sudo dd of=$DEVICE bs=4M oflag=direct && sudo eject $DEVICE
Diagnostic note:
Package SOMETHING.rpm is damaged:
/var/tmp/cache/packages/mer-core-i586/noarch/filesystem-2.4.31-1.1.noarch.rpm
This means a checksum mismatch was seen and the package was re-downloaded.
Push for review
In the obs/mer build directory:
cd home:Admin:branches:Mer.org:Core:i586 git commit -s --amend git push origin HEAD:refs/for/master
New Packages
Occasionally a new package is required in Mer.
The process is similar to the normal contribution with some minor variations.
- Build your package in the community OBS
- Propose a new package on irc, mailing list or via a bug to Mer Core/.Project-core
- Wait for the git repo to be created
- Checkout your package from your OBS project
- Prepare a git repo and add your code. Then do a signed-off commit.
- Link your local git repository to the remote mer-core/gerrit repository
- Push your code for review and CI
So having prepared and built your package on OBS, go to the osc package directory
osc co <PRJ> <PKG> cd <PRJ>/<PKG>
Then prepare the git repo (skipping the .osc/ dir)
git init . git add * git commit -s
Now add the Mer git repository (using your name/package)
git remote add gerrit ssh://<yourlogin>@review.merproject.org:29418/mer-core/<packagename>
A quick way to check all is well is
git remote update
Finally, to push the new code and start a CI run:
git push gerrit HEAD:refs/for/master
You should get back a message like:
remote: New Changes: remote: http://review.merproject.org/XXX
This will now be scheduled for a CI build and test; then it will be manually reviewed and hopefully, accepted.
If changes are needed at this point, the code is already in gerrit so it follows the normal modification process.