Opened 10 years ago

Closed 10 years ago

#26958 closed defect (fixed)

qscintilla build fails when tidy is installed

Reported by: ryandesign (Ryan Schmidt) Owned by: adfernandes (Andrew Fernandes)
Priority: Normal Milestone:
Component: ports Version: 1.9.1
Keywords: Cc: michaelld (Michael Dickens)
Port: qscintilla

Description

After updating to qt4-mac @4.7.0_0, I now can't rebuild qscintilla:

/usr/bin/g++-4.2 -headerpad_max_install_names -single_module -dynamiclib -o libqscintillaplugin.dylib qscintillaplugin.o moc_qscintillaplugin.o   -L/opt/local/lib -lqscintilla2 -L/opt/local/lib -lQtDesigner -lQtScript -lQtXml -lQtGui -lQtCore  
ld: library not found for -lqscintilla2
collect2: ld returned 1 exit status
make: *** [libqscintillaplugin.dylib] Error 1

Mac OS X 10.6.4, x86_64. This was also reported on the mailing list.

libqscintilla2.dylib is located in /opt/local/libexec/qt4-mac/lib but I don't see any "-L/opt/local/libexec/qt4-mac/lib" up there.

Attachments (1)

main.log (22.7 KB) - added by ryandesign (Ryan Schmidt) 10 years ago.
the log

Download all attachments as: .zip

Change History (6)

Changed 10 years ago by ryandesign (Ryan Schmidt)

Attachment: main.log added

the log

comment:1 Changed 10 years ago by ryandesign (Ryan Schmidt)

Also, I guess that's not really the first error; the first error is:

error: there are no arguments to 'PLATFORM_ASSERT' that depend on a template parameter, so a declaration of 'PLATFORM_ASSERT' must be available

comment:2 Changed 10 years ago by michaelld (Michael Dickens)

two thoughts: 1) can you try:

sudo port clean qscintilla
sudo port selfupdate
sudo port install qscintilla [+variants]

and see if that helps? Sometimes cleaning & updating does. If not, then:

2) "PLATFORM_ASSERT" is defined in the file "${worksrcpath}/include/Platform.h", which is included by the cpp file of issue via the header "ScintillaQt.h". The only way that these #define won't happen is if "PLATFORM_H" is already defined -- that would really mess things up for Qsci. I can't find another #define of it on my system (including /opt/local and /usr/local), but maybe you do on yours & it's messing up the install? Can you insert some code at the top of the Platform.h file & see what happens?

#ifdef PLATFORM_H
#define PLATFORM_H
#endif

and if at entry PLATFORM_H is already defined then GCC will print out a message about where it is already defined. Code compilation will not get any further than what you already have.

comment:3 Changed 10 years ago by ryandesign (Ryan Schmidt)

Summary: qscintilla: ld: library not found for -lqscintilla2qscintilla build fails when tidy is installed

In my case it turns out this was caused by the presence of /opt/local/include/platform.h which is provided by the tidy port. Deactivating the tidy port while building qscintilla fixed it.

comment:4 Changed 10 years ago by michaelld (Michael Dickens)

I've checked in r72688: a trial fix that does no harm on my system (which uses a case-sensitive file system) & should work on those using a case-insensitive file system -- which, really, is the issue since the source code includes "Platform.h" while tidy installs "platform.h". Please do a "selfupdate" & try again with tidy still installed and active.

comment:5 Changed 10 years ago by ryandesign (Ryan Schmidt)

Resolution: fixed
Status: newclosed

Yes, that works, thanks.

Note: See TracTickets for help on using tickets.