Bug 881794

Summary: Review Request: c-graph - A tool for visualizing convolution
Product: [Fedora] Fedora Reporter: Paulo Andrade <paulo.cesar.pereira.de.andrade>
Component: Package ReviewAssignee: Jerry James <loganjerry>
Status: CLOSED CURRENTRELEASE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: agt, eldermarco, loganjerry, notting, package-review
Target Milestone: ---Flags: loganjerry: fedora-review+
gwync: 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: 2013-01-28 15:25:32 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Paulo Andrade 2012-11-29 15:17:27 UTC
Spec URL: http://pcpa.fedorapeople.org/c-graph.spec
SRPM URL: http://pcpa.fedorapeople.org/c-graph-2.0-1.fc19.src.rpm
Description: GNU C-Graph is a novel tool for visualizing the mathematical operation
of convolution underlying natural phenomena susceptible to analysis in
terms of engineering signals and systems theory. "C-Graph" is an
abbreviation for "Convolution Graph". The package is derived from the
BSc. Honours dissertation in Electrical Engineering "Interactive
Computer Package Demonstrating: Sampling Convolution and the FFT",
Adrienne Gaye Thompson, University of Aberdeen (1983).

The package computes the linear convolution of two signals in the time
domain then compares their circular convolution by demonstrating the
convolution theorem. Each signal is modelled by a register of discrete
values simulating samples of a signal, and the discrete Fourier
transform (DFT) computed by means of the Fast Fourier Transform (FFT).

GNU C-Graph is interactive, prompting the user to enter character or
numerical values from the keyboard, dispensing with the learning curve
for writing code. The software is an excellent tool for lecture
demonstrations and lab work in the teaching of signals and systems theory.

C-Graph is written in Fortran. Adrienne Gaye Thompson is the sole author
of GNU C-Graph.
Fedora Account System Username: pcpa

Comment 1 Adrienne Thompson 2012-11-29 17:21:09 UTC
Summary/Short Description:

GNU C-Graph: A tool for visualizing convolution.

But I like Paulo's summary .:)

Comment 2 Susi Lehtola 2013-01-13 00:01:40 UTC
The summary

Summary:	"C-Graph" is an abbreviation for "Convolution Graph"

is bad. For some reason rpmlint doesn't complain about this, since you've spelled the name with capital letters. The summary should simply read

Summary: A tool for visualizing convolutions in signal analysis

**

I'd also shorten the description to

%description
C-Graph is a novel tool for visualizing the mathematical operation
of convolution underlying natural phenomena susceptible to analysis in
terms of engineering signals and systems theory.

C-Graph computes the linear convolution of two signals in the time
domain then compares their circular convolution by demonstrating the
convolution theorem. Each signal is modelled by a register of discrete
values simulating samples of a signal, and the discrete Fourier
transform (DFT) computed by means of the Fast Fourier Transform (FFT).

GNU C-Graph is interactive, prompting the user to enter character or
numerical values from the keyboard, dispensing with the learning curve
for writing code. The software is an excellent tool for lecture
demonstrations and lab work in the teaching of signals and systems theory.

**

<Very much OT>
Although a special program written in a low-level language for demonstrating convolutions might have made sense in the 1980s, it's way out of date today when better solutions exist out-of-the-box.

For instance, GNU Octave could very easily be used to perform all of the Fourier transforms, plots and so on, with very little effort, since .m files can be run as shell scripts. Not only does this make development a lot faster, but also the transforms use better algorithms (e.g. fftw), and if the user ends up looking at the script, s/he'll instantly learn how these things are done in practice -- using Octave.

PS. I'd like to note that the user interface of the program would require some polishing, e.g. checks that the user input was OK or not (see stat argument for Fortran READ function).
</OT>

Comment 3 Adrienne Thompson 2013-01-13 17:23:31 UTC
C-Graph is certainly not out of date. GNU C-Graph's selling point is that the package is exceptionally user-friendly; a user can visualize the convolution theorem and signal spectra without first having to deal with the Octave/Matlab/Scilab etc learning curve. Highly effective lecture demonstrations can be accomplished with just a few keystrokes.

Error handling capabilities are sufficient for 2.0. Plans include development of the user interface and a more sophisticated FFT algorithm for future versions. Development of C-Graph 2.0 was a solo effort.

BTW, Fortran is not a low-level language.

Comment 4 Adrienne Thompson 2013-01-14 15:41:28 UTC
Susi,

Signals and Systems analysis appears not to be your area of expertise. I'm sure there are others on the Fedora team with that specialty.

Comment 5 Jerry James 2013-01-15 15:19:05 UTC
I'll take this review.  Paulo, are you up for yet another GAP package review?  If so, I'd be happy to have bug 869797 reviewed.

Comment 6 Jerry James 2013-01-15 16:47:12 UTC
Issues, in no particular order:
1. The system makes calls out to some binaries that are not Requires.
   a. "clear", which is in the ncurses package
   b. "less", which is in the less package
   c. "mkdir" and "mv", which are in the coreutils package
   d. "gnuplot", which is in the gnuplot or gnuplot-minimal package

   I am not concerned about (c), because I doubt a system can function without
   the coreutils package installed, but consider the rest.
2. The program is built with "-O0 -g" instead of the proper compiler flags,
   because %configure sets FFLAGS, but the Makefile expects FCFLAGS.
3. The COPYING file is in %{_datadir}/%{name} because the program expects to
   be able to read it from there to display to users.  Why are AUTHORS,
   README, and TODO there?  That seems to me to be the wrong place.  They
   should be in %{_docdir}/%{name} instead.
4. On a related note, AUTHORS, README, etc. are all properly marked %doc,
   meaning they can be omitted in a no-docs install.  But COPYING shouldn't be
   marked %doc, because the program expects it to always be present.
5. The RPM is required to be written in American English.  The rpmlint run
   shows that two words in the description use British English spellings.
   They should be changed as indicated by rpmlint.
6. I echo the concerns about the summary given in comment 1 and comment 2.  I
   suggest you go with Adrienne's summary.  Note that the summary in the spec
   file and the bug summary should match.


Package Review
==============

Key:
[x] = Pass
[!] = Fail
[-] = Not applicable
[?] = Not evaluated
[ ] = Manual review needed



===== MUST items =====

Generic:
[x]: Package is licensed with an open-source compatible license and meets
     other legal requirements as defined in the legal section of Packaging
     Guidelines.
[x]: Package successfully compiles and builds into binary rpms on at least one
     supported primary architecture.
[!]: %build honors applicable compiler flags or justifies otherwise.
     The package is built with the flags "-O0 -g".  The problem appears to be
     that RPM's %configure macro sets FFLAGS, but the Makefile uses FCFLAGS.
[x]: All build dependencies are listed in BuildRequires, except for any that
     are listed in the exceptions section of Packaging Guidelines.
[x]: Package contains no bundled libraries.
[x]: Changelog in prescribed format.
[x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
[x]: Sources contain only permissible code or content.
[x]: Each %files section contains %defattr if rpm < 4.4
[x]: Macros in Summary, %description expandable at SRPM build time.
[x]: Package contains desktop file if it is a GUI application.
[x]: Development files must be in a -devel package
[x]: Package requires other packages for directories it uses.
[x]: Package uses nothing in %doc for runtime.
[x]: Package is not known to require ExcludeArch.
[x]: Package does not contain duplicates in %files.
[x]: Permissions on files are set properly.
[x]: Package complies to the Packaging Guidelines
[x]: Spec file lacks Packager, Vendor, PreReq tags.
[x]: If (and only if) the source package includes the text of the license(s)
     in its own file, then that file, containing the text of the license(s)
     for the package is included in %doc.
[x]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses found:
     "*No copyright* GPL (v3 or later)", "GPL (v3 or later)". 2 files have
     unknown license. Detailed output of licensecheck in
     /home/jamesjer/881794-c-graph/licensecheck.txt
[x]: Package consistently uses macro is (instead of hard-coded directory
     names).
[x]: Package is named using only allowed ASCII characters.
[x]: Package is named according to the Package Naming Guidelines.
[x]: Package does not generate any conflict.
     Note: Package contains no Conflicts: tag(s)
[x]: Package do not use a name that already exist
[x]: Package obeys FHS, except libexecdir and /usr/target.
[x]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[x]: Package must own all directories that it creates.
[x]: Package does not own files or directories owned by other packages.
[x]: Package installs properly.
[x]: Package is not relocatable.
[!]: Requires correct, justified where necessary.
     I think ncurses, less, and gnuplot should also be Requires.  See above.
[x]: CheckResultdir
[x]: Rpmlint is run on all rpms the build produces.
     Note: There are rpmlint messages (see attachment).
[x]: Sources used to build the package match the upstream source, as provided
     in the spec URL.
[!]: Spec file is legible and written in American English.
     The rpmlint run shows two words with British English spellings.
[x]: Spec file name must match the spec package %{name}, in the format
     %{name}.spec.
[x]: Package contains systemd file(s) if in need.
[x]: File names are valid UTF-8.
[x]: Useful -debuginfo package or justification otherwise.
[x]: Large documentation must go in a -doc subpackage.
     Note: Documentation size is 317440 bytes in 1 files.
[x]: Packages must not store files under /srv, /opt or /usr/local

===== SHOULD items =====

Generic:
[x]: Reviewer should test that the package builds in mock.
[x]: Buildroot is not present
[x]: Package has no %clean section with rm -rf %{buildroot} (or
     $RPM_BUILD_ROOT)
[x]: If the source package does not include license text(s) as a separate file
     from upstream, the packager SHOULD query upstream to include it.
[x]: Dist tag is present.
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: Final provides and requires are sane (rpm -q --provides and rpm -q
     --requires).
[x]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[x]: The placement of pkgconfig(.pc) files are correct.
[x]: Scriptlets must be sane, if used.
[x]: SourceX tarball generation or download is documented.
[x]: SourceX / PatchY prefixed with %{name}.
[x]: SourceX is a working URL.
[x]: Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[x]: Package should compile and build into binary rpms on all supported
     architectures.
[!]: %check is present and all tests pass.
[!]: Packages should try to preserve timestamps of original installed files.
     The timestamp on README is not preserved.
[x]: Spec use %global instead of %define.

===== EXTRA items =====

Generic:
[x]: Rpmlint is run on all installed packages.
     Note: There are rpmlint messages (see attachment).
[x]: Spec file according to URL is the same as in SRPM.
[x]: Large data in /usr/share should live in a noarch subpackage if package is
     arched.
     Note: Arch-ed rpms have a total of 1228800 bytes in /usr/share 1228800
     c-graph-2.0-1.fc19.i686.rpm


Rpmlint
-------
Checking: c-graph-2.0-1.fc19.src.rpm
          c-graph-2.0-1.fc19.i686.rpm
          c-graph-debuginfo-2.0-1.fc19.i686.rpm
c-graph.src: W: spelling-error %description -l en_US Honours -> Hon ours, Hon-ours, Honors
c-graph.src: W: spelling-error %description -l en_US modelled -> modeled, model led, model-led
c-graph.src: W: invalid-url URL: http://www.gnu.org/software/c-graph timed out
c-graph.i686: W: spelling-error %description -l en_US Honours -> Hon ours, Hon-ours, Honors
c-graph.i686: W: spelling-error %description -l en_US modelled -> modeled, model led, model-led
3 packages and 0 specfiles checked; 0 errors, 5 warnings.




Rpmlint (installed packages)
----------------------------
# rpmlint c-graph-debuginfo c-graph
c-graph.i686: W: spelling-error %description -l en_US Honours -> Hon ours, Hon-ours, Honors
c-graph.i686: W: spelling-error %description -l en_US modelled -> modeled, model led, model-led
2 packages and 0 specfiles checked; 0 errors, 2 warnings.
# echo 'rpmlint-done:'



Requires
--------
c-graph-2.0-1.fc19.i686.rpm (rpmlib, GLIBC filtered):

    /bin/sh
    ImageMagick
    info
    libc.so.6
    libgcc_s.so.1
    libgfortran.so.3
    libgfortran.so.3(GFORTRAN_1.0)
    libgfortran.so.3(GFORTRAN_1.4)
    libm.so.6
    libquadmath.so.0
    rtld(GNU_HASH)

c-graph-debuginfo-2.0-1.fc19.i686.rpm (rpmlib, GLIBC filtered):




Provides
--------
c-graph-2.0-1.fc19.i686.rpm:

    c-graph = 2.0-1.fc19
    c-graph(x86-32) = 2.0-1.fc19

c-graph-debuginfo-2.0-1.fc19.i686.rpm:

    c-graph-debuginfo = 2.0-1.fc19
    c-graph-debuginfo(x86-32) = 2.0-1.fc19



MD5-sum check
-------------
http://ftp.gnu.org/gnu/c-graph/c-graph-2.0.tar.gz :
  CHECKSUM(SHA256) this package     : 016c7cbe21747039394c5b89d43f8aad4dfd978acec7364671ffc303f3bf9bc2
  CHECKSUM(SHA256) upstream package : 016c7cbe21747039394c5b89d43f8aad4dfd978acec7364671ffc303f3bf9bc2


Generated by fedora-review 0.3.1 (b71abc1) last change: 2012-10-16
Buildroot used: fedora-rawhide-i386
Command line :/usr/bin/fedora-review -b 881794 -m fedora-rawhide-i386

Comment 7 Paulo Andrade 2013-01-16 00:09:23 UTC
Update:

- Correct summary as per package author suggestion (#881794)
- Add missing requires for called binaries (#881794)
- Correct description to use American English per the guidelines (#881794)
- Move documentation to docdir (#881794)

Spec URL: http://pcpa.fedorapeople.org/c-graph.spec
SRPM URL: http://pcpa.fedorapeople.org/c-graph-2.0-2.fc19.src.rpm

Comment 8 Paulo Andrade 2013-01-16 00:17:41 UTC
Ops, forgot to add some extra changes:

- Do not modify README timestamp (#881794)
- Use proper fortran compile flags (#881794)

Spec URL: http://pcpa.fedorapeople.org/c-graph.spec
SRPM URL: http://pcpa.fedorapeople.org/c-graph-2.0-3.fc19.src.rpm

Comment 9 Jerry James 2013-01-16 17:59:01 UTC
That fixes everything, so this package is APPROVED.

Comment 10 Paulo Andrade 2013-01-16 19:06:59 UTC
New Package SCM Request
=======================
Package Name: c-graph
Short A tool for visualizing convolution
Owners: pcpa
Branches: f18
InitialCC: pcpa

Comment 11 Gwyn Ciesla 2013-01-16 19:17:16 UTC
Git done (by process-git-requests).

Comment 12 Adrienne Thompson 2013-01-16 19:54:13 UTC
Jerry - you're a genius!!

Comment 13 Fedora Update System 2013-01-16 20:06:05 UTC
c-graph-2.0-3.fc18 has been submitted as an update for Fedora 18.
https://admin.fedoraproject.org/updates/c-graph-2.0-3.fc18

Comment 14 Fedora Update System 2013-01-20 03:23:35 UTC
c-graph-2.0-3.fc18 has been pushed to the Fedora 18 testing repository.

Comment 15 Fedora Update System 2013-01-28 15:25:36 UTC
c-graph-2.0-3.fc18 has been pushed to the Fedora 18 stable repository.

Comment 16 Adrienne Thompson 2013-02-01 15:53:56 UTC
Wear a Fedora for Freedom!

  <http://www.codeartnow.com/gallery-1/freedom/gravitating-to-gnu>

Good job Fedora, have an especially productive 2013. Thank you!

Comment 17 Paulo Andrade 2013-02-01 16:31:27 UTC
(In reply to comment #16)
> Wear a Fedora for Freedom!
> 
>   <http://www.codeartnow.com/gallery-1/freedom/gravitating-to-gnu>
> 
> Good job Fedora, have an especially productive 2013. Thank you!

Is it hand painted or did you use some program to paint it?

I see an Apple and Python reference there :-)

Well, and the obvious Gnu and Fedora references.

Comment 18 Adrienne Thompson 2013-02-01 19:16:50 UTC
(In reply to comment #17)
> 
> Is it hand painted or did you use some program to paint it?
> 
> I see an Apple and Python reference there :-)
> 
> Well, and the obvious Gnu and Fedora references.

You may be mistaking the gnu's horns (sticking out of the fedora) for parts of a python, but there is no Python reference. There is an Apple reference; Newton's apple is a kind of metaphor calling Apple users to migrate/gravitate to GNU/Linux systems.

It's all hand painted - water colour. The high resolution image is licensed to the FSF.

I do plan to get up to speed with Inkscape, the Gimp and Blender, however, to produce more FLOSS art.

Comment 19 Paulo Andrade 2013-02-01 19:59:43 UTC
Just tongue-in-cheek or is that not the Gnu tongue?
I mean, snakes keep the tongue out frequently, I think
they use the tongue to "smell" :-)

Comment 20 Adrienne Thompson 2013-02-01 20:15:28 UTC
(In reply to comment #19)
> Just tongue-in-cheek or is that not the Gnu tongue?
> I mean, snakes keep the tongue out frequently, I think
> they use the tongue to "smell" :-)

The gnu's tongue, I thought, just made the portrait more interesting. No reference was intended to Python or other snakes (beside Apple)!

:)

Comment 21 Christopher Meng 2013-10-20 02:46:15 UTC
*** Bug 879435 has been marked as a duplicate of this bug. ***