Bug 475410

Summary: Review Request: symmetrica - A Collection of Routines for Solving Symmetric Groups
Product: [Fedora] Fedora Reporter: Conrad Meyer <konrad>
Component: Package ReviewAssignee: Jerry James <loganjerry>
Status: CLOSED RAWHIDE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: fedora-package-review, kevin, loganjerry, notting
Target Milestone: ---Flags: loganjerry: fedora‑review+
kevin: fedora‑cvs+
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2008-12-17 19:13:02 EST Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Attachments:
Description Flags
Revised spec file
none
#ifdef'd things in symmetrica none

Description Conrad Meyer 2008-12-08 23:24:25 EST
Spec URL: http://konradm.fedorapeople.org/fedora/SPECS/symmetrica.spec
SRPM URL: http://konradm.fedorapeople.org/fedora/SRPMS/symmetrica-2.0-1.fc9.src.rpm
Description:
Symmetrica is a collection of routines, written in the programming
language C, through which the user can readily write his/her own
programs. Routines which manipulate many types of mathematical objects
are available.
Comment 1 Jerry James 2008-12-11 11:22:10 EST
I'll take this.  I'll do a full review shortly, but here are some preliminary notes.  First, I sent email to upstream asking them to clarify the license issue.  I'll let you know how they respond.  Second, I'm not comfortable with the way this package is compiled.  Ideally it would be built as a shared library in a main package, with the header files in a -devel subpackage.  Is there some reason why this cannot be done?  That would also let you turn debuginfo generation back on, another issue that bothers me.  Also, the spec file as currently written is compiling the example/test code into the library, too.  That should not be done.  The example/test code could be included as documentation or, if there is enough of it, made into a separate -examples subpackage.

I'm also concerned about the .doc extension on the documentation files.  That is usually used for Microsoft Word documents, but these are plain text.  Worse, they contain information that should be in man pages.  Do you have any kind of relationship with upstream?  Can you talk them into making real man pages?  If they have not got the expertise but will accept contributions, I can generate the man pages for them.  Note that I will not block the review on this issue, as it is an upstream problem.

Another upstream issue: if they want help building a proper Makefile that generates a shared library, I can help with that, too.

Compiling produces a really alarming list of GCC warnings.  I see warnings about uninitialized variables, control reaching the end of non-void functions, ambiguous else clauses, unused static functions and variables, incorrect pointer types being passed to functions, incorrect printf format directives, etc.  Does this code work reliably for you?

This looks like a very interesting package!  Thanks for submitting it.
Comment 2 Conrad Meyer 2008-12-11 14:41:34 EST
Sorry that this package seems like such spaghetti. As far as I know upstream developed this, and then dumped it on the internet. I don't know if it has any intentions of even taking patches. I would certainly appreciate help making a shared library (I don't expect upstream to change at all, so we don't have to worry too much about a soname other than .0).

The documentation is all plain text with a .doc extension. I can rename them all to not have the .doc extension (or replace it with .txt or something) if you like. I don't believe upstream has any interest in their code any more, but it is still useful for SAGE ( https://fedoraproject.org/wiki/SIGs/SciTech/SAGE ) which is why we would like to get it into Fedora.

The SAGE project seems to be happy with the code working reliably. I should probably take a look at how they build it ( http://sage.math.washington.edu/home/was/sage/spkg/standard/symmetrica-2.0.p2.spkg ) but as far as I know they just build a libsymmetrica.a too.
Comment 3 Kevin Kofler 2008-12-14 20:10:43 EST
Right, SAGE just puts the headers into /usr/include/symmetrica and builds the sources into a libsymmetrica.a. We want to do the same so we can link SAGE against it (and that's what the specfile does).

The lack of a Makefile sucks, but I don't see it as a blocker, as the instructions to build it are fairly simple.

The license mentioned in the specfile is actually MIT, not BSD. That's pretty close to public domain. Either way, the license is definitely acceptable for Fedora, it matters only for the text to write into the License tag. I'd suggest just going with License: MIT. Making something truely public domain isn't allowed under German copyright law (Urheberrechtsgesetz), which I assume is why the MIT X11 license was used instead. But of course clarification can't hurt if we can get it.

As for the warnings, I can try to fix them.
Comment 4 Jerry James 2008-12-15 11:25:04 EST
If this is truly intended to be consumed by SAGE only, then I can see being a little more lax with it.  Are you certain that nobody else will want to consume it?  Because if anybody does, I think you really will want to build a shared library and have a separate -devel subpackage.

I'll do the review in a moment.  I don't know that fixing the warnings is really all that important if they aren't indicative of runtime issues.

I've had no response from upstream yet.
Comment 5 Jerry James 2008-12-15 14:20:38 EST
I tried to modify the .spec file to build a shared library.  This turned up a code problem.  In file nb.c there are multiple unconditional calls to the function insert_zero_into_monopoly.  However, that function is defined only if the preprocessor symbol MONOPOLYTRUE is defined.  This will lead to undefined symbol errors when linking with the static archive, too, so it looks to me like -DFFTRUE -DMONOPOLYTRUE is the minimal set of preprocessor flags.
Comment 6 Jerry James 2008-12-15 15:02:42 EST
Created attachment 327014 [details]
Revised spec file

What do you think of the attached spec file?  Would building as a shared library adversely affect SAGE?
Comment 7 Conrad Meyer 2008-12-15 17:23:45 EST
Some comments:
  - What does -DFAST do?
  - "I don't know that fixing the warnings is really all that important if they aren't indicative of runtime issues." What Kevin meant is often gcc warnings are indicative of run-time issues on non-32-bit arches.
  - How about generating both dynamic and static libraries instead of one or the other?

New spec and srpm:
http://konradm.fedorapeople.org/fedora/SPECS/symmetrica.spec
http://konradm.fedorapeople.org/fedora/SRPMS/symmetrica-2.0-2.fc9.src.rpm
Comment 8 Jerry James 2008-12-16 16:16:08 EST
Wasn't -DFAST in your original .spec file?  Anyway, there are some macros that expand to error-checking code unless you specify -DFAST, in which case they expand to nothing.  So it's your call, really: do you want error-checking code compiled in, or do you want to live dangerously but have the code run faster?

As for the warnings, you're absolutely right.  Some of the printf format warnings look like they indicate incorrect printing problems on 64-bit platforms.

The dynamic + static library approach looks good.

Sorry I didn't finish the review yesterday like I said I would.  I had a complete network failure before your new SRPM finished downloading, possibly due to a winter storm that just went through here.  The network's back up at last, and I have the SRPM, so *now* I will do the full review.
Comment 9 Jerry James 2008-12-16 16:50:53 EST
MUST items:
- rpmlint output: bad news here.  These undefined non-weak symbol warnings probably indicate that we need yet more -DFOO command line options to avoid unresolved symbol problems.  It'll take digging through the code to see what must be defined to have these symbols be defined, I guess.

symmetrica.x86_64: W: shared-lib-calls-exit /usr/lib64/libsymmetrica.so.0.0.0 exit@GLIBC_2.2.5
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 comp_partition
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 comp_monomschur
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 length_comp_part
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 eq_monomsymfunc
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 comp_monomvector_monomvector
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 maxpart_comp_part
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 add_koeff
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 monom_speicherindex
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 copy_monom
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 monom_speicher
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 comp_monommonomial
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mss_hashtable_hashtable_
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 comp_monompowsym
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 comp_monomelmsym
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 comp_monomhomsym
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 monom_speichersize
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 ganzsquareroot
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 add_matrix
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mult_scalar_monom
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 eval_polynom
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 quores_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 b_skn_po
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 m_ilih_m
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mult_apply_bruch
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 append_apply_part
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 ganzdiv_apply_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 std_perm
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 matrixp
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mult_schur_schur
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 select_row
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 hash_list
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 add_apply_bruch_integer
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 convert_sqrad_scalar
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 b_ksd_n
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 b_sn_l
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 comp_integermatrix
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 hash_matrix
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 addinvers_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 m_gk_spa
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 t_BINTREE_POWSYM
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 ordcon
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 comp_tableaux
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 b_sn_h
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 partitionp
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 freeself_permutation
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 add_apply_polynom
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 copy_polynom
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 first_partition
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 convert_sqrad_cyclo
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 ggt_field_polynom
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 ganzdiv_apply_longint_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 make_monopoly_sqrad
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mod_apply_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 t_BINTREE_SCHUR
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 comp_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 add_apply_integer_bruch
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mult_apply_bruch_polynom
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 ganzdiv_apply_longint_integer
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 s_l_s
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 m_us_t
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 freeself_bruch
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 s_pa_l
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 ribbon_partition
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 durfee_size_part
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 kostka_number_skewpartition
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 dimension_partition
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 skewpartitionp
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 kuerzen
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 copy_permutation
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 add_apply_bruch_bruch
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 gen_mat
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 add_scalar_sqrad
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 add_longint_integer
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 c_ijk_sn
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 dec_partition
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 copy_list
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 m_lh_nm
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 makevectorofSYT
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 eq_partition
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 freeself_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 kostka_tab
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 hook_part
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 convert_cyclo_scalar
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 freeself_integermatrix
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 tex_monom
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 t_LIST_VECTOR
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 copy_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 double_apply_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 invers_integer
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mss_ende
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mult_scalar_sqrad
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 P_symmetrized_bideterminant
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 b_sn_s
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 lehmercode_vector
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 copy_matrix
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 s_pa_li
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 s_t_ij
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mult_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mult_apply_longint_polynom
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 half_apply_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 an_tafel
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 b_sn_mon
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 add_bruch_integer
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 consp_polynom
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mult_apply_bruch_integer
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 transformlist
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 zykeltyp
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 dec_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 t_EXPONENT_VECTOR_apply
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 charvalue
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 comp_longint_integer
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 t_BINTREE_MONOMIAL
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 freeself_matrix
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 add_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mult_apply_integer_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 objectread_list
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 add_apply_bruch
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 eq_partition_partition
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 add_polynom_polynom
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 invers_apply_integer
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 empty_listp
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 makevectorofpart
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 copy_bruch
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 remove_part_integer
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 numberofpart_i
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 conjugate_partition
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 nullp_bruch
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 inc_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 init_bintree
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 b_sn_ps
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mult_scalar_matrix
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 comp_permutation
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 addinvers_apply_bruch
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 m_gl_il
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 part_part_skewschur
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mult_longint_integer
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mult_apply_integer_bruch
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 t_VECTOR_FROBENIUS
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 a_charvalue_co
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mod_longint_integer
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 squareroot
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 numberofvariables
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mult_apply_longint_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 det_mat_imm
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mult_apply_polynom
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 add_apply_longint_integer
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 operate_perm_vector
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 makevectorofspecht_poly
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 first_subset
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 m_tableaux_polynom
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 generate_standard_tableaux
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mult_longint_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mult_bruch_integer
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mult_apply_bruch_bruch
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 m_part_perm
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 b_sk_mo
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 kuerzen_integral
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mod_apply_integer_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 kronecker_product
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mod_matrix
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 add_cyclo_data
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 addinvers_apply_monom
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 intlog_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 c_l_s
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 m_iindex_monom
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 m_ou_b
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 an_rz_perm
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 m_ioiu_b
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 wert
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 ggt_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 nullp_polynom
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 filter_apply_list
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mult_matrix_matrix
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mem_size_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mod_polynom
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mult_bruch_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 m_sk_mo
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 freeself_skewpartition
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mult_scalar_cyclo
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 hash_skewpartition
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 t_BINTREE_ELMSYM
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 m_ilih_nm
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 square_apply_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mult_apply_integer_polynom
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 copy_monom
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 pfaffian_matrix
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 objectread_monom
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 m_skn_po
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mult_apply_longint_bruch
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mult_apply_longint_integer
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 t_BINTREE_HOMSYM
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 s_m_li
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mult_scalar_polynom
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 make_index_coeff_power_cyclo
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 eq_matrix
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 inc_partition
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 b_ou_b
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 make_n_kelmtrans
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 copy_tableaux
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 s_pa_i
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 s_po_k
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 operate_perm_spaltenmatrix
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 m_il_p
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 s_l_n
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 m_v_pa
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 copy_integermatrix
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 addinvers_bruch
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 insert_bintree
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 c_l_n
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 indexofpart
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mult_bruch_bruch
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mult_apply_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 s_mo_ki
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 s_t_iji
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 signum_permutation
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 ordcen
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 b_sn_e
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 copy_partition
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 s_mo_s
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mem_size_matrix
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mod_monom
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 s_m_hi
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 last_partition
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 kostka_number
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 eq_longint_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 s_pa_ii
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 add_apply_longint_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 m_scalar_polynom
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 zeilenende
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 t_int_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 t_BINTREE_POLYNOM
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 weight_partition
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 next_subset
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 m_int_pa
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 alle_teiler
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 s_mo_k
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 s_t_u
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 eq_permutation
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 cast_apply_monom
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 m_iindex_iexponent_monom
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 add_apply_integer_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 freeself_partition
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 freeself_list
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mult_bruch
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 bit_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 first_permutation
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mult_apply_schur_schur
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 add_bruch
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 t_VECTOR_EXPONENT
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 add_apply_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 m_umriss_tableaux
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 m_i_pa
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 change_row_ij
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 add_longint_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 m_u_t
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 mult_apply_bruch_longint
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 b_ks_pa
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 which_part
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 bestimme_fixpunkt
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 m_lh_m
symmetrica.x86_64: W: undefined-non-weak-symbol /usr/lib64/libsymmetrica.so.0.0.0 class_mult
symmetrica-static.x86_64: W: no-documentation
4 packages and 1 specfiles checked; 0 errors, 263 warnings.

- package name: OK
- spec file name: OK
- packaging guidelines: OK
- license guidelines: OK
- license field: OK
- text of license in a file: OK
- spec file in American English: OK
- legible spec file: OK
- sources match upstream: OK
- package builds successfully: OK, checked on x86_64
- use of ExcludeArch: unknown, as I cannot check other arches, assumed OK
- BuildRequires: OK
- locale handling: OK
- use of ldconfig: OK
- relocatable package: OK
- package owns all directories it creates: OK
- no duplicate files in %files: OK
- file permissions: OK
- %clean section: OK
- consistent use of macros: OK
- code or permissible content: OK
- large documentation files: OK
- %doc files do not affect runtime: OK
- header files in -devel: OK
- static libraries in -static: OK
- pkgconfig files: OK
- .so files in -devel: OK
- -devel package requires main package: OK
- no .la archives: OK
- desktop files: OK
- don't own files/directories owned by other packages: OK
- clean at start of %install: OK
- filenames are UTF-8: OK

SHOULD items:
- no license text file, query upstream: OK (upstream appears to be dead)
- translations of description and summary: OK
- builds in mock: OK (checked F-10 x86-64 only)
- builds on all supported arches: did not check
- package works as described: unable to test satisfactorily
- sane scriptlets: OK
- subpackages require main package: OK
- pkgconfig file placement: OK
- file dependencies: OK

So it looks like the items you need to take care of are:
- Decide whether to use -DFAST or not
- Decide what (if anything) to do about the undefined non-weak symbols
- Possibly patch the sources to get rid of warnings indicating 64-bit problems

None of those make the package fail MUST items, so I'll APPROVE this package now and trust you to provide good solutions for those 3 items.
Comment 10 Conrad Meyer 2008-12-16 19:21:29 EST
(In reply to comment #8)
> Wasn't -DFAST in your original .spec file?  Anyway, there are some macros that
> expand to error-checking code unless you specify -DFAST, in which case they
> expand to nothing.  So it's your call, really: do you want error-checking code
> compiled in, or do you want to live dangerously but have the code run faster?

Nope, -DFFTRUE was in my original. I guess Sage is ok with -DFAST, so it's fine for me.

> As for the warnings, you're absolutely right.  Some of the printf format
> warnings look like they indicate incorrect printing problems on 64-bit
> platforms.

Kevin may get to making some patches if he has time, or may prod me into it :).

> The dynamic + static library approach looks good.

Great.

> Sorry I didn't finish the review yesterday like I said I would.  I had a
> complete network failure before your new SRPM finished downloading, possibly
> due to a winter storm that just went through here.  The network's back up at
> last, and I have the SRPM, so *now* I will do the full review.

It's fine! Bummer that your network went down. Any chance you're in Washington? (We just had a storm.)

(I'll reply to anything in the review as needed in my next comment.)
Comment 11 Conrad Meyer 2008-12-16 19:27:09 EST
Created attachment 327192 [details]
#ifdef'd things in symmetrica


Generated with:
grep '#ifdef' *.c | cut -d':' -f2 | cut -d' ' -f2 | sort | uniq > defines
Comment 12 Conrad Meyer 2008-12-16 19:29:16 EST
Thanks for the review!

New Package CVS Request
=======================
Package Name: symmetrica
Short Description: A Collection of Routines for Solving Symmetric Groups
Owners: konradm
Branches: F-10 F-9
InitialCC:
Comment 13 Kevin Fenzi 2008-12-17 17:01:02 EST
cvs done.
Comment 14 Conrad Meyer 2008-12-17 19:09:49 EST
http://koji.fedoraproject.org/koji/taskinfo?taskID=1004878

Built in rawhide, closing.