Bug 241279

Summary: Review Request: avr-libc - C library for use with GCC on Atmel AVR microcontrollers
Product: [Fedora] Fedora Reporter: Hans de Goede <hdegoede>
Component: Package ReviewAssignee: Michael E Brown <mebrown>
Status: CLOSED NEXTRELEASE QA Contact: Fedora Package Reviews List <fedora-package-review>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: thibault.north, trond.danielsen
Target Milestone: ---Flags: mebrown: fedora-review+
tcallawa: 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: 2007-07-26 13:23: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:
Attachments:
Description Flags
Fixes wrong encoding in documentation. none

Description Hans de Goede 2007-05-24 19:21:19 UTC
Spec URL: http://people.atrpms.net/~hdegoede/avr-libc.spec
SRPM URL: http://people.atrpms.net/~hdegoede/avr-libc-1.4.6-1.fc8.src.rpm
Description:
AVR Libc is a Free Software project whose goal is to provide a high quality C
library for use with GCC on Atmel AVR microcontrollers.

AVR Libc is licensed under a single unified license. This so-called modified
Berkeley license is intented to be compatible with most Free Software licenses
like the GPL, yet impose as little restrictions for the use of the library in
closed-source commercial applications as possible.

Comment 1 Trond Danielsen 2007-05-24 21:11:59 UTC
Created attachment 155394 [details]
Fixes wrong encoding in documentation.

The problem with the PDF and the PS output is related to some non-unicode chars
in several parts of the code. The attached patch fixes these issues. I also had
to remove %{_smpflags} to make the package build.

Comment 2 Hans de Goede 2007-05-24 21:21:00 UTC
(In reply to comment #1)
> Created an attachment (id=155394) [edit]
> Fixes wrong encoding in documentation.
> 
> The problem with the PDF and the PS output is related to some non-unicode chars
> in several parts of the code. The attached patch fixes these issues. 

Ah thanks, we do need to add a BR: tetex-latex then, but thats ok I guess. I do
have the feeling that having both ps and pdf is a bit overkill though, what do
you think?

Maybe put the html, ps and pdf in  a -docs sub package and only keep the man
pages in the main package?

> I also had
> to remove %{_smpflags} to make the package build.

My bad, I put %_smp_mflags -j1 in my ~/.rpmmacros to compile some heavy c++ code
(using lots of memory) and never changed it back.


Comment 3 Hans de Goede 2007-05-25 12:24:27 UTC
(In reply to comment #1)
> Created an attachment (id=155394) [edit]
> Fixes wrong encoding in documentation.
> 
> The problem with the PDF and the PS output is related to some non-unicode chars
> in several parts of the code. The attached patch fixes these issues. I also had
> to remove %{_smpflags} to make the package build.

Thanks! Here is a new version with pdf docs and smpflags removed:
Spec URL: http://people.atrpms.net/~hdegoede/avr-libc.spec
SRPM URL: http://people.atrpms.net/~hdegoede/avr-libc-1.4.6-2.fc8.src.rpm


Comment 4 Ralf Corsepius 2007-06-19 14:18:16 UTC
Some remarks:

* I'd recommend to let the *-docs package put its doc files into
/usr/share/doc/avr-libc-%version

* I don't think shipping the man pages in /usr/share/doc/avr-libc-%version/man
is a good idea. It will break avr-man when installing the rpm w/ --exclude-docs

I'd put them somewhere else, e.g. /usr/share/avr-libc, /usr/avr/share/man or
even /usr/avr/sys-root/usr/share/man. I'd use /usr/avr/share/man.

Other issues: Shouldn't avr-gcc "Require avr-libc"?


Comment 5 Hans de Goede 2007-06-19 14:29:43 UTC
(In reply to comment #4)
> Some remarks:
> 

Thanks! I won't have time to work on this the coming week though, as I'm out of
town.

> * I'd recommend to let the *-docs package put its doc files into
> /usr/share/doc/avr-libc-%version
> 

Erm, I'm always fighting with %doc, I think %doc needs some docs :) So how do I
do this? Install them there in %install and then use %doc with a full path,
should do the trick, correct?

> * I don't think shipping the man pages in /usr/share/doc/avr-libc-%version/man
> is a good idea. It will break avr-man when installing the rpm w/ --exclude-docs
> 
> I'd put them somewhere else, e.g. /usr/share/avr-libc, /usr/avr/share/man or
> even /usr/avr/sys-root/usr/share/man. I'd use /usr/avr/share/man.
> 

Ok /usr/avr/share/man sounds good.

> Other issues: Shouldn't avr-gcc "Require avr-libc"?
> 

It will, once avr-libc is in the repo, I had to get a not requiring version in
the repo first because of the chicken and the egg.



Comment 6 Hans de Goede 2007-07-08 06:44:29 UTC
(In reply to comment #4)
> Some remarks:
> 
> * I'd recommend to let the *-docs package put its doc files into
> /usr/share/doc/avr-libc-%version
> 

I'm afraid thats impossible, as rpmbuild erases that dir before checking %files:
Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.46262
+ umask 022
+ cd /home/hans/projects/fedora-extras/wip/avr-libc
+ cd avr-libc-1.4.6
+ DOCDIR=/var/tmp/avr-libc-1.4.6-3.fc8-hans/usr/share/doc/avr-libc-1.4.6
+ export DOCDIR
+ rm -rf /var/tmp/avr-libc-1.4.6-3.fc8-hans/usr/share/doc/avr-libc-1.4.6
+ /bin/mkdir -p /var/tmp/avr-libc-1.4.6-3.fc8-hans/usr/share/doc/avr-libc-1.4.6

So writing "%doc /usr/share/doc/avr-libc-docs-1.4.6/foo" won't work because if
foo was installed there it will be erased. And using %doc foo, will make it end
up as /usr/share/doc/avr-libc-docs-1.4.6/foo

> * I don't think shipping the man pages in /usr/share/doc/avr-libc-%version/man
> is a good idea. It will break avr-man when installing the rpm w/ --exclude-docs
> 
> I'd put them somewhere else, e.g. /usr/share/avr-libc, /usr/avr/share/man or
> even /usr/avr/sys-root/usr/share/man. I'd use /usr/avr/share/man.
> 

Here is a new version which moves the manpages to /usr/avr/share/man, Trond any
chance you could review this?

Spec URL: http://people.atrpms.net/~hdegoede/avr-libc.spec
SRPM URL: http://people.atrpms.net/~hdegoede/avr-libc-1.4.6-3.fc8.src.rpm


Comment 7 Ville Skyttä 2007-07-08 08:28:20 UTC
(In reply to comment #6)
> So writing "%doc /usr/share/doc/avr-libc-docs-1.4.6/foo" won't work because if
> foo was installed there it will be erased.

FWIW, I think rpmbuild does the remove only if the specfile contains any
"special %doc" directives, ie. "%doc foo" without an absolute path.  See
build/files.c in rpm sources.

Comment 8 Michael E Brown 2007-07-13 20:36:28 UTC
http://fedoraproject.org/wiki/Packaging/ReviewGuidelines
MUST ITEMS:
* rpmlint results:
   -> should fix manpages to be zipped, (see below)

$ rpmlint  avr-libc-1.4.6-3.fc8.src.rpm
E: avr-libc configure-without-libdir-spec

$ rpmlint RPMS/noarch/avr-libc-1.4.6-3.fc7.noarch.rpm 
W: avr-libc devel-file-in-non-devel-package /usr/avr/include/avr/iomxxhva.h
   --> repated for all .h files
   --> This looks OK to me, I dont see that it makes sense to split into
avr-libc-devel
W: avr-libc manpage-not-gzipped /usr/avr/share/man/man3/strsep.3
   --> repeated for all manpages
   --> This looks like it should be fixed.
E: avr-libc arch-independent-package-contains-binary-or-object
/usr/avr/lib/avr3/crt43355.o
   --> repeated for all .o/.a files
   --> This look OK, as this is truly arch-indep and used for cross-compiling.
W: avr-libc non-standard-dir-in-usr avr
   --> Not sure about this, looks ok (probably needs to be added to packaging
guidelines)

$ rpmlint RPMS/noarch/avr-libc-docs-1.4.6-3.fc7.noarch.rpm 
  (no output)


Comment 9 Michael E Brown 2007-07-13 20:55:34 UTC
http://fedoraproject.org/wiki/Packaging/ReviewGuidelines

Here are all the MUST items that have problems

- MUST: The License field in the package spec file must match the actual license.
   --> NOT OK: project: modified BSD, package spec: GPL

- MUST: Header files must be in a -devel package.
   --> hmm... discuss? (see rpmlint output)

- MUST: Static libraries must be in a -static package.
   --> hmm... discuss? (see rpmlint output)

Possible solution: split out -devel package and have avr-libc require:
avr-libc-devel? Or possibly just rename the package.

- MUST: In the vast majority of cases, devel packages must require the base
package using a fully versioned dependency: Requires: %{name} =
%{version}-%{release}
   --> GOOD (no -devel package, but maybe need one considering other review items)

- MUST: Packages must not own files or directories already owned by other packages.
   --> BAD
$ rpm -qf /usr/avr
avr-binutils- 2.17-3.fc7.x86_64
avr-libc- 1.4.6-1.x86_64


Comment 10 Michael E Brown 2007-07-13 20:57:56 UTC
Here is the entire list of MUST items for completeness (including items above
which have already been pointed out)

http://fedoraproject.org/wiki/Packaging/ReviewGuidelines

- MUST: The spec file name must match the base package %{name}, in the format
%{name}.spec
   --> GOOD - MUST: The package must be licensed with an open-source compatible
license and meet other legal requirements as defined in the legal section of
Packaging Guidelines.
   --> GOOD 
- MUST: The License field in the package spec file must match the actual license.
   --> NOT OK: project: modified BSD, package spec: GPL- 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.
   --> GOOD 
- MUST: The spec file must be written in American English.
   --> GOOD 
- MUST: The spec file for the package MUST be legible.
   --> GOOD 
- MUST: The sources used to build the package must match the upstream source, as
provided in the spec URL.
   --> GOOD (md5sum match)
- MUST: The package must successfully compile and build into binary rpms on at
least one supported architecture.
   --> GOOD
- MUST: If the package does not successfully compile, build or work on an
architecture
   --> no exclude-arch, GOOD
- MUST: All build dependencies must be listed in BuildRequires
   --> GOOD 
- MUST: The spec file MUST handle locales properly.
   --> GOOD (no locales) - MUST: Every binary RPM package which stores shared
library files (not just symlinks) in any of the dynamic linker's default paths,
must call ldconfig in %post and %postun.
   --> GOOD (no shared libs)
- MUST: If the package is designed to be relocatable,
   --> GOOD (not relocatable)
- MUST: A package must own all directories that it creates.
   --> GOOD (everything under /usr/avr)
- MUST: A package must not contain any duplicate files in the %files listing.
   --> GOOD
- MUST: Permissions on files must be set properly.
   --> GOOD
- MUST: Each package must have a %clean section, which contains rm -rf
%{buildroot} (or $RPM_BUILD_ROOT).
   --> GOOD
- MUST: Each package must consistently use macros, as described in the macros
section of Packaging Guidelines.
   --> GOOD
- MUST: The package must contain code, or permissable content.
   --> GOOD
- MUST: Large documentation files should go in a -doc subpackage.
   --> GOOD (-doc subpackage)
- MUST: If a package includes something as %doc, it must not affect the runtime
of the application.
   --> GOOD
- MUST: Header files must be in a -devel package.
   --> hmm... discuss?
- MUST: Static libraries must be in a -static package.
   --> hmm... discuss?
- MUST: Packages containing pkgconfig(.pc) files
   --> GOOD (no pc files)
- MUST: If a package contains library files with a suffix (e.g. libfoo.so.1.1),
then library files that end in .so (without suffix) must go in a -devel package.
   --> GOOD
- MUST: In the vast majority of cases, devel packages must require the base
package using a fully versioned dependency: Requires: %{name} =
%{version}-%{release}
   --> GOOD (no -devel package, but maybe need one considering other review items)
- MUST: Packages must NOT contain any .la libtool archives, these should be
removed in the spec.
   --> GOOD
- MUST: Packages containing GUI applications must include a %{name}.desktop file,
   --> GOOD (no GUI)
- MUST: Packages must not own files or directories already owned by other packages.
   --> BAD
$ rpm -qf /usr/avr
avr-binutils- 2.17-3.fc7.x86_64
avr-libc- 1.4.6-1.x86_64
- MUST: At the beginning of %install, each package MUST run rm -rf %{buildroot}
   --> GOOD
- MUST: All filenames in rpm packages must be valid UTF-8.
   --> GOOD.


Comment 11 Michael E Brown 2007-07-13 21:09:16 UTC
http://fedoraproject.org/wiki/Packaging/ReviewGuidelines

SHOULD items (no problems here):

- SHOULD: If the source package does not include license text(s) as a separate
file from upstream, the packager SHOULD query upstream to include it.
   --> GOOD

- SHOULD: The description and summary sections in the package spec file should
contain translations for supported Non-English languages, if available.
   --> Ok (no translations)

- SHOULD: The reviewer should test that the package builds in mock.
   --> builds

- SHOULD: The package should compile and build into binary rpms on all supported
architectures.
   --> cant check this myself.

- SHOULD: The reviewer should test that the package functions as described. A
package should not segfault instead of running, for example.
   --> works ok for me.

- SHOULD: If scriptlets are used, those scriptlets must be sane.
   --> no scriptlets

- SHOULD: Usually, subpackages other than devel should require the base package
using a fully versioned dependency.
   --> no subpackages

- SHOULD: The placement of pkgconfig(.pc) files depends on their usecase,
   --> no pc files

- SHOULD: If the package has file dependencies outside of /etc, /bin, /sbin,
/usr/bin,
   --> no additional deps.


Comment 12 Michael E Brown 2007-07-13 21:15:21 UTC
file ownership issue possibly not an issue:

http://fedoraproject.org/wiki/Packaging/Guidelines#head-a5931a7372c4a00065713430984fa5875513e6d4
==============================================
Another exception for directory ownership in packages is when there is no clear
dependency hierarchy.

An example:

Foo-Animal-Emu puts files into /usr/share/Foo/Animal/Emu
Foo-Animal-Llama puts files into /usr/share/Foo/Animal/Llama

Neither package depends on the other one. Neither package depends on any other
package which owns the /usr/share/Foo/Animal/ directory. In this case, each
package must own the /usr/share/Foo/Animal/ directory.
==============================================

Comment 13 Hans de Goede 2007-07-13 21:28:09 UTC
(In reply to comment #9)
> http://fedoraproject.org/wiki/Packaging/ReviewGuidelines
> 
> Here are all the MUST items that have problems
> 
> - MUST: The License field in the package spec file must match the actual license.
>    --> NOT OK: project: modified BSD, package spec: GPL
> 

Oops, good catch, will fix

> - MUST: Header files must be in a -devel package.
>    --> hmm... discuss? (see rpmlint output)
> 
> - MUST: Static libraries must be in a -static package.
>    --> hmm... discuss? (see rpmlint output)
> 
> Possible solution: split out -devel package and have avr-libc require:
> avr-libc-devel? Or possibly just rename the package.
> 

As already explained in the mailinglist discussion, the guidelines or just plain
bogus in this (exceptional) case, just ignore them.

> - MUST: Packages must not own files or directories already owned by other
packages.
>    --> BAD
> $ rpm -qf /usr/avr
> avr-binutils- 2.17-3.fc7.x86_64
> avr-libc- 1.4.6-1.x86_64
> 

Unfortunately the review checklist is a bit to short / simple when describing
this. see:
http://fedoraproject.org/wiki/Packaging/Guidelines#head-a5931a7372c4a00065713430984fa5875513e6d4

For the full story, to quote it: "Another exception for directory ownership in
packages is when there is no clear dependency hierarchy.

An example:

Foo-Animal-Emu puts files into /usr/share/Foo/Animal/Emu
Foo-Animal-Llama puts files into /usr/share/Foo/Animal/Llama

Neither package depends on the other one. Neither package depends on any other
package which owns the /usr/share/Foo/Animal/ directory. In this case, each
package must own the /usr/share/Foo/Animal/ directory."

Since binutils doesn't need libc and libc doesn't need binutils there is no
clear dependency hierarchy, thus they should both own /usr/avr

Ah, I just saw your comment you find this ourselves, yes its no an issue.


Comment 14 Hans de Goede 2007-07-13 21:30:01 UTC
Before I forget many thanks!

And once your satisfied with the discussion around the exceptional parts of this
package, can you please post a final Must Fix list, I would like to avoud a
gazillion iterations :)

Sofar I have as Must Fix:
-gzip manpages
-fix License field in specfile (oops)


Comment 15 Ralf Corsepius 2007-07-14 06:39:57 UTC
(In reply to comment #13)
> (In reply to comment #9)
> > http://fedoraproject.org/wiki/Packaging/ReviewGuidelines
 
> > - MUST: Header files must be in a -devel package.
> >    --> hmm... discuss? (see rpmlint output)
> > 
> > - MUST: Static libraries must be in a -static package.
> >    --> hmm... discuss? (see rpmlint output)
> > 
> > Possible solution: split out -devel package and have avr-libc require:
> > avr-libc-devel? Or possibly just rename the package.
> > 
> 
> As already explained in the mailinglist discussion, the guidelines or just plain
> bogus in this (exceptional) case, just ignore them.
The guidelines are not bogus on this subject.

avr-libc's *.a's and *.h's are not host files, they are target files.
The rpmlint warning is bogus.

Also consider all packages of the avr-toolchain are devel packages.

> > - MUST: Packages must not own files or directories already owned by other
> packages.
> >    --> BAD
> > $ rpm -qf /usr/avr
> > avr-binutils- 2.17-3.fc7.x86_64
> > avr-libc- 1.4.6-1.x86_64
> > 
> 
> Unfortunately the review checklist is a bit to short / simple when describing
> this. see:
>http://fedoraproject.org/wiki/Packaging/Guidelines#head-a5931a7372c4a00065713430984fa5875513e6d4
> 
> For the full story, to quote it: "Another exception for directory ownership in
> packages is when there is no clear dependency hierarchy.
These dirs must be owned by all packages using them. Anything else is
technically wrong.

> Neither package depends on the other one.

Exactly this is the point.


Comment 16 Ralf Corsepius 2007-07-14 11:34:07 UTC
(In reply to comment #14)
> Sofar I have as Must Fix:
> -gzip manpages
> -fix License field in specfile (oops)

+ %doc the man-pages
 



Comment 17 Michael E Brown 2007-07-15 01:18:18 UTC
Your concise Must Fix list is accurate. I'll get to the rest of the review stuff
tomorrow most likely (naming/packaging guidelines). I dont anticipate more
issues as the spec looks very clean.

Comment 18 Michael E Brown 2007-07-16 20:52:27 UTC
http://fedoraproject.org/wiki/Packaging/SourceURL

Meets all source URL guidelines

http://fedoraproject.org/wiki/Packaging/NamingGuidelines

-- pkg name: ok
-- multiple packages: no (ok)
-- spec file name: ok
-- package version: numeric only (ok)
-- package release: ok
-- renaming existing package: no (ok)
-- doc subpackage: yes (ok)
-- addon package: no (ok)


Comment 19 Michael E Brown 2007-07-16 21:09:10 UTC
http://fedoraproject.org/wiki/Packaging/Guidelines

-- license ok
-- patents: no (ok)
-- emulator: no (ok)
-- binary firmware: no (ok)
-- prebuilt binaries: no (ok)
-- FHS: ok
-- rpmlint errors: already posted. 
-- changelog: ok
-- tags: ok
-- buildroot: ok
-- file dependencies: no (ok)
-- buildrequires: ok
-- summary and description: ok
-- encoding: ok
-- documentation: ok
-- compiler flags: doesnt apply (cross toolchain)
-- static libs: doesnt apply (cross toolchain)
-- system lib dups: no (ok)
-- rpath: ok
-- config files: none (ok)
-- init scripts: none (ok)
-- desktop files: none (ok)
-- macros: ok
-- locales: none (ok)
-- parallel make: no (documented, breaks build -- ok)
-- scriptlets: none (ok)
-- conditional deps: none (ok)
-- user accounts: none (ok)
-- relocatable: no (ok)
-- code vs content: code (ok)
-- file ownership: ok
-- web application: no (ok)
-- conflicts: none (ok)
-- timestamps: preserved (ok)



Comment 20 Michael E Brown 2007-07-16 21:10:11 UTC
No additional must fix items found. 

APPROVED pending fixes to above-listed must-fix items.

Comment 21 Hans de Goede 2007-07-17 14:40:35 UTC
Michael,

Thanks for the approval, before even seeing the fixed version. I appreciate the
trust!

For reference here is the version I'll be importing once there is a CVS dir for
this:
Spec URL: http://people.atrpms.net/~hdegoede/avr-libc.spec
SRPM URL: http://people.atrpms.net/~hdegoede/avr-libc-1.4.6-4.fc8.src.rpm

Changes:
* Tue Jul 17 2007 Hans de Goede <j.w.r.degoede> 1.4.6-4
- Gzip manpages
- Make manpages %%doc 
- Install -docs documentation in same dir as the main package docs
- Change License field from GPL to BSD (oops)

Note that I also fulfilled Ralf's request to put the -docs docs in the same
subdir of %docdir as the main package docs. Thanks Ville, for explaining me how
to do this.


Comment 22 Hans de Goede 2007-07-17 19:33:53 UTC
New Package CVS Request
=======================
Package Name:      avr-libc
Short Description: C library for use with GCC on Atmel AVR microcontrollers
Owners:            j.w.r.degoede
Branches:          FC-6 F-7 devel
InitialCC:         <empty>




Comment 23 Hans de Goede 2007-07-26 13:23:32 UTC
Imported and build long ago, forgot to close, closing now.


Comment 24 Thibault North 2010-07-12 19:31:16 UTC
Package Change Request
======================
Package Name: avr-libc
New Branches: EL-6
Owners: tnorth trondd

We would like to have FEL-related packages available for EL-6. Thanks !

Comment 25 Tom "spot" Callaway 2010-07-13 15:37:53 UTC
CVS done (by process-cvs-requests.py).