kpathsea needs two patches, and a couple of changes in the ebuild. One of the two patches can be incorporated in the texmf.d tarball of Gentoo, the other is necessary for certain scenarios in Prefix. The patches follow. The changes to the ebuild are straightforward, mostly adding awareness for the offset-prefix: diff -u -r1.5 kpathsea-6.0.0_p20100722.ebuild --- kpathsea-6.0.0_p20100722.ebuild 1 Nov 2010 22:10:25 -0000 1.5 +++ kpathsea-6.0.0_p20100722.ebuild 30 Nov 2010 15:37:59 -0000 @@ -4,7 +4,7 @@ EAPI=3 -inherit texlive-common +inherit texlive-common eutils TEXMFD_VERSION="1" @@ -15,7 +15,7 @@ LICENSE="GPL-2" SLOT="0" -KEYWORDS="~amd64 ~arm ~hppa ~x86" +KEYWORDS="~amd64 ~arm ~hppa ~x86 ~x86-freebsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x64-solaris ~x86-solaris" IUSE="doc source static-libs" DEPEND="!<app-text/texlive-core-2010 @@ -38,19 +38,25 @@ done SRC_URI="${SRC_URI} ) " +src_prepare() { + epatch "${FILESDIR}"/${P}-no-symlink-expand.patch + cd "${WORKDIR}" || die + epatch "${FILESDIR}"/${P}-prefix-config-paths.patch +} + src_configure() { econf \ $(use_enable static-libs static) } src_install() { - emake DESTDIR="${D}" web2cdir="/usr/share/texmf/web2c" install || die + emake DESTDIR="${D}" web2cdir="${EPREFIX}/usr/share/texmf/web2c" install || die find "${D}" -name '*.la' -delete dodir /usr/share # just in case - cp -pR "${WORKDIR}"/texmf "${D}/usr/share/" || die "failed to install texmf trees" + cp -pR "${WORKDIR}"/texmf "${ED}/usr/share/" || die "failed to install texmf trees" if use source ; then - cp -pR "${WORKDIR}"/tlpkg "${D}/usr/share/" || die "failed to install tlpkg files" + cp -pR "${WORKDIR}"/tlpkg "${ED}/usr/share/" || die "failed to install tlpkg files" fi # The default configuration expects it to be world writable, bug #266680 @@ -64,14 +70,14 @@ # Remove default texmf.cnf to ship our own, greatly based on texlive dvd's # texmf.cnf # It will also be generated from /etc/texmf/texmf.d files by texmf-update - rm -f "${D}${TEXMF_PATH}/web2c/texmf.cnf" + rm -f "${ED}${TEXMF_PATH}/web2c/texmf.cnf" insinto /etc/texmf/texmf.d doins "${WORKDIR}/texmf.d/"*.cnf || die "failed to install texmf.d configuration files" # Remove fmtutil.cnf, it will be regenerated from /etc/texmf/fmtutil.d files # by texmf-update - rm -f "${D}${TEXMF_PATH}/web2c/fmtutil.cnf" + rm -f "${ED}${TEXMF_PATH}/web2c/fmtutil.cnf" dosym /etc/texmf/web2c/fmtutil.cnf ${TEXMF_PATH}/web2c/fmtutil.cnf dosym /etc/texmf/web2c/texmf.cnf ${TEXMF_PATH}/web2c/texmf.cnf
Created attachment 255953 [details, diff] prefix-config-paths This patch uses $SELFAUTOPARENT to have TRFONTS refer to the offset prefix. It should be safe to apply for all, AFAICT.
Created attachment 255955 [details, diff] no-symlink-expand In Prefix we can have offsets that contain a symlink. There are various reasons why this happens, apart from cosmetical issues. This patch changes kpsewhich not to always unconditionally unfold symlinks for everything it returns, but only when what would be returned would not be an absolute path. We typically need this to overcome installation problems by tools that call kpsewhich to determine where in the filesystem to install something. Since the absolute path will not match the original offset path (with symlink), a QA error will be thrown by Portage that files are installed outside of the offset prefix. I think this patch is safe for everyone, as it hasn't caused any trouble to us since texlive-2008.
(In reply to comment #0) > +src_prepare() { > + epatch "${FILESDIR}"/${P}-no-symlink-expand.patch > + cd "${WORKDIR}" || die > + epatch "${FILESDIR}"/${P}-prefix-config-paths.patch > +} please make a correct patch and remove that cd $WORKDIR, other ebuild changes are ok (In reply to comment #1) > Created an attachment (id=255953) [details] > prefix-config-paths > > This patch uses $SELFAUTOPARENT to have TRFONTS refer to the offset prefix. It > should be safe to apply for all, AFAICT. > % Used by DMP (ditroff-to-mpx), called by makempx -troff. -TRFONTS = /usr{/local,}/share/groff/{current/font,site-font}/devps +TRFONTS = $SELFAUTOPARENT/usr{/local,}/share/groff/{current/font,site-font}/devps MPSUPPORT = .;$TEXMF/metapost/support % For xdvi to find mime.types and .mailcap, if they do not exist in --- texmf/web2c/texmf.cnf +++ texmf/web2c/texmf.cnf @@ -368,7 +368,7 @@ PDFTEXCONFIG = .;$TEXMF/pdftex/{$progname,}// % Used by DMP (ditroff-to-mpx), called by makempx -troff. -TRFONTS = /usr{/local,}/share/groff/{current/font,site-font}/devps +TRFONTS = $SELFAUTOPARENT/usr{/local,}/share/groff/{current/font,site-font}/devps MPSUPPORT = .;$TEXMF/metapost/support please use $SELFAUTODIR and rip out that /usr once fixed, please commit the changes to: gentoo/src/patchsets/texlive/2010/texmf.d that's where the files are stored, once this is done I'll roll out a new texmfd tarball (In reply to comment #2) > Created an attachment (id=255955) [details] > no-symlink-expand > > In Prefix we can have offsets that contain a symlink. There are various > reasons why this happens, apart from cosmetical issues. This patch changes > kpsewhich not to always unconditionally unfold symlinks for everything it > returns, but only when what would be returned would not be an absolute path. > > We typically need this to overcome installation problems by tools that call > kpsewhich to determine where in the filesystem to install something. Since the > absolute path will not match the original offset path (with symlink), a QA > error will be thrown by Portage that files are installed outside of the offset > prefix. > > I think this patch is safe for everyone, as it hasn't caused any trouble to us > since texlive-2008. > did you try to send this upstream?
(In reply to comment #3) > (In reply to comment #0) > > +src_prepare() { > > + epatch "${FILESDIR}"/${P}-no-symlink-expand.patch > > + cd "${WORKDIR}" || die > > + epatch "${FILESDIR}"/${P}-prefix-config-paths.patch > > +} > > please make a correct patch and remove that cd $WORKDIR, other ebuild changes > are ok I presume you mean: fix the patchball sources instead > % Used by DMP (ditroff-to-mpx), called by makempx -troff. > -TRFONTS = /usr{/local,}/share/groff/{current/font,site-font}/devps > +TRFONTS = > $SELFAUTOPARENT/usr{/local,}/share/groff/{current/font,site-font}/devps > MPSUPPORT = .;$TEXMF/metapost/support > > > please use $SELFAUTODIR and rip out that /usr > once fixed, please commit the changes to: > gentoo/src/patchsets/texlive/2010/texmf.d I just did: /var/cvsroot/gentoo/src/patchsets/texlive/2010/texmf.d/10standardpaths.cnf,v <-- texmf.d/10standardpaths.cnf new revision: 1.3; previous revision: 1.2 > (In reply to comment #2) > > Created an attachment (id=255955) [details] [details] > > no-symlink-expand > > did you try to send this upstream? No, because it's highly Prefix specific. I can try though, but I see no reason why upstream would want to apply it.
(In reply to comment #4) > (In reply to comment #3) > > (In reply to comment #0) > > > +src_prepare() { > > > + epatch "${FILESDIR}"/${P}-no-symlink-expand.patch > > > + cd "${WORKDIR}" || die > > > + epatch "${FILESDIR}"/${P}-prefix-config-paths.patch > > > +} > > > > please make a correct patch and remove that cd $WORKDIR, other ebuild changes > > are ok > > I presume you mean: fix the patchball sources instead well, at first I didnt because I realized later but yes :) > > > % Used by DMP (ditroff-to-mpx), called by makempx -troff. > > -TRFONTS = /usr{/local,}/share/groff/{current/font,site-font}/devps > > +TRFONTS = > > $SELFAUTOPARENT/usr{/local,}/share/groff/{current/font,site-font}/devps > > MPSUPPORT = .;$TEXMF/metapost/support > > > > > > please use $SELFAUTODIR and rip out that /usr > > once fixed, please commit the changes to: > > gentoo/src/patchsets/texlive/2010/texmf.d > > I just did: > > /var/cvsroot/gentoo/src/patchsets/texlive/2010/texmf.d/10standardpaths.cnf,v > <-- texmf.d/10standardpaths.cnf > new revision: 1.3; previous revision: 1.2 thanks, the texmf.d tarball should be updated now. > > (In reply to comment #2) > > > Created an attachment (id=255955) [details] [details] [details] > > > no-symlink-expand > > > > did you try to send this upstream? > > No, because it's highly Prefix specific. I can try though, but I see no reason > why upstream would want to apply it. > Why would that be prefix specific ? People can mess up with symlinks everywhere :) What I don't get is: do you have examples of packages _relying_ on kpsewhich to guess where to install their files ? IMHO that is these packages that should be fixed, values returned by kpsewhich can be altered by env variables, which can't be good for guessing where to install files...
(In reply to comment #5) > > > (In reply to comment #2) > > > > Created an attachment (id=255955) [details] [details] [details] [details] > > > > no-symlink-expand > > > > > > did you try to send this upstream? > > > > No, because it's highly Prefix specific. I can try though, but I see no reason > > why upstream would want to apply it. > > > > Why would that be prefix specific ? People can mess up with symlinks everywhere > :) > > What I don't get is: do you have examples of packages _relying_ on kpsewhich to > guess where to install their files ? IMHO that is these packages that should be > fixed, values returned by kpsewhich can be altered by env variables, which > can't be good for guessing where to install files... > ping? by the way, if it can ease your workflow, feel free to apply the EROOT/EPREFIX changes (ie: anything but the parts related to the patches)
(In reply to comment #6) > > Why would that be prefix specific ? People can mess up with symlinks everywhere > > :) > > > > What I don't get is: do you have examples of packages _relying_ on kpsewhich to > > guess where to install their files ? IMHO that is these packages that should be > > fixed, values returned by kpsewhich can be altered by env variables, which > > can't be good for guessing where to install files... No, unfortunately I don't recall any more which package(s) it was. But there exists at least one package that does so. It will be latex related, pretty much core-ish, or one of the few extra packages I needed to build my thesis. > by the way, if it can ease your workflow, feel free to apply the EROOT/EPREFIX > changes (ie: anything but the parts related to the patches) In general it's an all-or-nothing thing for us, but thanks anyway.
In trying to install latex-beamer (dev-tex/latex-beamer-3.10-r1) on my prefix system (OSX 10.5, x86-macos), I came across needing to install kpathsea. It is a dependency of app-text/texlive-core-2010. $ emerge -pv latex-beamer These are the packages that would be merged, in order: Calculating dependencies... done! !!! All ebuilds that could satisfy "dev-libs/kpathsea" have been masked. !!! One of the following masked packages is required to complete your request: - dev-libs/kpathsea-6.0.0_p20100722::gentoo_prefix (masked by: missing keyword) (dependency required by "app-text/texlive-core-2010" [ebuild]) (dependency required by "dev-texlive/texlive-latexrecommended-2009" [ebuild]) (dependency required by "dev-tex/pgf-2.10" [ebuild]) (dependency required by "dev-tex/latex-beamer-3.10-r1" [ebuild]) (dependency required by "latex-beamer" [argument]) For more information, see the MASKED PACKAGES section in the emerge man page or refer to the Gentoo Handbook.
(In reply to comment #7) > (In reply to comment #6) > > > Why would that be prefix specific ? People can mess up with symlinks everywhere > > > :) > > > > > > What I don't get is: do you have examples of packages _relying_ on kpsewhich to > > > guess where to install their files ? IMHO that is these packages that should be > > > fixed, values returned by kpsewhich can be altered by env variables, which > > > can't be good for guessing where to install files... > > No, unfortunately I don't recall any more which package(s) it was. But there > exists at least one package that does so. It will be latex related, pretty > much core-ish, or one of the few extra packages I needed to build my thesis. > well, as I had said, I don't consider the patch correct but rather the offending ebuilds to be fixed, if you don't recall which one it is I'd suggest dropping the patch and letting me know if something fails. > > by the way, if it can ease your workflow, feel free to apply the EROOT/EPREFIX > > changes (ie: anything but the parts related to the patches) > > In general it's an all-or-nothing thing for us, but thanks anyway. > same again: apply these changes, drop the patch, be happy :)
fair enough
committed, without the no-symlinks-expand patch