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
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.
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?
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
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.
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?
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.
> 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
[fedora-review-service-build]
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
> * 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
Looks good to me at this point.
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?
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.
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.
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.
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.
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
Created attachment 1988072 [details] The .spec file difference from Copr build 6390901 to 6393236
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.
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
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
The Pagure repository was created at https://src.fedoraproject.org/rpms/objfw
FEDORA-2023-7d3e2a1093 has been submitted as an update to Fedora 40. https://bodhi.fedoraproject.org/updates/FEDORA-2023-7d3e2a1093
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.