Paludis crossbuilding
Gentoo has this terrific tool named crossdev.
If I want a cross-compiler targeting Windows, all I have to do is ensure a valid
Except it only works with Gentoo’s default package manager, Portage. On my system, it’s been replaced by Paludis, “the other package mangler”. And there doesn’t seem to be documentation on how to manually take advantage of the ebuilds’ cross-building features manually. Well, I think I can remedy that.
First, set up the Paludis equivalent of
Ah, I forgot…
(Yes, Gentoo can be a bit too… happy with colored terminals sometimes.)dtlin@burnup:~$ su -c 'emerge crossdev'
… … …
dtlin@burnup:~$ crossdev
Usage: crossdev [options] --target TARGET
Options:
--b, --binutils ver Specify version of binutils to use
--g, --gcc ver Specify version of gcc to use
--k, --kernel ver Specify version of kernel headers to use
--l, --libc ver Specify version of libc to use
-S, --stable Use latest stable versions as default
-C, --clean target Uninstall specified target
-P, --portage opts Options to pass to emerge (see emerge(1))
--with[out]-headers Build C library headers before C compiler?
Stage Options:
-s0, --stage0 Build just binutils
-s1, --stage1 Also build a C compiler (no libc/C++)
-s2, --stage2 Also build kernel headers
-s3, --stage3 Also build the C library (no C++)
-s4, --stage4 Also build a C++ compiler [default]
Extra Fun (must be run after above stages):
--ex-only Skip the stage steps above
--ex-gcc Build extra gcc targets (gcj/ada/etc...)
--ex-gdb Build a cross gdb
--ex-insight Build a cross insight
Target (-t) takes a tuple ARCH-VENDOR-OS-LIBC; see 'crossdev -t help'
If I want a cross-compiler targeting Windows, all I have to do is ensure a valid
$PORTDIR_OVERLAY
in /etc/make.conf, which all developers will have already, and run crossdev -t i586-mingw32msvc
. Et voilà, a i586-mingw32msvc-gcc appears!Except it only works with Gentoo’s default package manager, Portage. On my system, it’s been replaced by Paludis, “the other package mangler”. And there doesn’t seem to be documentation on how to manually take advantage of the ebuilds’ cross-building features manually. Well, I think I can remedy that.
First, set up the Paludis equivalent of
$PORTDIR_OVERLAY
and fill it.Next, build the stages in order.dtlin@burnup:~$ su -
burnup ~ # cat >/etc/paludis/repositories/local.conf
location = /var/paludis/repositories/local
master_repository = gentoo
format = ebuild
^D
burnup ~ # mkdir -p /var/paludis/repositories/local/profiles
burnup ~ # cd /var/paludis/repositories/local
burnup local # mkdir cross-i586-mingw32msvc
burnup local # ls -d *-* >profiles/categories
burnup local # ln -fns ../../gentoo-portage/{sys-devel/{binutils,gcc,gdb},dev-util/{mingw-runtime,w32ap i}} cross-i586-mingwmsvc/
Most targets will use linux-headers instead of w32api and glibc/dietlibc/uclibc/klibc instead of mingw-runtime, but that’s the general idea.burnup local # echo 'cross-i586-mingw32msvc/* crosscompile_opts: headers-only' >>/etc/paludis/use.conf
burnup local # echo 'cross-i586-mingw32msvc/* -* nocxx' >>/etc/paludis/use.conf
burnup local # paludis -i cross-i586-mingw32msvc/{w32api,mingw-runtime,gcc}
burnup local # sed -i '$d' /etc/paludis/use.conf
burnup local # sed -i '$d' /etc/paludis/use.conf
burnup local # paludis -i cross-i586-mingw32msvc/{w32api,mingw-runtime,gcc}
Ah, I forgot…
This may be necessary after stage 2 (but will probably fail before).burnup local # cat >>/etc/paludis/bashrc
case "${CATEGORY}/${PN}" in
# cross-build
cross-*/binutils|cross-*/gcc|cross-*/gdb)
CBUILD="${CHOST}" CTARGET="${CATEGORY#cross-}"
;;
cross-*/*)
CBUILD="${CHOST}" CTARGET="${CATEGORY#cross-}"
CC="${CTARGET}-gcc" CXX="${CTARGET}-g++" LD="${CTARGET}-ld"
;;
esac
^D
http cache cleaner question
You remarked yesterday on my blog about nicing the 'http cache cleaner' service. A few questions, if you don't mind.
When you say copy the desktop to ~/.kde[4]/share/kde4/services/http_cache
Then you said to make modifications there and I'm not sure what this implies. The .desktop file look pretty basic, not sure just what changes I could do there.
Then you recommend nicing the service. Would I nice the .desktop file itself? I don't see the service running. Also wouldn't nicing only be good for the session? That is, wouldn't rebooting cause the effects to be lost?
Sorry for so many questions, but I agree with you that this is a much better way to do this than deleting a file.