media-gfx/xpaint: fix compiling in gentoo prefix

Package-Manager: Portage-3.0.13, Repoman-3.0.2
Signed-off-by: Viorel Munteanu <ceamac.paragon@gmail.com>
Closes: https://github.com/gentoo/gentoo/pull/20036
Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
Viorel Munteanu
2021-03-27 15:03:28 +02:00
committed by Sam James
parent 04ef5e9fcc
commit bcaa18be33
4 changed files with 147 additions and 6 deletions

View File

@@ -0,0 +1,103 @@
This patch fixes compiling xpaint inside a gentoo prefix.
There are multiple issues:
search paths hardcoded to /usr/include,
install paths outside prefix,
X resources in app-defaults with path hardcoded to /usr/share/xpaint
--- a/Makefile.am
+++ b/Makefile.am
@@ -3,7 +3,7 @@
## Local Configuration arguments
BINDIR = $(prefix)/bin
SHAREDIR = $(prefix)/share/xpaint
-XAPPLOADDIR = /etc/X11/app-defaults
+XAPPLOADDIR = $(sysconfdir)/X11/app-defaults
## Enable/disable PRINTCAP (for older BSD style printing configuration)
## PRINTCAP = -DPRINTCAP
@@ -85,7 +85,7 @@
.PHONY:
version.h:
- rm -f xaw_incdir ; ln -s /usr/include/X11/Xaw3dxft xaw_incdir
+ rm -f xaw_incdir ; ln -s @includedir@/X11/Xaw3dxft xaw_incdir
echo "#define XPAINT_VERSION \"$(PACKAGE_VERSION)\"" > version.h
substads: substads.c
@@ -149,8 +149,7 @@
mkdir -p $(DESTDIR)$(SHAREDIR)/messages
cd share/messages ; $(RM) -f *~ ; cp -f Messages* $(DESTDIR)$(SHAREDIR)/messages
chmod -R a+r $(DESTDIR)$(SHAREDIR)/
- cd util ; make install
- cd vxp2ps ; make install
+ cd vxp2ps ; make BINDIR=$(BINDIR) install
clean-local:
rm -f xaw_incdir
--- a/util/Makefile
+++ b/util/Makefile
@@ -17,9 +17,9 @@
ifneq ($(WITH_PGF),no)
pgf2pnm: main.cpp pnm.cpp
- @if [ -x /usr/include/libpgf ] ; then \
- $(CXX) $(CXXFLAGS) -fpermissive -c main.cpp -o main.o -I/usr/include/libpgf ; \
- $(CXX) $(CXXFLAGS) -fpermissive -c pnm.cpp -o pnm.o -I/usr/include/libpgf ; \
+ @if [ -x $(includedir)/libpgf ] ; then \
+ $(CXX) $(CXXFLAGS) -fpermissive -c main.cpp -o main.o -I$(includedir)/libpgf ; \
+ $(CXX) $(CXXFLAGS) -fpermissive -c pnm.cpp -o pnm.o -I$(includedir)/libpgf ; \
$(CXX) $(CXXFLAGS) -fpermissive -o pgf2pnm main.o pnm.o $(LDFLAGS) -lpgf ; \
else \
echo "libpgf not installed !!" ; \
--- a/configure.ac
+++ b/configure.ac
@@ -32,7 +32,7 @@
AC_TYPE_UINT32_T
AC_TYPE_UINT64_T
-CFLAGS="$CFLAGS -I/usr/include -I/usr/include/X11 -I/usr/include/X11/Xaw3dxft"
+CFLAGS="$CFLAGS -I${prefix}/include -I${prefix}/include/X11 -I${prefix}/include/X11/Xaw3dxft"
LIBS="$LIBS -lm"
echo "VERSION = $VERSION" > .version
@@ -40,7 +40,7 @@
AC_CHECK_LIB([X11], [XOpenDisplay], have_x11="yes")
if test x"$have_x11" = xyes; then
AC_SUBST([X_LIBS], ["-lXmu -lXt -lSM -lICE -lXext -lX11 -lXpm -ldl -rdynamic"])
- AC_SUBST([X_CFLAGS], ["-I/usr/include/X11"])
+ AC_SUBST([X_CFLAGS], ["-I${prefix}/include/X11"])
else
echo "X11 libraries not installed !"
exit 1
@@ -291,7 +291,7 @@
fi
if test x$enable_libopenjp2 = xyes; then
- CFLAGS="$CFLAGS -I/usr/include/openjpeg-2.3"
+ CFLAGS="$CFLAGS -I${prefix}/include/openjpeg-2.3"
LIBS="$LIBS -lopenjp2"
AC_SUBST(LIBOPENJP2_LIBS)
AC_DEFINE(HAVE_OPENJP2)
@@ -323,9 +323,9 @@
[AC_LANG_PROGRAM([[#include <freetype2/config/ftheader.h>]])],
[AC_MSG_RESULT([already in path])],
[AC_PREPROC_IFELSE(
- [AC_LANG_PROGRAM([[#include </usr/include/freetype2/freetype/config/ftheader.h>]])],
- [AC_MSG_RESULT([/usr/include/freetype2])
- AC_SUBST([SPECIAL_CFLAGS], ["-I/usr/include/freetype2"])],
+ [AC_LANG_PROGRAM([[#include <${prefix}/include/freetype2/freetype/config/ftheader.h>]])],
+ [AC_MSG_RESULT([${prefix}/include/freetype2])
+ AC_SUBST([SPECIAL_CFLAGS], ["-I${prefix}/include/freetype2"])],
[AC_MSG_ERROR([cannot find freetype2 headers; try setting CFLAGS.])]
)]
)
--- a/xpaintrw/Makefile.am
+++ b/xpaintrw/Makefile.am
@@ -13,7 +13,7 @@
ARCH_DEFINES = -fPIC
## PBM_DEFINES = -DNETPBM10
-PBM_DEFINES = -I/usr/include/netpbm -DNETPBM11
+PBM_DEFINES = -I@includedir@/netpbm -DNETPBM11
##
## Specific xpaint options

View File

@@ -1,6 +1,6 @@
The original Makefiles did not pass CFLAGS and LDFLAGS, causing QA warnings
See also bug https://bugs.gentoo.org/727632
Also remove -O3 and stripping, leave portage control that
The original Makefile did not pass CFLAGS and LDFLAGS
See bug https://bugs.gentoo.org/727632
Also remove -O3 and stripping
--- a/vxp2ps/Makefile
+++ b/vxp2ps/Makefile
@@ -3,16 +3,16 @@
@@ -20,7 +20,7 @@ Also remove -O3 and stripping, leave portage control that
install: all
- install -c -s vxp2ps vxp2tex vxp2dkw "$(DESTDIR)"/usr/bin
+ install -c vxp2ps vxp2tex vxp2dkw "$(DESTDIR)"/usr/bin
+ install -c vxp2ps vxp2tex vxp2dkw "$(DESTDIR)$(BINDIR)"
clean:
rm -f core *~ vxp2ps vxp2tex vxp2dkw

View File

@@ -0,0 +1,26 @@
libtool doesn't work if compiling with clang. Need to add --tag=CC
Also don't hardcode /usr/bin/tool in gentoo prefix
See bug https://bugs.gentoo.org/731010
--- a/configure.ac
+++ b/configure.ac
@@ -17,6 +17,9 @@
AC_LANG_C
AM_PROG_AR
+dnl search libtool
+AC_PATH_PROG([PROGLIBTOOL], [libtool])
+
## basic types
AC_TYPE_INT8_T
--- a/xpaintrw/Makefile.am
+++ b/xpaintrw/Makefile.am
@@ -28,7 +28,7 @@
xpaint_DEFINES = $(ARCH_DEFINES) $(EXTRA_DEFINES) $(XAWLIB_DEFINES)
-LIBTOOL = /usr/bin/libtool
+LIBTOOL = @PROGLIBTOOL@ --tag=CC
AM_CFLAGS = @X_CFLAGS@ @SPECIAL_CFLAGS@ $(xpaint_DEFINES)
AM_YFLAGS = -d
CLEANFILES =

View File

@@ -42,11 +42,13 @@ BDEPEND="
sys-devel/flex
sys-devel/libtool
virtual/pkgconfig
x11-misc/imake
"
PATCHES=(
"${FILESDIR}"/${PN}-2.10.2-libtool-clang.patch
"${FILESDIR}"/${P}-cflags-ldflags-strip.patch
"${FILESDIR}"/${P}-libtool-clang.patch
"${FILESDIR}"/${P}-gentoo-qa.patch
"${FILESDIR}"/${P}-gentoo-prefix.patch
)
src_prepare() {
@@ -55,6 +57,12 @@ src_prepare() {
}
src_configure() {
# regenerate resources in app-defaults
# Local.xawdefs is missing and imake was complaining about it, so use it to redefine SHAREDIR
echo "SHAREDIR = \"${EPREFIX}\"/usr/share/xpaint" > Local.xawdefs || die
xmkmf || die
mv Makefile Makefile.resources || die
econf \
$(use_enable tiff) \
--disable-libdvipgm \
@@ -75,7 +83,11 @@ src_compile() {
WITH_PGF="$(usex pgf "yes" "no")" \
CC="$(tc-getCC)" \
CXX="$(tc-getCXX)" \
includedir="${EPREFIX}"/usr/include \
-C util
# regenerate resources in app-defaults
(rm XPaint.ad && emake -f Makefile.resources XPaint.ad) || die
}
src_install() {