Help with QT-based port?

Ryan Schmidt ryandesign at macports.org
Thu Mar 29 06:47:22 PDT 2012


On Mar 28, 2012, at 19:14, Craig Treleaven wrote:

> I've run into a wall trying to port MythTV.  The linker barfs complaining:
>> ld: -L must be immediately followed by a directory path (no space)
> 
> Debug-level log from my most recent attempt is here:
> http://dl.dropbox.com/u/26787680/0.25%20macports%20build%20fail%202012Mar28.txt

I do agree with the error message... the log shows these arguments being used on a g++ invocation:

-L -lQtGui_debug

Perhaps some directory name variable is not being set and is therefore empty.


> Portfile in development* is here:
> http://dl.dropbox.com/u/26787680/Portfile


> fetch.type          git
> 
> git.branch          92f7d1f51c

Does the 0.25-rc tarball posted on github not work? This is hundreds of MB and takes a long time to fetch, which happens every time I clean and try again, which is something I do often when troubleshooting and/or developing a port, which makes it hard to work on the port.


> license             GPL

Can you be more specific about what version(s) of the GPL?


> maintainers         ctreleaven openmaintainer

Since you are not a committer, the maintainers line should contain your actual (obfuscated) email address:

maintainers         cogeco.ca:ctreleaven openmaintainer


> pre-configure       { append worksrcpath "/mythtv" }


This is an odd way of setting worksrcpath, and fails if you ask MacPorts to break the installation into separate steps, as in:

$ cd mythtv
$ sudo port configure
$ sudo port build

So you simply want:

worksrcdir          ${name}-${version}/mythtv

You'll also want to remove the version line; the github.setup line sets the version for you.


> configure.env-append    MACOSX_DEPLOYMENT_TARGET="10.5" \
>                     	CFLAGS="-m32" \
>                     	CPPFLAGS="-m32" \
>                     	CXXFLAGS="-m32" \
>                     	LDFLAGS="-m32 -F/System/Library/Frameworks -L/usr/lib -L${prefix}/lib" \
>                     	ECXXFLAGS="-m32"

I wouldn't think you'd need to specify -m32 everywhere, since MacPorts already sets -arch i386 everywhere for you, which should be the same thing.

Note that MacPorts has special variables for most of these env vars, which you should set or append to, instead of manually appending to the environment:

macosx_deployment_target
configure.cflags
configure.cppflags
configure.cxxflags
configure.ldflags

I'm surprised you need to specify -L/usr/lib, since /usr/lib is a standard library directory that should be searched anyway. Or are you just trying to force that /usr/lib is searched before ${prefix}/lib? If so, I'd be curious to know why, since that's the opposite of what we usually want.


It is a problem that the port is building using "gcc" and "g++"; see:

https://trac.macports.org/wiki/UsingTheRightCompiler


It appears to be compiling its own version of libavcodec. The version that the ffmpeg port provides is not sufficient?


See output of "port lint --nitpick" for some whitespace nits.


Finally, I fail with:

dvdnav/dvdnav.c: In function ‘dvdnav_open’:
dvdnav/dvdnav.c:79: error: ‘DVDNAV_SVN_REV’ undeclared (first use in this function)
dvdnav/dvdnav.c:79: error: (Each undeclared identifier is reported only once
dvdnav/dvdnav.c:79: error: for each function it appears in.)



> *Needs qt4-mac +mysql5.  Takes 1 hour plus to build the dependencies on my quad-core MBP.

Admittedly I have not done this yet. Guess I'd better get started.




More information about the macports-dev mailing list