RPM and dependency handling.

I know it’s not strictly related to OBS, but …
I’ve prepared spec files for rpm packages.
Packages were generated, but …
Installing one doesn’t imply remove another.

I create tool to interactively dependency handling by user using PackageKit.
Problem is everything worked. My solution (modified Packagekit.zypp backend) asks me about removal other.
Everything seems ok, but packages selected to removal wasn’t removed.

I will ask what I’m doing wrong.
Spec files you can view here:
https://rapidshare.io/78f/SPECS.tar.gz

Hi
I won’t download some foreign tarball :wink:

In your spec files did you use obsolete, provides, conflicts etc?

I use conflicts.

Should I paste content of spec files here?

Hi
I would use obsoletes and provides %{name} = %{version}

You can check the dependencies through RPM package manager https://software.opensuse.org/package/rpm

I added provides field to each of package. I tested on my branch of packagekit and it didn’t work. I tested on zypper (rpm worked, but it complain about not handled dependency) and it works. So there must be problems in my libzypp usage. I think this mean packages are built correctly. Topic is for close. I will asks in development subforum about something (how to properly work with libzypp).

Hi.
I try to publish my changes at top of newer version of PackageKit. I got (when osc build):


  123s] RPMLINT report: 
  123s] =============== 
  126s] ============================ rpmlint session starts ============================ 
  126s] rpmlint: 2.2.0 
  126s] configuration: 
  126s]     /opt/testing/lib64/python3.8/site-packages/rpmlint/configdefaults.toml 
  126s]     /opt/testing/share/rpmlint/cron-whitelist.toml 
  126s]     /opt/testing/share/rpmlint/dbus-services.toml 
  126s]     /opt/testing/share/rpmlint/device-files-whitelist.toml 
  126s]     /opt/testing/share/rpmlint/licenses.toml 
  126s]     /opt/testing/share/rpmlint/opensuse.toml 
  126s]     /opt/testing/share/rpmlint/pam-modules.toml 
  126s]     /opt/testing/share/rpmlint/permissions-whitelist.toml 
  126s]     /opt/testing/share/rpmlint/pie-executables.toml 
  126s]     /opt/testing/share/rpmlint/polkit-rules-whitelist.toml 
  126s]     /opt/testing/share/rpmlint/scoring.toml 
  126s]     /opt/testing/share/rpmlint/security.toml 
  126s]     /opt/testing/share/rpmlint/sudoers-whitelist.toml 
  126s]     /opt/testing/share/rpmlint/users-groups.toml 
  126s]     /opt/testing/share/rpmlint/world-writable-whitelist.toml 
  126s] checks: 39, packages: 12 
  126s]  
  126s] Lachu-PackageKit.x86_64: W: unstripped-binary-or-object /usr/bin/pkcon 
  126s] Lachu-PackageKit.x86_64: W: unstripped-binary-or-object /usr/bin/pkmon 
  126s] Lachu-PackageKit.x86_64: W: unstripped-binary-or-object /usr/lib64/packagekit-backend/libpk_backend_dummy.so 
  126s] Lachu-PackageKit.x86_64: W: unstripped-binary-or-object /usr/libexec/packagekit-direct 
  126s] Lachu-PackageKit.x86_64: W: unstripped-binary-or-object /usr/libexec/packagekitd 
  126s] Lachu-PackageKit.x86_64: W: unstripped-binary-or-object /usr/libexec/pk-offline-update 
  126s] Lachu-PackageKit-backend-dnf.x86_64: W: unstripped-binary-or-object /usr/lib64/packagekit-backend/libpk_backend_dnf.so 
  126s] Lachu-PackageKit-backend-zypp-with-dependency-handling.x86_64: W: unstripped-binary-or-object /usr/lib64/packagekit-bac
kend/libpk_backend_zypp.so 
  126s] Lachu-PackageKit-devel.x86_64: W: unstripped-binary-or-object /usr/lib64/packagekit-backend/libpk_backend_test_fail.so 
  126s] Lachu-PackageKit-devel.x86_64: W: unstripped-binary-or-object /usr/lib64/packagekit-backend/libpk_backend_test_nop.so 
  126s] Lachu-PackageKit-devel.x86_64: W: unstripped-binary-or-object  /usr/lib64/packagekit-backend/libpk_backend_test_spawn.so 
  126s] Lachu-PackageKit-devel.x86_64: W: unstripped-binary-or-object /usr/lib64/packagekit-backend/libpk_backend_test_succeed.
so 
  126s] Lachu-PackageKit-devel.x86_64: W: unstripped-binary-or-object /usr/lib64/packagekit-backend/libpk_backend_test_thread.s
o 
  126s]  
  126s] Lachu-PackageKit.x86_64: E: systemd-service-without-service_del_postun packagekit-background.service 
  126s] Lachu-PackageKit.x86_64: E: systemd-service-without-service_del_postun packagekit-offline-update.service 
  126s] Lachu-PackageKit.x86_64: E: systemd-service-without-service_del_postun packagekit.service 
  126s] Lachu-PackageKit.x86_64: E: systemd-service-without-service_del_postun packagekit-offline-update.service 
  126s] The package contains a systemd service but doesn't contain a %postun with a 
  126s] call to service_del_postun. 
  126s]  
  126s] Lachu-PackageKit.x86_64: E: spurious-executable-perm (Badness: 50) /usr/share/doc/packages/Lachu-PackageKit/HACKING 
  126s] Lachu-PackageKit.x86_64: E: spurious-executable-perm (Badness: 50) /usr/share/doc/packages/Lachu-PackageKit/org.freedes
ktop.packagekit.rules 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pa
ckagekit.h 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pk
-bitfield.h 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pk
-category.h 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pk
-client-helper.h 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pk
-client-sync.h 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pk
-common.h 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pk
-control-sync.h 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pk
-control.h 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pk
-desktop.h 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pk
-distro-upgrade.h 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pk
-error.h 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pk
-eula-required.h 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pk
-files.h 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pk
-item-progress.h 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pk
-media-change-required.h 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pk
-package-id.h 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pk
-package-ids.h 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pk
-package-sack-sync.h 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pk
-package-sack.h 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pk
-progress.h 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pk
-repo-detail.h 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pk
-repo-signature-required.h 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pk
-require-restart.h 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pk
-results.h 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pk
-source.h 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pk
-task-sync.h 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pk
-task.h 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pk
-transaction-list.h 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pk
-transaction-past.h 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pk
-update-detail.h 
  126s] libpackagekit-glib2-devel.x86_64: E: spurious-executable-perm (Badness: 50) /usr/include/PackageKit/packagekit-glib2/pk
-version.h 
  126s] The file is installed with executable permissions, but was identified as one 
  126s] that probably should not be executable. Verify if the executable bits are 
  126s] desired, and remove if not. 
  126s]  
  126s] Lachu-PackageKit-branding-upstream.noarch: E: script-without-shebang /etc/PackageKit/PackageKit.conf 
  126s] Lachu-PackageKit-branding-upstream.noarch: E: script-without-shebang /etc/PackageKit/Vendor.conf 
  126s] Lachu-PackageKit.x86_64: E: script-without-shebang /etc/dbus-1/system.d/org.freedesktop.PackageKit.conf 
  126s] Lachu-PackageKit.x86_64: E: script-without-shebang /usr/lib/systemd/system/packagekit-offline-update.service 
  126s] Lachu-PackageKit.x86_64: E: script-without-shebang /usr/share/dbus-1/interfaces/org.freedesktop.PackageKit.Transaction.
xml 
  126s] Lachu-PackageKit.x86_64: E: script-without-shebang /usr/share/dbus-1/interfaces/org.freedesktop.PackageKit.xml 
  126s] Lachu-PackageKit.x86_64: E: script-without-shebang  /usr/share/dbus-1/system-services/org.freedesktop.PackageKit.service 
  126s] Lachu-PackageKit.x86_64: E: script-without-shebang /usr/share/licenses/Lachu-PackageKit/COPYING 
  126s] Lachu-PackageKit-gtk3-module.x86_64: E: script-without-shebang /usr/lib64/gnome-settings-daemon-3.0/gtk-modules/pk-gtk-
module.desktop 
  126s] libpackagekit-glib2-18.x86_64: E: script-without-shebang /usr/share/licenses/libpackagekit-glib2-18/COPYING 
  126s] This text file has executable bits set or is located in a path dedicated for 
  126s] executables, but lacks a shebang and cannot thus be executed. If the file is 
  126s] meant to be an executable script, add the shebang, otherwise remove the 
  126s] executable bits or move the file elsewhere. 
  126s]  
  126s] Lachu-PackageKit-devel.x86_64: W: potential-bashisms /usr/share/PackageKit/helpers/test_spawn/search-name.sh 
  126s] checkbashisms reported potential bashisms in a /bin/sh shell script, you might 
  126s] want to manually check this script for bashisms. 
  126s]  
  126s] Lachu-PackageKit-gstreamer-plugin.x86_64: I: package supports update-alternatives 
  126s] Lachu-PackageKit.x86_64: W: obsolete-not-provided Lachu-PackageKit-browser-plugin 
  126s] Lachu-PackageKit.x86_64: W: obsolete-not-provided Lachu-PackageKit-doc 
  126s] Lachu-PackageKit.x86_64: W: obsolete-not-provided Lachu-PackageKit-gtk-module 
  126s] Lachu-PackageKit.x86_64: W: obsolete-not-provided ruck 
  126s] If a package is obsoleted by a compatible replacement, the obsoleted package 
  126s] should also be provided in order to not cause unnecessary dependency breakage. 
  126s] If the obsoleting package is not a compatible replacement for the old one, 
  126s] leave out the Provides. 
  126s]  
  126s] Lachu-PackageKit.x86_64: E: non-executable-script /usr/share/PackageKit/packagekit-background.sh 644 /bin/bash 
  126s] This text file contains a shebang or is located in a path dedicated for 
  126s] executables, but lacks the executable bits and cannot thus be executed. If the 
  126s] file is meant to be an executable script, add the executable bits, otherwise 
  126s] remove the shebang or move the file elsewhere. 
  126s]  
  126s] Lachu-PackageKit-branding-upstream.noarch: E: no-changelogname-tag 
  126s] Lachu-PackageKit-lang.noarch: E: no-changelogname-tag 
  126s] Lachu-PackageKit.x86_64: E: no-changelogname-tag 
  126s] Lachu-PackageKit-backend-dnf.x86_64: E: no-changelogname-tag 
  126s] Lachu-PackageKit-backend-zypp-with-dependency-handling.x86_64: E: no-changelogname-tag 
  126s] Lachu-PackageKit-devel.x86_64: E: no-changelogname-tag 
  126s] Lachu-PackageKit-gstreamer-plugin.x86_64: E: no-changelogname-tag 
  126s] Lachu-PackageKit-gtk3-module.x86_64: E: no-changelogname-tag 
  126s] libpackagekit-glib2-18.x86_64: E: no-changelogname-tag 
  126s] libpackagekit-glib2-devel.x86_64: E: no-changelogname-tag 
  126s] typelib-1_0-PackageKitGlib-1_0.x86_64: E: no-changelogname-tag 
  126s] Lachu-PackageKit.src: E: no-changelogname-tag 
  126s] There is no changelog. Please insert a '%changelog' section heading in your 
  126s] spec file and prepare your changes file using e.g. the 'osc vc' command. 
  126s]  
  126s] Lachu-PackageKit.src: E: invalid-spec-name 
  126s] The spec file name (without the .spec suffix) must match the package name 
  126s] ('Name:' tag). 
  126s]  
  126s] Lachu-PackageKit.x86_64: E: dbus-file-unauthorized (Badness: 10) /usr/share/dbus-1/system-services/org.freedesktop.Pack
ageKit.service (file digest sha256:6fbf6a1c93cc31edf72431901fae7c3931fd5f52856d3298ce09ae69466e4022) 
  126s] Lachu-PackageKit.x86_64: E: dbus-file-unauthorized (Badness: 10) /etc/dbus-1/system.d/org.freedesktop.PackageKit.conf (
file digest sha256:339423556c312205c1ca187f67b01aeb130def06a51d6816a2a72465fd15267d) 
  126s] Packaging D-Bus services requires a review and whitelisting by the SUSE 
  126s] security team. If the package is intended for inclusion in any SUSE product 
  126s] please open a bug report to request review of the package by the security 
  126s] team. Please refer to 
  126s] https://en.opensuse.org/openSUSE:Package_security_guidelines#audit_bugs for 
  126s] more information. 
  126s] ---------------- Badness 1698 exceeds threshold 999, aborting. ----------------- 
  126s] Check time report (>1% & >0.1s): 
  126s]     Check                            Duration (in s)   Fraction (in %)  Checked files 
  126s]     BinariesCheck                                0.7              32.7             16 
  126s]     BashismsCheck                                0.5              21.4            271 
  126s]     rpm2cpio                                     0.4              16.2                
  126s]     SignatureCheck                               0.2              10.5                
  126s]     TOTAL                                        2.2             100.0            271 
  126s]  12 packages and 0 specfiles checked; 63 errors, 22 warnings, 1698 badness; has taken 2.2 s   
  126s] localhost.localdomain failed "build PackageKit.spec" at Wed Apr 13 16:28:26 UTC 2022. 
The buildroot was: /var/tmp/build-root/openSUSE_Tumbleweed-x86_64

I remove some stuff, such like warnings.