Note: Warning! |
Note: This guide is deprecated! |
Note: Warning! |
First, you have to set up a emul-chroot. Note that this is not the same as an ordinary 32bit-chroot. Here's how to create one:
Once you have set up your emul-chroot, you can merge the packages you want in the emul-package. Make sure you have FEATURES="buildpkg" set. The binpkgs you just created serve as SRC_URI for the emul-package. Don't modify them! Double-check that the dependencies between the existing emul-packages are still fulfilled, repoman won't warn you about this and it can cause major borkage!
Now you can create an ebuild for the emul-package. Have a look at the existing ebuilds to get an idea what it should look like. Remove all the files that are not ABI-specific or would collide with the 64bit package.
There are a few dangerous things that are easily forgotten when updating emul-packages, most critical are the dependencies. To minimize the risk of breakage, follow this procedure when upgrading an emul-package:
Warning: Make sure you update the content listing. |
Make sure you get the dependencies right. Check all installed .so files if there are any unsatisfied deps and either remove them (if not needed) or include the needed dep: for a in $(equery f emul-linux-x86-??? | grep "\.so") ; do [[ -z $(ldd $a | grep "not found") ]] || echo $a ; done helps
Some ebuilds also have the bad habit of creating files in pkg_postinst. buildpkg/quickpkg doesn't cover these, so you'll have to copy that function to the emul-ebuild.
If sys-apps/shadow complains that it can't find libcrack, try upgrading to =sys-devel/libtool-1.5.23b or rm /usr/lib64/libcrack.la.
sys-devel/gcc and sys-libs/glibc are known to fail. Just ignore it, they are multilib-aware themselves anyway and you have all the libraries in both 32/64bit versions already.
The contents of this document are licensed under the Creative Commons - Attribution / Share Alike license.