1. Importing ebuilds with ecopy
Ebuilds for Gentoo Prefix need some minor modifications from those that exist in the "regular" Gentoo tree (known as the gentoo-x86 tree). Spelling out those modifications is out of scope for this document, feel free to browse here: http://www.gentoo.org/proj/en/gentoo-alt/prefix/techdocs.xml
ecopy is a script created by the Gentoo Prefix team, and located in ${EPREFIX}/usr/portage/scripts. Its intention is to save people time and is mainly a wrapper for other scripts which will be discussed later. Its usage can be described by running: ecopy (without options).
ecopy expects the following:
The use of ecopy is best explained by a simple example.
Code Listing 1.1: ecopy example |
% cd "${EPREFIX}"/usr/local/portage/my-overlay % ecopy app-office/openoffice openoffice-3.1.0-r1.ebuild 2009-08-01 18:41:23 URL:http://tinderbox.dev.gentoo.org/portage/app-office/openoffice/ChangeLog [98520/98520] -> "ChangeLog" [1] 2009-08-01 18:41:23 URL:http://tinderbox.dev.gentoo.org/portage/app-office/openoffice/metadata.xml [704/704] -> "metadata.xml" [1] 2009-08-01 18:41:24 URL:http://tinderbox.dev.gentoo.org/portage/app-office/openoffice/Manifest [17937/17937] -> "Manifest" [1] 2009-08-01 18:41:24 URL:http://tinderbox.dev.gentoo.org/portage/app-office/openoffice/openoffice-3.1.0-r1.ebuild [13564/13564] -> "openoffice-3.1.0-r1.ebuild" [1] 2009-08-01 18:41:25 URL:http://tinderbox.dev.gentoo.org/portage/app-office/openoffice/files/gentoo-3.1.0.diff [173/173] -> "files/gentoo-3.1.0.diff" [1] 2009-08-01 18:41:25 URL:http://tinderbox.dev.gentoo.org/portage/app-office/openoffice/files/ooo-env_log.diff [617/617] -> "files/ooo-env_log.diff" [1] 2009-08-01 18:41:25 URL:http://tinderbox.dev.gentoo.org/portage/app-office/openoffice/files/base64.diff [770/770] -> "files/base64.diff" [1] 2009-08-01 18:41:25 URL:http://tinderbox.dev.gentoo.org/portage/app-office/openoffice/files/buildfix-gcc44.diff [611/611] -> "files/buildfix-gcc44.diff" [1] 2009-08-01 18:41:25 URL:http://tinderbox.dev.gentoo.org/portage/app-office/openoffice/files/solenv.workaround-for-the-kde-mess.diff [17556/17556] -> "files/solenv.workaround-for-the-kde-mess.diff" [1] 2009-08-01 18:41:26 URL:http://tinderbox.dev.gentoo.org/portage/app-office/openoffice/files/xulrunner-1.9.1.diff [325/325] -> "files/xulrunner-1.9.1.diff" [1] Processing openoffice-3.1.0-r1.ebuild replacing ${D} -> ${ED} ... 2 occurences replacing ${ROOT} -> ${EROOT} ... not found Processing openoffice-3.1.0-r1.ebuild ... ~amd64-linux ~x86-linux openoffice-3.1.0-r1.ebuild >>> Creating Manifest for usr/local/portage/my-overlay/app-office/openoffice <snip for brevity> |
What is ecopy doing? In that above code snippet, ecopy first directly downloads the required files from tinderbox.dev.gentoo.org. Then, ecopy runs eapify on the ebuild. eapify basically does the needed gentoo-x86 -> Prefix conversion. This can generally be automated and works right the first time about 85% of the time. After eapify, some keyword cleanup is done by ecleankw to make it match the Prefix keywords. The Prefix keywords are more strictly defined than those of the gentoo-x86 tree. For more information on that see GLEP 53. Last, ecopy re-digests the ebuild to accommodate any changes. Let it be known that you can do all this manually as well because ecopy is just a wrapper script in itself.
While eapfiy (the tool that does the actual transformation of the ebuild) succeeds doing its job in many cases, it cannot be trusted to always do the right thing. Common mistakes made by eapify are related to either adding or omission of the ${EPREFIX} for some component in the ebuild. eapify doesn't catch all instances of what needs to be changed. If there is e.g. any path hardcoded in the configure call you will need to prepend ${EPREFIX} to it. Also, ${D} can be improperly expanded to ${ED} in certain cases. Manual review is always necessary. For more details on these issues see the Ebuild modifications chapter of the Gentoo Prefix Techdocs page.
Great, your package works...now what? The Gentoo Prefix team relies on users submitting bug reports stating if a new package works. We simply do not have the man power to get to our goal of having most of the packages in the Prefix tree without your help.
When submitting bug reports, please follow these guidelines:
The contents of this document are licensed under the Creative Commons - Attribution / Share Alike license.