[Bug 920518] Review Request: metis - Serial Graph Partitioning and Fill-reducing Matrix Ordering

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Fedora Legacy]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]