Opened 16 years ago

Closed 16 years ago

Last modified 16 years ago

#19107 closed defect (fixed)

poco 1.3.2 build failure

Reported by: astricker@… Owned by: nox@…
Priority: Normal Milestone:
Component: ports Version: 1.7.0
Keywords: Cc:
Port: poco

Description

The package fails to build with

make[1]: *** No rule to make target \
`/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.o',\
 needed by \
`/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_devel_poco/work\
/poco-1.3.2/XML/obj/Darwin/i386/debug_shared/AbstractContainerNode.o'.  Stop.

(wrap to multiple lines by me, marked with \ at end of line)

Somehow the wrong dependency /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.o is generated.

I noticed that the patch provided in /opt/local/var/macports/sources/rsync.macports.org/release/ports/devel/poco/files/patch-rules-deps-universal.diff is not applied. This solve the wrong dependency problem, but directly leads to the next problem during linking of tests with CppUnit. Various symbols from CppUnit cannot be resolved, while a CppUnit library is found. (No idea if it's the one provided with poco distribution or the one I've installed with ports myself).

It seems that there is something messed up with this port.

Change History (8)

comment:1 Changed 16 years ago by astricker@…

Note: I previously synced (port sync -d) and upgraded (port upgrade installed) macports. I also ran a cleanup for poco (port clean --all poco).

comment:2 Changed 16 years ago by astricker@…

System: Mac OS X 10.5.6, Xcode 3.1.2, i686-apple-darwin9-gcc-4.0.1

comment:3 Changed 16 years ago by mf2k (Frank Schima)

Cc: nox@… removed
Owner: changed from macports-tickets@… to nox@…

comment:4 Changed 16 years ago by nox@…

Please test again with poco 1.3.3p1.

comment:5 Changed 16 years ago by astricker@…

I did test with 1.3.3p1 now (Portfile from subversion trunk).

The dependency problem is fixed.

The linking failure with CppUnit still remains while linking poco-1.3.3p1-all/Foundation/testsuite/bin/Darwin/i386/testrunner:

Undefined symbols:
  "CppUnit::TestCase::assertNotNull(void const*, \
 std::basic_string<char, std::char_traits<char>, \
 std::allocator<char> > const&, \
 long, std::basic_string<char, std::char_traits<char>, \
 std::allocator<char> > const&)", \
 referenced from:
      ClassLoaderTest::testClassLoader2()       in ClassLoaderTest.o
      DynamicFactoryTest::testDynamicFactory()       in DynamicFactoryTest.o
      NotificationQueueTest::testWaitDequeue()       in NotificationQueueTest.o
      NotificationQueueTest::testQueueDequeueUrgent()       in NotificationQueueTest.o
      NotificationQueueTest::testQueueDequeue()       in NotificationQueueTest.o
      SharedLibraryTest::testSharedLibrary1()       in SharedLibraryTest.o
[... (7000 lines skipped)]

comment:6 Changed 16 years ago by astricker@…

Yeah, I found the link failure:

  1. I've installed the cppunit port. Those libraries resides in /opt/local/lib.
  2. poco comes with it's own CppUnit library (older/newer than macport one). This one gets compiled to $(LIBPATH)
  3. as $(LINKFLAGS) contains /opt/local/lib and comes before $(LIBRARY) (in build/rules/exec), the installed libcppunit from port is found first

I found a solution requiring a modification to build/config/Darwin. I prepend $(LIBPATH) to $(LINKFLAGS). This gives first priority to own libraries, then to other port libraries.

  • build/config/Darwin

    old new  
    4444CXXFLAGS        = -Wall -Wno-sign-compare -I/opt/local/include -O2
    4545CXXFLAGS32      =
    4646CXXFLAGS64      =
    47 LINKFLAGS       = -L/opt/local/lib
     47LINKFLAGS       = -L$(LIBPATH) -L/opt/local/lib
    4848LINKFLAGS32     =
    4949LINKFLAGS64     =
    5050STATICOPT_CC    =

Now poco builds successful.

comment:7 Changed 16 years ago by nox@…

Resolution: fixed
Status: newclosed

Fixed in r50102. Thanks for contributing.

comment:8 Changed 16 years ago by (none)

Milestone: Port Bugs

Milestone Port Bugs deleted

Note: See TracTickets for help on using tickets.