diff options
Diffstat (limited to 'metadata/news/2014-10-22-upgrading-to-musl-1_1_5/2014-10-22-upgrading-to-musl-1_1_5.en.txt')
-rw-r--r-- | metadata/news/2014-10-22-upgrading-to-musl-1_1_5/2014-10-22-upgrading-to-musl-1_1_5.en.txt | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/metadata/news/2014-10-22-upgrading-to-musl-1_1_5/2014-10-22-upgrading-to-musl-1_1_5.en.txt b/metadata/news/2014-10-22-upgrading-to-musl-1_1_5/2014-10-22-upgrading-to-musl-1_1_5.en.txt new file mode 100644 index 000000000000..77372bdf4547 --- /dev/null +++ b/metadata/news/2014-10-22-upgrading-to-musl-1_1_5/2014-10-22-upgrading-to-musl-1_1_5.en.txt @@ -0,0 +1,57 @@ +Title: Upgrading to musl 1.1.5 +Author: Anthony G. Basile <blueness@gentoo.org> +Content-Type: text/plain +Posted: 2014-10-22 +Revision: 1 +News-Item-Format: 1.0 +Display-If-Installed: sys-libs/musl + +Versions 1.1.4 and above of musl provide Native Language Support (nls). Up +till now, Gentoo musl stages have used GNU gettext to provide nls via libintl.so +and linked applications against it. Beginning with musl-1.1.5 we are switching +to nls provided by musl. Since musl is experimental, you are better off starting +with a new stage3 dated later than 2014-10-20. However, if you wish to upgrade +an existing system, you can proceed as follows: + +1. Remove any references to -lintl from /etc/portage/package.env and +/etc/portage/env/*. If you did not modify these from the original stage3 +then you can just do `rm -rf /etc/portage/package.env /etc/portage/env` + +2. Update your system, except for musl: + + emerge --exclude musl -uvNDq world + +3. Remove the libintl header belonging to gettext: + + rm -f /usr/include/libintl.h + +4. Now you can update musl without a file collision: + + emerge -1q =sys-libs/musl-1.1.5 + +5. We need to turn USE=nls off in gettext: + + echo "=sys-devel/gettext-0.19.3" >> /etc/portage/package.accept_keywords + echo "sys-devel/gettext -nls" >> /etc/portage/package.use + emerge -1 gettext + +6. Rebuild any packages that might be linking against libintl.so: + + USE=-nls emerge -uvDNq world + +7. The previous step probably missed some executables, so find them all: + + for i in /bin/* /sbin/ /usr/bin/* /usr/sbin/* ; do + readelf -d $i 2>&1 | grep -q libintl.so && echo $i + done + +You can identify what packages these belong to uing `equery b <exe>` Rebuild +those packages. + +8. At this point you can remove /usr/lib/libintl.so*. To be safe, check that +all your coreutils utilities (like mv, cp, ls, etc.) really aren't linking +against libintl.so as described in the previous step and then mv that library +out of the dynamic linker's search path. + +9. While not strictly necessary, you can rebuild your entire system to make +sure everything links nicely against the new libc.so: emerge -evq world |