summaryrefslogtreecommitdiff
path: root/metadata/news/2014-10-22-upgrading-to-musl-1_1_5/2014-10-22-upgrading-to-musl-1_1_5.en.txt
diff options
context:
space:
mode:
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.txt57
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