Bug 538087

Summary: Review Request: dgc - A system for the creation of digital circuits
Product: [Fedora] Fedora Reporter: Shakthi Kannan <shakthimaan>
Component: Package ReviewAssignee: Chitlesh GOORAH <chitlesh>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: chitlesh, fedora-package-review, notting
Target Milestone: ---Flags: chitlesh: fedora-review+
kevin: fedora-cvs+
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: 0.98-3.el5 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2009-12-01 04:13:56 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 Shakthi Kannan 2009-11-17 15:44:26 UTC
Spec URL: http://shakthimaan.fedorapeople.org/SPECS/dgc.spec
SRPM URL: http://shakthimaan.fedorapeople.org/SRPMS/dgc-0.98-1.fc11.src.rpm
Description: Digital Gate Compiler is a tool for the creation of digital netlists. DGC does an optimization and technology mapping for an abstract description of boolean functions and state machines. Output formats are EDIF, XNF and VHDL. Input formats are KISS, PLA and others.

Successful Koji builds for F-10, F-11, F-12 and EPEL:
http://koji.fedoraproject.org/koji/taskinfo?taskID=1811644
http://koji.fedoraproject.org/koji/taskinfo?taskID=1811668
http://koji.fedoraproject.org/koji/taskinfo?taskID=1811692
http://koji.fedoraproject.org/koji/taskinfo?taskID=1811705

Comment 1 Chitlesh GOORAH 2009-11-17 19:20:45 UTC
#001: use the sourceforge url as URL

#002: the build failed
checking for ANSI C header files... (cached) yes
checking for cos in -lm... yes
checking for pkg-config... /usr/bin/pkg-config
checking for xml2-config... /usr/bin/xml2-config
configure: creating ./config.status
config.status: creating Makefile
config.status: creating replace/Makefile
config.status: creating util/Makefile
config.status: creating cube/Makefile
config.status: creating encoding/Makefile
config.status: creating syl/Makefile
config.status: creating data/Makefile
config.status: creating gnet/Makefile
config.status: creating app/Makefile
config.status: creating config.h
config.status: executing depfiles commands
./config.status: line 1337: replace/Makefile: No such file or directory
sed: can't read util/Makefile: No such file or directory
sed: can't read cube/Makefile: No such file or directory
sed: can't read encoding/Makefile: No such file or directory
sed: can't read syl/Makefile: No such file or directory
sed: can't read data/Makefile: No such file or directory
sed: can't read gnet/Makefile: No such file or directory
sed: can't read app/Makefile: No such file or directory
config.status: executing libtool commands
./config.status: line 1435: libtoolT: No such file or directory
./config.status: line 1848: libtoolT: No such file or directory
./config.status: line 1853: libtoolT: No such file or directory
./config.status: line 2025: libtoolT: No such file or directory
./config.status: line 2050: libtoolT: No such file or directory
mv: cannot stat `libtoolT': No such file or directory
cp: cannot stat `libtoolT': No such file or directory
chmod: cannot access `libtool': No such file or directory
./configure: line 14272: config.log: No such file or directory
error: Bad exit status from /var/tmp/rpm-tmp.rHxLnd (%build)

Comment 2 Chitlesh GOORAH 2009-11-17 19:24:33 UTC
forget #002, sorry I miscopy-paste.

Comment 3 Chitlesh GOORAH 2009-11-17 19:26:48 UTC
By just launching "dgc" from the console, it crashes (reproduce-able everytime):

Searchpath:
 . /home/chitlesh/.dgc 
*** glibc detected *** dgc: munmap_chunk(): invalid pointer: 0x08c025a0 ***
======= Backtrace: =========
/lib/libc.so.6(+0x6e261)[0x260261]

dgc[0x80491f4]
/lib/libc.so.6(__libc_start_main+0xe6)[0x208bb6]
dgc[0x8048991]
======= Memory map: ========
00110000-0018a000 r-xp 00000000 fd:00 125904     /usr/lib/libdgccube.so.0.0.0
0018a000-0018c000 rw-p 00079000 fd:00 125904     /usr/lib/libdgccube.so.0.0.0
0018c000-001c6000 rw-p 00000000 00:00 0 
001c6000-001e1000 r-xp 00000000 fd:00 125912     /usr/lib/libdgcutil.so.0.0.0
001e1000-001e2000 rw-p 0001a000 fd:00 125912     /usr/lib/libdgcutil.so.0.0.0
001e2000-001f2000 rw-p 00000000 00:00 0 
001f2000-00360000 r-xp 00000000 fd:00 57627      /lib/libc-2.11.so
00360000-00361000 ---p 0016e000 fd:00 57627      /lib/libc-2.11.so
00361000-00363000 r--p 0016e000 fd:00 57627      /lib/libc-2.11.so
00363000-00364000 rw-p 00170000 fd:00 57627      /lib/libc-2.11.so
00364000-00367000 rw-p 00000000 00:00 0 
00367000-0036a000 r-xp 00000000 fd:00 57632      /lib/libdl-2.11.so
0036a000-0036b000 r--p 00002000 fd:00 57632      /lib/libdl-2.11.so
0036b000-0036c000 rw-p 00003000 fd:00 57632      /lib/libdl-2.11.so
00457000-00469000 r-xp 00000000 fd:00 59907      /lib/libz.so.1.2.3
00469000-0046a000 rw-p 00011000 fd:00 59907      /lib/libz.so.1.2.3
004f6000-00505000 r-xp 00000000 fd:00 125910     /usr/lib/libdgcsyl.so.0.0.0
00505000-00508000 rw-p 0000f000 fd:00 125910     /usr/lib/libdgcsyl.so.0.0.0
00508000-00516000 rw-p 00000000 00:00 0 
006ca000-006d6000 r-xp 00000000 fd:00 125906     /usr/lib/libdgcencode.so.0.0.0
006d6000-006d7000 rw-p 0000c000 fd:00 125906     /usr/lib/libdgcencode.so.0.0.0
0071a000-0071b000 r-xp 00000000 00:00 0          [vdso]
00bd6000-00d1a000 r-xp 00000000 fd:00 59958      /usr/lib/libxml2.so.2.7.6
00d1a000-00d1f000 rw-p 00143000 fd:00 59958      /usr/lib/libxml2.so.2.7.6
00d1f000-00d20000 rw-p 00000000 00:00 0 
00d25000-00d4d000 r-xp 00000000 fd:00 57634      /lib/libm-2.11.so
00d4d000-00d4e000 r--p 00027000 fd:00 57634      /lib/libm-2.11.so
00d4e000-00d4f000 rw-p 00028000 fd:00 57634      /lib/libm-2.11.so
00dc0000-00ddd000 r-xp 00000000 fd:00 8183       /lib/libgcc_s-4.4.2-20091027.so.1
00ddd000-00dde000 rw-p 0001c000 fd:00 8183       /lib/libgcc_s-4.4.2-20091027.so.1
00e81000-00ed3000 r-xp 00000000 fd:00 125908     /usr/lib/libdgcgnet.so.0.0.0
00ed3000-00ed6000 rw-p 00052000 fd:00 125908     /usr/lib/libdgcgnet.so.0.0.0
00fdb000-00ff9000 r-xp 00000000 fd:00 5264       /lib/ld-2.11.so
00ff9000-00ffa000 r--p 0001d000 fd:00 5264       /lib/ld-2.11.so
00ffa000-00ffb000 rw-p 0001e000 fd:00 5264       /lib/ld-2.11.so
08048000-0804b000 r-xp 00000000 fd:00 125897     /usr/bin/dgc
0804b000-0804f000 rw-p 00002000 fd:00 125897     /usr/bin/dgc
0804f000-0805f000 rw-p 00000000 00:00 0 
08c02000-08c23000 rw-p 00000000 00:00 0          [heap]
b779e000-b77a1000 rw-p 00000000 00:00 0 
b77c3000-b77c6000 rw-p 00000000 00:00 0 
bfd8e000-bfda4000 rw-p 00000000 00:00 0          [stack]
Aborted (core dumped)

Comment 4 Shakthi Kannan 2009-11-18 05:58:41 UTC
#Comment 3: A bug :)

In app/dgc.c main() function, there is:

319:  char *s;
320:  s = b_get_ff_searchpath();
  
324: free (s);

But, b_get_ff_searchpath() is invoked in util/b_ff.c, where memory is allocated for 's', and the pointer 's' is returned. So, trying to free() the memory in the calling function, dumps :)

But, giving proper lib file and examples as input, doesn't enter this logic, and hence doesn't hit this error. You can copy the /usr/share/doc/dgc-0.98/tests/*.sh to any folder, chmod +x *.sh, and running them should run the test cases.

I will update this, and make an updated release by EOD.

Comment 5 Shakthi Kannan 2009-11-18 07:43:32 UTC
--- (In reply to comment #4)
| So, trying to free() the memory in
| the calling function, dumps :)
\--

To be more precise, util/b_ff.c includes "mwc.h" that redefines free() and that is the instance of free() that crashes. When you use the free() available from glibc, freeing of memory works.

I will disable the b_get_ff_searchpath() in those dgc tools that use it, as it simply prints the search path, which is not required or used since we are packaging it.

Comment 6 Shakthi Kannan 2009-11-18 16:07:56 UTC
* Updated URL to use sourceforge.net project website.
* dgc-0.98 will not print searchpath, as it is not required.

Spec URL: http://shakthimaan.fedorapeople.org/SPECS/dgc.spec
SRPM URL: http://shakthimaan.fedorapeople.org/SRPMS/dgc-0.98-2.fc11.src.rpm

Comment 7 Chitlesh GOORAH 2009-11-21 11:52:12 UTC
#001: Summary
I think the summary should be "Digital Gate Compiler" which reflects the letters "dgc".

#002: Incorrect Path

In /usr/share/doc/dgc-0.98/tests/d_latch.dgd

import "../data/
should be
import "/usr/share/dgc/

#003: %doc
ChangeLog and TODO is missing in the %doc. Actually, you don't need to create an extra doc directory for -devel. In that case, you will end up having 2 directory for docs and users are confused to where to search for docs.


The package looks fine and for final review.

Comment 8 Shakthi Kannan 2009-11-21 16:01:02 UTC
#001:
Summary updated

#002:
Fixed the path.

#003:
Added ChangeLog and moved TODO to base package. Ignoring rpmlint warning for -devel package on no documentation.

Latest package, now from Fedora 12:

SPEC: http://shakthimaan.fedorapeople.org/SPECS/dgc.spec
SRPM: http://shakthimaan.fedorapeople.org/SRPMS/dgc-0.98-3.fc12.src.rpm

Comment 9 Chitlesh GOORAH 2009-11-24 19:42:44 UTC
- MUST: The package is named according to the Package Naming Guidelines.
- MUST: The spec file name matches the base package %{name}
- MUST: The package meets the Packaging Guidelines.
- MUST: The package is licensed (GPL) with an open-source compatible license and
meet other legal requirements as defined in the legal section of Packaging
Guidelines.
- MUST: The License field in the package spec file matches the actual license.
- MUST: 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.
- MUST: The spec file must be written in American English.
- MUST: The spec file for the package is be legible. 
- MUST: The sources used to build the package must matches the upstream source,
as provided in the spec URL.
- MUST: The package successfully compiles and builds into binary rpms on at
least i386.
- MUST: All build dependencies is listed in BuildRequires.
- MUST: The spec file handles locales properly.
- MUST: If the package does not contain shared library files located in the
dynamic linker's default paths
- MUST: the package is not designed to be relocatable
- MUST: the package owns all directories that it creates.
- MUST: the package does not contain any duplicate files in the %files listing.
- MUST: Permissions on files are set properly.
- MUST: The package has a %clean section, which contains rm -rf %{buildroot} (or
$RPM_BUILD_ROOT).
- MUST: The package consistently uses macros, as described in the macros section
of Packaging Guidelines.
- MUST: The package contains code, or permissable content. This is described in
detail in the code vs. content section of Packaging Guidelines.
- MUST: There are no Large documentation files
- MUST: %doc does not affect the runtime of the application. To summarize: If it
is in %doc, the program must run properly if it is not present.
- MUST: There are no Header files or static libraries 
- MUST: The package does not contain library files with a suffix 
- MUST: Package does NOT contain any .la libtool archives
- MUST: Package containing GUI applications includes a %{name}.desktop file, and
that file must be properly installed with desktop-file-install in the %install
section.
- MUST: Package does not own files or directories already owned by other packages. 

SHOULD Items:

 - SHOULD: The source package does include license text(s)
 - SHOULD: mock builds succcessfully in i386.
 - SHOULD: The reviewer tested that the package functions as described. A
package should not segfault instead of running, for example.
 - SHOULD: No scriptlets were used, those scriptlets must be sane. 
 - SHOULD: No subpackages present.

APPROVED

Comment 10 Shakthi Kannan 2009-11-25 15:45:52 UTC
New Package CVS Request
=======================
Package Name: dgc
Short Description: Digital Gate Compiler
Owners: shakthimaan chitlesh
Branches: F-11 F-12 EL-5

Comment 11 Kevin Fenzi 2009-11-27 05:29:26 UTC
cvs done.

Comment 12 Fedora Update System 2009-11-28 14:10:39 UTC
dgc-0.98-3.fc12 has been submitted as an update for Fedora 12.
http://admin.fedoraproject.org/updates/dgc-0.98-3.fc12

Comment 13 Fedora Update System 2009-11-28 14:10:46 UTC
dgc-0.98-3.fc11 has been submitted as an update for Fedora 11.
http://admin.fedoraproject.org/updates/dgc-0.98-3.fc11

Comment 14 Fedora Update System 2009-11-28 14:10:52 UTC
dgc-0.98-3.el5 has been submitted as an update for Fedora EPEL 5.
http://admin.fedoraproject.org/updates/dgc-0.98-3.el5

Comment 15 Fedora Update System 2009-12-01 04:13:50 UTC
dgc-0.98-3.fc12 has been pushed to the Fedora 12 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 16 Fedora Update System 2009-12-01 04:39:04 UTC
dgc-0.98-3.fc11 has been pushed to the Fedora 11 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 17 Fedora Update System 2009-12-31 06:55:11 UTC
dgc-0.98-3.el5 has been pushed to the Fedora EPEL 5 stable repository.  If problems still persist, please make note of it in this bug report.