Jeff Thompson wrote:
Jim Kusznir wrote:
Learning a bit about portage and making ebuilds took me about half a day; but after that I could crank out the ebuilds for each subpart in about 3 minutes each. If you're interested, I could send some instructions. Keep in mind that I'm still a "gentoo developer-wannabe" (aka very new to making ebuilds), so this is basically the minimum required to work; not really the best it can be.
Jim, I'd be interested in whatever instructions you could put together... I'm not currently a gentoo user and I've been putting it off since the whole point of gentoo seems to be "build from source" using ebuilds and I don't currently know anything about ebuilds... :)
I suspect that others may be interested as well and I believe it's definitely on topic, since gentoo seems like a reasonably popular platform for mythtv.
Ok, here goes:
First, I got my information primarily from: http://www.gentoo.org/proj/en/devrel/handbook/handbook.xml?part=2&chap=1 and from examining the ebuild from mythtv-0.16.
There's a one-time change you might have to make to /etc/make.conf:
make shure the following line appears somewhere in the file and is uncommented:
PORTDIR_OVERLAY=/usr/local/portage
First, you need to choose a version string for this new package. The important things here are that it needs to be between 0.16 and 0.17, and ideally make some degree of sence. According to the ebuild howto sited above, there are some version suffixes that can be applied and are processed in a specific order. _alpha[#] is the one I chose. I chose it because I doubted there would be _alpha releases of myth, and it would ensure any official releases in the 0.17 tree would take presedence over mine (I could automagically update with emerge).
Ok, now that the hard part is done, we can proceed :)
Check out a cvs release of each package you want to use (mythtv, mythweb, mythdvd, etc). Rename the directory to include the version suffix, eg, "mythweb" becomes "mythweb-0.17_alpha1". Make a .tar.bz2 for each directory. ("tar -cjf mythweb-0.17_alpha1.tar.bz2 mythweb-0.17_alpha1/"). Copy/move them to /usr/portage/distfiles/.
Ok, source is ready; now lets make the e-builds.
First, find the .ebuiild file for the 0.16 release. They will be in /usr/portage/<catagory>/<package_name>. You want to make /usr/local/portage/<catagory>/<package_name> for each package you're interested in, and copy the 0.16.ebuild file into that directory. If you don't know what catagory a package is, you can do an emerge -s <package_name>; the package name will have its gatagory in front. For example, the main package (mythtv) is under media-tv/mythtv. So, we create the directory /usr/local/portage/media-tv/mythtv and copy /usr/portage/media-tv/mythtv/mythtv-0.16.ebuild to that directory.
Now, rename the .ebuild you just copied to the new version (in my example, that would be mythtv-0.17_alpaha1.ebuild).
Almost done. We need to open the .ebuild in an editor and check for any patches and remove them. To do this, look for lines beginning with "epatch" and either comment them out or remove them outright.
I also discovered the hard way that for the main myth build, you need to add two lines to the ebuild for the media-tv/mythtv package.
Look for :
emake -C libs/libmyth || dieAdd these two lines immediately before it:
emake -C libs/libmythsamplerate || die
emake -C libs/libmythsoundtouch || dieOk, save the file and exit the editor. Now, we just need to tell portage to calculate the md5 sums:
ebuild ./mythtv-0.17_alpha1.ebuild digest
Now, if you do an emerge -s for mythtv, you'll see it shows a new version available for install (0.17_alpha1). A simple emerge mythtv will take care of it.
If you want to update to a new cvs snapshot after you've done all this, you need to increment the version number by at least one (0.17_alpah2, for example), prepair the source, copy the .ebuild over to the new ebuild, and tell portage to digest it (ebuild <blah.ebuild> digest). Then you're ready to compile and install the newer version.
As I said in my earlier post, this is my first attempt at messing with portage and creating .ebuilds. It works pretty well, but I suspect there are cleaner ways of doing things. For example, it occured to me after the fact that I could probably have gotten away with a version number like 0.16.0501070234 (the date and time of the CVS snapshot). Also, I've noticed "CVS" directories in the portage distfile directory; perhaps portage has the means for pulling down new CVS snapshots....
Anyway, I intended this message to be more of a learning experience than a reusable recipie. Through this, I learned that portage isn't all that difficult to mess with, and I think its well worth the time to install packages not already in portage this way rather than the "normal" straight compile/install way.
--Jim _______________________________________________ mythtv-users mailing list [email protected] http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-users
