[Bug 959926] Review Request: libyui - GUI-abstraction library
bugzilla at redhat.com
bugzilla at redhat.com
Sun May 12 11:44:32 UTC 2013
Product: Fedora
https://bugzilla.redhat.com/show_bug.cgi?id=959926
Michael Schwendt <mschwendt at gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
Assignee|nobody at fedoraproject.org |mschwendt at gmail.com
Flags| |fedora-review?
--- Comment #2 from Michael Schwendt <mschwendt at gmail.com> ---
A first look at the spec file. Mostly minor issues (related to Fedora Packaging
Guidelines):
* rpmlint output is clean except for false positives about spelling errors
and shared-lib-calls-exit which is known and covered by a git pull request
already.
> BuildRequires: boost-devel%{?_isa}
> BuildRequires: cmake%{?_isa} >= 2.8
> BuildRequires: doxygen%{?_isa}
> BuildRequires: fdupes%{?_isa}
> BuildRequires: gcc-c++%{?_isa}
> BuildRequires: graphviz%{?_isa}
> BuildRequires: pkgconfig%{?_isa}
Using %_isa in BuildRequires is more confusing than beneficial. First of all,
these "BuildRequires" become the src.rpm's "Requires":
$ rpm -qpR libyui-3.0.3*.src.rpm
boost-devel(x86-64)
cmake(x86-64) >= 2.8
doxygen(x86-64)
fdupes(x86-64)
gcc-c++(x86-64)
graphviz(x86-64)
pkgconfig(x86-64)
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
And usually one publishes a single src.rpm in a common "source" repository
for all target architectures. The expanded %_isa value is the one from the
build environment the src.rpm has been built on. That may be wrong and
confusing. It could even be from a build machine with a completely different
architecture. For example, "boost-devel(x86-64)" is not available for i686,
where the requirement ought to be "boost-devel(x86-32)". It would be strictly
required to rebuild the src.rpm to fix its "Requires". Even if no conditional
arch-dependent build requirements are used in the spec file.
Conclusively: Not using %_isa in BuildRequires is fine and much more common,
too.
> BuildRequires: gcc-c++%{?_isa}
gcc-c++ (as well as gcc and a few more) are expected to be available
in the "minimum build environment":
https://fedoraproject.org/wiki/Packaging:Guidelines#BuildRequires
-> https://fedoraproject.org/wiki/Packaging:Guidelines#Exceptions_2
> %package devel
>
> Requires: glibc-devel%{?_isa}
> Requires: libstdc++-devel%{?_isa}
Same here. Except that are indirectly required by "gcc gcc-c++" already.
> Requires: %{name}%{?_isa} = %{version}
At Fedora, the base package dependency is more strict and includes %{release},
too. This is because either the base package or the subpackage may be patched,
and a strict dependency enforces that they match eachother:
https://fedoraproject.org/wiki/Packaging:Guidelines#Requiring_Base_Package
> Summary: Header files for %{name}
More accurate would be something like
Summary: Files needed for developing with %{name}
since the package clearly contains more than just the headers. ;-)
> %package devel
>
> URL: https://github.com/%{name}/%{name}/
No need to duplicate the URL tag here. It is inherited from the base package
URL.
> %package doc
>
> Group: Development/Libraries
>
> URL: https://github.com/%{name}/%{name}/
Same here. Plus, group "Documentation" would be appropriate:
https://fedoraproject.org/wiki/Packaging:Guidelines#Documentation
> %build
> CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS ;
> CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ;
> FFLAGS="${FFLAGS:-%optflags%{?_fmoddir: -I%_fmoddir}}" ; export FFLAGS ;
> FCFLAGS="${FCFLAGS:-%optflags%{?_fmoddir: -I%_fmoddir}}" ; export FCFLAGS ;
> %{?__global_ldflags:LDFLAGS="${LDFLAGS:-%__global_ldflags}" ; export LDFLAGS ;}
> cmake .. \
Check out the %cmake macro which makes all this easier (rpm --eval %cmake):
http://fedoraproject.org/wiki/Packaging:Cmake
> %install
> cd build
> rm -rf %{buildroot}
It is emptied automatically already:
https://fedoraproject.org/wiki/Packaging:Guidelines#BuildRoot_tag
> make DESTDIR=%{buildroot} install
Nowadays there's a %make_install macro for that.
> install -m0644
Using also option -p can be helpful for packages, not just if they contain
old/ancient files:
https://fedoraproject.org/wiki/Packaging:Guidelines#Timestamps
> %clean
> rm -rf %{buildroot}
https://fedoraproject.org/wiki/Packaging:Guidelines#.25clean
> %dir %{_datadir}/%{name}
>
> -- Theme-Dir: /usr/share/libyui/theme
It would make sense to include this [empty] directory in this package, because
there is code in the lib that uses this path. A pkgconfig variable is defined
for it, too.
> %doc %dir %{_defaultdocdir}/%{name}-%{version}
It's a directory and never marked as %doc. Files are to be marked as %doc.
> %defattr(-,root,root)
https://fedoraproject.org/wiki/Packaging:Guidelines#File_Permissions
> %files devel
> %doc %dir %{_defaultdocdir}/%{name}-%{version}
> %doc %{_defaultdocdir}/%{name}-%{version}/C*
https://fedoraproject.org/wiki/Packaging:Guidelines#Duplicate_Files
Same for the -doc subpackage.
> %{_libdir}/cmake/%{name}
https://fedoraproject.org/wiki/Packaging:Guidelines#File_and_Directory_Ownership
https://fedoraproject.org/wiki/Packaging:UnownedDirectories
* Doing a test-build with a modified spec file using the %cmake macro,
build.log output gets more verbose and reveals that somewhere "-O3 -g3"
is being appended:
https://fedoraproject.org/wiki/Packaging:Guidelines#Compiler_flags
--
You are receiving this mail because:
You are on the CC list for the bug.
Unsubscribe from this bug https://bugzilla.redhat.com/token.cgi?t=SPCByHLopl&a=cc_unsubscribe
More information about the package-review
mailing list