Bug 117824

Summary: CONFIGURE_LINE truncated to 2048 chars in [at least] multimedia/vlc-devel
Product: Ports & Packages Reporter: Chad Milios <freebsd-pr>
Component: Individual Port(s)Assignee: freebsd-ports-bugs (Nobody) <ports-bugs>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: Latest   
Hardware: Any   
OS: Any   

Description Chad Milios 2007-11-04 20:30:01 UTC
in at least the multimedia/vlc-devel port, the CONFIGURE_LINE that gets defined in the config.h file (during the 'configure' make target) gets truncated to 2048 chars (exactly 2048 includes #define and includes the newline at the end) which for some settings is not long enough. with my settings of a few things disabled and WITH_OPTIMIZED_CFLAGS, just two chars were cut off the end which resulted in a failed make.

malcom# make
...............................
In file included from /usr/ports/multimedia/vlc-devel/work/vlc-0.9.0-svn/include/vlc_common.h:39,
                 from /usr/ports/multimedia/vlc-devel/work/vlc-0.9.0-svn/include/vlc/vlc.h:155,
                 from libvlc.c:38:
./config.h:29:24: warning: missing terminating " character
...............................
libvlc-common.c: In function 'libvlc_InternalCreate':
libvlc-common.c:216: error: missing terminating " character
libvlc-common.c:216: error: expected expression before ')' token
gmake[3]: *** [libvlc_la-libvlc-common.lo] Error 1
..............
Stop in /usr/ports/multimedia/vlc-devel.

Fix: 

my solution was to make configure then hand edit config.h then run the make install. i am not knowledgeable with autoconf or the ports system enough to offer a real fix, or even identify where this truncation occurs. a similar problem may affect other ports. luckily in my case only a couple of bytes were truncated, but had the configure line needed to be longer, it wouldnt have been so apparent to me how to modify the line. if the truncation cannot be fixed [easily enough], a fix should be made to at least raise a more useful error at the point it occurs rather than waiting for some later syntax error because the warning about config.h was pretty burried at that point and it took me a good amount of head scratching before i found that it was the root of my compilation problem.
How-To-Repeat: disable enough options in the make config stage (disable is one character more than enable) as well as define WITH_OPTIMIZED_CFLAGS (counts for a handful more chars) and then make configure. check the line in work/vlc-0.9.0-svn/config.h that starts with #define CONFIGURE_LINE and make sure it ends with '" if it does then it probably wasnt long enough to get truncated
Comment 1 Edwin Groothuis freebsd_committer freebsd_triage 2007-11-04 20:30:09 UTC
Responsible Changed
From-To: freebsd-ports-bugs->freebsd-multimedia

Over to maintainer (via the GNATS Auto Assign Tool)
Comment 2 Rafaël Carré 2007-11-04 21:46:04 UTC
The bug is in uniq

man uniq says:

BUGS
     Input lines are limited to LINE_MAX (2048) bytes in length.

And uniq is used by autoconf in the configure script:

uniq confdefs.h |
  sed -n '
    t rset
    :rset
    s/^[     ]*#[    ]*define[   ][  ]*//
    t ok
    d
    :ok
    s/[\\&,]/\\&/g
    s/^\('"$ac_word_re"'\)\(([^()]*)\)[  ]*\(.*\)/
'"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p
s/^\('"$ac_word_re"'\)[  ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p
' >>conftest.defines

-- 
Rafaël Carré
Comment 3 Michael Johnson freebsd_committer freebsd_triage 2008-05-24 00:02:57 UTC
Responsible Changed
From-To: freebsd-multimedia->freebsd-ports-bugs

Turn over to freebsd-ports-bugs
Comment 4 Felippe de Meirelles Motta freebsd_committer freebsd_triage 2008-06-22 00:32:31 UTC
Hi Submitter,

The maintainer describe about this problem, thus we can close it?

Regards,

-- 
lippe@FreeBSD.org
Felippe de Meirelles Motta
Comment 5 Martin Wilke freebsd_committer freebsd_triage 2008-07-09 09:21:39 UTC
State Changed
From-To: open->closed

Feedback timeout. If you want to Update this port, please feel free to 
follow-up this PR so that we can re-open it. Thanks!