Giter VIP home page Giter VIP logo

Comments (8)

giordano avatar giordano commented on August 11, 2024 1

Gentle bump 🙂 @mofeing is still facing this issue in v4.1.7.

from extrae.

giordano avatar giordano commented on August 11, 2024

I'm not 100% sure this is the right solution, but something like

--- a/src/tracer/Makefile.am.orig
+++ b/src/tracer/Makefile.am
@@ -713,7 +713,7 @@
   libcudaompitracecf_la_CFLAGS = $(core_INCLUDES) $(core_CFLAGS) -DMPI_SUPPORT $(MPI_CFLAGS) $(PARALLEL_CFLAGS_MERGE_LIB) -DCUDA_SUPPORT $(WRAPPERS_CUDA_CFLAGS) -DOMP_SUPPORT
 endif
 
-libseqtrace_la_CFLAGS  = $(core_INCLUDES) $(core_CFLAGS) $(SEQUENTIAL_CFLAGS_MERGE_LIB)
+libseqtrace_la_CFLAGS  = $(core_INCLUDES) $(core_CFLAGS) $(SEQUENTIAL_CFLAGS_MERGE_LIB) $(XML2_CFLAGS)
 
 libmpitrace_la_CFLAGS  = $(core_INCLUDES) $(core_CFLAGS) -DMPI_SUPPORT $(MPI_CFLAGS) $(PARALLEL_CFLAGS_MERGE_LIB)
 libmpitracef_la_CFLAGS = $(core_INCLUDES) $(core_CFLAGS) -DMPI_SUPPORT $(MPI_CFLAGS) $(PARALLEL_CFLAGS_MERGE_LIB)
@@ -755,7 +755,7 @@
   libnanosmpitracecf_la_CFLAGS = $(core_INCLUDES) $(core_CFLAGS) -DNANOS_SUPPORT -DMPI_SUPPORT $(MPI_CFLAGS) $(PARALLEL_CFLAGS_MERGE_LIB)
 endif
 
-libpttrace_la_CFLAGS = $(core_INCLUDES) $(core_CFLAGS) -DPTHREAD_SUPPORT $(SEQUENTIAL_CFLAGS_MERGE_LIB) $(PTHREAD_CFLAGS)
+libpttrace_la_CFLAGS = $(core_INCLUDES) $(core_CFLAGS) -DPTHREAD_SUPPORT $(SEQUENTIAL_CFLAGS_MERGE_LIB) $(PTHREAD_CFLAGS) $(XML2_CFLAGS)
 
 libopenshmemtrace_la_CFLAGS = $(core_INCLUDES) $(core_CFLAGS) @OPENSHMEM_CFLAGS@ -DOPENSHMEM_SUPPORT $(SEQUENTIAL_CFLAGS_MERGE_LIB)
 

seems to fix the issue for me.

from extrae.

giordano avatar giordano commented on August 11, 2024

However after fixing the issue with the header files, I get a later error during linking:

[10:59:48] libtool: link: cc -std=gnu11 -I../../include -I../../src/common -I../../src/tracer -I../../src/tracer/wrappers/API -I../../src/tracer/clocks -I../../src/tracer/hwc -O -g -g -O2 -fno-optimize-sibling-calls -funwind-tables -Wall -W -o .libs/extrae-cmd extrae_cmd-extrae-cmd.o extrae_cmd-extrae-cmd-init.o extrae_cmd-extrae-cmd-emit.o extrae_cmd-extrae-cmd-fini.o  -L/workspace/destdir/lib64 ../../src/tracer/.libs/libseqtrace.so -L/workspace/destdir/lib/ -lpapi -lpfm -lunwind -ldl -lrt ../../src/merger/.libs/libmpi2prv.a -lm -lbfd -liberty -Wl,-rpath -Wl,/workspace/destdir/lib -Wl,-rpath -Wl,/workspace/destdir/lib64 -Wl,-rpath -Wl,/workspace/destdir/lib/
[10:59:48] ../../src/tracer/.libs/libseqtrace.so: undefined reference to `xmlFreeDoc'
[10:59:48] ../../src/tracer/.libs/libseqtrace.so: undefined reference to `xmlGetProp'
[10:59:48] ../../src/tracer/.libs/libseqtrace.so: undefined reference to `xmlCheckVersion'
[10:59:48] ../../src/tracer/.libs/libseqtrace.so: undefined reference to `xmlStrlen'
[10:59:48] ../../src/tracer/.libs/libseqtrace.so: undefined reference to `xmlCharStrdup'
[10:59:48] ../../src/tracer/.libs/libseqtrace.so: undefined reference to `xmlCleanupParser'
[10:59:48] ../../src/tracer/.libs/libseqtrace.so: undefined reference to `xmlStrcasecmp'
[10:59:48] ../../src/tracer/.libs/libseqtrace.so: undefined reference to `xmlStrsub'
[10:59:48] ../../src/tracer/.libs/libseqtrace.so: undefined reference to `xmlNodeListGetString'
[10:59:48] ../../src/tracer/.libs/libseqtrace.so: undefined reference to `xmlParseFile'
[10:59:48] ../../src/tracer/.libs/libseqtrace.so: undefined reference to `xmlFree'
[10:59:48] ../../src/tracer/.libs/libseqtrace.so: undefined reference to `xmlDocGetRootElement'
[10:59:48] collect2: error: ld returned 1 exit status
[10:59:48] make[3]: *** [Makefile:893: extrae-cmd] Error 1

The problem is that libseqtrace.so doesn't link to libxml2 at all:

sandbox:${WORKSPACE}/srcdir/extrae-4.1.2 # readelf -d ./src/tracer/.libs/libseqtrace.so

Dynamic section at offset 0x86a80 contains 29 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libpapi.so.7.0]
 0x0000000000000001 (NEEDED)             Shared library: [libpfm.so.4]
 0x0000000000000001 (NEEDED)             Shared library: [libunwind.so.8]
 0x0000000000000001 (NEEDED)             Shared library: [libdl.so.2]
 0x0000000000000001 (NEEDED)             Shared library: [librt.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libbfd-2.39.so]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [ld-linux-x86-64.so.2]
 0x000000000000000e (SONAME)             Library soname: [libseqtrace-4.1.2.so]
 0x000000000000000f (RPATH)              Library rpath: [/workspace/destdir/lib64:/workspace/destdir/lib/]

Another patch like

--- a/src/tracer/Makefile.am.orig
+++ b/src/tracer/Makefile.am
@@ -834,7 +834,7 @@
 libnanosmpigaspitrace_la_LDFLAGS = $(COMMON_LINKER_FLAGS)
 libnanosgaspitrace_la_LDFLAGS = $(COMMON_LINKER_FLAGS)
 
-libseqtrace_la_LDFLAGS = $(COMMON_LINKER_FLAGS)
+libseqtrace_la_LDFLAGS = $(COMMON_LINKER_FLAGS) -lxml2
 
 libmpitrace_la_LDFLAGS = $(NEW_MPI_LIBS) $(COMMON_LINKER_FLAGS)
 libmpitracef_la_LDFLAGS = $(libmpitrace_la_LDFLAGS) # -static 

fixes the issue for me, but I'm sure there are better ways to do this.

from extrae.

emercadal avatar emercadal commented on August 11, 2024

XML2_CFLAGS are included in core_INCLUDES if HAVE_XML2 is defined during configure

if HAVE_XML2
core_INCLUDES += @XML2_CFLAGS@
endif

Could you check your config.h and see if it is true in your compilation?

from extrae.

giordano avatar giordano commented on August 11, 2024

Please find attached the file config.log and src/tracer/Makefil of my build

In the Makefile, XML2_CFLAGS is set correctly, but not used anywhere.

For reference, core_INCLUDES is

core_INCLUDES = -I$(TRACER_INC) -I$(HWC_INC) -I$(CLOCKS_INC) \
	-I$(INTERFACES_INC)/API -I$(INTERFACES_INC)/MPI \
	-I$(STATS_INC)/MPI -I$(WRAPPERS_INC)/API -I$(WRAPPERS_INC)/MPI \
	-I$(WRAPPERS_INC)/OMP -I$(WRAPPERS_INC)/pthread \
	-I$(WRAPPERS_INC)/CUDA -I$(WRAPPERS_INC)/OPENCL \
	-I$(WRAPPERS_INC)/fork -I$(WRAPPERS_INC)/MALLOC \
	-I$(WRAPPERS_INC)/IO -I$(WRAPPERS_INC)/SYSCALL \
	-I$(WRAPPERS_INC)/openshmem -I$(WRAPPERS_INC)/OPENACC \
	-I$(WRAPPERS_INC)/GASPI -I$(SAMPLING_DIR)/common \
	-I$(top_srcdir) -I$(top_srcdir)/include -I$(COMMON_INC) \
	$(UNWIND_CFLAGS) $(am__append_62) $(am__append_63) \
	-I$(SAMPLING_DIR)/timer $(am__append_64)

No mention to xml2.

from extrae.

giordano avatar giordano commented on August 11, 2024

I don't know if this is relevant, perhaps not because HAVE_XML2 is defined to 1 anyway, but in the config.log I shared above I see the lines

configure:38623: checking for libxml2 version >= 2.5.0
configure:38639: result: no (2.12.0)

which look questionable, to say the least.

from extrae.

gllort avatar gllort commented on August 11, 2024

Are you still facing this issue? At least in more recent versions, XML2_CFLAGS is used in src/tracer/Makefile.am:

if HAVE_XML2
core_INCLUDES += @XML2_CFLAGS@
endif

According to the config.log, HAVE_XML2 is set to 1, and XML2_CFLAGS has value:
XML2_CFLAGS='-I/workspace/destdir/include -I/workspace/destdir/include/libxml2'

Similarly, LDFLAGS are set through:
if HAVE_XML2
XML2_LINKER_FLAGS = @XML2_LDFLAGS@ @XML2_RPATH@ @XML2_LIBS@
endif

And later assigned to:
COMMON_LINKER_FLAGS =
...
$(XML2_LINKER_FLAGS)
...

Both core_INCLUDES and COMMON_LINKER_FLAGS seem to be used by all libraries. Have you tried with a more recent version of the tool, just in case this has been fixed in the meantime?

One thing that catches my eye in the config.log is that these variables are empty:
XML2_LIBS=''
XML2_LIB_xml2=''

Is it possible that the system only has a static version (libxml2.a) available? If so, can you try rebuilding libxml2 with the flag --enable-shared ?

from extrae.

giordano avatar giordano commented on August 11, 2024

Are you still facing this issue?

I can't test it right now, will let you know when I get a chance to try again.

Is it possible that the system only has a static version (libxml2.a) available?

No, we have the shared library.

from extrae.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.