User:Jaffa/mud design
m (→Internals: Package structure) |
(→Package structure: Adding extras info) |
||
Line 52: | Line 52: | ||
''package''/ | ''package''/ | ||
info.xml - required | info.xml - required | ||
- | ''package''-26.png | + | ''package''.png - optional icon, used if -nn not present |
- | ''package''- | + | ''package''-26.png - optional, if present copied to right place |
- | ''package''.desktop | + | ''package''-64.png - optional, if present copied to right place |
+ | ''package''.desktop - if present, auto-copied to right place | ||
+ | ''package''.service - if present, auto-copied to right place | ||
+ | extras.xml- optional specification of file destinations, modes, owners, groups etc. | ||
+ | extras/ - copied to ''build-dir''/mud-extras | ||
patches/ - contains quilt patch set | patches/ - contains quilt patch set | ||
... | ... | ||
... | ... | ||
- | + | Icon files, desktop and service files are auto-considered part of 'extras' with implicit rules for their destination. | |
+ | |||
+ | <pre> | ||
+ | <extras> | ||
+ | <file name="foo.sh"> | ||
+ | <destination path="/usr/bin/foo.sh" [mode="auto|0755" ][owner="..."][group="..." ]/> | ||
+ | <destination path="/usr/bin/foo2.sh" /> | ||
+ | </file> | ||
+ | </extras> | ||
+ | </pre> | ||
+ | |||
+ | Mode is optional (set to 0644 if unspecified, unless the file starts #!). Owner and group default to root. <code>install -D</code> lines are auto-added to end of <code>debian/rules:install</code>. | ||
=== Install steps === | === Install steps === |
Revision as of 19:41, 20 January 2009
With the new extras process, mud-builder should be re-focused[1] and re-invigorated to help packaging in accordance with the Maemo Packaging Policy[2] and Uploading to extras.
Contents |
Requirements
- Taking an upstream project (from somewhere) and applying zero or more patches for Maemo.
- Automate creation of projects.
- Take URL of upstream source deb info page (fish out .dsc, .diff.gz and .tar.gz).
- Take URL of upstream tarball
done
- Provide easy in-life management, e.g. changelogs and maintaining the patch.
- Proper debification and Maemo additions (like
Section: user/
and the icon)done - Conformant with the Maemo Packaging Policy:
- Any package patched, or not from a existing deb source, needs to have a maemo version suffix.
- For example, if the base version is 7.0, the package version from mud should be 7.0-0maemo1 for the first upload, 7.0-0maemo2 for the second, etc.
- If the upstream package comes from Debian (with version 3.5-7) and is unpatched, the package uploaded from mud is also 3.5-7.
- If the upstream package comes from Debian (with version 3.5-7) and is patched, the package uploaded from mud is 3.5-7maemo1 for the first upload, 3.5-7maemo2 for the second, etc.
- Warnings should be given when uploading a package with "Section: user/(.*)" where
$1
is not in the accepted list. - It is an error to try and upload a package with no description.
- Any package patched, or not from a existing deb source, needs to have a maemo version suffix.
- Auto-sign & upload to ...-extras-builder in one-step
- Use scp to upload all the files, uploading .changes and .dsc last, to avoid auto-builder issues (driven by .dsc files and #3354)
- Auto-determine Build-Depends
r234
Examples
Create new packages within mud's packages/
directory. They can then be manipulated, built, edited and uploaded:
mud create http://packages.debian.org/source/lenny/cal mud create http://packages.ubuntu.com/source/hardy/libgee mud create http://download.gnome.org/sources/vala/0.3/vala-0.3.4.tar.bz2 mud create new-package
Take a package (for example, from the upstream deb source - in the above case - Ubuntu Hardy), build it; sign it and upload it to diablo-extras-builder:
mud build libgee mud upload libgee
Typical workflow for getting a package, unpacking the source, editing it, checking the result and then cleaning out the working copy:
mud get vala mud compile vala ... mud diff vala ... mud compile vala mud clean vala
Workflow
Use quilt[3]?
TBC
Internals
Awaiting consensus on usage.
Package structure
Instead of having package.xml
, patches/package.patch
and icon/package
, v2.0 of mud should have more consolidation:
package/ info.xml - required package.png - optional icon, used if -nn not present package-26.png - optional, if present copied to right place package-64.png - optional, if present copied to right place package.desktop - if present, auto-copied to right place package.service - if present, auto-copied to right place extras.xml- optional specification of file destinations, modes, owners, groups etc. extras/ - copied to build-dir/mud-extras patches/ - contains quilt patch set ... ...
Icon files, desktop and service files are auto-considered part of 'extras' with implicit rules for their destination.
<extras> <file name="foo.sh"> <destination path="/usr/bin/foo.sh" [mode="auto|0755" ][owner="..."][group="..." ]/> <destination path="/usr/bin/foo2.sh" /> </file> </extras>
Mode is optional (set to 0644 if unspecified, unless the file starts #!). Owner and group default to root. install -D
lines are auto-added to end of debian/rules:install
.
Install steps
- Add extras and extras-devel to /etc/apt/sources.list.d in Scratchbox
- Install mud.
- Create
~/.mudrc
containing garage username and gnupg key to use
For example:
/scratchbox/login for j in '-src'; do for i in '-devel'; do echo "deb$j http://repository.maemo.org/extras$i diablo free non-free" >>/etc/apt/sources.list.d/extras-repo.list done; done apt-get update && apt-get install mud cat >~/.mudrc <<EOM USERNAME=jaffa GPG_KEY=FC11178D EOM
Extras package
mud should be in Extras, and needs dependencies on:
- xsltproc
- devscripts
- gnupg
Notes
Cite error:
<ref>
tags exist, but no <references/>
tag was found