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.
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.
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.
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.
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.
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.
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?
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
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.
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.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.
(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.)
Created attachment 327192 [details] #ifdef'd things in symmetrica Generated with: grep '#ifdef' *.c | cut -d':' -f2 | cut -d' ' -f2 | sort | uniq > defines
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:
cvs done.
http://koji.fedoraproject.org/koji/taskinfo?taskID=1004878 Built in rawhide, closing.