[Bug 1983416] Review Request: gcc-epel - Various compilers (C, C++, Objective-C, ...)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



https://bugzilla.redhat.com/show_bug.cgi?id=1983416

Björn Persson <bjorn@xxxxxxxxxxxxxxxxxxxx> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
              Flags|needinfo?(bjorn@xn--rombobj |
                   |rn-67a.se)                  |



--- Comment #7 from Björn Persson <bjorn@xxxxxxxxxxxxxxxxxxxx> ---
(In reply to Robert Scheck from comment #5)
> Do I understand you correctly that you would be okay with this?
> 
> gcc-gnat:   /usr/bin/gnatgcc (binary)
> gcc-objc:   /usr/bin/gobjc (binary)
> gcc-objc++: /usr/bin/gobjc++ -> gcc-gobjc (symlink)

You don't have a file named gcc-gobjc. I assume that you meant gobjc. Yes, I
think that's acceptable.

> Because as per
> https://docs.fedoraproject.org/en-US/packaging-guidelines/#_duplicate_files
> the other approach doesn't seem to be allowed anymore

That seems to contradict the first few paragraphs of the same section, where
subpackages are explicitly allowed to contain identical files:

https://docs.fedoraproject.org/en-US/packaging-guidelines/#_file_and_directory_ownership

I don't know how the FPC interprets those rules together, but let's go with
gnatgcc and gobjc as separate files then.

> Is there currently something else to correct or discuss before I update the
> (large) SRPM?

I found a few more things:

· libgo-static and libgccjit still require the exact NEVR of gcc. Should those
requirements also be relaxed?

· There is a grammar error: "rather" should be "rather than" in three places.

· RPMlint reports:
gcc-gnat.x86_64: W: no-manual-page-for-binary gcc-gnat
gcc-gnat.x86_64: W: no-manual-page-for-binary gnatgcc
gcc-objc.x86_64: W: no-manual-page-for-binary gcc-objc
gcc-objc.x86_64: W: no-manual-page-for-binary gobjc
gcc-objc++.x86_64: W: no-documentation
gcc-objc++.x86_64: W: no-manual-page-for-binary gcc-objc++
gcc-objc++.x86_64: W: no-manual-page-for-binary gobjc++

I don't think that's a big problem, but since it's easy to do, why not make
some links to the gcc manpage? Like this:

ln -s gcc.1 %{buildroot}%{_mandir}/man1/gnatgcc.1
ln -s gcc.1 %{buildroot}%{_mandir}/man1/gcc-gnat.1
ln -s gcc.1 %{buildroot}%{_mandir}/man1/gobjc.1
ln -s gcc.1 %{buildroot}%{_mandir}/man1/gcc-objc.1
ln -s gcc.1 %{buildroot}%{_mandir}/man1/gobjc++.1
ln -s gcc.1 %{buildroot}%{_mandir}/man1/gcc-objc++.1

%files -n gcc-objc
%{_mandir}/man1/gobjc.*
%{_mandir}/man1/gcc-objc.*

%files -n gcc-objc++
%{_mandir}/man1/gobjc++.*
%{_mandir}/man1/gcc-objc++.*

%files -n gcc-gnat
%{_mandir}/man1/gcc-gnat.*
%{_mandir}/man1/gnatgcc.*


Fedora-review lists these issues, all of which are inherited from the Fedora
and RHEL packages:

- 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 %license.
  Note: License file LICENSE.libgo is not marked as %license
  See: https://docs.fedoraproject.org/en-US/packaging-
  guidelines/LicensingGuidelines/#_license_text

→ That should probably be fixed, but in the Fedora package, not here.

- ldconfig not called in %post and %postun for Fedora 28 and later.
  Note: /sbin/ldconfig called in libobjc, libgccjit, libgo
  See: https://fedoraproject.org/wiki/Changes/Removing_ldconfig_scriptlets

→ The ldconfig scriptlets have already been fixed in Fedora.

- Header files in -devel subpackage, if present.
  Note: gcc-objc : /usr/lib/gcc/x86_64-redhat-
  linux/8/include/objc/NXConstStr.h gcc-objc : /usr/lib/gcc/x86_64-redhat-
  linux/8/include/objc/Object.h gcc-objc : /usr/lib/gcc/x86_64-redhat-
  linux/8/include/objc/Protocol.h gcc-objc : /usr/lib/gcc/x86_64-redhat-
  linux/8/include/objc/message.h gcc-objc : /usr/lib/gcc/x86_64-redhat-
  linux/8/include/objc/objc-decls.h gcc-objc : /usr/lib/gcc/x86_64-redhat-
  linux/8/include/objc/objc-exception.h gcc-objc :
  /usr/lib/gcc/x86_64-redhat-linux/8/include/objc/objc-sync.h gcc-objc :
  /usr/lib/gcc/x86_64-redhat-linux/8/include/objc/objc.h gcc-objc :
  /usr/lib/gcc/x86_64-redhat-linux/8/include/objc/runtime.h gcc-objc :
  /usr/lib/gcc/x86_64-redhat-linux/8/include/objc/thr.h
  See: https://docs.fedoraproject.org/en-US/packaging-
  guidelines/#_devel_packages
- Development (unversioned) .so files in -devel subpackage, if present.
  Note: Unversioned so-files directly in %_libdir.
  See: https://docs.fedoraproject.org/en-US/packaging-
  guidelines/#_devel_packages
- Package uses either %{buildroot} or $RPM_BUILD_ROOT
  Note: Using both %{buildroot} and $RPM_BUILD_ROOT
  See: https://docs.fedoraproject.org/en-US/packaging-guidelines/#_macros
- Static libraries in -static or -devel subpackage, providing -devel if
  present.
  Note: Package has .a files: gcc-objc, libgnat-devel, libgnat-static,
  libgo-devel, libgo-static. Illegal package name: gcc-objc. Does not
  provide -static: gcc-objc, libgnat-devel, libgo-devel.
  See: https://docs.fedoraproject.org/en-US/packaging-
  guidelines/#packaging-static-libraries
- Large documentation must go in a -doc subpackage. Large could be size
  (~1MB) or number of files.
  Note: Documentation size is 4014080 bytes in 142 files.
  See: https://docs.fedoraproject.org/en-US/packaging-
  guidelines/#_documentation

→ All of that is either correct, or should be addressed in the Fedora or RHEL
package.


Legend:
[x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated, [U] =
Upstream matter; if there is a problem, then the place to fix it is in Fedora
or RHEL.

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

C/C++:
[U]: Provides: bundled(gnulib) in place as required.
     Note: Sources not installed
[x]: Package does not contain kernel modules.
[U]: Package contains no static executables.
[x]: If your application is a C or C++ application you must list a
     BuildRequires against gcc, gcc-c++ or clang.
[x]: Package does not contain any libtool archives (.la)
[x]: Rpath absent or only used for internal libs.

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.
[U]: License field in the package spec file matches the actual license.
[U]: License file installed when any subpackage combination is installed.
[U]: If the package is under multiple licenses, the licensing breakdown
     must be documented in the spec.
[U]: Package does not own files or directories owned by other packages.
     Note: Dirs in package are owned also by: /usr/lib/gcc(gcc-gfortran,
     libasan-static, libstdc++-devel, gcc-objc, gcc-gdb-plugin,
     libgfortran-static, libatomic-static, gcc-c++, libgo-devel, liblsan-
     static, gcc, libgphobos-static, libubsan-static, libstdc++-static,
     libtsan-static, avr-gcc, libitm-devel, libgnat-static, arm-none-eabi-
     gcc-cs, gcc-go, libitm-static, gcc-plugin-devel, gcc-gnat, libgo-
     static, ghdl-grt, libquadmath-static, libquadmath-devel, gcc-offload-
     nvptx, libgnat-devel, gcc-gdc), /usr/lib/gcc/x86_64-redhat-linux(gcc-
     gfortran, libasan-static, libstdc++-devel, gcc-objc, gcc-gdb-plugin,
     libgfortran-static, libatomic-static, gcc-c++, libgo-devel, liblsan-
     static, gcc, libgphobos-static, libubsan-static, libstdc++-static,
     libtsan-static, libitm-devel, libgnat-static, gcc-go, libitm-static,
     gcc-plugin-devel, gcc-gnat, libgo-static, libquadmath-static,
     libquadmath-devel, gcc-offload-nvptx, libgnat-devel, gcc-gdc),
     /usr/libexec/gcc(gcc-c++, gcc-gfortran, gcc-objc++, gcc-offload-nvptx,
     arm-none-eabi-gcc-cs, gcc, gcc-go, ghdl, gcc-objc, gcc-gnat, gcc-
     plugin-devel, avr-gcc, cpp, gcc-gdc), /usr/libexec/gcc/x86_64-redhat-
     linux(gcc-c++, gcc-gfortran, gcc-objc++, gcc-offload-nvptx, gcc, gcc-
     go, gcc-objc, gcc-gnat, gcc-plugin-devel, cpp, gcc-gdc)
[U]: %build honors applicable compiler flags or justifies otherwise.
[U]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[U]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
     Note: rm -rf %{buildroot} present but not required
[x]: Sources contain only permissible code or content.
[-]: Package contains desktop file if it is a GUI application.
[U]: Development files must be in a -devel package
[U]: Package uses nothing in %doc for runtime.
[U]: Texinfo files are installed using install-info in %post and %preun if
     package has .info files.
     Note: Texinfo .info file(s) in libgccjit-devel, gcc-gnat
[U]: Package consistently uses macros (instead of hard-coded directory
     names).
[x]: Package is named according to the Package Naming Guidelines.
[x]: Package does not generate any conflict.
[U]: Package obeys FHS, except libexecdir and /usr/target.
[-]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[!]: Requires correct, justified where necessary.
     → See above.
[!]: Spec file is legible and written in American English.
     → one grammar error as noted above
[-]: Package contains systemd file(s) if in need.
[U]: Useful -debuginfo package or justification otherwise.
[x]: Package is not known to require an ExcludeArch tag.
[U]: Package complies to the Packaging Guidelines
[x]: Package successfully compiles and builds into binary rpms on at least
     one supported primary architecture.
[x]: Package installs properly.
[x]: Rpmlint is run on all rpms the build produces.
     Note: There are rpmlint messages (see attachment).
[x]: Package requires other packages for directories it uses.
[x]: Package must own all directories that it creates.
[x]: Macros in Summary, %description expandable at SRPM build time.
[x]: Dist tag is present.
[x]: Package does not contain duplicates in %files.
[x]: Permissions on files are set properly.
[x]: Package must not depend on deprecated() packages.
[x]: Package use %makeinstall only when make install DESTDIR=... doesn't
     work.
[x]: Package is named using only allowed ASCII characters.
[x]: Package does not use a name that already exists.
[x]: Package is not relocatable.
[x]: Sources used to build the package match the upstream source, as
     provided in the spec URL.
[x]: Spec file name must match the spec package %{name}, in the format
     %{name}.spec.
[x]: File names are valid UTF-8.
[x]: Packages must not store files under /srv, /opt or /usr/local

===== SHOULD items =====

Generic:
[U]: Uses parallel make %{?_smp_mflags} macro.
[-]: If the source package does not include license text(s) as a separate
     file from upstream, the packager SHOULD query upstream to include it.
[x]: Final provides and requires are sane (see attachments).
[x]: Fully versioned dependency in subpackages if applicable.
     Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in gcc-objc
     , gcc-objc++ , libobjc , libgccjit , libgccjit-devel , gcc-gnat ,
     libgnat , libgnat-devel , libgnat-static , gcc-go , libgo , libgo-
     devel , libgo-static
[?]: Package functions as described.
     → I can't verify because CentOS 8 isn't self-hosting.
[U]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[U]: Patches link to upstream bugs/comments/lists or are otherwise
     justified.
[U]: Scriptlets must be sane, if used.
[U]: SourceX tarball generation or download is documented.
     Note: Package contains tarball without URL, check comments
[U]: Sources are verified with gpgverify first in %prep if upstream
     publishes signatures.
     Note: gpgverify is not used.
[U]: Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[?]: Package should compile and build into binary rpms on all supported
     architectures.
     → I can't verify because CentOS 8 isn't self-hosting.
[?]: %check is present and all tests pass.
     → I can't verify because CentOS 8 isn't self-hosting.
[U]: Packages should try to preserve timestamps of original installed
     files.
[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)
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: Sources can be downloaded from URI in Source: tag
[x]: SourceX is a working URL.
[x]: Spec use %global instead of %define unless justified.

===== EXTRA items =====

Generic:
[U]: Large data in /usr/share should live in a noarch subpackage if package
     is arched.
     Note: Arch-ed rpms have a total of 4730880 bytes in /usr/share
[x]: Rpmlint is run on debuginfo package(s).
     Note: No rpmlint messages.
[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.


The following complaints from RPMlint do not need to be addressed in this
package:

gcc-objc++.x86_64: W: spelling-error %description -l en_US objc -> obj, obj c

→ not an error

gcc-objc.x86_64: W: devel-file-in-non-devel-package
/usr/lib/gcc/x86_64-redhat-linux/8/include/objc/NXConstStr.h
gcc-objc.x86_64: W: devel-file-in-non-devel-package
/usr/lib/gcc/x86_64-redhat-linux/8/include/objc/Object.h
gcc-objc.x86_64: W: devel-file-in-non-devel-package
/usr/lib/gcc/x86_64-redhat-linux/8/include/objc/Protocol.h
gcc-objc.x86_64: W: devel-file-in-non-devel-package
/usr/lib/gcc/x86_64-redhat-linux/8/include/objc/message.h
gcc-objc.x86_64: W: devel-file-in-non-devel-package
/usr/lib/gcc/x86_64-redhat-linux/8/include/objc/objc-decls.h
gcc-objc.x86_64: W: devel-file-in-non-devel-package
/usr/lib/gcc/x86_64-redhat-linux/8/include/objc/objc-exception.h
gcc-objc.x86_64: W: devel-file-in-non-devel-package
/usr/lib/gcc/x86_64-redhat-linux/8/include/objc/objc-sync.h
gcc-objc.x86_64: W: devel-file-in-non-devel-package
/usr/lib/gcc/x86_64-redhat-linux/8/include/objc/objc.h
gcc-objc.x86_64: W: devel-file-in-non-devel-package
/usr/lib/gcc/x86_64-redhat-linux/8/include/objc/runtime.h
gcc-objc.x86_64: W: devel-file-in-non-devel-package
/usr/lib/gcc/x86_64-redhat-linux/8/include/objc/thr.h
gcc-objc.x86_64: W: devel-file-in-non-devel-package
/usr/lib/gcc/x86_64-redhat-linux/8/libobjc.a
gcc-objc.x86_64: W: devel-file-in-non-devel-package
/usr/lib/gcc/x86_64-redhat-linux/8/libobjc.so
libobjc.x86_64: W: no-documentation
libgccjit.x86_64: W: shared-lib-calls-exit /usr/lib64/libgccjit.so.0.0.1
exit@GLIBC_2.2.5
libgccjit.x86_64: W: shared-lib-calls-exit /usr/lib64/libgccjit.so.0.0.1
_exit@GLIBC_2.2.5
libgccjit-devel.x86_64: W: hidden-file-or-dir
/usr/share/doc/libgccjit-devel/html/.buildinfo
gcc-gnat.x86_64: E: devel-dependency libgnat-devel
gcc-gnat.x86_64: W: no-manual-page-for-binary gnat
gcc-gnat.x86_64: W: no-manual-page-for-binary gnatbind
gcc-gnat.x86_64: W: no-manual-page-for-binary gnatchop
gcc-gnat.x86_64: W: no-manual-page-for-binary gnatclean
gcc-gnat.x86_64: W: no-manual-page-for-binary gnatfind
gcc-gnat.x86_64: W: no-manual-page-for-binary gnatkr
gcc-gnat.x86_64: W: no-manual-page-for-binary gnatlink
gcc-gnat.x86_64: W: no-manual-page-for-binary gnatls
gcc-gnat.x86_64: W: no-manual-page-for-binary gnatmake
gcc-gnat.x86_64: W: no-manual-page-for-binary gnatname
gcc-gnat.x86_64: W: no-manual-page-for-binary gnatprep
gcc-gnat.x86_64: W: no-manual-page-for-binary gnatxref
libgnat.x86_64: W: no-documentation
libgnat-devel.x86_64: W: no-dependency-on libgnat/libgnat-libs/liblibgnat
libgnat-devel.x86_64: W: no-documentation
libgnat-static.x86_64: W: no-documentation
gcc-go.x86_64: E: devel-dependency libgo-devel
gcc-go.x86_64: W: unstripped-binary-or-object /usr/bin/go.gcc
gcc-go.x86_64: W: unstripped-binary-or-object /usr/bin/gofmt.gcc
gcc-go.x86_64: W: unstripped-binary-or-object
/usr/libexec/gcc/x86_64-redhat-linux/8/buildid
gcc-go.x86_64: W: unstripped-binary-or-object
/usr/libexec/gcc/x86_64-redhat-linux/8/cgo
gcc-go.x86_64: W: unstripped-binary-or-object
/usr/libexec/gcc/x86_64-redhat-linux/8/test2json
gcc-go.x86_64: W: unstripped-binary-or-object
/usr/libexec/gcc/x86_64-redhat-linux/8/vet
gcc-go.x86_64: W: dangling-symlink /usr/bin/go /etc/alternatives/go
gcc-go.x86_64: W: dangling-symlink /usr/bin/gofmt /etc/alternatives/gofmt
gcc-go.x86_64: W: no-manual-page-for-binary go.gcc
gcc-go.x86_64: W: no-manual-page-for-binary gofmt.gcc
libgo.x86_64: W: unstripped-binary-or-object /usr/lib64/libgo.so.13.0.0
libgo.x86_64: W: shared-lib-calls-exit /usr/lib64/libgo.so.13.0.0
exit@GLIBC_2.2.5
libgo.x86_64: W: shared-lib-calls-exit /usr/lib64/libgo.so.13.0.0
_exit@GLIBC_2.2.5
libgo.x86_64: E: missing-call-to-chdir-with-chroot /usr/lib64/libgo.so.13.0.0
libgo-devel.x86_64: W: no-documentation
libgo-static.x86_64: W: no-documentation
gcc-epel.src:301: W: unversioned-explicit-obsoletes libcilkrts
gcc-epel.src:302: W: unversioned-explicit-obsoletes libcilkrts-static
gcc-epel.src:307: W: unversioned-explicit-provides bundled(libiberty)
gcc-epel.src:387: W: unversioned-explicit-obsoletes libmudflap
gcc-epel.src:388: W: unversioned-explicit-obsoletes libmudflap-devel
gcc-epel.src:389: W: unversioned-explicit-obsoletes libmudflap-static
gcc-epel.src:1052: W: configure-without-libdir-spec
gcc-epel.src:1066: W: configure-without-libdir-spec
gcc-epel.src:1222: W: configure-without-libdir-spec
gcc-epel.src:1246: W: configure-without-libdir-spec
gcc-epel.src:2580: W: macro-in-comment %{_prefix}
gcc-epel.src:2580: W: macro-in-comment %{gcc_target_platform}
gcc-epel.src:2580: W: macro-in-comment %{gcc_major}
gcc-epel.src:2584: W: macro-in-comment %{_prefix}
gcc-epel.src:2584: W: macro-in-comment %{gcc_target_platform}
gcc-epel.src:2584: W: macro-in-comment %{gcc_major}
gcc-epel.src:2592: W: macro-in-comment %{_prefix}
gcc-epel.src:2592: W: macro-in-comment %{gcc_target_platform}
gcc-epel.src:2592: W: macro-in-comment %{gcc_major}
gcc-epel.src:2597: W: macro-in-comment %{_prefix}
gcc-epel.src:2597: W: macro-in-comment %{gcc_target_platform}
gcc-epel.src:2597: W: macro-in-comment %{gcc_major}
gcc-epel.src:2857: W: macro-in-comment %{_prefix}
gcc-epel.src:2857: W: macro-in-comment %{gcc_target_platform}
gcc-epel.src:2857: W: macro-in-comment %{gcc_major}
gcc-epel.src: E: specfile-error warning: line 301: It's not recommended to have
unversioned Obsoletes: Obsoletes: libcilkrts
gcc-epel.src: E: specfile-error warning: line 302: It's not recommended to have
unversioned Obsoletes: Obsoletes: libcilkrts-static
gcc-epel.src: E: specfile-error warning: line 387: It's not recommended to have
unversioned Obsoletes: Obsoletes: libmudflap
gcc-epel.src: E: specfile-error warning: line 388: It's not recommended to have
unversioned Obsoletes: Obsoletes: libmudflap-devel
gcc-epel.src: E: specfile-error warning: line 389: It's not recommended to have
unversioned Obsoletes: Obsoletes: libmudflap-static

→ All of that is either correct, or should be addressed in the Fedora or RHEL
package.


-- 
You are receiving this mail because:
You are always notified about changes to this product and component
You are on the CC list for the bug.
https://bugzilla.redhat.com/show_bug.cgi?id=1983416
_______________________________________________
package-review mailing list -- package-review@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to package-review-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/package-review@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam on the list, report it: https://pagure.io/fedora-infrastructure




[Index of Archives]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite Conditions]     [KDE Users]

  Powered by Linux