Product: Fedora https://bugzilla.redhat.com/show_bug.cgi?id=920518 Paulo Andrade <paulo.cesar.pereira.de.andrade@xxxxxxxxx> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |paulo.cesar.pereira.de.andr | |ade@xxxxxxxxx --- Comment #1 from Paulo Andrade <paulo.cesar.pereira.de.andrade@xxxxxxxxx> --- Some comments after an initial look in the package: -------------------------------------------------- 1. You should avoid as much as possible a manual install because that easily does not do what upstream intend or end up installing files that should not be installed. After running make install setting DESTDIR I see: $ find . . ./usr ./usr/include ./usr/include/metis.h ./usr/lib ./usr/lib/libmetis.so ./usr/bin ./usr/bin/gpmetis ./usr/bin/cmpfillin ./usr/bin/m2gmetis ./usr/bin/mpmetis ./usr/bin/ndmetis ./usr/bin/graphchk That means at first that -DLIB_SUFFIX=64 is not being passed to cmake, so, either should patch the Makefile that calls cmake, or, since the cmake wrapper in the toplevel Makefile is not that complex, call cmake explicitly, example: mkdir build pushd build %cmake $CMAKE_OPTIONS .. %make %{?_smp_mflags} popd Also, after running make install it is not required to mess with rpath: $ chrpath -l usr/bin/cmpfillin usr/bin/cmpfillin: no rpath or runpath tag found. -------------------------------------------------- 2. Several features appear to not be set/used. I believe another strong reason to call cmake explicitly: ---%<--- $ cmake -LA -- The C compiler identification is GNU 4.8.0 -- The CXX compiler identification is GNU 4.8.0 -- Check for working C compiler: /usr/lib64/ccache/cc -- Check for working C compiler: /usr/lib64/ccache/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working CXX compiler: /usr/lib64/ccache/c++ -- Check for working CXX compiler: /usr/lib64/ccache/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Looking for execinfo.h -- Looking for execinfo.h - found -- Looking for getline -- Looking for getline - found CMake Error at CMakeLists.txt:9 (ADD_EXECUTABLE): Cannot find source file: GKlib/conf/check_thread_storage.c Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp .hxx .in .txx CMake Error: Internal CMake error, TryCompile generation of cmake failed -- checking for thread-local storage - not found -- Configuring incomplete, errors occurred! -- Cache values ASSERT:BOOL=OFF ASSERT2:BOOL=OFF CMAKE_AR:FILEPATH=/usr/bin/ar CMAKE_BUILD_TYPE:STRING= CMAKE_COLOR_MAKEFILE:BOOL=ON CMAKE_CXX_COMPILER:FILEPATH=/usr/lib64/ccache/c++ CMAKE_CXX_FLAGS:STRING= CMAKE_CXX_FLAGS_DEBUG:STRING=-g CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG CMAKE_C_COMPILER:FILEPATH=/usr/lib64/ccache/cc CMAKE_C_FLAGS:STRING= CMAKE_C_FLAGS_DEBUG:STRING=-g CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG CMAKE_EXE_LINKER_FLAGS:STRING= CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=OFF CMAKE_INSTALL_PREFIX:PATH=/usr/local CMAKE_LINKER:FILEPATH=/usr/bin/ld CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/gmake CMAKE_MODULE_LINKER_FLAGS:STRING= CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= CMAKE_NM:FILEPATH=/usr/bin/nm CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib CMAKE_SHARED_LINKER_FLAGS:STRING= CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= CMAKE_SKIP_INSTALL_RPATH:BOOL=NO CMAKE_SKIP_RPATH:BOOL=NO CMAKE_STRIP:FILEPATH=/usr/bin/strip CMAKE_USE_RELATIVE_PATHS:BOOL=OFF CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE DEBUG:BOOL=OFF GDB:BOOL=OFF GKLIB_PATH:PATH=GKlib GKRAND:BOOL=OFF GKREGEX:BOOL=OFF GPROF:BOOL=OFF OPENMP:BOOL=OFF PCRE:BOOL=OFF SHARED:BOOL=FALSE ---%<--- Yet another issue is: ---%<--- $ cd GKlib $ make install DESTDIR=/tmp/gklib Scanning dependencies of target GKlib [ 3%] Building C object CMakeFiles/GKlib.dir/random.c.o [ 6%] Building C object CMakeFiles/GKlib.dir/fs.c.o [ 9%] Building C object CMakeFiles/GKlib.dir/b64.c.o [ 12%] Building C object CMakeFiles/GKlib.dir/seq.c.o [ 16%] Building C object CMakeFiles/GKlib.dir/mcore.c.o [ 19%] Building C object CMakeFiles/GKlib.dir/graph.c.o [ 22%] Building C object CMakeFiles/GKlib.dir/gkregex.c.o [ 25%] Building C object CMakeFiles/GKlib.dir/util.c.o [ 29%] Building C object CMakeFiles/GKlib.dir/io.c.o [ 32%] Building C object CMakeFiles/GKlib.dir/fkvkselect.c.o [ 35%] Building C object CMakeFiles/GKlib.dir/timers.c.o [ 38%] Building C object CMakeFiles/GKlib.dir/pqueue.c.o [ 41%] Building C object CMakeFiles/GKlib.dir/blas.c.o [ 45%] Building C object CMakeFiles/GKlib.dir/rw.c.o [ 48%] Building C object CMakeFiles/GKlib.dir/string.c.o [ 51%] Building C object CMakeFiles/GKlib.dir/itemsets.c.o [ 54%] Building C object CMakeFiles/GKlib.dir/csr.c.o [ 58%] Building C object CMakeFiles/GKlib.dir/tokenizer.c.o [ 61%] Building C object CMakeFiles/GKlib.dir/getopt.c.o [ 64%] Building C object CMakeFiles/GKlib.dir/memory.c.o [ 67%] Building C object CMakeFiles/GKlib.dir/htable.c.o [ 70%] Building C object CMakeFiles/GKlib.dir/omp.c.o [ 74%] Building C object CMakeFiles/GKlib.dir/sort.c.o [ 77%] Building C object CMakeFiles/GKlib.dir/evaluate.c.o [ 80%] Building C object CMakeFiles/GKlib.dir/pdb.c.o [ 83%] Building C object CMakeFiles/GKlib.dir/error.c.o Linking C static library libGKlib.a [ 83%] Built target GKlib Scanning dependencies of target fis [ 87%] Building C object test/CMakeFiles/fis.dir/fis.c.o Linking C executable fis [ 87%] Built target fis Scanning dependencies of target gkgraph [ 90%] Building C object test/CMakeFiles/gkgraph.dir/gkgraph.c.o Linking C executable gkgraph [ 90%] Built target gkgraph Scanning dependencies of target gksort [ 93%] Building C object test/CMakeFiles/gksort.dir/gksort.c.o Linking C executable gksort [ 93%] Built target gksort Scanning dependencies of target rw [ 96%] Building C object test/CMakeFiles/rw.dir/rw.c.o Linking C executable rw [ 96%] Built target rw Scanning dependencies of target strings [100%] Building C object test/CMakeFiles/strings.dir/strings.c.o Linking C executable strings [100%] Built target strings Install the project... -- Install configuration: "" -- Installing: /tmp/gklib/usr/local/lib/libGKlib.a -- Installing: /tmp/gklib/usr/local/include/gk_mkrandom.h -- Installing: /tmp/gklib/usr/local/include/ms_stat.h -- Installing: /tmp/gklib/usr/local/include/ms_stdint.h -- Installing: /tmp/gklib/usr/local/include/gk_mkutils.h -- Installing: /tmp/gklib/usr/local/include/gk_struct.h -- Installing: /tmp/gklib/usr/local/include/gk_getopt.h -- Installing: /tmp/gklib/usr/local/include/ms_inttypes.h -- Installing: /tmp/gklib/usr/local/include/GKlib.h -- Installing: /tmp/gklib/usr/local/include/gk_types.h -- Installing: /tmp/gklib/usr/local/include/gk_mkpqueue.h -- Installing: /tmp/gklib/usr/local/include/gk_mkmemory.h -- Installing: /tmp/gklib/usr/local/include/gk_proto.h -- Installing: /tmp/gklib/usr/local/include/gk_externs.h -- Installing: /tmp/gklib/usr/local/include/gkregex.h -- Installing: /tmp/gklib/usr/local/include/gk_arch.h -- Installing: /tmp/gklib/usr/local/include/gk_macros.h -- Installing: /tmp/gklib/usr/local/include/gk_defs.h -- Installing: /tmp/gklib/usr/local/include/gk_mkpqueue2.h -- Installing: /tmp/gklib/usr/local/include/gk_mkblas.h -- Installing: /tmp/gklib/usr/local/include/gk_mksort.h ---%<--- As you can see, it installs only header files, possibly in a wrong directory, and a static library. What I believe is not correct in the metis-static package you are generating. Also, should check what is, if any, the reason to build a static libGKlib.a, otherwise, I suggest experimenting with a shared one, e.g. untested pseudo patch to GKlib/CMakeLists.txt: ---%<--- -add_library(GKlib STATIC ${GKlib_sources}) -add_library(GKlib SHARED ${GKlib_sources}) ---%<--- *But* it looks like the GKlib sources are already added to libmetis.so; a quick check on a random symbol... ---%<--- $ objdump -T build/Linux-x86_64/libmetis/libmetis.so| grep gk_find_frequent_itemsets 000000000001dfa0 g DF .text 0000000000000208 Base gk_find_frequent_itemsets $ objdump -t GKlib/build/Linux-x86_64/libGKlib.a| grep gk_find_frequent_itemsets 00000000000003e0 g F .text 0000000000000208 gk_find_frequent_itemsets ---%<--- so, they are indeed duplicated, and if anything, I think should only install GKlib headers, but are those really supposed to be exported, instead of only stuff in metis.h? -------------------------------------------------- 3. You most like need to patch include/metis.h, on Install.txt I see: --%<-- 3. Edit the file include/metis.h and specify the width (32 or 64 bits) of the elementary data type used in METIS. This is controled by the IDXTYPEWIDTH constant. For now, on a 32 bit architecture you can only specify a width of 32, whereas for a 64 bit architecture you can specify a width of either 32 or 64 bits. --%<-- So, for a 64 bit build, you probably want to patch include/metis.h, somewhat like: -#define IDXTYPEWIDTH 32 +#define IDXTYPEWIDTH 64 and the other option is: --%<-- /*-------------------------------------------------------------------------- Specifies the data type that will hold floating-point style information. Possible values: 32 : single precission floating point (float) 64 : double precission floating point (double) --------------------------------------------------------------------------*/ #define REALTYPEWIDTH 32 --%<-- That looks better using 64 bit double, but needs testing of course... -------------------------------------------------- 4. You should use a soname for libmetis.so, I suggest something like the (untested) pseudo patch to libmetis/CMakeLists.txt: ---%<--- add_library(metis ${METIS_LIBRARY_TYPE} ${GKlib_sources} ${metis_sources}) +set_target_properties(metis SOVERSION 0) ---%<--- -------------------------------------------------- 5. You should not need to install the graphs subdir to %{_datadir}/%{name}/graphs, but instead, use them, as they are actually example input files, in a %check section. Also, should add GKlib/test binaries to a %check run. -------------------------------------------------- 6. I suggest installing manual/manual.pdf as %doc. -- You are receiving this mail because: You are on the CC list for the bug. Unsubscribe from this bug https://bugzilla.redhat.com/token.cgi?t=2HM3UdMz3s&a=cc_unsubscribe _______________________________________________ package-review mailing list package-review@xxxxxxxxxxxxxxxxxxxxxxx https://admin.fedoraproject.org/mailman/listinfo/package-review