Bug 185542 - x11/xlockmore compile failure due to update of print/freetype2
Summary: x11/xlockmore compile failure due to update of print/freetype2
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: Normal Affects Only Me
Assignee: Jason Helfman
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-01-07 00:20 UTC by russo
Modified: 2015-01-31 07:33 UTC (History)
0 users

See Also:


Attachments
Patch to xlockmore's configure script that makes it work properly for me. (1.51 KB, text/plain)
2014-06-17 22:02 UTC, russo
no flags Details
Patch to xlockmore's configure.in script that makes it work properly for me. (1.16 KB, text/plain)
2014-06-17 22:02 UTC, russo
no flags Details
patch for freetype2 ac isssue in xlockmore (492 bytes, patch)
2015-01-30 17:29 UTC, Jason Helfman
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description russo 2014-01-07 00:20:00 UTC
Xlockmore, when built with the "MESAGL" option turned on, will no longer compile.

In file included from ./text3d2.cc:85:
/usr/local/include/FTGL/FTGLExtrdFont.h:29:5: warning: #warning This header is deprecated. Please use <FTGL/ftgl.h> from now.
In file included from /usr/local/include/FTGL/FTGLExtrdFont.h:30,
                 from ./text3d2.cc:85:
/usr/local/include/FTGL/ftgl.h:32:22: error: ft2build.h: No such file or directory
/usr/local/include/FTGL/ftgl.h:33:10: error: #include expects "FILENAME" or <FILENAME>
/usr/local/include/FTGL/ftgl.h:34:10: error: #include expects "FILENAME" or <FILENAME>
/usr/local/include/FTGL/ftgl.h:35:10: error: #include expects "FILENAME" or <FILENAME>
In file included from /usr/local/include/FTGL/ftgl.h:110,
                 from /usr/local/include/FTGL/FTGLExtrdFont.h:30,
                 from ./text3d2.cc:85:
/usr/local/include/FTGL/FTPoint.h:75: error: expected ',' or '...' before '&' token


and so on, and so on, and so on.

print/freetype2 was updated on 24 December 2113 (http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/184587) and that caused a large number of freetype-dependent builds to be updated.  Since xlockmore only depends on FTGL if MESAGL is selected, and it defaults to "off," this port probably got overlooked.

This may actually be an FTGL issue rather than an xlockmore issue, but I discovered it trying to update xlockmore.

How-To-Repeat: Attempt to build xlockmore 5.43 after December 24, 2013, with the MESAGL option turned on.
Comment 1 Edwin Groothuis freebsd_committer freebsd_triage 2014-01-07 00:20:07 UTC
Responsible Changed
From-To: freebsd-ports-bugs->jgh

Over to maintainer (via the GNATS Auto Assign Tool)
Comment 2 Jason Helfman freebsd_committer freebsd_triage 2014-04-29 23:49:08 UTC
State Changed
From-To: open->feedback

are you still seeing this issue?
Comment 3 Tom Russo 2014-04-29 23:59:01 UTC
Yes, I am still seeing compile failures of x11/xlockmore if the MesaGL
option is checked.  Same errors.  As far as I can tell nothing was
changed, so I am surprised at the question.
Comment 4 Jason Helfman freebsd_committer freebsd_triage 2014-04-30 16:55:48 UTC
On Tue, Apr 29, 2014 at 4:03 PM, Tom Russo <russo@bogodyn.org> wrote:

> On Tue, Apr 29, 2014 at 10:49:08PM +0000, we recorded a bogon-computron
> collision of the <jgh@FreeBSD.org> flavor, containing:
> > Synopsis: x11/xlockmore compile failure due to update of print/freetype2
> >
> > State-Changed-From-To: open->feedback
> > State-Changed-By: jgh
> > State-Changed-When: Tue Apr 29 22:49:08 UTC 2014
> > State-Changed-Why:
> > are you still seeing this issue?
> >
> > http://www.freebsd.org/cgi/query-pr.cgi?pr=185542
>
> Yes, I am still seeing the issue.  If MesaGL is selected in x11/xlockmore's
> config dialog, it will not compile.  This is with a ports tree svn-updated
> just this morning.
>
> It appears that I am having trouble following up to the bug report to say
> that,
> though.
>
> As far as I can tell, nothing about the port has changed, so I'm not at
> all surprised the issue is still there.  Is there some reason to expect
> that
> it would go away?
>
> --
> Tom Russo    KM5VY   SAR502   DM64ux          http://www.swcp.com/~russo/
> Tijeras, NM  QRPL#1592 K2#398  SOC#236
> http://kevan.org/brain.cgi?DDTNM
>  echo "prpv_a'rfg_cnf_har_cvcr" | sed -e 's/_/ /g' | tr [a-m][n-z]
> [n-z][a-m]
>
>
>
>
> I had no issue compiling, or installing with the MESAGL option. Perhaps
there is something with another port or your environment.
I am on FreeBSD-10

[helfman@its-jhelfman03 /usr/home/helfman/workspace/ports/x11/xlockmore]$
sudo ldd /usr/local/bin/xlock
/usr/local/bin/xlock:
        libSM.so.6 => /usr/local/lib/libSM.so.6 (0x800a3a000)
        libICE.so.6 => /usr/local/lib/libICE.so.6 (0x800c41000)
        libXpm.so.4 => /usr/local/lib/libXpm.so.4 (0x800e5b000)
        libfreetype.so.6 => /usr/local/lib/libfreetype.so.6 (0x80106c000)
        libGL.so.1 => /usr/local/lib/libGL.so.1 (0x801301000)
        libGLU.so.1 => /usr/local/lib/libGLU.so.1 (0x801592000)
        libXext.so.6 => /usr/local/lib/libXext.so.6 (0x80180f000)
        libXinerama.so.1 => /usr/local/lib/libXinerama.so.1 (0x801a20000)
        libcrypt.so.5 => /lib/libcrypt.so.5 (0x801c22000)
        libX11.so.6 => /usr/local/lib/libX11.so.6 (0x801e42000)
        libm.so.5 => /lib/libm.so.5 (0x802174000)
        libc++.so.1 => /usr/lib/libc++.so.1 (0x80239a000)
        libcxxrt.so.1 => /lib/libcxxrt.so.1 (0x802655000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x80286f000)
        libthr.so.3 => /lib/libthr.so.3 (0x802a7c000)
        libc.so.7 => /lib/libc.so.7 (0x802ca1000)
        libxcb.so.1 => /usr/local/lib/libxcb.so.1 (0x80303a000)
        libXau.so.6 => /usr/local/lib/libXau.so.6 (0x803258000)
        libXdmcp.so.6 => /usr/local/lib/libXdmcp.so.6 (0x80345a000)
        libpthread-stubs.so.0 => /usr/local/lib/libpthread-stubs.so.0
(0x80365f000)
        librpcsvc.so.5 => /usr/lib/librpcsvc.so.5 (0x803860000)
        libz.so.6 => /lib/libz.so.6 (0x803a69000)
        libbz2.so.4 => /usr/lib/libbz2.so.4 (0x803c7e000)
        libXxf86vm.so.1 => /usr/local/lib/libXxf86vm.so.1 (0x803e8f000)
        libXdamage.so.1 => /usr/local/lib/libXdamage.so.1 (0x804093000)
        libXfixes.so.3 => /usr/local/lib/libXfixes.so.3 (0x804295000)
        libX11-xcb.so.1 => /usr/local/lib/libX11-xcb.so.1 (0x80449a000)
        libxcb-glx.so.0 => /usr/local/lib/libxcb-glx.so.0 (0x80469b000)
        libdrm.so.2 => /usr/local/lib/libdrm.so.2 (0x8048b2000)
[helfman@its-jhelfman03 /usr/home/helfman/workspace/ports/x11/xlockmore]$
pkg which /usr/local/lib/libfreetype.so.6
/usr/local/lib/libfreetype.so.6 was installed by package freetype2-2.5.3_1
[helfman@its-jhelfman03 /usr/home/helfman/workspace/ports/x11/xlockmore]$
make -V PORT_OPTIONS
  DOCS EXAMPLES IPV6 MESAGL NLS

-jgh

-- 
Jason Helfman          | FreeBSD Committer
jgh@FreeBSD.org     | http://people.freebsd.org/~jgh  | The Power to Serve
Comment 5 Jason Helfman freebsd_committer freebsd_triage 2014-06-10 17:38:54 UTC
Unable to duplicate this issue as reported by the user. If you feel this still needs to be opened, please provide more information regarding your issue.

Thanks!
-jgh
Comment 6 russo 2014-06-10 20:57:11 UTC
I am on FreeBSD 9.2 (stable, last updated 12 Feb).

What other information do you need to reopen?  This is still an issue on two separate FreeBSD machines with similar package sets.

I am unable to build xlockmore with mesagl enabled, it always spews errors about FTGL, and the first, probably most telling is:

In file included from ./text3d2.cc:85:
/usr/local/include/FTGL/FTGLExtrdFont.h:29:5: warning: #warning This header is deprecated. Please use <FTGL/ftgl.h> from now.
In file included from /usr/local/include/FTGL/FTGLExtrdFont.h:30,
                 from ./text3d2.cc:85:
/usr/local/include/FTGL/ftgl.h:32:22: error: ft2build.h: No such file or directory
/usr/local/include/FTGL/ftgl.h:33:10: error: #include expects "FILENAME" or <FILENAME>
/usr/local/include/FTGL/ftgl.h:34:10: error: #include expects "FILENAME" or <FILENAME>
/usr/local/include/FTGL/ftgl.h:35:10: error: #include expects "FILENAME" or <FILENAME>


I do have FTGL installed and updated:

# pkg info ftgl
ftgl-2.1.3.r5_2,1
Name           : ftgl
Version        : 2.1.3.r5_2,1
Installed on   : Fri Jun  6 16:35:33 MDT 2014
Origin         : graphics/ftgl
Architecture   : freebsd:9:x86:32
Prefix         : /usr/local
Categories     : graphics
Maintainer     : amdmi3@FreeBSD.org
WWW            : http://ftgl.wiki.sourceforge.net/
Comment        : An OpenGL FreeType fonts rendering library
Shared Libs required:
        libfreetype.so.6
        libXmu.so.6
        libXext.so.6
        libX11.so.6
        libSM.so.6
        libICE.so.6
        libGLU.so.1
        libGL.so.1
Shared Libs provided:
        libftgl.so.2.1.3
Flat size      : 550KiB
Description    :
FTGL is a free open source library to enable developers to use arbitrary
fonts in their OpenGL applications. Unlike other OpenGL font libraries
FTGL uses standard font file formats so doesn't need a preprocessing step
to convert the high quality font data into a lesser quality, proprietary
format. FTGL uses the Freetype (www.freetype.org) font library to open and
'decode' the fonts. It then takes that output and stores it in a format
most efficient for OpenGL rendering.

WWW: http://ftgl.wiki.sourceforge.net/

and the header complained about there above  (ft2build.h) definitely does not exist:
# pkg info -l ftgl 
ftgl-2.1.3.r5_2,1:
        /usr/local/include/FTGL/FTBBox.h
        /usr/local/include/FTGL/FTBitmapGlyph.h
        /usr/local/include/FTGL/FTBuffer.h
        /usr/local/include/FTGL/FTBufferFont.h
        /usr/local/include/FTGL/FTBufferGlyph.h
        /usr/local/include/FTGL/FTExtrdGlyph.h
        /usr/local/include/FTGL/FTFont.h
        /usr/local/include/FTGL/FTGLBitmapFont.h
        /usr/local/include/FTGL/FTGLExtrdFont.h
        /usr/local/include/FTGL/FTGLOutlineFont.h
        /usr/local/include/FTGL/FTGLPixmapFont.h
        /usr/local/include/FTGL/FTGLPolygonFont.h
        /usr/local/include/FTGL/FTGLTextureFont.h
        /usr/local/include/FTGL/FTGlyph.h
        /usr/local/include/FTGL/FTLayout.h
        /usr/local/include/FTGL/FTOutlineGlyph.h
        /usr/local/include/FTGL/FTPixmapGlyph.h
        /usr/local/include/FTGL/FTPoint.h
        /usr/local/include/FTGL/FTPolyGlyph.h
        /usr/local/include/FTGL/FTSimpleLayout.h
        /usr/local/include/FTGL/FTTextureGlyph.h
        /usr/local/include/FTGL/ftgl.h
        /usr/local/lib/libftgl.a
        /usr/local/lib/libftgl.la
        /usr/local/lib/libftgl.so
        /usr/local/lib/libftgl.so.2
        /usr/local/lib/libftgl.so.2.1.3
        /usr/local/libdata/pkgconfig/ftgl.pc
Comment 7 russo 2014-06-10 21:04:51 UTC
And digging deeper, ft2build.h is part of freetype2, and IS present in /usr/local/include/freetype2:

freetype2-2.5.3_2:
        [...]
        /usr/local/include/freetype2/ft2build.h
[...]

/usr/local/include/FTGL/ftgl.h attempts to include this.  Somehow the path to ft2build.h is not searched.  I'm at a loss to see how this is happening for me andd not for you.
Comment 8 russo 2014-06-10 22:19:56 UTC
Just spent a little  more time digging, and find that configure for xlockmore is NOT finding freetype headers, but presses on anyway. 

Looking at configure.in for xlockmore, it has an AC_DEFUN for AC_PATH_FREETYPE_DIRECT with this bit of stuff in it:

test -z "$freetype_direct_test_library" && freetype_direct_test_library=freetype
test -z "$freetype_direct_test_function" && freetype_direct_test_function=FT_Init_FreeType
test -z "$freetype_direct_test_include" && freetype_direct_test_include=freetype2/freetype/freetype.h
  for ac_dir in               \
[...]  boatload of directories including /usr/local/include [...]
  do
    if test -r "$ac_dir/$freetype_direct_test_include"; then
      no_freetype= ac_freetype_includes=$ac_dir/freetype2
      break
    fi
  done


That is, it detects where freetype headers are by looking for the file $ac_dir/freetype2/freetype/freetype.h, and when it finds it, uses $ac_dir/freetype2 as the path to freetype includes.

But the freetype2 package has not installed freetype.h into /usr/local/include/freetype2/freetype/freetype.h, it's in /usr/local/include/freetype2/freetype.h (i.e. one level of directory higher):

> pkg info -l freetype2 | grep freetype.h
        /usr/local/include/freetype2/freetype.h

Is this somehow different on your system?
Comment 9 russo 2014-06-10 22:23:17 UTC
I think I've provided a little more information, and if bugzilla will let me, am moving this back to "In Discussion".
Comment 10 russo 2014-06-10 22:34:06 UTC
c.f. another system's approach to dealing with xlockmore's hard-coded assumptions about the layout of the freetype2 directory:

http://lists.opensuse.org/archive/opensuse-commit/2013-12/msg01040.html

They have hacked the configure script to look for freetype.h directly in an assortment of directories in order to determine the correct path to freetype headers, instead of freetype2/freetype/freetype.h

I'm still puzzled by how it's working for you.  Do you have /usr/local/freetype2/freetype/freetype.h?
Comment 11 russo 2014-06-17 22:01:24 UTC
By looking at the OpenSUSE hacks to configure.in, I've constructed a patch that fixes this issue for me.

The problem is that xlockmore's configure script loops over a bunch of top level directories ($ac_dir) and searches for $(ac_dir)/freetype2/freetype/freetype.h, and having found it, uses $(ac_dir)/freetype2 as the path to use in a "-I" for later compilation.

FreeBSD's freetype2 package does NOT install freetype.h into /usr/local/include/freetype2/freetype/freetype.h, but rather /usr/local/include/freetype2/freetype.h.  It is therefore NOT found by the probe technique used by xlockmore.  

This patch is a hack that looks for freetype.h instead of freetype2/freetype/freetype.h, and looks in /usr/local/include, /usr/local/include/freetype2, and /usr/local/include/freetype2/freetype.  Having found it, it uses the directory in which it is found as the freetype2 include directory for -I purposes.

Unfortunately, this is not a good general fix --- it will not find freetype.h in ALL the cases the configure script is testing, so should not be fed upstream as is.  Neither will it do the right thing if freetype.h IS installed in /usr/local/include/freetype2/freetype.

It is still completely mysterious to me how this thing can be working with freetype2 for you, unless your freetype2 install is very different than mine.
Comment 12 russo 2014-06-17 22:02:08 UTC
Created attachment 143881 [details]
Patch to xlockmore's configure script that makes it work properly for me.
Comment 13 russo 2014-06-17 22:02:59 UTC
Created attachment 143882 [details]
Patch to xlockmore's configure.in script that makes it work properly for me.

This patch isn't really necessary, but since I hacked the configure.in script and let autoconf regenerate configure, I am including it.
Comment 14 Jason Helfman freebsd_committer freebsd_triage 2015-01-30 17:29:15 UTC
Created attachment 152383 [details]
patch for freetype2 ac isssue in xlockmore

Does it work with this patch? It looks good from the config.log, so suspect that it will work, but please test.
Comment 15 russo 2015-01-31 00:01:53 UTC
Yes, your "freetype2.diff" patch fixes the issue for me.
Comment 16 Jason Helfman freebsd_committer freebsd_triage 2015-01-31 07:33:05 UTC
Author: jgh
Date: Sat Jan 31 07:14:48 2015
New Revision: 378192
URL: https://svnweb.freebsd.org/changeset/ports/378192
QAT: https://qat.redports.org/buildarchive/r378192/

Log:
  - update to 5.45
  - pet portlint
  - address compile failure for freetype2 [1]

  PR:           18552 [1]  http://www.FreeBSD.org/cgi/query-pr.cgi?pr=18552
  Reported by:  russo@bogodyn.org [1]

Modified:
  head/x11/xlockmore/Makefile
  head/x11/xlockmore/distinfo

Modified: head/x11/xlockmore/Makefile
==============================================================================
--- head/x11/xlockmore/Makefile Sat Jan 31 06:58:54 2015        (r378191)
+++ head/x11/xlockmore/Makefile Sat Jan 31 07:14:48 2015        (r378192)
@@ -2,8 +2,7 @@
 # $FreeBSD$

 PORTNAME=      xlockmore
-PORTVERSION=   5.43
-PORTREVISION=  4
+PORTVERSION=   5.45
 CATEGORIES?=   x11
 MASTER_SITES=  http://www.tux.org/~bagleyd/xlock/${PORTNAME}-${PORTVERSION}/ \
                ftp://ibiblio.org/pub/Linux/X11/screensavers/ \
@@ -22,9 +21,10 @@ USE_GNOME=   #
 USE_XORG=      x11 xaw ice

 LIB_DEPENDS+=  libfreetype.so:${PORTSDIR}/print/freetype2
+CONFIGURE_ENV+=        ac_freetype_includes="${LOCALBASE}/include/freetype2"

 OPTIONS_DEFINE=        MESAGL MB SYSLOG DISABLE_ALLOW_ROOT NICE_ONLY BLANK_ONLY \
-               KERBEROS4 BAD_PAM GTK2 TIME_BOMB CUSTOMIZATION MAGICK
+               KERBEROS4 BAD_PAM GTK2 TIME_BOMB CUSTOMIZATION MAGICK XLOCKMORE_LANG
 OPTIONS_SUB=   yes

 MESAGL_DESC=   Mesa 3D (for GL modes)

Modified: head/x11/xlockmore/distinfo
==============================================================================
--- head/x11/xlockmore/distinfo Sat Jan 31 06:58:54 2015        (r378191)
+++ head/x11/xlockmore/distinfo Sat Jan 31 07:14:48 2015        (r378192)
@@ -1,2 +1,2 @@
-SHA256 (xlockmore-5.43.tar.bz2) = 29911f21aaf682aa61f358ca36dadf20091ad919d19b4d55e3f4c8503ab266d0
-SIZE (xlockmore-5.43.tar.bz2) = 1965448
+SHA256 (xlockmore-5.45.tar.bz2) = 7f81a80cb486c05269d71e9cc2d9c51645b59f09779fc24d01b858b7563015f7
+SIZE (xlockmore-5.45.tar.bz2) = 1968176