freebsd-ports/x11/kdelibs3/Makefile
Will Andrews 174743bd5d Add patch for kdoctools/xml2man.cpp, similar to xslt.cpp patch.
Bump PORTREVISION just in case this is needed.

From Mikhail Teterin:
> Well, for  the same reason the  xslt.cpp sometimes works --  in fact, it
> worked for everyone, until someone tried it on current.
>
> In essence, the code  reads the whole file into a  buffer. It then tries
> to  turn that  buffer into  one of  qt's string-objects  (QCString). The
> class'  constructor  they chose  assumes,  it  is  passed a  valid  (aka
> \0-terminated) string and goes through  the buffer looking for the first
> 0-byte. The  file itself  does not  contain any,  so it  happily wonders
> behind the real end of the buffer  until it either finds a stray 0-byte,
> or seg-faults, trying to read a wrong page.
>
> Apparently,  more often  than  not, some  stray 0-byte  is  there --  no
> surprise. But  it will usually  create a  string that's longer  than the
> file size -- unless  the 0-byte happens to be right there  at the end of
> the  buffer.  Apparently, the  lamer, who  wrote it,  noticed  something
> strange, so he/she  explicitly truncates the created  QCString object to
> the known size of the file after instantiation:
>
>       contents.truncate(xmlFile.size())
>
> My patch  modifies the code to  use the correct QCString  constructor --
> the one,  that accepts  the maximum  size of the  string. This  does the
> right  thing  -- once  it  reaches  the end  of  the  buffer, it  stops,
> allocates the private storage (I hate  C++ for all this buffer copying),
> appends  the 0-byte  and creates  the object  of the  expected size.  No
> truncation is needed....

Thanks to Mikhail for his debugging on this problem; this patch further
removes the hazard of meinproc coredumps.

Submitted by:	mi
2001-08-29 23:16:13 +00:00

92 lines
2.6 KiB
Makefile

# New ports collection makefile for: KDE libraries 2
# Date created: Fri Apr 14 2000 15:05:00 EDT
# Whom: will
#
# $FreeBSD$
#
PORTNAME= kdelibs
PORTVERSION= 2.2
PORTREVISION= 3
CATEGORIES= x11 kde
MASTER_SITES= ${MASTER_SITE_KDE}
MASTER_SITE_SUBDIR= stable/${PORTVERSION}/src
MAINTAINER= kde@FreeBSD.org
LIB_DEPENDS= tiff.4:${PORTSDIR}/graphics/tiff \
audiofile.0:${PORTSDIR}/audio/libaudiofile \
fam.0:${PORTSDIR}/devel/fam \
cups.2:${PORTSDIR}/print/cups \
xml2.5:${PORTSDIR}/textproc/libxml2 \
pcre.0:${PORTSDIR}/devel/pcre
.if !exists(/usr/bin/bzip2)
LIB_DEPENDS+= bz2.1:${PORTSDIR}/archivers/bzip2
.endif
USE_OPENSSL= yes
USE_QT_VER= 2
SOMAJOR= 4
SOMINOR= 0
USE_BZIP2= yes
INSTALLS_SHLIB= yes
GNU_CONFIGURE= yes
CONFIGURE_ARGS+=--enable-cups --disable-ltdl-install \
--enable-debug --disable-final
.if ${MACHINE_ARCH} == "alpha"
CFLAGS= -O0 ${KDE_CFLAGS}
.endif
USE_GMAKE= yes
MAKE_ENV= SOMAJOR="${SOMAJOR}" SOMINOR="${SOMINOR}"
PLIST_SUB+= LIBVER="${SOMAJOR}" LDCONFIG="${LDCONFIG}"
.include <bsd.port.pre.mk>
pre-fetch:
.if ${OSVERSION} <= 410002
@${ECHO}
@${ECHO} " NOTICE"
@${ECHO}
@${ECHO} "Your OpenSSL installation could be out of date. This is"
@${ECHO} "just a warning, but if your system's world was built on"
@${ECHO} "sources earlier than August 20 along RELENG_4 or older,"
@${ECHO} "then KDE2 will not build with SSL support."
@${ECHO}
.endif
pre-extract:
.if exists(${LOCALBASE}/include/kfm.h)
@${ECHO}
@${ECHO} " NOTICE"
@${ECHO}
@${ECHO} "You have KDE1 headers installed! Installing this port"
@${ECHO} "will result in conflicts between KDE2 and KDE1!"
@${ECHO}
@${FALSE}
.endif
pre-configure:
${PERL} -pi -e "s@-O2@-O0@g; s@\"-lfam@\"-L${LOCALBASE}/lib -lfam@g" ${WRKSRC}/configure
${PERL} -pi -e "s@kspell api@@g" ${WRKSRC}/doc/Makefile.in
(find ${WRKSRC} -name Makefile.in | xargs ${PERL} -pi.orig -e \
"s@version-info 1:0@version-info ${SOMAJOR}:${SOMINOR}@g; \
s@version-info 3:0@version-info ${SOMAJOR}:${SOMINOR}@g")
post-configure:
${PERL} -pi -e "s@-D_PTH_H_ -D_PTH_PTHREAD_H_@@g" ${WRKSRC}/arts/mcop_mt/Makefile
post-install:
${SED} -e 's,%%PREFIX%%,${PREFIX},g' ${FILESDIR}/kdelibs.sh > ${PREFIX}/etc/rc.d/kdelibs.sh
${CHMOD} 755 ${PREFIX}/etc/rc.d/kdelibs.sh
.for LIB in DCOP kab kdecore kdesu kdeui kfile kformula kio kjs \
kparts kspell ksycoca kjava
@${LN} -sf ${PREFIX}/lib/lib${LIB}.so.${SOMAJOR} ${PREFIX}/lib/lib${LIB}.so
.endfor
.for LIB in artsc artsflow artsflow_idl kmid kmedia2_idl qtmcop soundserver_idl
@${LN} -sf ${PREFIX}/lib/lib${LIB}.so.0 ${PREFIX}/lib/lib${LIB}.so
.endfor
.include <bsd.port.post.mk>