Bug 967620 - Review Request: edelib - Small and portable C++ library for EDE
Review Request: edelib - Small and portable C++ library for EDE
Status: CLOSED EOL
Product: Fedora
Classification: Fedora
Component: Package Review (Show other bugs)
rawhide
All Linux
medium Severity medium
: ---
: ---
Assigned To: Douglas Schilling Landgraf
Fedora Extras Quality Assurance
:
Depends On:
Blocks: DebugInfo
  Show dependency treegraph
 
Reported: 2013-05-27 11:50 EDT by Christopher Meng
Modified: 2016-08-29 10:46 EDT (History)
5 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2016-08-29 10:46:13 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---
dougsland: fedora‑review+
limburgher: fedora‑cvs+


Attachments (Terms of Use)
Build with $RPM_OPT_FLAGS, BR libXpm-devel (645 bytes, patch)
2013-06-09 06:35 EDT, Ville Skyttä
no flags Details | Diff

  None (edit)
Description Christopher Meng 2013-05-27 11:50:17 EDT
Spec URL: http://cicku.me/edelib.spec
SRPM URL: http://cicku.me/edelib-2.0-1.fc20.src.rpm
Description: A small and portable C++ library for EDE (Equinox Desktop Environment). Aims 
are to provide enough background for easier EDE components construction
and development.
Fedora Account System Username: cicku
Comment 1 Douglas Schilling Landgraf 2013-05-28 23:51:15 EDT
Hi Christopher,

 I am missing BuildRequire jam in this spec. Can you please look?

Thanks
Douglas
Comment 2 Christopher Meng 2013-05-29 00:31:25 EDT
I forgot to upload the correct version.

Please check again at the same url before, thanks.
Comment 3 Douglas Schilling Landgraf 2013-05-30 14:11:39 EDT
Hi Christopher,

fedora-review tool just shared the below messages, can you please take a look?

Issues:
=======
- Large documentation must go in a -doc subpackage.
  Note: Documentation size is 5949440 bytes in 372 files.
  See: http://fedoraproject.org/wiki/Packaging/Guidelines#PackageDocumentation

edelib-devel.x86_64: W: install-file-in-docs /usr/share/doc/edelib-2.0.0/INSTALL


Thanks!
Comment 4 Christopher Meng 2013-05-31 03:50:10 EDT
NEW Spec URL: http://cicku.me/edelib.spec
NEW SRPM URL: http://cicku.me/edelib-2.0-2.fc20.src.rpm
Comment 5 Douglas Schilling Landgraf 2013-06-01 17:16:14 EDT
Hi Christopher,

I have only one concern at moment, why are you keeping the .ss files? 

$ cd ~/rpmbuild/RPMS/x86_64/usr/lib64/edelib/sslib

$ ls
init-2.ss  init.ss  theme.ss

Thanks
Douglas
Comment 6 Christopher Meng 2013-06-03 06:36:48 EDT
Quoted from author:

"ss files are needed. They are Scheme sources and are needed by
edelib-script. Later (2.1 svn version) they are used even more extensively
by edelib-dbus-explorer tool."
Comment 7 Douglas Schilling Landgraf 2013-06-03 22:24:44 EDT
Hi Christopher,

Thanks for your reply. Below my review.

[OK] MUST: rpmlint must be run on the source rpm and all binary rpms the build produces. The output should be posted in the review

Rpmlint
-------
Checking: edelib-2.0-2.fc18.x86_64.rpm
          edelib-devel-2.0-2.fc18.x86_64.rpm
          edelib-doc-2.0-2.fc18.noarch.rpm
edelib.x86_64: W: only-non-binary-in-usr-lib
edelib.x86_64: W: no-documentation
edelib.x86_64: W: no-manual-page-for-binary edelib-mk-indextheme
edelib.x86_64: W: no-manual-page-for-binary edelib-catchsegv
edelib.x86_64: W: no-manual-page-for-binary edelib-dbus-introspect
edelib.x86_64: W: no-manual-page-for-binary edelib-script
edelib.x86_64: W: no-manual-page-for-binary edelib-update-font-cache
edelib.x86_64: W: no-manual-page-for-binary edelib-convert-icontheme
edelib-devel.x86_64: W: no-documentation
edelib-doc.noarch: E: incorrect-fsf-address /usr/share/doc/edelib-2.0.0/COPYING
edelib-doc.noarch: W: install-file-in-docs /usr/share/doc/edelib-2.0.0/INSTALL
3 packages and 0 specfiles checked; 1 errors, 10 warnings.


Rpmlint (installed packages)
----------------------------
# rpmlint edelib-devel edelib-doc edelib
edelib-devel.x86_64: W: no-documentation
edelib-doc.noarch: E: incorrect-fsf-address /usr/share/doc/edelib-2.0.0/COPYING
edelib-doc.noarch: W: install-file-in-docs /usr/share/doc/edelib-2.0.0/INSTALL
edelib.x86_64: W: only-non-binary-in-usr-lib
OK .ss files are required (comment #6) and non binary.

edelib.x86_64: W: no-documentation
edelib.x86_64: W: no-manual-page-for-binary edelib-mk-indextheme
edelib.x86_64: W: no-manual-page-for-binary edelib-catchsegv
edelib.x86_64: W: no-manual-page-for-binary edelib-dbus-introspect
edelib.x86_64: W: no-manual-page-for-binary edelib-script
edelib.x86_64: W: no-manual-page-for-binary edelib-update-font-cache
edelib.x86_64: W: no-manual-page-for-binary edelib-convert-icontheme

[OK] MUST: The package must be named according to the Package Naming Guidelines 

[OK] MUST: The spec file name must match the base package %{name}, in the format %{name}.spec unless your package has an exemption. 

[OK] MUST: The package must meet the Packaging Guidelines

[OK] MUST: The package must be licensed with a Fedora approved license and meet the Licensing Guidelines

[OK] MUST: The License field in the package spec file must match the actual license. 

[OK] MUST: 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 must be included in %doc

[OK] MUST: The spec file must be written in American English. [5]

[OK] MUST: The spec file for the package MUST be legible

[OK] MUST: The sources used to build the package must match the upstream source, as provided in the spec URL. Reviewers should use sha256sum for this task as it is used by the sources file once imported into git. If no upstream URL can be specified for this package, please see the Source URL Guidelines for how to deal with this.

CHECKSUM(SHA256) this package     : c31bc7e5156424fa7e2fe3e671e7d7d876cbe55f035029ac8569bfc946fc84ae
  CHECKSUM(SHA256) upstream package : c31bc7e5156424fa7e2fe3e671e7d7d876cbe55f035029ac8569bfc946fc84ae


[OK] MUST: The package MUST successfully compile and build into binary rpms on at least one primary architecture.

[OK] MUST: All build dependencies must be listed in BuildRequires, except for any that are listed in the exceptions section of the Packaging Guidelines ; inclusion of those as BuildRequires is optional. Apply common sense.

[OK] MUST: Every binary RPM package (or subpackage) which stores shared library files (not just symlinks) in any of the dynamic linker's default paths, must call ldconfig in %post and %postun

[OK] MUST: Packages must NOT bundle copies of system libraries.

[OK] MUST: A Fedora package must not list a file more than once in the spec file's %files listings

[OK] MUST: Each package must consistently use macros.

[OK] MUST: The package must contain code, or permissable content.

[OK] MUST: Large documentation files must go in a -doc subpackage. (The definition of large is left up to the packager's best judgement, but is not restricted to size. Large can refer to either size or quantity)

[OK] MUST: If a package includes something as %doc, it must not affect the runtime of the application. To summarize: If it is in %doc, the program must run properly if it is not present.

[OK] MUST: Packages must NOT contain any .la libtool archives, these must be removed in the spec if they are built

[OK] MUST: All filenames in rpm packages must be valid UTF-8.

[OK] SHOULD: Package functions as described.

[OK] SHOULD: Latest version is packaged.

[OK] SHOULD: Packager, Vendor, PreReq, Copyright tags should not be in spec file

[OK] SHOULD: Sources can be downloaded from URI in Source: tag

[OK] SHOULD: Reviewer should test that the package builds in mock.

[OK] SHOULD: Buildroot is not present

[OK] SHOULD: Package has no %clean section with rm -rf %{buildroot} (or
     $RPM_BUILD_ROOT)

[OK] SHOULD: Dist tag is present.

[OK] SHOULD: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.

[OK] SHOULD: The placement of pkgconfig(.pc) files are correct.

[OK] SHOULD: SourceX tarball generation or download is documented.

[OK] SHOULD: SourceX is a working URL.

[OK] SHOULD: Spec use %global instead of %define.


Suggestions
=================
- edelib-doc.noarch: W: install-file-in-docs /usr/share/doc/edelib-2.0.0/INSTALL
- If possible fix the above warning.

- Work with upstream for the following:
edelib.x86_64: W: no-documentation
edelib.x86_64: W: no-manual-page-for-binary edelib-mk-indextheme
edelib.x86_64: W: no-manual-page-for-binary edelib-catchsegv
edelib.x86_64: W: no-manual-page-for-binary edelib-dbus-introspect
edelib.x86_64: W: no-manual-page-for-binary edelib-script
edelib.x86_64: W: no-manual-page-for-binary edelib-update-font-cache
edelib.x86_64: W: no-manual-page-for-binary edelib-convert-icontheme
edelib-doc.noarch: E: incorrect-fsf-address /usr/share/doc/edelib-2.0.0/COPYING

All above suggestions can be worked in parallel of packaging.
Please let me know if you need any help.

Status: APPROVED
Comment 8 Christopher Meng 2013-06-03 23:57:27 EDT
New Package SCM Request
=======================
Package Name: edelib
Short Description: Small and portable C++ library for EDE
Owners: cicku
Branches: f18 f19
InitialCC:
Comment 9 Gwyn Ciesla 2013-06-04 08:29:42 EDT
Git done (by process-git-requests).
Comment 10 Fedora Update System 2013-06-04 11:52:59 EDT
edelib-2.0-2.fc19 has been submitted as an update for Fedora 19.
https://admin.fedoraproject.org/updates/edelib-2.0-2.fc19
Comment 11 Fedora Update System 2013-06-04 12:05:45 EDT
edelib-2.0-2.fc18 has been submitted as an update for Fedora 18.
https://admin.fedoraproject.org/updates/edelib-2.0-2.fc18
Comment 12 Fedora Update System 2013-06-04 22:33:06 EDT
edelib-2.0-2.fc19 has been pushed to the Fedora 19 testing repository.
Comment 13 Ville Skyttä 2013-06-09 06:35:43 EDT
Created attachment 758720 [details]
Build with $RPM_OPT_FLAGS, BR libXpm-devel

Package is not built with $RPM_OPT_FLAGS, and build dependency on libXpm-devel is missing, fix attached.
Comment 14 Christopher Meng 2013-06-13 06:09:52 EDT
(In reply to Ville Skyttä from comment #13)
> Created attachment 758720 [details]
> Build with $RPM_OPT_FLAGS, BR libXpm-devel

Can I build without optflags?
Comment 15 Ville Skyttä 2013-06-13 08:50:53 EDT
(In reply to Christopher Meng from comment #14)
> Can I build without optflags?

Only if there is a good reason to do so, and that reason must be documented in the specfile. Why wouldn't you build with optflags?

http://fedoraproject.org/wiki/Packaging:Guidelines#Compiler_flags
Comment 16 Michael Schwendt 2013-06-13 09:47:20 EDT
Seriously, guys, please restart the review, and don't rush. Even a brief look at the spec file raises questions:

> %post -p /sbin/ldconfig
> 
> %postun -p /sbin/ldconfig

Why these scriptlets? The %files section doesn't contain anything related.

> %files
> %{_bindir}/%{name}*
> %{_libdir}/%{name}/


> %install
> jam install
> find %{buildroot} -name '*.a' -exec rm -f {} ';'
> find %{buildroot} -name 'INSTALL' -exec rm -f {} ';'

So, first you compile and build libraries only to delete them?

   /usr/lib64/libedelib.a
   /usr/lib64/libedelib_dbus.a
   /usr/lib64/libedelib_gui.a


> %files devel
> %{_libdir}/pkgconfig/%{name}*.pc

Untested pkgconfig files. They could have served as an early-warning system. Examine them with real-world pkg-config queries.
Comment 17 Björn "besser82" Esser 2013-06-13 10:12:29 EDT
More to come:

  * There are headers in -devel-pkg with no lib to link against, as well.

  * The binaries are linked against the static-lib, which surely will cause
    problems when fully-hardnened build will be mandatory.
    There should at least have been a virtual provides: %{name}-static
    for having this issue auto-tracked.

If anybody objects I'll take this for re-review...
Comment 18 Douglas Schilling Landgraf 2013-06-13 10:16:18 EDT
(In reply to Björn Esser from comment #17)
> More to come:
> 
>   * There are headers in -devel-pkg with no lib to link against, as well.
> 
>   * The binaries are linked against the static-lib, which surely will cause
>     problems when fully-hardnened build will be mandatory.
>     There should at least have been a virtual provides: %{name}-static
>     for having this issue auto-tracked.
> 
> If anybody objects I'll take this for re-review...

From my side it's ok, I wish I could see the issues raised by you and Michael before.

Thanks
Comment 19 Björn "besser82" Esser 2013-06-13 10:29:19 EDT
Just have a look at the build.log on koji:

http://kojipkgs.fedoraproject.org//packages/edelib/2.0/3.fc20/data/logs/x86_64/build.log

MkDir1 /builddir/build/BUILDROOT/edelib-2.0-3.fc20.x86_64/usr/lib64/pkgconfig 
Install1 /builddir/build/BUILDROOT/edelib-2.0-3.fc20.x86_64/usr/lib64/pkgconfig/edelib.pc 
... more *.pc installed ...
=================================
Here it comes:
=================================

Install1 /builddir/build/BUILDROOT/edelib-2.0-3.fc20.x86_64/usr/lib64/libedelib.a 
Chmod1 /builddir/build/BUILDROOT/edelib-2.0-3.fc20.x86_64/usr/lib64/libedelib.a 
Install1 /builddir/build/BUILDROOT/edelib-2.0-3.fc20.x86_64/usr/lib64/libedelib_gui.a 
Chmod1 /builddir/build/BUILDROOT/edelib-2.0-3.fc20.x86_64/usr/lib64/libedelib_gui.a 
Install1 /builddir/build/BUILDROOT/edelib-2.0-3.fc20.x86_64/usr/lib64/libedelib_dbus.a 
Chmod1 /builddir/build/BUILDROOT/edelib-2.0-3.fc20.x86_64/usr/lib64/libedelib_dbus.a 

...

================================
Here it's deleted:
================================
=
+ find /builddir/build/BUILDROOT/edelib-2.0-3.fc20.x86_64 -name '*.a' -exec rm -f '{}' ';'
+ find /builddir/build/BUILDROOT/edelib-2.0-3.fc20.x86_64 -name INSTALL -exec rm -f '{}' ';'

If you have a look inside the build pkgs:
  no lib*.so in main-pkg.

About static-linking:

https://fedoraproject.org/wiki/Packaging:Guidelines?rd=Packaging/Guidelines#Statically_Linking_Executables

Hope this helps you.
Comment 20 Christopher Meng 2013-06-13 12:44:45 EDT
Sorry guys, I've made some mistakes.

For the shlib problem, I'll contact upstream. But maybe I have to raise an exception.

I don't know what's wrong with the pkgconfig files?

Björn if you have time you can take over this.
Comment 21 Michael Schwendt 2013-06-13 13:56:22 EDT
> I don't know what's wrong with the pkgconfig files?

Well, they refer to libraries you have deleted. ;-)
Examples:

  $ pkg-config --libs edelib
  -ledelib  
  $ pkg-config --libs edelib-dbus
  -L/lib64 -ledelib_dbus -ledelib -ldbus-1  
  $ pkg-config --libs edelib-gui
  -Wl,-z,relro -ledelib_gui -lfltk_images -lfltk -ledelib  
  $ pkg-config --libs edelib-gui-no-images
  -Wl,-z,relro -ledelib_gui -lfltk -ledelib  

What to do about the FLTK libs that are being referred to is an entirely different matter and also depends on whether libedelib_gui is a shared or static lib.
Comment 22 Christopher Meng 2013-06-13 22:40:39 EDT
(In reply to Michael Schwendt from comment #21)

Ok I know...I built them and deleted them...

The main problem is that I forgot to pass --enable-shared option to the jam.

I will release a corrected version later.
Comment 23 Christopher Meng 2013-06-14 08:20:53 EDT
Hi all,

Things should get better now. I've fixed the shared library problem.

NEW SPEC URL: http://cicku.me/edelib.spec
NEW SRPM URL: http://cicku.me/edelib-2.0-3.fc20.src.rpm

Can someone help do a review again? I've unpushed the updates so this becomes a new review request again.
Comment 24 Michael Schwendt 2013-06-14 09:27:22 EDT
Some questions based on another brief look at the new spec file:


> BuildRequires:     libX11

Not libX11-devel?


> %build
> CFLAGS="%{optflags}" CXXFLAGS="%{optflags}" \
> ./configure --enable-shared \
>     --prefix=%{buildroot}%{_prefix} \
>     --libdir=%{buildroot}%{_libdir}

Why isn't %configure used instead?

Could you avoid using %buildroot in this section? Passing %buildroot based paths to a configure script is a common packaging pitfall, because when paths are inserted into any built files, they would contain the %buildroot prefix. Typically, you should not refer to %buildroot before the %install section.

> sed -i 's|%{buildroot}||' *.pc edelib/edelib-config.h

qed

> %install
> jam install

Is "jam install" capable of installing into a buildroot? That would be the preferred solution.


> %files devel
> %{_libdir}/%{name}/sslib/*.ss

What files are they? When are they needed? At run-time or only during development?  For example, src/Scheme.cpp refers to these files. There is a hardcoded path in that file, too, which differs from the location you've packaged, and it may need further patching for targets where %_lib is not /lib: /lib/edelib/sslib


> %{_libdir}/%{name}/sslib/*.ss

Two "unowned" directories there:
https://fedoraproject.org/wiki/Packaging:Guidelines#File_and_Directory_Ownership
Comment 25 Fedora Update System 2014-06-25 02:53:06 EDT
edelib-2.1-2.fc20 has been submitted as an update for Fedora 20.
https://admin.fedoraproject.org/updates/edelib-2.1-2.fc20
Comment 26 Fedora Update System 2014-06-25 02:53:16 EDT
edelib-2.1-2.fc19 has been submitted as an update for Fedora 19.
https://admin.fedoraproject.org/updates/edelib-2.1-2.fc19
Comment 27 Fedora Update System 2014-06-25 21:51:09 EDT
Package edelib-2.1-2.fc19:
* should fix your issue,
* was pushed to the Fedora 19 testing repository,
* should be available at your local mirror within two days.
Update it with:
# su -c 'yum update --enablerepo=updates-testing edelib-2.1-2.fc19'
as soon as you are able to.
Please go to the following url:
https://admin.fedoraproject.org/updates/FEDORA-2014-7719/edelib-2.1-2.fc19
then log in and leave karma (feedback).
Comment 28 Douglas Schilling Landgraf 2016-08-29 10:46:13 EDT
closing this bug and the package is orphan at this time.

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