Bug 846008 - Review Request: dsqlite - DSQLite is a Hight level library for SQLite in D programming
Review Request: dsqlite - DSQLite is a Hight level library for SQLite in D pr...
Status: CLOSED ERRATA
Product: Fedora
Classification: Fedora
Component: Package Review (Show other bugs)
rawhide
All Linux
unspecified Severity medium
: ---
: ---
Assigned To: Pierre-YvesChibon
Fedora Extras Quality Assurance
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2012-08-06 09:24 EDT by Christophe Burgun
Modified: 2013-03-12 13:32 EDT (History)
4 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2013-02-25 21:42:49 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---
pingou: fedora‑review+
limburgher: fedora‑cvs+


Attachments (Terms of Use)

  None (edit)
Description Christophe Burgun 2012-08-06 09:24:08 EDT
Spec URL: http://dl.dropbox.com/u/96272944/dsqlite.spec
SRPM URL: http://dl.dropbox.com/u/96272944/dsqlite-1-2.20120803git1113632.fc17.src.rpm
Description: DSQLite is a Hight level library for SQLite. Use sqlite in D programming with this library is so easy.
Fedora Account System Username: jouty
Comment 1 MERCIER Jonathan 2012-08-06 09:49:48 EDT
You should add to the subpackage devel:

Requires:       %{name}%{?_isa} = %{version}-%{release}
Comment 2 Christophe Burgun 2012-08-06 09:56:37 EDT
the requirement in devel package has be done 
Thanks
Comment 4 MERCIER Jonathan 2012-08-06 11:05:58 EDT
that is ok for me:
after installing the generated rpm and build the example file:
- https://github.com/bioinfornatics/DSQLite/blob/master/examples/test_sql.d


--------------------
$ ldc2 -L-lDSQLite-ldc -L-lsqlite examples/test_sql.d
$ ./test_sql 
+++ create database
+++ create table
+++ INSERT INTO people (id, name) VALUES(?, ?), john, 1
+++ INSERT INTO people (id, name) VALUES(?), smith
+++ SELECT name FROM people WHERE id=1
+++ print
name
john
+++ SELECT name FROM people WHERE id=?, 1
+++ print
name
john
+++ SELECT * FROM people
+++ print
name	id
john	1
smith	2
+++ CREATE TABLE car ( constructor TEXT, model TEXT, id INTEGER PRIMARY KEY NOT NULL);
+++ UPDATE table name stored
------------------------------------



You need to look for a sponsor as is your first package
Comment 5 MERCIER Jonathan 2012-08-06 11:10:00 EDT
fix command line used*

$ ldc2 -L-lDSQLite-ldc -L-lsqlite3 examples/test_sql.d
Comment 6 Pierre-YvesChibon 2012-10-24 11:19:34 EDT
I see in you spec that you have defined the version as being 1, how do you plan to do if upstream releases a version 0.1 ?
Comment 7 Pierre-YvesChibon 2012-10-24 11:45:23 EDT
Also, please have a look at:

- the output from rpmlint
- "License file installed when any subpackage combination is installed." that should be true but still minimize the number of duplicated files, please adjust the spec accordingly
- Is the -devel package interesting without the main package?
- I have a problem with: %{_defaultdocdir}/dsqlite could you explain what this is?
- The guidelines are refering to DFLAGS, while you are using DCFLAGS, any specific reasons? (see: https://fedoraproject.org/wiki/Packaging:D )
- Is there really no Requires for this package?

That's a place to start :)
Comment 8 Christophe Burgun 2012-10-26 04:42:00 EDT
1) the output from rpmlint
=> unstripped-binary-or-object (https://fedoraproject.org/wiki/Packaging:D) and dictionnary output are normal 

2) "License file installed when any subpackage combination is installed." that should be true but still minimize the number of duplicated files, please adjust the spec accordingly
=> fixed

3) Is the -devel package interesting without the main package?
=> No it is for developers and they need both.

4) I have a problem with: %{_defaultdocdir}/dsqlite could you explain what this is?
=>  this explain the methods, this documentation is auto generated by any D compiler

5) The guidelines are refering to DFLAGS, while you are using DCFLAGS, any specific reasons? (see: https://fedoraproject.org/wiki/Packaging:D )
- Is there really no Requires for this package?
=> DCFLAGS is used as makefile provide only this var not  DFLAGS

new urls :

SPEC: http://jouty.fedorapeople.org/dsqlite.spec
SRPM: http://jouty.fedorapeople.org/dsqlite-1.0-1.src.rpm
Comment 9 Pierre-YvesChibon 2012-10-31 04:49:06 EDT
you missed one:

> - Is there really no Requires for this package?
Comment 10 Christophe Burgun 2012-10-31 05:47:41 EDT
Sorry,

There isn't Requires needed for the main package
just for the devel.
Comment 11 Pierre-YvesChibon 2012-10-31 10:22:03 EDT
So this package is functional even without a D compiler?
Comment 12 Christophe Burgun 2012-10-31 12:21:55 EDT
Yes this package is functional even without a D compiler 
once compiled this library is functional
Comment 13 Pierre-YvesChibon 2012-11-02 14:01:28 EDT
You have the same comment regarding the Summary has you had for GoGui: the summary should not be a sentence.
Comment 14 Pierre-YvesChibon 2012-11-02 14:07:15 EDT
rpmlint also outputs: unused-direct-shlib-dependency when ran on the package installed (install the package and run "rpmlint dsqlite-devel dsqlite" or check the output from fedora-review that provides it)
Comment 15 MERCIER Jonathan 2012-11-07 19:42:01 EST
little typo into french description 
bibliotheque -> bibliothèque
language -> langage
Comment 16 MERCIER Jonathan 2012-11-07 20:42:56 EST
about "unused-direct-shlib-dependency" is maybe a ldc bug i wait upstream https://github.com/ldc-developers/ldc/issues/228

so you can skip this as the bug is part of ldc an will be fixed
Comment 17 Christophe Burgun 2012-11-08 05:10:00 EST
I have change the summary 

new urls :

SPEC: http://jouty.fedorapeople.org/dsqlite.spec
SRPM: http://jouty.fedorapeople.org/dsqlite-1.0-2.src.rpm
Comment 18 Pierre-YvesChibon 2012-11-16 09:50:50 EST
Ok so here are the final comments:


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

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

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

C/C++:
[x]: ldconfig called in %post and %postun if required.
[x]: Package does not contain any libtool archives (.la)
[x]: Package does not contain kernel modules.
[x]: Package contains no static executables.
[x]: Rpath absent or only used for internal libs.
[x]: Development (unversioned) .so files in -devel subpackage, if present.

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.
[x]: %build honors applicable compiler flags or justifies otherwise.
[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.
[-]: 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]: Fully versioned dependency in subpackages, if present.
[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.
[x]: License file installed when any subpackage combination is installed.
[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.
[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.
[x]: Requires correct, justified where necessary.
[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.
[x]: Spec file is legible and written in American English.
[x]: Spec file name must match the spec package %{name}, in the format
     %{name}.spec.
[-]: Package contains systemd file(s) if in need.
[x]: File names are valid UTF-8.
[x]: Useful -debuginfo package or justification otherwise.
[-]: Large documentation must go in a -doc subpackage.
[-]: 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)
[-]: If the source package does not include license text(s) as a separate file
     from upstream, the packager SHOULD query upstream to include it.
[!]: 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.
[x]: Packages should try to preserve timestamps of original installed files.
[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.
[-]: Large data in /usr/share should live in a noarch subpackage if package is
     arched.


Rpmlint
-------
Checking: dsqlite-1.0-2.x86_64.rpm
          dsqlite-1.0-2.src.rpm
          dsqlite-devel-1.0-2.x86_64.rpm
dsqlite.x86_64: I: enchant-dictionary-not-found fr_FR
dsqlite.x86_64: W: unstripped-binary-or-object /usr/lib64/libDSQLite-ldc.so.1
dsqlite.src: W: spelling-error %description -l en_US sqlite -> sq lite, sq-lite, satellite
dsqlite-devel.x86_64: I: enchant-dictionary-not-found fr
dsqlite-devel.x86_64: W: spelling-error %description -l fr langage -> language
dsqlite-devel.x86_64: W: no-documentation
3 packages and 0 specfiles checked; 0 errors, 4 warnings.




Rpmlint (installed packages)
----------------------------
# rpmlint dsqlite-devel dsqlite
dsqlite-devel.x86_64: I: enchant-dictionary-not-found fr
dsqlite-devel.x86_64: W: spelling-error %description -l fr langage -> language
dsqlite-devel.x86_64: W: no-documentation
dsqlite.x86_64: I: enchant-dictionary-not-found fr_FR
dsqlite.x86_64: W: unstripped-binary-or-object /usr/lib64/libDSQLite-ldc.so.1
dsqlite.x86_64: W: undefined-non-weak-symbol /usr/lib64/libDSQLite-ldc.so.1 __data_start
dsqlite.x86_64: W: undefined-non-weak-symbol /usr/lib64/libDSQLite-ldc.so.1 _Dmain
dsqlite.x86_64: W: undefined-non-weak-symbol /usr/lib64/libDSQLite-ldc.so.1 sqlite3_column_text
dsqlite.x86_64: W: undefined-non-weak-symbol /usr/lib64/libDSQLite-ldc.so.1 sqlite3_close
dsqlite.x86_64: W: undefined-non-weak-symbol /usr/lib64/libDSQLite-ldc.so.1 sqlite3_column_int
dsqlite.x86_64: W: undefined-non-weak-symbol /usr/lib64/libDSQLite-ldc.so.1 sqlite3_reset
dsqlite.x86_64: W: undefined-non-weak-symbol /usr/lib64/libDSQLite-ldc.so.1 sqlite3_bind_int
dsqlite.x86_64: W: undefined-non-weak-symbol /usr/lib64/libDSQLite-ldc.so.1 sqlite3_clear_bindings
dsqlite.x86_64: W: undefined-non-weak-symbol /usr/lib64/libDSQLite-ldc.so.1 sqlite3_exec
dsqlite.x86_64: W: undefined-non-weak-symbol /usr/lib64/libDSQLite-ldc.so.1 sqlite3_bind_double
dsqlite.x86_64: W: undefined-non-weak-symbol /usr/lib64/libDSQLite-ldc.so.1 sqlite3_column_database_name
dsqlite.x86_64: W: undefined-non-weak-symbol /usr/lib64/libDSQLite-ldc.so.1 sqlite3_bind_int64
dsqlite.x86_64: W: undefined-non-weak-symbol /usr/lib64/libDSQLite-ldc.so.1 sqlite3_finalize
dsqlite.x86_64: W: undefined-non-weak-symbol /usr/lib64/libDSQLite-ldc.so.1 sqlite3_column_type
dsqlite.x86_64: W: undefined-non-weak-symbol /usr/lib64/libDSQLite-ldc.so.1 sqlite3_column_table_name
dsqlite.x86_64: W: undefined-non-weak-symbol /usr/lib64/libDSQLite-ldc.so.1 sqlite3_bind_text
dsqlite.x86_64: W: undefined-non-weak-symbol /usr/lib64/libDSQLite-ldc.so.1 sqlite3_column_origin_name
dsqlite.x86_64: W: undefined-non-weak-symbol /usr/lib64/libDSQLite-ldc.so.1 sqlite3_step
dsqlite.x86_64: W: undefined-non-weak-symbol /usr/lib64/libDSQLite-ldc.so.1 sqlite3_column_count
dsqlite.x86_64: W: undefined-non-weak-symbol /usr/lib64/libDSQLite-ldc.so.1 sqlite3_errmsg
dsqlite.x86_64: W: undefined-non-weak-symbol /usr/lib64/libDSQLite-ldc.so.1 sqlite3_column_name
dsqlite.x86_64: W: undefined-non-weak-symbol /usr/lib64/libDSQLite-ldc.so.1 sqlite3_prepare_v2
dsqlite.x86_64: W: undefined-non-weak-symbol /usr/lib64/libDSQLite-ldc.so.1 sqlite3_column_double
dsqlite.x86_64: W: undefined-non-weak-symbol /usr/lib64/libDSQLite-ldc.so.1 sqlite3_open
dsqlite.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libDSQLite-ldc.so.1 /lib64/librt.so.1
dsqlite.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libDSQLite-ldc.so.1 /lib64/libdl.so.2
dsqlite.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libDSQLite-ldc.so.1 /lib64/libpthread.so.0
dsqlite.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libDSQLite-ldc.so.1 /lib64/libm.so.6
2 packages and 0 specfiles checked; 0 errors, 31 warnings.

All these rpmlint warnings can be ignored safely.


MD5-sum check
-------------
https://github.com/downloads/bioinfornatics/DSQLite/dsqlite-1.0.tar.xz :
  CHECKSUM(SHA256) this package     : bd86303a0817ae27678abb28907ccd0035fd12d22d02cf3c28a4070372fcddc8
  CHECKSUM(SHA256) upstream package : bd86303a0817ae27678abb28907ccd0035fd12d22d02cf3c28a4070372fcddc8


So the last thing to correct is:
[!]: Dist tag is present.
which in this case is absent (why?).

Please fix this and I will approve the package
Comment 19 Christophe Burgun 2012-11-16 11:11:48 EST
I have change the spec as your recommendations 

new urls :

SPEC: http://jouty.fedorapeople.org/dsqlite.spec
SRPM: http://jouty.fedorapeople.org/dsqlite-1.0-3.src.rpm
Comment 20 Pierre-YvesChibon 2012-11-16 11:18:33 EST
There is still one thing:
> %global debug_package %{nil}

The guideline says
> If your D package contains static libraries, you must disable debuginfo 
> generation, by adding this line to the top of your spec file:

But you are not building a static library...
Comment 21 Christophe Burgun 2012-11-16 11:32:18 EST
new urls :

SPEC: http://jouty.fedorapeople.org/dsqlite.spec
SRPM: http://jouty.fedorapeople.org/dsqlite-1.0-4.src.rpm
Comment 22 Pierre-YvesChibon 2012-11-16 17:29:11 EST
Ok this time it looks all good.

Congratulations, this package is APPROVED.

Once gogui is approved you will be sponsored into the packager group
You can already follow the next steps in https://fedoraproject.org/wiki/Join_the_package_collection_maintainers#Get_Sponsored
Comment 23 Christophe Burgun 2012-12-03 03:42:19 EST
New Package SCM Request
=======================
Package Name: dsqlite
Short Description: High level library around SQLite for D language
Owners: jouty
Branches: f17 f18
Comment 24 Jon Ciesla 2013-02-14 11:31:13 EST
fas email and bugzilla email need to match.
Comment 25 Christophe Burgun 2013-02-14 16:11:03 EST
New Package SCM Request
=======================
Package Name: dsqlite
Short Description: High level library around SQLite for D language
Owners: jouty
Branches: f17 f18
Comment 26 Jon Ciesla 2013-02-14 17:21:15 EST
Git done (by process-git-requests).
Comment 27 Fedora Update System 2013-02-15 18:12:43 EST
dsqlite-1.0-4.fc17 has been submitted as an update for Fedora 17.
https://admin.fedoraproject.org/updates/dsqlite-1.0-4.fc17
Comment 28 Fedora Update System 2013-02-15 18:23:16 EST
dsqlite-1.0-4.fc18 has been submitted as an update for Fedora 18.
https://admin.fedoraproject.org/updates/dsqlite-1.0-4.fc18
Comment 29 Fedora Update System 2013-02-16 22:33:23 EST
dsqlite-1.0-4.fc17 has been pushed to the Fedora 17 testing repository.
Comment 30 Fedora Update System 2013-02-25 21:42:51 EST
dsqlite-1.0-4.fc17 has been pushed to the Fedora 17 stable repository.
Comment 31 Fedora Update System 2013-02-25 21:53:26 EST
dsqlite-1.0-4.fc18 has been pushed to the Fedora 18 stable repository.

Note You need to log in before you can comment on or make changes to this bug.