On one of my older boxes.. actually a old P2 used as a firewall, I was upgrading libpng to libpng-1.2.43-r2. I received an interesting error:
>>> Unpacking source...
>>> Unpacking libpng-1.2.43.tar.xz to /var/tmp/portage/media-libs/libpng-1.2.43-r2/work
xz: /var/tmp/portage/media-libs/libpng-1.2.43-r2/distdir/libpng-1.2.43.tar.xz: Memory usage limit reached
xz: Limit was 62 MiB, but 65 MiB would have been needed
tar: This does not look like a tar archive
tar: Error exit delayed from previous errors
* ERROR: media-libs/libpng-1.2.43-r2 failed:
* failure unpacking libpng-1.2.43.tar.xz
* Call stack:
* ebuild.sh, line 54: Called src_unpack
* environment, line 1219: Called _eapi0_src_unpack
* ebuild.sh, line 605: Called unpack 'libpng-1.2.43.tar.xz'
* ebuild.sh, line 444: Called _unpack_tar 'xz'
* ebuild.sh, line 366: Called assert 'failure unpacking libpng-1.2.43.tar.xz'
* isolated-functions.sh, line 14: Called die
* The specific snippet of code:
* [[ $x -eq 0 ]] || die "$@"
I've never seen this before? So xz is reaching it's limit on memory? I see that there is a option to raise this level.. and the level is set at percentage of available RAM:
The absolute value of the active memory usage limit can be seen near the bottom of the output of --long-help. The default limit can be overriden with --memory=limit.
So, I looked in the ebuild for a spot where I could set this.. no dice, but I found that it is a available option when emerging (or add it to make.conf)
I executed the following command, and I was good to go:
XZ_OPT="--memory=max" emerge -1 libpng