For comments on comments :-D from yesterday's post please read at the very bottom.
Let's get started with the technical details.
I am not at home right now, so I can't use my awesome paper+pencil-drawing(tm) for this explaination so bear with me in case some parts are a bit too complex (I actually created most code while operating on ballmer's peek, so it's as difficult for me to understand it as it might be for you ;-)
Anyway, the Neon framework, which is responsbile for the important parts of the nightly build process (I am considering building as not important here :-P) is written in Ruby (omg!).
http://websvn.kde.org/trunk/extragear/multimedia/amarok/supplementary_scripts/neon
Those of you who had a look at the upcoming Amarok release script will notice quite some similarities, most of them are caused by the fact that I absolutely hate scrolling in files so both source trees consist of some dirs and a couple of files named according to their use (surprise!).
Neon basically consist of 4 components which more or less rely on each other:
- neon.rb/libneon.rb as core component
- fetcher.rb is handling the collection of sources - more on that later
- publisher.rb is basically a wrapper for various ways of source distribution (e.g. tarball upload via FTP)
- distro.rb is a wrapper for distributions
The first real work that is done, is checking which source trees need to be fetched (Qt gets built once a month - Strigi, TagLib, KDELibs and KDEBase are built once a week - and only Amarok is built once a day). Qt and KDELibs are actually just downloaded from the KDE snapshots on ftp.kde.org, the others get fetched directly from SVN (kdebase, or rather kdebaseruntime is a very cut down version which only ships with stuff that is necessary to run Amarok - the Xine Phonon backend for example).
In case all the SVN magic finished without problems the publishers would kick in and pull the newly created tarballs to some source distribution server (ftp/web server).
Then the distributions get their source packages. All distribution realted tasks are within special files located in neon/distros/ - the only working one is Kubuntu right now, but the processes are the same for most package types anyway.
First it pulls a copy of the source trees, and prepares everything as necessary for the package type/distribution, once that is done, it uploads to a remote build server (in case of Kubuntu this is done package by package to prevent complete meltdowns of the repository in case of an issue.
The most important part is that fetcher.rb created an array listing all fetched source trees (including their SVN revision number), so that all distributions can create an appropriate version string (Kubuntu is using DATE+svnREVISON-0amarok1).
There are a couple of guidelines all distribution packages should follow, for example they should require few to none maintenance. Ultimately the only reason one would have to edit the packaging, once everything works properly, is to make it work for new distribution releases.
Again Kubuntu as example: source packages are created according to the soure tarballs provided by fetcher.rb, they get thrown in a build deamon and run threw some automated cmake/kde build scripts and one gets _one_ resulting binary per source package.
Also, all packages should come with development headers and debugging symbols (I guess it's pretty obvious why that is ;-)
To sum that up: the most tricky part is probably to get the packaging right - general information for distributions are on the wiki page.
Everyone who is interessted in contribution, either contact me personally or use the Neon mailing list
------------------
Regarding Comments:
OpenSuse build service
Good thing, but it's really up to the maintainers where they want to build. For Kubuntu it makes most sense to use the Launchpad Personal Package Archive, for openSUSE however we will of course use the OSBS ;-)
Ubuntu -> Debian
Not much of a problem, with a bit of tuning they could actually rely on the same debian directories. The only tricky part is the remote build server, I guess using the openSUSE build service is a good idea?
-dev packages
The first public release of Neon had quite some dependencies on -dev packages, they are there because Neon is also meant to help developers join Amaork development. I removed them from the deps stack (strigi, taglib, kdelibs, kdebaseruntime, amarok) they should disappear from qt at some rebuild as well.
For the developers there will be a seperate package for all necessary -dev packages. Should be available soonish.
Missing Icons?
Should be fixed now.
Wrong Colouring!
I can't reproduce the issue, and actually thought it was fixed months ago. If anyone gets hold of information why this appears please leave a mail at the Neon mailing list
How seperate is it really?
Let's say it that way: the possability that Neon will cause issues with _any_ existing KDE/Amarok/Qt configuration is close to not existing at all.
This also includes your collection.db :-)

2 Comments:
米蘭情趣用品,情趣用品,情趣,飛機杯,自慰套,充氣娃娃,AV女優.按摩棒,跳蛋,潤滑液,角色扮演,情趣內衣,自慰器,穿戴蝴蝶,變頻跳蛋,無線跳蛋,電動按摩棒,情趣按摩棒
辣妹視訊,美女視訊,視訊交友網,視訊聊天室,視訊交友,視訊美女,免費視訊,免費視訊聊天,視訊交友90739,免費視訊聊天室,成人聊天室,視訊聊天,視訊交友aooyy
哈啦聊天室,辣妺視訊,A片,色情A片,視訊,080視訊聊天室,視訊美女34c,視訊情人高雄網,視訊交友高雄網,0204貼圖區,sex520免費影片,情色貼圖,視訊ukiss,視訊ggoo,視訊美女ggoo
080苗栗人聊天室,080中部人聊天室ut,ut影音視訊聊天室13077,視訊做愛,kk777視訊俱樂部,上班族聊天室,聊天室找一夜,情色交友,情色貼片
情趣,情趣,視訊交友,情趣用品,情趣用品,飛機杯,自慰套,自慰套,自慰套,自慰器,充氣娃娃,AV,按摩棒,電動按摩棒,情趣按摩棒,按摩棒,跳蛋,跳蛋,跳蛋,男女,潤滑液,SM,情趣內衣,內衣,性感內衣,角色扮演,角色扮演服,吊帶襪,丁字褲
Post a Comment