Bug 2235768 - Review Request: objfw - Portable, lightweight framework for the Objective-C language
Summary: Review Request: objfw - Portable, lightweight framework for the Objective-C l...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
unspecified
medium
Target Milestone: ---
Assignee: Benson Muite
QA Contact: Fedora Extras Quality Assurance
URL: https://objfw.nil.im
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2023-08-29 16:54 UTC by Jonathan S.
Modified: 2023-09-11 19:34 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2023-09-11 19:34:38 UTC
Type: ---
Embargoed:
benson_muite: fedora-review+


Attachments (Terms of Use)
The .spec file difference from Copr build 6390901 to 6393236 (1.65 KB, patch)
2023-09-11 03:55 UTC, Fedora Review Service
no flags Details | Diff

Description Jonathan S. 2023-08-29 16:54:20 UTC
Spec URL: https://nil.im/objfw.spec
SRPM URL: https://nil.im/objfw-1.0-1.fc40.src.rpm
Description: Portable, lightweight framework for the Objective-C language

ObjFW is a portable, lightweight framework for the Objective-C language. It
enables you to write an application in Objective-C that will run on any
platform supported by ObjFW without having to worry about differences between
operating systems or various frameworks you would otherwise need if you want to
be portable.

It supports all modern Objective-C features when using Clang, but is also
compatible with GCC ≥ 4.6 to allow maximum portability.

ObjFW also comes with its own lightweight and extremely fast Objective-C
runtime, which in real world use cases was found to be significantly faster
than both GNU's and Apple's runtime.

Fedora Account System Username: js
Successful Koji build: https://koji.fedoraproject.org/koji/taskinfo?taskID=105489474

I am the upstream developer of the software.

Reproducible: Always

Comment 1 Fedora Review Service 2023-08-29 17:16:14 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/6353417
(succeeded)

Review template:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2235768-objfw/fedora-rawhide-x86_64/06353417-objfw/fedora-review/review.txt

Please take a look if any issues were found.

---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.

Comment 2 Benson Muite 2023-09-08 19:38:30 UTC
Issues:
=======
- Package must not depend on deprecated() packages.
  Note: openssl1.1-devel is deprecated, you must not depend on it.
  See: https://docs.fedoraproject.org/en-US/packaging-
  guidelines/deprecating-packages/
- The License field must be a valid SPDX expression.
  Note: Not a valid SPDX expression 'QPL or GPLv3 or GPLv2'. It seems that
  you are using the old Fedora license abbreviations. Try `license-
  fedora2spdx' for converting it to SPDX.
  See: https://fedoraproject.org/wiki/Changes/SPDX_Licenses_Phase_1


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

C/C++:
[x]: Package does not contain kernel modules.
[x]: If your application is a C or C++ application you must list a
     BuildRequires against gcc, gcc-c++ or clang.
[x]: Header files in -devel subpackage, if present.
[x]: ldconfig not called in %post and %postun for Fedora 28 and later.
[x]: Package does not contain any libtool archives (.la)
[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]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses
     found: "Unknown or generated", "GNU General Public License, Version
     2", "Q Public License 1.0", "FSF Unlimited License [generated file]",
     "GNU General Public License v3.0 or later", "Historical Permission
     Notice and Disclaimer - sell variant [generated file]", "Q Public
     License 1.0 GNU General Public License, Version 2", "GNU General
     Public License v2.0 or later". 56 files have unknown license. Detailed
     output of licensecheck in
     /home/FedoraPackaging/reviews/objfw/2235768-objfw/licensecheck.txt
[x]: License file installed when any subpackage combination is installed.
[!]: If the package is under multiple licenses, the licensing breakdown
     must be documented in the spec.
[ ]: %build honors applicable compiler flags or justifies otherwise.
[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[x]: Sources contain only permissible code or content.
[-]: Package contains desktop file if it is a GUI application.
[x]: Development files must be in a -devel package
[x]: Package uses nothing in %doc for runtime.
[x]: Package consistently uses macros (instead of hard-coded directory
     names).
[x]: Package is named according to the Package Naming Guidelines.
[ ]: Package does not generate any conflict.
[x]: 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.
[x]: Spec file is legible and written in American English.
[-]: Package contains systemd file(s) if in need.
[x]: Useful -debuginfo package or justification otherwise.
[x]: Package is not known to require an ExcludeArch tag.
[ ]: 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]: 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.
[x]: Package requires other packages for directories it uses.
[x]: Package must own all directories that it creates.
[x]: Package does not own files or directories owned by other packages.
[x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT
[x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
[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 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]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 0 bytes in 0 files.
[x]: Packages must not store files under /srv, /opt or /usr/local

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

Generic:
[-]: 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).
[ ]: Fully versioned dependency in subpackages if applicable.
     Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in libobjfw
     , libobjfwrt , libobjfwrt-devel , libobjfwtls , libobjfwtls-devel
[ ]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[!]: Sources are verified with gpgverify first in %prep if upstream
     publishes signatures.
     Note: gpgverify is not used.
[ ]: Package should compile and build into binary rpms on all supported
     architectures.
[!]: %check is present and all tests pass.
[ ]: 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:
[!]: Spec file according to URL is the same as in SRPM.
     Note: Spec file as given by url is not the same as in SRPM (see
     attached diff).
     See: (this test has no URL)
[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]: Large data in /usr/share should live in a noarch subpackage if package
     is arched.
[x]: Package should not use obsolete m4 macros


Rpmlint
-------
Checking: objfw-1.0-1.fc38.x86_64.rpm
          libobjfw-1.0-1.fc38.x86_64.rpm
          libobjfw-devel-1.0-1.fc38.x86_64.rpm
          libobjfwrt-1.0-1.fc38.x86_64.rpm
          libobjfwrt-devel-1.0-1.fc38.x86_64.rpm
          libobjfwtls-1.0-1.fc38.x86_64.rpm
          libobjfwtls-devel-1.0-1.fc38.x86_64.rpm
          ofarc-1.0-1.fc38.x86_64.rpm
          ofdns-1.0-1.fc38.x86_64.rpm
          ofhash-1.0-1.fc38.x86_64.rpm
          ofhttp-1.0-1.fc38.x86_64.rpm
          objfw-debuginfo-1.0-1.fc38.x86_64.rpm
          objfw-debugsource-1.0-1.fc38.x86_64.rpm
          objfw-1.0-1.fc38.src.rpm
================================== rpmlint session starts =================================
rpmlint: 2.4.0
configuration:
    /usr/lib/python3.11/site-packages/rpmlint/configdefaults.toml
    /etc/xdg/rpmlint/fedora-legacy-licenses.toml
    /etc/xdg/rpmlint/fedora-spdx-licenses.toml
    /etc/xdg/rpmlint/fedora.toml
    /etc/xdg/rpmlint/scoring.toml
    /etc/xdg/rpmlint/users-groups.toml
    /etc/xdg/rpmlint/warn-on-functions.toml
rpmlintrc: [PosixPath('/tmp/tmpnae1wrwp')]
checks: 31, packages: 14

objfw.src: W: strange-permission objfw.spec 600
libobjfw-devel.x86_64: E: rpath-in-buildconfig /usr/bin/objfw-config lines 69
libobjfw-devel.x86_64: W: position-independent-executable-suggested /usr/bin/objfw-new
ofarc.x86_64: W: position-independent-executable-suggested /usr/bin/ofarc
ofdns.x86_64: W: position-independent-executable-suggested /usr/bin/ofdns
ofhash.x86_64: W: position-independent-executable-suggested /usr/bin/ofhash
ofhttp.x86_64: W: position-independent-executable-suggested /usr/bin/ofhttp
libobjfw-devel.x86_64: W: no-manual-page-for-binary objfw-compile
libobjfw-devel.x86_64: W: no-manual-page-for-binary objfw-config
libobjfw-devel.x86_64: W: no-manual-page-for-binary objfw-embed
libobjfw-devel.x86_64: W: no-manual-page-for-binary objfw-new
ofarc.x86_64: W: no-manual-page-for-binary ofarc
ofdns.x86_64: W: no-manual-page-for-binary ofdns
ofhash.x86_64: W: no-manual-page-for-binary ofhash
ofhttp.x86_64: W: no-manual-page-for-binary ofhttp
objfw.x86_64: W: no-documentation
ofarc.x86_64: W: no-documentation
ofdns.x86_64: W: no-documentation
ofhash.x86_64: W: no-documentation
ofhttp.x86_64: W: no-documentation
objfw.x86_64: E: no-binary
== 14 packages and 0 specfiles checked; 2 errors, 19 warnings, 2 badness; has taken 8.8 s =




Rpmlint (debuginfo)
-------------------
Checking: objfw-debuginfo-1.0-1.fc38.x86_64.rpm
================================== rpmlint session starts =================================
rpmlint: 2.4.0
configuration:
    /usr/lib/python3.11/site-packages/rpmlint/configdefaults.toml
    /etc/xdg/rpmlint/fedora-legacy-licenses.toml
    /etc/xdg/rpmlint/fedora-spdx-licenses.toml
    /etc/xdg/rpmlint/fedora.toml
    /etc/xdg/rpmlint/scoring.toml
    /etc/xdg/rpmlint/users-groups.toml
    /etc/xdg/rpmlint/warn-on-functions.toml
rpmlintrc: [PosixPath('/tmp/tmppv8l6gi9')]
checks: 31, packages: 1

=== 1 packages and 0 specfiles checked; 0 errors, 0 warnings, 0 badness; has taken 1.5 s ==





Rpmlint (installed packages)
----------------------------
============================ rpmlint session starts ============================
rpmlint: 2.4.0
configuration:
    /usr/lib/python3.11/site-packages/rpmlint/configdefaults.toml
    /etc/xdg/rpmlint/fedora-legacy-licenses.toml
    /etc/xdg/rpmlint/fedora-spdx-licenses.toml
    /etc/xdg/rpmlint/fedora.toml
    /etc/xdg/rpmlint/scoring.toml
    /etc/xdg/rpmlint/users-groups.toml
    /etc/xdg/rpmlint/warn-on-functions.toml
checks: 31, packages: 13

libobjfw-devel.x86_64: E: rpath-in-buildconfig /usr/bin/objfw-config lines 69
ofhash.x86_64: W: position-independent-executable-suggested /usr/bin/ofhash
ofarc.x86_64: W: position-independent-executable-suggested /usr/bin/ofarc
ofhttp.x86_64: W: position-independent-executable-suggested /usr/bin/ofhttp
libobjfw-devel.x86_64: W: position-independent-executable-suggested /usr/bin/objfw-new
ofdns.x86_64: W: position-independent-executable-suggested /usr/bin/ofdns
ofhash.x86_64: W: no-manual-page-for-binary ofhash
ofarc.x86_64: W: no-manual-page-for-binary ofarc
ofhttp.x86_64: W: no-manual-page-for-binary ofhttp
libobjfw-devel.x86_64: W: no-manual-page-for-binary objfw-compile
libobjfw-devel.x86_64: W: no-manual-page-for-binary objfw-config
libobjfw-devel.x86_64: W: no-manual-page-for-binary objfw-embed
libobjfw-devel.x86_64: W: no-manual-page-for-binary objfw-new
ofdns.x86_64: W: no-manual-page-for-binary ofdns
ofhash.x86_64: W: no-documentation
ofarc.x86_64: W: no-documentation
ofhttp.x86_64: W: no-documentation
objfw.x86_64: W: no-documentation
ofdns.x86_64: W: no-documentation
objfw.x86_64: E: no-binary
 13 packages and 0 specfiles checked; 2 errors, 18 warnings, 2 badness; has taken 6.3 s 



Source checksums
----------------
https://objfw.nil.im/downloads/objfw-1.0.tar.gz.sig :
  CHECKSUM(SHA256) this package     : b5092f72ecf93492f70b1c6ce26ce127bf638981227f7472685bcf0c94899d01
  CHECKSUM(SHA256) upstream package : b5092f72ecf93492f70b1c6ce26ce127bf638981227f7472685bcf0c94899d01
https://objfw.nil.im/downloads/objfw-1.0.tar.gz :
  CHECKSUM(SHA256) this package     : a6aa3bf590c6a7ae21cf13dbaa94a72926e67af5c7d5aef4a2b172543d1f26a3
  CHECKSUM(SHA256) upstream package : a6aa3bf590c6a7ae21cf13dbaa94a72926e67af5c7d5aef4a2b172543d1f26a3


Requires
--------
objfw (rpmlib, GLIBC filtered):
    libobjfw(x86-64)
    libobjfw-devel(x86-64)
    libobjfwrt(x86-64)
    libobjfwrt-devel(x86-64)
    ofarc(x86-64)
    ofdns(x86-64)
    ofhash(x86-64)
    ofhttp(x86-64)

libobjfw (rpmlib, GLIBC filtered):
    ld-linux-x86-64.so.2()(64bit)
    libc.so.6()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libgcc_s.so.1(GCC_3.3)(64bit)
    libm.so.6()(64bit)
    libobjfwrt(x86-64)
    libobjfwrt.so.1()(64bit)
    rtld(GNU_HASH)

libobjfw-devel (rpmlib, GLIBC filtered):
    /usr/bin/sh
    libc.so.6()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libobjfw(x86-64)
    libobjfw.so.1()(64bit)
    libobjfwrt-devel(x86-64)
    libobjfwrt.so.1()(64bit)
    rtld(GNU_HASH)

libobjfwrt (rpmlib, GLIBC filtered):
    ld-linux-x86-64.so.2()(64bit)
    libc.so.6()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    rtld(GNU_HASH)

libobjfwrt-devel (rpmlib, GLIBC filtered):
    libobjfwrt(x86-64)
    libobjfwrt.so.1()(64bit)

libobjfwtls (rpmlib, GLIBC filtered):
    libc.so.6()(64bit)
    libcrypto.so.3()(64bit)
    libcrypto.so.3(OPENSSL_3.0.0)(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libobjfw.so.1()(64bit)
    libobjfwrt.so.1()(64bit)
    libssl.so.3()(64bit)
    libssl.so.3(OPENSSL_3.0.0)(64bit)
    openssl(x86-64)
    rtld(GNU_HASH)

libobjfwtls-devel (rpmlib, GLIBC filtered):
    libobjfw-devel(x86-64)
    libobjfwrt-devel(x86-64)
    libobjfwtls(x86-64)
    libobjfwtls.so.1()(64bit)

ofarc (rpmlib, GLIBC filtered):
    libc.so.6()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libobjfw(x86-64)
    libobjfw.so.1()(64bit)
    libobjfwrt(x86-64)
    libobjfwrt.so.1()(64bit)
    rtld(GNU_HASH)

ofdns (rpmlib, GLIBC filtered):
    libc.so.6()(64bit)
    libobjfw(x86-64)
    libobjfw.so.1()(64bit)
    libobjfwrt(x86-64)
    libobjfwrt.so.1()(64bit)
    rtld(GNU_HASH)

ofhash (rpmlib, GLIBC filtered):
    libc.so.6()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libobjfw(x86-64)
    libobjfw.so.1()(64bit)
    libobjfwrt(x86-64)
    libobjfwrt.so.1()(64bit)
    rtld(GNU_HASH)

ofhttp (rpmlib, GLIBC filtered):
    libc.so.6()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libm.so.6()(64bit)
    libobjfw(x86-64)
    libobjfw.so.1()(64bit)
    libobjfwrt(x86-64)
    libobjfwrt.so.1()(64bit)
    libobjfwtls(x86-64)
    libobjfwtls.so.1()(64bit)
    rtld(GNU_HASH)

objfw-debuginfo (rpmlib, GLIBC filtered):

objfw-debugsource (rpmlib, GLIBC filtered):



Provides
--------
objfw:
    objfw
    objfw(x86-64)

libobjfw:
    libobjfw
    libobjfw(x86-64)
    libobjfw.so.1()(64bit)

libobjfw-devel:
    libobjfw-devel
    libobjfw-devel(x86-64)

libobjfwrt:
    libobjfwrt
    libobjfwrt(x86-64)
    libobjfwrt.so.1()(64bit)

libobjfwrt-devel:
    libobjfwrt-devel
    libobjfwrt-devel(x86-64)

libobjfwtls:
    libobjfwtls
    libobjfwtls(x86-64)
    libobjfwtls.so.1()(64bit)

libobjfwtls-devel:
    libobjfwtls-devel
    libobjfwtls-devel(x86-64)

ofarc:
    ofarc
    ofarc(x86-64)

ofdns:
    ofdns
    ofdns(x86-64)

ofhash:
    ofhash
    ofhash(x86-64)

ofhttp:
    ofhttp
    ofhttp(x86-64)

objfw-debuginfo:
    objfw-debuginfo
    objfw-debuginfo(x86-64)

objfw-debugsource:
    objfw-debugsource
    objfw-debugsource(x86-64)



Diff spec file in url and in SRPM
---------------------------------
--- /home/FedoraPackaging/reviews/objfw/2235768-objfw/srpm/objfw.spec   2023-09-08 17:23:04.795299507 +0300
+++ /home/FedoraPackaging/reviews/objfw/2235768-objfw/srpm-unpacked/objfw.spec     2023-08-29 03:00:00.000000000 +0300
@@ -1,2 +1,7 @@
+## START: Set by rpmautospec
+## (rpmautospec version 0.3.5)
+## RPMAUTOSPEC: autochangelog
+## END: Set by rpmautospec
+
 Name:          objfw
 Version:       1.0
@@ -222,3 +227,5 @@
 %{_datadir}/ofhttp
 
-%autochangelog
+%changelog
+* Tue Aug 29 2023 John Doe <packager> - 1.0-1
+- Uncommitted changes


Generated by fedora-review 0.10.0 (e79b66b) last change: 2023-07-24
Command line :/usr/bin/fedora-review -b 2235768 -m fedora-38-x86_64
Buildroot used: fedora-38-x86_64
Active plugins: Generic, C/C++, Shell-api
Disabled plugins: fonts, SugarActivity, Java, PHP, Python, Perl, Ocaml, R, Ruby, Haskell
Disabled flags: EXARCH, EPEL6, EPEL7, DISTTAG, BATCH

Comments:
a) Please add a copy of the GPL-3.0 license to the package

b) Please use SPDX license identifiers:
GPL-2.0-only OR GPL-3.0-only OR QPL-1.0

c) Run ./autogen.sh in the build section, not the prep section

d) Remove the section:
Requires:      libobjfw%{_isa} = %{version}-%{release}
Requires:      libobjfw-devel%{_isa} = %{version}-%{release}
Requires:      libobjfwrt%{_isa} = %{version}-%{release}
Requires:      libobjfwrt-devel%{_isa} = %{version}-%{release}
Requires:      ofarc%{_isa} = %{version}-%{release}
Requires:      ofdns%{_isa} = %{version}-%{release}
Requires:      ofhash%{_isa} = %{version}-%{release}
Requires:      ofhttp%{_isa} = %{version}-%{release}

These will be linked as needed.

e) GCC is preferred to Clang for builds if possible
https://docs.fedoraproject.org/en-US/packaging-guidelines/#compiler
As it seems clang adds useful functionality, please add

%global toolchain clang

to the top of the spec file.

d) The objfw package just seems to contain licenses. Is it needed? You could consider requiring
all other packages to require objfw to get the licenses rather than having them as separate files
in each package.

e) Can a newer version of OpenSSL be used?

f) Can you verify the signature? See
https://docs.fedoraproject.org/en-US/packaging-guidelines/#_verifying_signatures

g) Can you run the tests?

h) Is it possible to package documentation?

Comment 3 Jonathan S. 2023-09-08 20:55:58 UTC
Thanks for the review!

a.) WDYM? It already has %license LICENSE.GPLv3?
b.) Done - with the SuSE leftover removed. Sorry, I copied it from a .spec file I had for both that was for snapshots.
c.) Removed entirely, it's not needed for non-development versions (for which said .spec file was).
d.) The entire idea is that "objfw" is a meta-package pulling in everything. If I remove this, this would no longer be the case, no?
e.) Done.
second d.) The idea was that you can install everything individually. Only need the library as a dependency? Great, get libobjfw and libobjfwrt. Only want ofhttp to download a file? Great, just get libobjfw, libobjfwrt, libobjfwtls and ofhttp, without the -devel. Want to develop? Get libobjfw-devel. Want it all? Get objfw.
second e.) Yes, OpenSSL 3 works fine. OpenSSL 1.1.1 is just the minimum. I increased the minimum to 3.0.0, is that correct?
f.) D'oh. I even added the keyring and then forgot to actually check it. Done.
g.) WDYM? There already is a %check in there?
h.) Done.

Updated spec file: https://nil.im/objfw.spec

Comment 4 Benson Muite 2023-09-08 21:57:39 UTC
a) Sorry. Seems fine.
d) Ok. Might consider a license only package objfw-licenses, see for example:
https://src.fedoraproject.org/rpms/mlpack/blob/rawhide/f/mlpack.spec
Meta package is fine.

Is it possible to get position independent executables?
There also seems to be an rpath warning.

Please also upload new srpm.

Comment 5 Jonathan S. 2023-09-08 22:04:00 UTC
Honestly, I'm fine with not installing the license files at all if the Licenses: tag is enough. In general, I see very little point in having 1000s of copies of the same licenses in /usr/share/licenses. However, it seems that Fedora wants it this way: One file per package. Wouldn't adding such a -licenses package defeat the point of having /usr/share/licenses/libobjfw as well as /usr/share/licenses/ofhttp? I guess the entire idea is that you can just take the package name and get to the license, right?

What about the other points?

Comment 6 Benson Muite 2023-09-09 09:53:00 UTC
The license files need to be installed whenever any of the libraries and binaries are installed.
What you have done is technically fine, just a suggestion that might minimize clutter.

The current spec file still pulls in openssl 1.1 to get 3 instead of
BuildRequires:  pkgconfig(openssl)
Use
BuildRequires:  openssl-devel

An example spec file is at:
https://download.copr.fedorainfracloud.org/results/fed500/objfw/fedora-rawhide-x86_64/06389821-objfw/objfw.spec

From that build log:
https://download.copr.fedorainfracloud.org/results/fed500/objfw/fedora-rawhide-x86_64/06389821-objfw/builder-live.log.gz

it seems that the Fedora compilation flags are not picked up in the generated buildsys.mk. Is it possible to add these?

Finally, from rpmlint messages:
libobjfw-devel.x86_64: E: rpath-in-buildconfig /usr/bin/objfw-config lines 69
ofhash.x86_64: W: position-independent-executable-suggested /usr/bin/ofhash
ofdns.x86_64: W: position-independent-executable-suggested /usr/bin/ofdns
ofhttp.x86_64: W: position-independent-executable-suggested /usr/bin/ofhttp
libobjfw-devel.x86_64: W: position-independent-executable-suggested /usr/bin/objfw-new
ofarc.x86_64: W: position-independent-executable-suggested /usr/bin/ofarc

$ rpmlint -e position-independent-executable-suggested
position-independent-executable-suggested:
This executable should be position independent (all binaries should).  Check
that it is built with -fPIE/-fpie in compiler flags and -pie in linker flags.

$ rpmlint -e rpath-in-buildconfig
rpath-in-buildconfig:
This build configuration file contains rpaths which will be introduced into
dependent packages.

Comment 7 Jonathan S. 2023-09-09 12:36:55 UTC
> The license files need to be installed whenever any of the libraries and binaries are installed.
> What you have done is technically fine, just a suggestion that might minimize clutter.

In that case, I think it's cleaner this way, as this doesn't break ls `/usr/share/licenses/$package` to see the license.

> it seems that the Fedora compilation flags are not picked up in the generated buildsys.mk. Is it possible to add these?

Ah, this seems to be because it sets CFLAGS and CXXFLAGS, but not OBJCFLAGS. I've set OBJCFLAGS to CFLAGS for now, but really, that's a hack. I think Fedora should also set OBJCFLAGS for builds.

> libobjfw-devel.x86_64: E: rpath-in-buildconfig /usr/bin/objfw-config lines 69

This should be ignored. It's a shellscript that can emit flags for using rpath. It isn't used by itself, since --disable-rpath is passed to configure.

> ofhash.x86_64: W: position-independent-executable-suggested /usr/bin/ofhash
> ofdns.x86_64: W: position-independent-executable-suggested /usr/bin/ofdns
> ofhttp.x86_64: W: position-independent-executable-suggested /usr/bin/ofhttp
> libobjfw-devel.x86_64: W: position-independent-executable-suggested /usr/bin/objfw-new
> ofarc.x86_64: W: position-independent-executable-suggested /usr/bin/ofarc

This happens even when the flags are picked up. Looking at the flags passed by Fedora, there is nothing in CFLAGS or LDFLAGS for PIE. Shouldn't Fedora add the flags for PIE to those if it wants PIE?

New spec file: https://nil.im/objfw.spec
New SRPM: https://nil.im/objfw-1.0-1.fc40.src.rpm

Comment 8 Benson Muite 2023-09-09 13:34:45 UTC
[fedora-review-service-build]

Comment 9 Neal Gompa 2023-09-09 16:03:27 UTC
Spec review notes of my own:

* Why clang? Could you build this with gcc? Most of our auto-hardening features are active with GCC. It also might fix the LTO issue.

> BuildRequires: openssl-devel

If you intend to force OpenSSL 3.x, you should make sure that's specified here, especially so that if it's backported to EPEL, it'll link to the right library.

I noticed that your configure.ac doesn't use pkg_check_modules for OpenSSL. You might want to consider changing to that, so that using "pkgconfig(openssl)" would be accurate and work well in situations where this is being backported to distributions with different openssl versions available in parallel at build time.

In libobjfwtls, you have:
> Requires:      openssl%{_isa} >= 3.0.0

If this links to the libraries normally, you don't need this and it should be dropped. RPM does automatic dependency tracking for linked libraries at the soname level.

In the file lists for library packages, you have entries like the following:

> %{_libdir}/libobjfw.so.*

This isn't allowed. Library versions need to be tracked in the spec file.

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

You can see an example of how I handled this in pkgconf: https://src.fedoraproject.org/rpms/pkgconf/blob/rawhide/f/pkgconf.spec

Comment 10 Jonathan S. 2023-09-09 20:46:24 UTC
> * Why clang? Could you build this with gcc? Most of our auto-hardening features are active with GCC. It also might fix the LTO issue.

GCC's Objective-C support is severely lacking, still at a very old state, missing many features and having terrible performance. It doesn't support modern Objective-C at all, and the library needs to be built with Clang in order to allow applications written for Clang to be compiled (different ABIs between GCC and Clang).

As for OpenSSL, I switched to GnuTLS as discussed in chat.

> If this links to the libraries normally, you don't need this and it should be dropped. RPM does automatic dependency tracking for linked libraries at the soname level.

All dropped.

> This isn't allowed. Library versions need to be tracked in the spec file.

Changed.

Updated spec file: https://nil.im/objfw.spec

Comment 11 Neal Gompa 2023-09-09 20:51:31 UTC
Looks good to me at this point.

Comment 12 Jonathan S. 2023-09-09 21:08:55 UTC
Updated SRPM (matching above .spec): https://nil.im/objfw-1.0-1.fc40.src.rpm
Koji build: https://koji.fedoraproject.org/koji/taskinfo?taskID=105969998

@benson_muite It seems fedora-review-service-build didn't do anything?

Comment 13 Fedora Review Service 2023-09-10 01:44:35 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/6390884
(succeeded)

Review template:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2235768-objfw/fedora-rawhide-x86_64/06390884-objfw/fedora-review/review.txt

Please take a look if any issues were found.

---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.

Comment 14 Fedora Review Service 2023-09-10 01:48:20 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/6390885
(succeeded)

Review template:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2235768-objfw/fedora-rawhide-x86_64/06390885-objfw/fedora-review/review.txt

Please take a look if any issues were found.

---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.

Comment 15 Fedora Review Service 2023-09-10 01:49:07 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/6390901
(succeeded)

Review template:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2235768-objfw/fedora-rawhide-x86_64/06390901-objfw/fedora-review/review.txt

Please take a look if any issues were found.

---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.

Comment 16 Benson Muite 2023-09-10 18:52:40 UTC
pie should be enabled by default:
https://docs.fedoraproject.org/en-US/packaging-guidelines/#_pie

To prevent the docs warning change
%package -n objfw-docs
%description -n objfw-docs
%files -n objfw-docs
to
%package doc
%description doc
%files doc

Tried also specifying link flags, 
%configure                              \
        OBJC=clang                      \
        OBJCFLAGS="$CFLAGS -fpie -fpic" \
        OBJLDFLAGS="$LDFLAGS -pie"      \
        --disable-rpath                 \
        --with-tls=gnutls

see builds at:
https://koji.fedoraproject.org/koji/taskinfo?taskID=106003260
Will check fedora-review output to see if it helps, but builds on copr are not completing correctly at present.

Comment 17 Jonathan S. 2023-09-11 01:15:34 UTC
Adding the flags there won't work as it will be picked up when building the libraries as well. I patched it instead.

New spec file: https://nil.im/objfw.spec
New SRPM: https://nil.im/objfw-1.0.2-1.fc40.src.rpm
Koji build: https://koji.fedoraproject.org/koji/taskinfo?taskID=106016079

Comment 18 Fedora Review Service 2023-09-11 03:55:18 UTC
Created attachment 1988072 [details]
The .spec file difference from Copr build 6390901 to 6393236

Comment 19 Fedora Review Service 2023-09-11 03:55:21 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/6393236
(failed)

Build log:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2235768-objfw/fedora-rawhide-x86_64/06393236-objfw/builder-live.log.gz

Please make sure the package builds successfully at least for Fedora Rawhide.

- If the build failed for unrelated reasons (e.g. temporary network
  unavailability), please ignore it.
- If the build failed because of missing BuildRequires, please make sure they
  are listed in the "Depends On" field


---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.

Comment 20 Jonathan S. 2023-09-11 08:09:00 UTC
Copr is being silly:

> Failed to mount /proc/sys (type n/a) on /proc/sys (MS_BIND ""): Invalid argument
> Failed to create /user.slice/user-1000.slice/session-30.scope/payload subcgroup: Structure needs cleaning

Koji build is successful: https://koji.fedoraproject.org/koji/taskinfo?taskID=106016079

Comment 21 Benson Muite 2023-09-11 09:35:51 UTC
Seems ok. A few more warnings from fedora-review:

a) objfw.src: W: strange-permission objfw.spec 600

b) Use QPL-1.0 OR GPL-3.0-only OR GPL-2.0-only

- The License field must be a valid SPDX expression.
  Note: Not a valid SPDX expression 'QPL-1.0 or GPL-3.0-only or
  GPL-2.0-only'.
  See: https://fedoraproject.org/wiki/Changes/SPDX_Licenses_Phase_1

c) doc package needs to be noarch so use
%package doc
Summary:       Documentation for ObjFW
BuildArch:     noarch

%description doc
Documentation for ObjFW.

Please do above on import. Thanks for building this and bringing it to Fedora.

Approved.

If time allows, would appreciate a review of one of:
https://bugzilla.redhat.com/show_bug.cgi?id=2237648
https://bugzilla.redhat.com/show_bug.cgi?id=2218338

Comment 22 Fedora Admin user for bugzilla script actions 2023-09-11 19:11:40 UTC
The Pagure repository was created at https://src.fedoraproject.org/rpms/objfw

Comment 23 Fedora Update System 2023-09-11 19:31:58 UTC
FEDORA-2023-7d3e2a1093 has been submitted as an update to Fedora 40. https://bodhi.fedoraproject.org/updates/FEDORA-2023-7d3e2a1093

Comment 24 Fedora Update System 2023-09-11 19:34:38 UTC
FEDORA-2023-7d3e2a1093 has been pushed to the Fedora 40 stable repository.
If problem still persists, please make note of it in this bug report.


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