I've spent some time these past weeks trying to figure out a good way to get some extra packages into our online package repository. After discussing with Marcin and Ken, we finally decided that we'd have our own extra overlay and buildbot slave that would build a meta-package and its dependant packages.
What does this mean? It means that we can bring in packages from OE, build them, and host the binaries (and relevant package-related metadata) on our servers. Previously we would host packages piecemeal somewhere on bugcommunity, but no real extra repo.
As a BUG user, this is how the workflow goes:
- Check to see if we've got the packge in our extra repo: http://repo.buglabs.net/ (see <arch>-extras)
- Manually add the URL's to your BUG's /etc/ipkg.conf (or, assuming your BUG has internet access and you don't mind overwriting your old /etc/ipkg.conf, wget http://repo.buglabs.net/ipkg-extras.conf -O /etc/ipkg.conf wget http://repo.buglabs.net/ipkg-extras.conf -O /etc/ipkg/ipkg-extras.conf [thanks Marcin])
- ipkg update
- ipkg install <package of your choice>
wget http://repo.buglabs.net/ipkg-extras.conf -O /etc/ipkg/ipkg-extras.conf
ipkg install ...
Since all of the metadata is intact from the build, ipkg should grab all of the dependencies for you and voila, the package is installed. I'm working on a list of packages I'd like to see in there, but if you're curious to see what's on the list, take a look at the source recipe: http://svn.buglabs.net/svn/!source/HEAD/bug/branches/R1.4/extras-repo/com.buglabs.build.oe/meta-bug-extras/packages/tasks/task-bug-feed-extra.bb (or here, for internal buggers).
If you've got svn write access, here's how the workflow to get a package into our repo goes:
- Check out the branch of our build project
- svn co svn://svn.buglabs.net/bug/branches/R1.4/extras-repo/com.buglabs.build.oe
- Clone the openembedded git repo (i like to do it sidebyside for convenience):
- git clone git://git.openembedded.org/openembedded
- ... wait ...
- Try finding something you're interested in (right now my pwd is in com.buglabs.build.oe):
- find ../openembedded/recipes/ -name \*mplayer\*
- Find it? Cool, copy it into our build environment (i tend to do the entire directory to see if the most recent package version will build for me. I like newness ;D):
- cp -r ../openembedded/recipes/mplayer/ meta-bug-extras/packages/
- Try to build it:
- source reinstate-build-env
- bitbake mplayer
- Did it build? If not, repeat steps 3 through 5 for your package's dependencies... some debugging and detective work is often needed (not for the faint of heart)
- If it built and you're confident it will build on our build system, add the package name to meta-bug-extras/packages/tasks/task-bug-feed-extra.bb
- Commit the new package (and its dependencies) and task-bug-feed-extra.bb to svn:
- svn add meta-bug-extras/packages/mplayer/
- svn add meta-bug-extras/packages/<dependencies>
- svn commit meta-bug-extras
- That's it!
Our automated build system is scheduled to rebuild the repo every night, and we upload the resulting ipk's to the corresponding folder on repo.buglabs.net. That means that at 2AM EDT following your check-in, buildbot will put your package in the repo.
I should note here that the developers here at BUG are all interested in getting the BUG to do new and cool things, and we're happy to put the artifacts of these experiments and demos into our repository. If however you run into problems with the packages, we don't support these extra packages. We will try to help, but these applications all have their own communites that are better suited to supporting their own application's problems. That said, have fun with these new packages. There will be many more to come.
Leave some comments if you'd like to see a particular package in our repo!