diff --git a/LICENSES-AND-NOTICES/SPECS/LICENSES-MAP.md b/LICENSES-AND-NOTICES/SPECS/LICENSES-MAP.md
index 7a8deaa6242..a557f69af07 100644
--- a/LICENSES-AND-NOTICES/SPECS/LICENSES-MAP.md
+++ b/LICENSES-AND-NOTICES/SPECS/LICENSES-MAP.md
@@ -5,19 +5,19 @@ The Azure Linux SPEC files originated from a variety of sources with varying lic
| CentOS | [MIT](https://www.centos.org/legal/#licensing-policy) | crash-ptdump-command
delve
fstrm
nodejs-nodemon
rhnlib
rt-setup
rt-tests
rtctl
tuned |
| Ceph source | [LGPL2.1](https://github.com/ceph/ceph/blob/master/COPYING-LGPL2.1) | ceph |
| Debian | [MIT](https://opensource.org/licenses/MIT) | prometheus-process-exporter |
-| Fedora | [Fedora MIT License Declaration](https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing#License_of_Fedora_SPEC_Files) | 389-ds-base
a52dec
abseil-cpp
accountsservice
acpica-tools
acpid
adcli
adobe-mappings-cmap
adobe-mappings-pdf
advancecomp
adwaita-icon-theme
afflib
aide
alsa-firmware
alsa-plugins
amtk
amtterm
annobin
ansible-freeipa
archivemount
arptables
arpwatch
asio
aspell
aspell-en
at
at-spi2-atk
at-spi2-core
atf
atk
atop
attr
audiofile
augeas
authbind
authd
authselect
autoconf213
avahi
babeltrace
babeltrace2
babl
baekmuk-ttf-fonts
bats
bcache-tools
biosdevname
blosc
bluez
bmake
bolt
boom-boot
booth
botan2
breezy
brotli
buildah
busybox
bwidget
byacc
ca-certificates
cachefilesd
cairomm
calamares
capnproto
capstone
catatonit
catch
catch1
cdrdao
celt051
cereal
certmonger
cfitsio
cgdcbxd
chan
CharLS
checkpolicy
checksec
chrony
cim-schema
cjkuni-uming-fonts
cjose
ck
cldr-emoji-annotation
clucene
clutter
clutter-gst3
clutter-gtk
cmocka
cogl
collectd
colm
color-filesystem
colord
colorize
compat-lua
compiler-rt
conda
conmon
conntrack-tools
console-setup
container-exception-logger
convmv
corosync
corosync-qdevice
cpp-hocon
cppcheck
cpprest
cpptest
cpufrequtils
cpuid
criu
crypto-policies
cryptsetup
cscope
ctags
CUnit
cups
custodia
Cython
dbus-c++
dbus-python
dconf
dcraw
debootstrap
deltarpm
desktop-file-utils
device-mapper-persistent-data
dhcpcd
dietlibc
diffstat
ding-libs
discount
distribution-gpg-keys
dleyna-connector-dbus
dleyna-core
dmraid
dnf
dnf-plugins-core
docbook-dtds
docbook-simple
docbook-slides
docbook-style-dsssl
docbook-utils
docbook2X
docbook5-schemas
docbook5-style-xsl
dogtail
dos2unix
dotconf
dovecot
dpdk
driverctl
dropwatch
drpm
duktape
dumpet
dvd+rw-tools
dwarves
dwz
dyninst
ebtables
edac-utils
edk2
efax
efi-rpm-macros
egl-wayland
eglexternalplatform
elinks
enca
enchant
enchant2
enscript
environment-modules
erofs-utils
evemu
execstack
exempi
exiv2
expected
extra-cmake-modules
fabtests
facter
fakechroot
fakeroot
fdupes
fence-virt
fetchmail
fftw
filebench
fio
firewalld
flac
flashrom
flatbuffers
flite
fltk
fmt
fontawesome-fonts
fontawesome4-fonts
fontpackages
fonts-rpm-macros
foomatic-db
freeglut
freeipmi
freeradius
freetds
freexl
fribidi
fros
frr
fsverity-utils
fuse-overlayfs
fuse-sshfs
fuse-zip
fuse3
future
fwupd
fwupd-efi
fxload
gavl
gbenchmark
gconf-editor
GConf2
gcovr
gcr
gdal
gdisk
gdk-pixbuf2
generic-logos
genwqe-tools
geoclue2
GeoIP
GeoIP-GeoLite-data
geolite2
geos
gfs2-utils
gi-docgen
giflib
gl-manpages
glew
glm
glog
glslang
glusterfs
gnome-desktop-testing
gnome-doc-utils
gnome-icon-theme
gnome-keyring
gnu-efi
go-rpm-macros
gom
google-api-python-client
google-crosextra-caladea-fonts
google-crosextra-carlito-fonts
google-guice
google-noto-cjk-fonts
google-noto-emoji-fonts
google-roboto-slab-fonts
gphoto2
gpm
gpsbabel
graphene
graphite2
graphviz
grubby
gsettings-desktop-schemas
gsl
gsm
gspell
gssdp
gssntlmssp
gstreamer1
gstreamer1-plugins-base
gtk-vnc
gtk2
gtk3
gtkspell
gupnp
gupnp-av
gupnp-dlna
gupnp-igd
hardening-check
hdf
hdf5
heimdal
help2man
hexedit
hicolor-icon-theme
hiera
highlight
hivex
hostname
hping3
hsakmt
htop
hunspell
hunspell-af
hunspell-ar
hunspell-as
hunspell-ast
hunspell-az
hunspell-be
hunspell-bg
hunspell-bn
hunspell-br
hunspell-ca
hunspell-cop
hunspell-csb
hunspell-cv
hunspell-cy
hunspell-da
hunspell-de
hunspell-dsb
hunspell-el
hunspell-en
hunspell-eo
hunspell-es
hunspell-et
hunspell-eu
hunspell-fa
hunspell-fj
hunspell-fo
hunspell-fr
hunspell-fur
hunspell-fy
hunspell-ga
hunspell-gd
hunspell-gl
hunspell-grc
hunspell-gu
hunspell-gv
hunspell-haw
hunspell-hi
hunspell-hil
hunspell-hr
hunspell-hsb
hunspell-ht
hunspell-hu
hunspell-hy
hunspell-ia
hunspell-id
hunspell-is
hunspell-it
hunspell-kk
hunspell-km
hunspell-kn
hunspell-ko
hunspell-ku
hunspell-ky
hunspell-la
hunspell-lb
hunspell-ln
hunspell-mai
hunspell-mg
hunspell-mi
hunspell-mk
hunspell-ml
hunspell-mn
hunspell-mos
hunspell-mr
hunspell-ms
hunspell-mt
hunspell-nds
hunspell-ne
hunspell-nl
hunspell-no
hunspell-nr
hunspell-nso
hunspell-ny
hunspell-om
hunspell-or
hunspell-pa
hunspell-pl
hunspell-pt
hunspell-quh
hunspell-ro
hunspell-ru
hunspell-rw
hunspell-se
hunspell-shs
hunspell-si
hunspell-sk
hunspell-sl
hunspell-smj
hunspell-so
hunspell-sq
hunspell-sr
hunspell-sv
hunspell-sw
hunspell-ta
hunspell-te
hunspell-tet
hunspell-th
hunspell-tk
hunspell-tl
hunspell-tn
hunspell-tpi
hunspell-ts
hunspell-uk
hunspell-uz
hunspell-ve
hunspell-vi
hunspell-wa
hunspell-xh
hunspell-yi
hwdata
hwloc
hyperscan
hyperv-daemons
hyphen
hyphen-as
hyphen-bg
hyphen-bn
hyphen-ca
hyphen-da
hyphen-de
hyphen-el
hyphen-es
hyphen-fa
hyphen-fo
hyphen-fr
hyphen-ga
hyphen-gl
hyphen-grc
hyphen-gu
hyphen-hi
hyphen-hsb
hyphen-hu
hyphen-ia
hyphen-id
hyphen-is
hyphen-it
hyphen-kn
hyphen-ku
hyphen-lt
hyphen-mi
hyphen-ml
hyphen-mn
hyphen-mr
hyphen-nl
hyphen-or
hyphen-pa
hyphen-pl
hyphen-pt
hyphen-ro
hyphen-ru
hyphen-sa
hyphen-sk
hyphen-sl
hyphen-sv
hyphen-ta
hyphen-te
hyphen-tk
hyphen-uk
ibus
ibus-chewing
ibus-hangul
ibus-kkc
ibus-libzhuyin
ibus-m17n
ibus-rawcode
ibus-sayura
ibus-table
ibus-table-chinese
icc-profiles-openicc
icon-naming-utils
icoutils
iftop
iio-sensor-proxy
ilmbase
im-chooser
imaptest
imsettings
indent
infinipath-psm
inih
iniparser
intel-cmt-cat
intel-ipsec-mb
ioping
IP2Location
ipa-pgothic-fonts
ipcalc
ipmitool
iprutils
iptraf-ng
iptstate
irssi
iscsi-initiator-utils
isns-utils
iso-codes
isomd5sum
iw
iwd
jabberpy
jakarta-servlet
jasper
javapackages-bootstrap
javapackages-tools
jbigkit
jdom2
jemalloc
jfsutils
jimtcl
jose
js-jquery
jsoncpp
Judy
jurand
kata-containers
kde-filesystem
kde-settings
kernel-srpm-macros
kexec-tools
keybinder3
keycloak-httpd-client-install
kf
kf-kconfig
kf-kcoreaddons
kf-ki18n
kf-kwidgetsaddons
kpmcore
kronosnet
ksh
kyotocabinet
kyua
ladspa
lame
langtable
lapack
lasso
latencytop
lato-fonts
lcms2
lcov
ldns
leatherman
ledmon
lensfun
leveldb
lftp
libabw
libaec
libao
libappstream-glib
libarrow
libart_lgpl
libasyncns
libatasmart
libavc1394
libblockdev
libbpf
libbsd
libburn
libbytesize
libcacard
libcanberra
libcbor
libcdio
libcdio-paranoia
libcdr
libcgroup
libchewing
libcli
libcmis
libcmpiutil
libcomps
libcroco
libcxx
libdaemon
libdap
libdatrie
libdazzle
libdbi
libdbusmenu
libdc1394
libdecor
libdeflate
libdmx
libdnf
libdrm
libdvdnav
libdvdread
libdwarf
libeasyfc
libecap
libecb
libei
libell
libEMF
libeot
libepoxy
libepubgen
libesmtp
libetonyek
libev
libevdev
libexif
libexttextcat
libfabric
libfontenc
libfreehand
libftdi
libgadu
libgdither
libgee
libgee06
libgeotiff
libgexiv2
libgit2
libgit2-glib
libglade2
libglvnd
libgovirt
libgphoto2
libgsf
libgta
libguestfs
libgusb
libgxim
libgxps
libhangul
libhugetlbfs
libibcommon
libical
libICE
libicns
libid3tag
libIDL
libidn2
libiec61883
libieee1284
libimobiledevice
libindicator
libinput
libiodbc
libipt
libiptcdata
libiscsi
libisoburn
libisofs
libjaylink
libjcat
libkcapi
libkeepalive
libkkc
libkkc-data
libkml
liblangtag
libldb
libldm
liblerc
liblockfile
liblognorm
liblouis
liblqr-1
liblzf
libmad
libmamba
libmd
libmediaart
libmicrohttpd
libmikmod
libmodman
libmodplug
libmodulemd1
libmpcdec
libmspub
libmtp
libmusicbrainz5
libmwaw
libnbd
libnet
libnetfilter_log
libnfs
libnotify
libntlm
libnumbertext
libnvme
liboauth
libodfgen
libofa
libogg
liboggz
liboil
libomxil-bellagio
libopenraw
liboping
libosinfo
libotf
libotr
libpagemaker
libpaper
libpciaccess
libpeas
libpfm
libpinyin
libplist
libpmemobj-cpp
libpng12
libpng15
libproxy
libpsm2
libpwquality
libqb
libqxp
libraqm
LibRaw
libraw1394
libreport
libreswan
librevenge
librsvg2
librx
libsamplerate
libsass
libsecret
libsemanage
libsigc++20
libsigsegv
libslirp
libSM
libsmbios
libsmi
libsndfile
libsodium
libspiro
libsrtp
libssh
libstaroffice
libstemmer
libstoragemgmt
libtdb
libteam
libtevent
libthai
libtnc
libtomcrypt
libtommath
libtpms
libtracecmd
libtraceevent
libtracefs
libtranslit
libucil
libunicap
libuninameslist
liburing
libusb1
libusbmuxd
libuser
libutempter
libvarlink
libverto
libvirt-dbus
libvirt-glib
libvirt-java
libvirt-python
libvisio
libvisual
libvoikko
libvorbis
libvpx
libwacom
libwnck3
libwpd
libwpe
libwpg
libwps
libwvstreams
libX11
libXau
libXaw
libxcb
libXcomposite
libxcrypt
libXcursor
libxcvt
libXdamage
libXdmcp
libXext
libxfce4util
libXfixes
libXfont2
libXft
libXi
libXinerama
libxkbcommon
libxkbfile
libxklavier
libxmlb
libXmu
libXpm
libXrandr
libXrender
libXres
libXScrnSaver
libxshmfence
libXt
libXtst
libXv
libXxf86vm
libyang
libyubikey
libzip
libzmf
lilv
linuxconsoletools
linuxptp
lksctp-tools
lldpd
lockdev
logwatch
lpsolve
lrzsz
lua
lua-expat
lua-filesystem
lua-json
lua-lpeg
lua-lunitx
lua-rpm-macros
lua-term
luajit
lujavrite
luksmeta
lutok
lv2
lzip
lzop
m17n-db
m17n-lib
mac-robber
mailcap
mailx
malaga
malaga-suomi-voikko
mallard-rng
man-pages-cs
man-pages-es
man-pages-it
man-pages-ja
man-pages-ko
man-pages-pl
man-pages-ru
man-pages-zh-CN
mandoc
mariadb
mariadb-connector-c
mariadb-connector-odbc
marisa
maven-compiler-plugin
maven-jar-plugin
maven-parent
maven-resolver
maven-resources-plugin
maven-surefire
maven-wagon
mcelog
mcpp
mcstrans
mdadm
mdds
mdevctl
meanwhile
mecab
mecab-ipadic
media-player-info
memcached
memkind
mesa
mesa-libGLU
metis
microcode_ctl
microdnf
minicom
minizip-ng
mksh
mobile-broadband-provider-info
mock
mock-core-configs
mod_auth_gssapi
mod_auth_mellon
mod_auth_openidc
mod_authnz_pam
mod_fcgid
mod_http2
mod_intercept_form_submit
mod_lookup_identity
mod_md
mod_security
mod_security_crs
mod_wsgi
mokutil
mosh
mpage
mrtg
mstflint
mt-st
mtdev
mtools
mtr
mtx
munge
mutt
mythes
mythes-bg
mythes-ca
mythes-cs
mythes-da
mythes-de
mythes-el
mythes-en
mythes-eo
mythes-es
mythes-fr
mythes-ga
mythes-hu
mythes-mi
mythes-ne
mythes-nl
mythes-pl
mythes-pt
mythes-ro
mythes-ru
mythes-sk
mythes-sl
mythes-sv
mythes-uk
nbd
nbdkit
neon
netavark
netcdf
netcf
netlabel_tools
netpbm
netsniff-ng
nfs4-acl-tools
nftables
nilfs-utils
nkf
nload
nlopt
nodejs-packaging
nss-mdns
nss-pam-ldapd
nss_nis
nss_wrapper
ntfs-3g
ntfs-3g-system-compression
numad
numatop
numpy
nvml
oath-toolkit
ocaml
ocaml-alcotest
ocaml-astring
ocaml-augeas
ocaml-base
ocaml-bigarray-compat
ocaml-bisect-ppx
ocaml-calendar
ocaml-camlp-streams
ocaml-camlp5
ocaml-camomile
ocaml-cinaps
ocaml-cmdliner
ocaml-compiler-libs-janestreet
ocaml-cppo
ocaml-csexp
ocaml-csv
ocaml-ctypes
ocaml-curses
ocaml-dune
ocaml-extlib
ocaml-fileutils
ocaml-findlib
ocaml-fmt
ocaml-fpath
ocaml-gettext
ocaml-integers
ocaml-libvirt
ocaml-luv
ocaml-lwt
ocaml-markup
ocaml-mmap
ocaml-num
ocaml-ocamlbuild
ocaml-ocplib-endian
ocaml-ounit
ocaml-parsexp
ocaml-pp
ocaml-ppx-derivers
ocaml-ppx-here
ocaml-ppx-let
ocaml-ppxlib
ocaml-re
ocaml-react
ocaml-result
ocaml-seq
ocaml-sexplib
ocaml-sexplib0
ocaml-srpm-macros
ocaml-stdio
ocaml-stdlib-random
ocaml-topkg
ocaml-tyxml
ocaml-uutf
ocaml-xml-light
ocaml-zarith
ocl-icd
oddjob
ogdi
omping
opa
opal
open-vm-tools
openblas
opencc
opencl-filesystem
opencl-headers
opencryptoki
opencsd
opendnssec
OpenEXR
openjade
openjpeg2
openmpi
openobex
openoffice-lv
openrdate
opensc
openslp
opensm
opensp
openssl
openssl-ibmpkcs11
openssl-pkcs11
openwsman
optipng
orangefs
ORBit2
orc
os-prober
osinfo-db
osinfo-db-tools
overpass-fonts
p11-kit
p7zip
pacemaker
pacrunner
pakchois
pam_krb5
pam_wrapper
papi
paps
parallel
passim
patchelf
patchutils
pbzip2
pcp
pcsc-lite
pcsc-lite-ccid
PEGTL
perl
perl-Algorithm-C3
perl-Algorithm-Diff
perl-Alien-Build
perl-Alien-pkgconf
perl-AnyEvent
perl-AnyEvent-AIO
perl-AnyEvent-BDB
perl-App-cpanminus
perl-App-FatPacker
perl-AppConfig
perl-Archive-Extract
perl-Archive-Zip
perl-Authen-SASL
perl-B-COW
perl-B-Debug
perl-B-Hooks-EndOfScope
perl-B-Hooks-OP-Check
perl-B-Keywords
perl-B-Lint
perl-bareword-filehandles
perl-BDB
perl-Bit-Vector
perl-boolean
perl-Browser-Open
perl-BSD-Resource
perl-Business-ISBN
perl-Business-ISBN-Data
perl-Bytes-Random-Secure
perl-Capture-Tiny
perl-Carp-Clan
perl-CBOR-XS
perl-Class-Accessor
perl-Class-C3
perl-Class-C3-XS
perl-Class-Data-Inheritable
perl-Class-Factory-Util
perl-Class-Inspector
perl-Class-ISA
perl-Class-Load
perl-Class-Load-XS
perl-Class-Method-Modifiers
perl-Class-Singleton
perl-Class-Tiny
perl-Class-XSAccessor
perl-Clone
perl-Color-ANSI-Util
perl-Color-RGB-Util
perl-ColorThemeBase-Static
perl-ColorThemeRole-ANSI
perl-ColorThemes-Standard
perl-ColorThemeUtil-ANSI
perl-Compress-Bzip2
perl-Compress-LZF
perl-Compress-Raw-Lzma
perl-Config-AutoConf
perl-Config-INI
perl-Config-INI-Reader-Multiline
perl-Config-IniFiles
perl-Config-Simple
perl-Config-Tiny
perl-Const-Fast
perl-Convert-ASN1
perl-Convert-Bencode
perl-Coro
perl-Coro-Multicore
perl-CPAN-Changes
perl-CPAN-DistnameInfo
perl-CPAN-Meta-Check
perl-Cpanel-JSON-XS
perl-Crypt-CBC
perl-Crypt-DES
perl-Crypt-IDEA
perl-Crypt-OpenSSL-Bignum
perl-Crypt-OpenSSL-Guess
perl-Crypt-OpenSSL-Random
perl-Crypt-OpenSSL-RSA
perl-Crypt-PasswdMD5
perl-Crypt-Random-Seed
perl-CSS-Tiny
perl-Data-Dump
perl-Data-Munge
perl-Data-OptList
perl-Data-Peek
perl-Data-Section
perl-Data-UUID
perl-Date-Calc
perl-Date-ISO8601
perl-Date-Manip
perl-DateTime
perl-DateTime-Format-Builder
perl-DateTime-Format-DateParse
perl-DateTime-Format-HTTP
perl-DateTime-Format-IBeat
perl-DateTime-Format-ISO8601
perl-DateTime-Format-Mail
perl-DateTime-Format-Strptime
perl-DateTime-Locale
perl-DateTime-TimeZone
perl-DateTime-TimeZone-SystemV
perl-DateTime-TimeZone-Tzfile
perl-DBD-MySQL
perl-Devel-CallChecker
perl-Devel-Caller
perl-Devel-CheckBin
perl-Devel-CheckLib
perl-Devel-Cycle
perl-Devel-EnforceEncapsulation
perl-Devel-GlobalDestruction
perl-Devel-GlobalDestruction-XS
perl-Devel-Hide
perl-Devel-Leak
perl-Devel-LexAlias
perl-Devel-Refcount
perl-Devel-Size
perl-Devel-StackTrace
perl-Devel-Symdump
perl-Digest-BubbleBabble
perl-Digest-CRC
perl-Digest-HMAC
perl-Digest-SHA1
perl-Dist-CheckConflicts
perl-DynaLoader-Functions
perl-Email-Address
perl-Email-Date-Format
perl-Encode-Detect
perl-Encode-EUCJPASCII
perl-Encode-IMAPUTF7
perl-Encode-Locale
perl-Env-ShellWords
perl-Error
perl-EV
perl-Eval-Closure
perl-Event
perl-Exception-Class
perl-Expect
perl-ExtUtils-Config
perl-ExtUtils-Depends
perl-ExtUtils-Helpers
perl-ExtUtils-InstallPaths
perl-ExtUtils-PkgConfig
perl-FCGI
perl-Fedora-VSP
perl-FFI-CheckLib
perl-File-BaseDir
perl-File-BOM
perl-File-chdir
perl-File-CheckTree
perl-File-Copy-Recursive
perl-File-DesktopEntry
perl-File-Find-Object
perl-File-Find-Object-Rule
perl-File-Find-Rule
perl-File-Find-Rule-Perl
perl-File-Inplace
perl-File-Listing
perl-File-MimeInfo
perl-File-pushd
perl-File-ReadBackwards
perl-File-Remove
perl-File-ShareDir
perl-File-ShareDir-Install
perl-File-Slurp
perl-File-Slurp-Tiny
perl-File-Slurper
perl-File-TreeCreate
perl-File-Type
perl-Font-TTF
perl-FreezeThaw
perl-GD
perl-GD-Barcode
perl-generators
perl-Getopt-ArgvFile
perl-gettext
perl-Graphics-ColorNamesLite-WWW
perl-GSSAPI
perl-Guard
perl-Hook-LexWrap
perl-HTML-Parser
perl-HTML-Tagset
perl-HTML-Tree
perl-HTTP-Cookies
perl-HTTP-Daemon
perl-HTTP-Date
perl-HTTP-Message
perl-HTTP-Negotiate
perl-Image-Base
perl-Image-Info
perl-Image-Xbm
perl-Image-Xpm
perl-Import-Into
perl-Importer
perl-inc-latest
perl-indirect
perl-Inline-Files
perl-IO-AIO
perl-IO-All
perl-IO-CaptureOutput
perl-IO-Compress-Lzma
perl-IO-HTML
perl-IO-Multiplex
perl-IO-SessionData
perl-IO-Socket-INET6
perl-IO-String
perl-IO-stringy
perl-IO-Tty
perl-IPC-Run
perl-IPC-Run3
perl-IPC-System-Simple
perl-JSON
perl-JSON-Color
perl-JSON-MaybeXS
perl-LDAP
perl-libnet
perl-libwww-perl
perl-libxml-perl
perl-Lingua-EN-Inflect
perl-List-MoreUtils-XS
perl-local-lib
perl-Locale-Codes
perl-Locale-Maketext-Gettext
perl-Locale-Msgfmt
perl-Locale-PO
perl-Log-Message
perl-Log-Message-Simple
perl-LWP-MediaTypes
perl-LWP-Protocol-https
perl-Mail-AuthenticationResults
perl-Mail-DKIM
perl-Mail-IMAPTalk
perl-Mail-SPF
perl-MailTools
perl-Match-Simple
perl-Math-Int64
perl-Math-Random-ISAAC
perl-MIME-Charset
perl-MIME-Lite
perl-MIME-Types
perl-Mixin-Linewise
perl-MLDBM
perl-Mock-Config
perl-Module-Build-Tiny
perl-Module-CPANfile
perl-Module-Implementation
perl-Module-Install-AuthorRequires
perl-Module-Install-AuthorTests
perl-Module-Install-AutoLicense
perl-Module-Install-GithubMeta
perl-Module-Install-ManifestSkip
perl-Module-Install-ReadmeFromPod
perl-Module-Install-ReadmeMarkdownFromPod
perl-Module-Install-Repository
perl-Module-Install-TestBase
perl-Module-Load-Util
perl-Module-Manifest
perl-Module-Manifest-Skip
perl-Module-Package
perl-Module-Package-Au
perl-Module-Pluggable
perl-Module-Runtime
perl-Module-Signature
perl-Mojolicious
perl-Moo
perl-Mozilla-CA
perl-Mozilla-LDAP
perl-MRO-Compat
perl-multidimensional
perl-namespace-autoclean
perl-namespace-clean
perl-Net-CIDR-Lite
perl-Net-Daemon
perl-Net-DNS
perl-Net-DNS-Resolver-Mock
perl-Net-DNS-Resolver-Programmable
perl-Net-HTTP
perl-Net-IMAP-Simple
perl-Net-IMAP-Simple-SSL
perl-Net-IP
perl-Net-LibIDN2
perl-Net-Patricia
perl-Net-SMTP-SSL
perl-Net-SNMP
perl-Net-Telnet
perl-Newt
perl-NNTPClient
perl-NTLM
perl-Number-Compare
perl-Object-Deadly
perl-Object-HashBase
perl-Package-Anon
perl-Package-Constants
perl-Package-DeprecationManager
perl-Package-Generator
perl-Package-Stash
perl-Package-Stash-XS
perl-PadWalker
perl-Paper-Specs
perl-PAR-Dist
perl-Parallel-Iterator
perl-Params-Classify
perl-Params-Util
perl-Params-Validate
perl-Params-ValidationCompiler
perl-Parse-PMFile
perl-Parse-RecDescent
perl-Parse-Yapp
perl-Path-Tiny
perl-Perl-Critic
perl-Perl-Critic-More
perl-Perl-Destruct-Level
perl-Perl-MinimumVersion
perl-Perl4-CoreLibs
perl-PerlIO-gzip
perl-PerlIO-utf8_strict
perl-PkgConfig-LibPkgConf
perl-Pod-Coverage
perl-Pod-Coverage-TrustPod
perl-Pod-Escapes
perl-Pod-Eventual
perl-Pod-LaTeX
perl-Pod-Markdown
perl-Pod-Parser
perl-Pod-Plainer
perl-Pod-POM
perl-Pod-Spell
perl-PPI
perl-PPI-HTML
perl-PPIx-QuoteLike
perl-PPIx-Regexp
perl-PPIx-Utilities
perl-prefork
perl-Probe-Perl
perl-Razor-Agent
perl-Readonly
perl-Readonly-XS
perl-Ref-Util
perl-Ref-Util-XS
perl-Regexp-Pattern-Perl
perl-Return-MultiLevel
perl-Role-Tiny
perl-Scope-Guard
perl-Scope-Upper
perl-SGMLSpm
perl-SNMP_Session
perl-Socket6
perl-Software-License
perl-Sort-Versions
perl-Specio
perl-Spiffy
perl-strictures
perl-String-CRC32
perl-String-Format
perl-String-ShellQuote
perl-String-Similarity
perl-Sub-Exporter
perl-Sub-Exporter-Progressive
perl-Sub-Identify
perl-Sub-Infix
perl-Sub-Info
perl-Sub-Install
perl-Sub-Name
perl-Sub-Quote
perl-Sub-Uplevel
perl-SUPER
perl-Switch
perl-Syntax-Highlight-Engine-Kate
perl-Sys-CPU
perl-Sys-MemInfo
perl-Sys-Virt
perl-Taint-Runtime
perl-Task-Weaken
perl-Term-Size-Any
perl-Term-Size-Perl
perl-Term-Table
perl-Term-UI
perl-TermReadKey
perl-Test-Base
perl-Test-ClassAPI
perl-Test-CPAN-Meta
perl-Test-CPAN-Meta-JSON
perl-Test-Deep
perl-Test-Differences
perl-Test-DistManifest
perl-Test-Distribution
perl-Test-EOL
perl-Test-Exception
perl-Test-Exit
perl-Test-FailWarnings
perl-Test-Fatal
perl-Test-File
perl-Test-File-ShareDir
perl-Test-Harness
perl-Test-HasVersion
perl-Test-InDistDir
perl-Test-Inter
perl-Test-LeakTrace
perl-Test-LongString
perl-Test-Manifest
perl-Test-Memory-Cycle
perl-Test-MinimumVersion
perl-Test-MockObject
perl-Test-MockRandom
perl-Test-Needs
perl-Test-NoTabs
perl-Test-NoWarnings
perl-Test-Object
perl-Test-Output
perl-Test-Pod
perl-Test-Pod-Coverage
perl-Test-Portability-Files
perl-Test-Requires
perl-Test-RequiresInternet
perl-Test-Script
perl-Test-Simple
perl-Test-SubCalls
perl-Test-Synopsis
perl-Test-Taint
perl-Test-TrailingSpace
perl-Test-utf8
perl-Test-Vars
perl-Test-Warn
perl-Test-Without-Module
perl-Test2-Plugin-NoWarnings
perl-Test2-Suite
perl-Test2-Tools-Explain
perl-Text-CharWidth
perl-Text-CSV_XS
perl-Text-Diff
perl-Text-Glob
perl-Text-Iconv
perl-Text-Soundex
perl-Text-Unidecode
perl-Text-WrapI18N
perl-Tie-IxHash
perl-TimeDate
perl-Tree-DAG_Node
perl-Type-Tiny
perl-Unicode-EastAsianWidth
perl-Unicode-LineBreak
perl-Unicode-Map8
perl-Unicode-String
perl-Unicode-UTF8
perl-UNIVERSAL-can
perl-UNIVERSAL-isa
perl-Unix-Syslog
perl-URI
perl-Variable-Magic
perl-Version-Requirements
perl-WWW-RobotRules
perl-XML-Catalog
perl-XML-DOM
perl-XML-Dumper
perl-XML-Filter-BufferText
perl-XML-Generator
perl-XML-Grove
perl-XML-Handler-YAWriter
perl-XML-LibXML
perl-XML-LibXSLT
perl-XML-NamespaceSupport
perl-XML-Parser-Lite
perl-XML-RegExp
perl-XML-SAX
perl-XML-SAX-Base
perl-XML-SAX-Writer
perl-XML-Simple
perl-XML-TokeParser
perl-XML-TreeBuilder
perl-XML-Twig
perl-XML-Writer
perl-XML-XPath
perl-XML-XPathEngine
perl-XString
perl-YAML-LibYAML
perl-YAML-PP
perl-YAML-Syck
perltidy
pesign
phodav
php
php-pear
php-pecl-apcu
php-pecl-zip
physfs
picosat
pinfo
pipewire
pixman
pkcs11-helper
pkgconf
plexus-cipher
plexus-containers
plexus-pom
plexus-sec-dispatcher
plotutils
pmdk-convert
pmix
pngcrush
pngnq
po4a
podman
poetry
policycoreutils
polkit-pkla-compat
polkit-qt-1
portreserve
postfix
potrace
powertop
ppp
pps-tools
pptp
priv_wrapper
procmail
prometheus-node-exporter
ps_mem
psacct
pssh
psutils
ptlib
publicsuffix-list
pugixml
pulseaudio
puppet
pwgen
pyatspi
pybind11
pycairo
pyelftools
pyflakes
pygobject3
PyGreSQL
pykickstart
pylint
pyparted
pyproject-rpm-macros
pyserial
python-absl-py
python-aiodns
python-aiohttp
python-alsa
python-archspec
python-argcomplete
python-argparse-manpage
python-astroid
python-astunparse
python-async-generator
python-augeas
python-azure-sdk
python-backoff
python-beautifulsoup4
python-betamax
python-blinker
python-blivet
python-boltons
python-breathe
python-cached_property
python-cbor2
python-charset-normalizer
python-cheetah
python-click
python-cmd2
python-colorama
python-CommonMark
python-conda-libmamba-solver
python-conda-package-handling
python-conda-package-streaming
python-configshell
python-cpuinfo
python-cups
python-curio
python-cytoolz
python-d2to1
python-dbus-client-gen
python-dbus-python-client-gen
python-dbus-signature-pyparsing
python-dbusmock
python-ddt
python-debtcollector
python-decorator
python-distlib
python-dmidecode
python-dns
python-dtopt
python-dulwich
python-editables
python-enchant
python-entrypoints
python-ethtool
python-evdev
python-extras
python-faker
python-fasteners
python-fastjsonschema
python-fields
python-filelock
python-fixtures
python-flake8
python-flaky
python-flask
python-flit
python-flit-core
python-fluidity-sm
python-frozendict
python-funcsigs
python-gast
python-genshi
python-google-auth
python-google-auth-oauthlib
python-greenlet
python-gssapi
python-h5py
python-hatch-fancy-pypi-readme
python-hatch-vcs
python-hatchling
python-hs-dbus-signature
python-html5lib
python-httplib2
python-humanize
python-hwdata
python-importlib-metadata
python-iniconfig
python-inotify
python-into-dbus-python
python-IPy
python-iso8601
python-isodate
python-isort
python-itsdangerous
python-junit_xml
python-junitxml
python-justbases
python-justbytes
python-jwcrypto
python-jwt
python-kdcproxy
python-kerberos
python-kmod
python-kubernetes
python-lark
python-lazy-object-proxy
python-ldap
python-linux-procfs
python-lit
python-looseversion
python-markdown
python-markdown-it-py
python-mccabe
python-mdurl
python-memcached
python-menuinst
python-mimeparse
python-mock
python-monotonic
python-more-itertools
python-mpmath
python-msal
python-msrestazure
python-mutagen
python-networkx
python-nose2
python-ntlm-auth
python-oauth2client
python-openpyxl
python-openstackdocstheme
python-oslo-i18n
python-oslo-sphinx
python-paramiko
python-pathspec
python-pefile
python-pexpect
python-pkgconfig
python-platformdirs
python-pluggy
python-podman-api
python-poetry-core
python-process-tests
python-productmd
python-prometheus_client
python-ptyprocess
python-pycosat
python-pydbus
python-pymongo
python-PyMySQL
python-pyperclip
python-pyproject-api
python-pyproject-metadata
python-pyroute2
python-pyrsistent
python-pytest-benchmark
python-pytest-cov
python-pytest-expect
python-pytest-flake8
python-pytest-flakes
python-pytest-forked
python-pytest-mock
python-pytest-relaxed
python-pytest-runner
python-pytest-subtests
python-pytest-timeout
python-pytest-xdist
python-pytoml
python-pyudev
python-pywbem
python-qrcode
python-rdflib
python-recommonmark
python-requests-file
python-requests-ftp
python-requests-kerberos
python-requests-mock
python-requests-oauthlib
python-requests-toolbelt
python-requests_ntlm
python-responses
python-retrying
python-rfc3986
python-rich
python-rpm-generators
python-rpmautospec-core
python-rpmfluff
python-rtslib
python-ruamel-yaml
python-ruamel-yaml-clib
python-s3transfer
python-schedutils
python-semantic_version
python-should_dsl
python-simpleline
python-slip
python-smartypants
python-sniffio
python-sortedcontainers
python-soupsieve
python-sphinx
python-sphinx-epytext
python-sphinx-theme-py3doc-enhanced
python-sphinx_rtd_theme
python-sphinxcontrib-apidoc
python-sphinxcontrib-applehelp
python-sphinxcontrib-devhelp
python-sphinxcontrib-htmlhelp
python-sphinxcontrib-httpdomain
python-sphinxcontrib-jquery
python-sphinxcontrib-jsmath
python-sphinxcontrib-qthelp
python-sphinxcontrib-serializinghtml
python-sphinxygen
python-spnego
python-sqlalchemy
python-suds
python-systemd
python-tempita
python-templated-dictionary
python-termcolor
python-testpath
python-testresources
python-testscenarios
python-testtools
python-tidy
python-toml
python-tomli
python-toolz
python-tornado
python-tox
python-tox-current-env
python-tqdm
python-trio
python-trove-classifiers
python-typing-extensions
python-typogrify
python-uamqp
python-uritemplate
python-urwid
python-uswid
python-varlink
python-versioneer
python-virt-firmware
python-voluptuous
python-waitress
python-webencodings
python-webtest
python-wheel
python-whoosh
python-winrm
python-wrapt
python-xlrd
python-xlsxwriter
python-xmltodict
python-yubico
python-zipp
python-zmq
python-zstandard
python-zstd
python3-mallard-ducktype
python3-pycares
python3-pytest-asyncio
python3-typed_ast
pyusb
pywbem
pyxattr
qemu
qhull
qpdf
qperf
qr-code-generator
qt-rpm-macros
qt5-qtconnectivity
qt5-qtsensors
qt5-qtserialport
qtbase
qtdeclarative
qtsvg
qttools
quagga
quota
radvd
ragel
raptor2
rarian
rasdaemon
rasqal
rcs
rdist
rdma-core
re2
re2c
realmd
rear
recode
reproc
resource-agents
rest
rhash
rlwrap
rp-pppoe
rpm-mpi-hooks
rpmdevtools
rpmlint
rr
rtkit
rtl-sdr
ruby-augeas
rubygem-bson
rubygem-coderay
rubygem-diff-lcs
rubygem-flexmock
rubygem-hpricot
rubygem-introspection
rubygem-liquid
rubygem-maruku
rubygem-metaclass
rubygem-mongo
rubygem-mustache
rubygem-mysql2
rubygem-pkg-config
rubygem-rake
rubygem-rake-compiler
rubygem-ronn
rubygem-rouge
rubygem-rspec
rubygem-rspec-expectations
rubygem-rspec-mocks
rubygem-rspec-support
rubygem-scanf
rubygem-sys-filesystem
rubygem-thread_order
rusers
rust-cbindgen
s-nail
samba
sanlock
sassist
satyr
sbc
sblim-cim-client2
sblim-cmpi-base
sblim-cmpi-devel
sblim-cmpi-fsvol
sblim-cmpi-network
sblim-cmpi-nfsv3
sblim-cmpi-nfsv4
sblim-cmpi-params
sblim-cmpi-sysfs
sblim-cmpi-syslog
sblim-indication_helper
sblim-sfcb
sblim-sfcc
sblim-sfcCommon
sblim-testsuite
sblim-wbemcli
scl-utils
scotch
screen
scrub
sdl12-compat
SDL2
SDL_sound
sdparm
seabios
secilc
selinux-policy
serd
setools
setserial
setuptool
sgabios
sgml-common
sgpio
shared-mime-info
sharutils
shim-unsigned-aarch64
shim-unsigned-x64
simdjson
sip
sisu
skkdic
sleuthkit
slirp4netns
smartmontools
smc-tools
socket_wrapper
softhsm
sombok
sord
sos
sound-theme-freedesktop
soundtouch
sox
soxr
sparsehash
spausedd
spdlog
speex
speexdsp
spice-protocol
spice-vdagent
spirv-headers
spirv-tools
splix
squashfs-tools
squid
sratom
sscg
star
startup-notification
stress-ng
strongswan
stunnel
subscription-manager
subunit
suitesparse
SuperLU
supermin
switcheroo-control
swtpm
symlinks
sympy
sysfsutils
systemd
systemd-bootchart
t1lib
t1utils
taglib
tang
targetcli
tbb
tcl-pgtcl
tclx
teckit
telnet
thrift
tidy
time
tini
tinycdb
tix
tk
tlog
tmpwatch
tn5250
tofrodos
tokyocabinet
trace-cmd
tss2
ttembed
ttmkfdir
tuna
twolame
uchardet
uclibc-ng
ucpp
ucs-miscfixed-fonts
ucx
udftools
udica
udisks2
uglify-js
uid_wrapper
umockdev
unicode-emoji
unicode-ucd
unique3
units
upower
uriparser
urlview
usb_modeswitch
usb_modeswitch-data
usbguard
usbip
usbmuxd
usbredir
usermode
ustr
uthash
uuid
uw-imap
v4l-utils
vhostmd
vino
virglrenderer
virt-p2v
virt-top
virt-what
virt-who
vitess
vmem
volume_key
vorbis-tools
vte291
vulkan-headers
vulkan-loader
watchdog
wavpack
wayland
wayland-protocols
web-assets
webrtc-audio-processing
websocketpp
wget
whois
wireguard-tools
wireless-regdb
wireshark
woff2
wordnet
words
wpebackend-fdo
wsmancli
wvdial
x3270
xapian-core
Xaw3d
xcb-proto
xcb-util
xcb-util-image
xcb-util-keysyms
xcb-util-renderutil
xcb-util-wm
xdelta
xdg-dbus-proxy
xdg-utils
xdp-tools
xerces-c
xfconf
xfsdump
xhtml1-dtds
xkeyboard-config
xmlstarlet
xmltoman
xmvn
xorg-x11-apps
xorg-x11-drv-libinput
xorg-x11-font-utils
xorg-x11-fonts
xorg-x11-proto-devel
xorg-x11-server
xorg-x11-server-utils
xorg-x11-server-Xwayland
xorg-x11-util-macros
xorg-x11-utils
xorg-x11-xauth
xorg-x11-xbitmaps
xorg-x11-xinit
xorg-x11-xkb-utils
xorg-x11-xtrans-devel
xpp3
xrestop
xterm
xxhash
yajl
yaml-cpp
yasm
yelp-tools
yelp-xsl
ykclient
yp-tools
ypbind
ypserv
yq
z3
zenity
zerofree
zfs-fuse
zipper
zix
zopfli
zziplib |
+| Fedora | [Fedora MIT License Declaration](https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing#License_of_Fedora_SPEC_Files) | 389-ds-base
a52dec
abseil-cpp
accountsservice
acpica-tools
acpid
adcli
adobe-mappings-cmap
adobe-mappings-pdf
advancecomp
adwaita-icon-theme
afflib
aide
alsa-firmware
alsa-plugins
amtk
amtterm
annobin
ansible-freeipa
archivemount
arptables
arpwatch
asio
aspell
aspell-en
at
at-spi2-atk
at-spi2-core
atf
atk
atop
attr
audiofile
augeas
authbind
authd
authselect
autoconf213
avahi
babeltrace
babeltrace2
babl
baekmuk-ttf-fonts
bats
bcache-tools
biosdevname
blosc
bluez
bmake
bolt
boom-boot
booth
botan2
breezy
brotli
buildah
busybox
bwidget
byacc
ca-certificates
cachefilesd
cairomm
calamares
capnproto
capstone
catatonit
catch
catch1
cdrdao
celt051
cereal
certmonger
cfitsio
cgdcbxd
chan
CharLS
checkpolicy
checksec
chrony
cim-schema
cjkuni-uming-fonts
cjose
ck
cldr-emoji-annotation
clucene
clutter
clutter-gst3
clutter-gtk
cmocka
cogl
collectd
colm
color-filesystem
colord
colorize
compat-lua
compiler-rt
conda
conmon
conntrack-tools
console-setup
container-exception-logger
convmv
corosync
corosync-qdevice
cpp-hocon
cppcheck
cpprest
cpptest
cpufrequtils
cpuid
criu
crun
crypto-policies
cryptsetup
cscope
ctags
CUnit
cups
custodia
Cython
dbus-c++
dbus-python
dconf
dcraw
debootstrap
deltarpm
desktop-file-utils
device-mapper-persistent-data
dhcpcd
dietlibc
diffstat
ding-libs
discount
distribution-gpg-keys
dleyna-connector-dbus
dleyna-core
dmraid
dnf
dnf-plugins-core
docbook-dtds
docbook-simple
docbook-slides
docbook-style-dsssl
docbook-utils
docbook2X
docbook5-schemas
docbook5-style-xsl
dogtail
dos2unix
dotconf
dovecot
dpdk
driverctl
dropwatch
drpm
duktape
dumpet
dvd+rw-tools
dwarves
dwz
dyninst
ebtables
edac-utils
edk2
efax
efi-rpm-macros
egl-wayland
eglexternalplatform
elinks
enca
enchant
enchant2
enscript
environment-modules
erofs-utils
evemu
execstack
exempi
exiv2
expected
extra-cmake-modules
fabtests
facter
fakechroot
fakeroot
fdupes
fence-virt
fetchmail
fftw
filebench
fio
firewalld
flac
flashrom
flatbuffers
flite
fltk
fmt
fontawesome-fonts
fontawesome4-fonts
fontpackages
fonts-rpm-macros
foomatic-db
freeglut
freeipmi
freeradius
freetds
freexl
fribidi
fros
frr
fsverity-utils
fuse-overlayfs
fuse-sshfs
fuse-zip
fuse3
future
fwupd
fwupd-efi
fxload
gavl
gbenchmark
gconf-editor
GConf2
gcovr
gcr
gdal
gdisk
gdk-pixbuf2
generic-logos
genwqe-tools
geoclue2
GeoIP
GeoIP-GeoLite-data
geolite2
geos
gfs2-utils
gi-docgen
giflib
gl-manpages
glew
glm
glog
glslang
glusterfs
gnome-desktop-testing
gnome-doc-utils
gnome-icon-theme
gnome-keyring
gnu-efi
go-rpm-macros
gom
google-api-python-client
google-crosextra-caladea-fonts
google-crosextra-carlito-fonts
google-guice
google-noto-cjk-fonts
google-noto-emoji-fonts
google-roboto-slab-fonts
gphoto2
gpm
gpsbabel
graphene
graphite2
graphviz
grubby
gsettings-desktop-schemas
gsl
gsm
gspell
gssdp
gssntlmssp
gstreamer1
gstreamer1-plugins-base
gtk-vnc
gtk2
gtk3
gtkspell
gupnp
gupnp-av
gupnp-dlna
gupnp-igd
hardening-check
hdf
hdf5
heimdal
help2man
hexedit
hicolor-icon-theme
hiera
highlight
hivex
hostname
hping3
hsakmt
htop
hunspell
hunspell-af
hunspell-ar
hunspell-as
hunspell-ast
hunspell-az
hunspell-be
hunspell-bg
hunspell-bn
hunspell-br
hunspell-ca
hunspell-cop
hunspell-csb
hunspell-cv
hunspell-cy
hunspell-da
hunspell-de
hunspell-dsb
hunspell-el
hunspell-en
hunspell-eo
hunspell-es
hunspell-et
hunspell-eu
hunspell-fa
hunspell-fj
hunspell-fo
hunspell-fr
hunspell-fur
hunspell-fy
hunspell-ga
hunspell-gd
hunspell-gl
hunspell-grc
hunspell-gu
hunspell-gv
hunspell-haw
hunspell-hi
hunspell-hil
hunspell-hr
hunspell-hsb
hunspell-ht
hunspell-hu
hunspell-hy
hunspell-ia
hunspell-id
hunspell-is
hunspell-it
hunspell-kk
hunspell-km
hunspell-kn
hunspell-ko
hunspell-ku
hunspell-ky
hunspell-la
hunspell-lb
hunspell-ln
hunspell-mai
hunspell-mg
hunspell-mi
hunspell-mk
hunspell-ml
hunspell-mn
hunspell-mos
hunspell-mr
hunspell-ms
hunspell-mt
hunspell-nds
hunspell-ne
hunspell-nl
hunspell-no
hunspell-nr
hunspell-nso
hunspell-ny
hunspell-om
hunspell-or
hunspell-pa
hunspell-pl
hunspell-pt
hunspell-quh
hunspell-ro
hunspell-ru
hunspell-rw
hunspell-se
hunspell-shs
hunspell-si
hunspell-sk
hunspell-sl
hunspell-smj
hunspell-so
hunspell-sq
hunspell-sr
hunspell-sv
hunspell-sw
hunspell-ta
hunspell-te
hunspell-tet
hunspell-th
hunspell-tk
hunspell-tl
hunspell-tn
hunspell-tpi
hunspell-ts
hunspell-uk
hunspell-uz
hunspell-ve
hunspell-vi
hunspell-wa
hunspell-xh
hunspell-yi
hwdata
hwloc
hyperscan
hyperv-daemons
hyphen
hyphen-as
hyphen-bg
hyphen-bn
hyphen-ca
hyphen-da
hyphen-de
hyphen-el
hyphen-es
hyphen-fa
hyphen-fo
hyphen-fr
hyphen-ga
hyphen-gl
hyphen-grc
hyphen-gu
hyphen-hi
hyphen-hsb
hyphen-hu
hyphen-ia
hyphen-id
hyphen-is
hyphen-it
hyphen-kn
hyphen-ku
hyphen-lt
hyphen-mi
hyphen-ml
hyphen-mn
hyphen-mr
hyphen-nl
hyphen-or
hyphen-pa
hyphen-pl
hyphen-pt
hyphen-ro
hyphen-ru
hyphen-sa
hyphen-sk
hyphen-sl
hyphen-sv
hyphen-ta
hyphen-te
hyphen-tk
hyphen-uk
ibus
ibus-chewing
ibus-hangul
ibus-kkc
ibus-libzhuyin
ibus-m17n
ibus-rawcode
ibus-sayura
ibus-table
ibus-table-chinese
icc-profiles-openicc
icon-naming-utils
icoutils
iftop
iio-sensor-proxy
ilmbase
im-chooser
imaptest
imsettings
indent
infinipath-psm
inih
iniparser
intel-cmt-cat
intel-ipsec-mb
ioping
IP2Location
ipa-pgothic-fonts
ipcalc
ipmitool
iprutils
iptraf-ng
iptstate
irssi
iscsi-initiator-utils
isns-utils
iso-codes
isomd5sum
iw
iwd
jabberpy
jakarta-servlet
jasper
javapackages-bootstrap
javapackages-tools
jbigkit
jdom2
jemalloc
jfsutils
jimtcl
jose
js-jquery
jsoncpp
Judy
jurand
kata-containers
kde-filesystem
kde-settings
kernel-srpm-macros
kexec-tools
keybinder3
keycloak-httpd-client-install
kf
kf-kconfig
kf-kcoreaddons
kf-ki18n
kf-kwidgetsaddons
kpmcore
kronosnet
ksh
kyotocabinet
kyua
ladspa
lame
langtable
lapack
lasso
latencytop
lato-fonts
lcms2
lcov
ldns
leatherman
ledmon
lensfun
leveldb
lftp
libabw
libaec
libao
libappstream-glib
libarrow
libart_lgpl
libasyncns
libatasmart
libavc1394
libblockdev
libbpf
libbsd
libburn
libbytesize
libcacard
libcanberra
libcbor
libcdio
libcdio-paranoia
libcdr
libcgroup
libchewing
libcli
libcmis
libcmpiutil
libcomps
libcroco
libcxx
libdaemon
libdap
libdatrie
libdazzle
libdbi
libdbusmenu
libdc1394
libdecor
libdeflate
libdmx
libdnf
libdrm
libdvdnav
libdvdread
libdwarf
libeasyfc
libecap
libecb
libei
libell
libEMF
libeot
libepoxy
libepubgen
libesmtp
libetonyek
libev
libevdev
libexif
libexttextcat
libfabric
libfontenc
libfreehand
libftdi
libgadu
libgdither
libgee
libgee06
libgeotiff
libgexiv2
libgit2
libgit2-glib
libglade2
libglvnd
libgovirt
libgphoto2
libgsf
libgta
libguestfs
libgusb
libgxim
libgxps
libhangul
libhugetlbfs
libibcommon
libical
libICE
libicns
libid3tag
libIDL
libidn2
libiec61883
libieee1284
libimobiledevice
libindicator
libinput
libiodbc
libipt
libiptcdata
libiscsi
libisoburn
libisofs
libjaylink
libjcat
libkcapi
libkeepalive
libkkc
libkkc-data
libkml
liblangtag
libldb
libldm
liblerc
liblockfile
liblognorm
liblouis
liblqr-1
liblzf
libmad
libmamba
libmd
libmediaart
libmicrohttpd
libmikmod
libmodman
libmodplug
libmodulemd1
libmpcdec
libmspub
libmtp
libmusicbrainz5
libmwaw
libnbd
libnet
libnetfilter_log
libnfs
libnotify
libntlm
libnumbertext
libnvme
liboauth
libodfgen
libofa
libogg
liboggz
liboil
libomxil-bellagio
libopenraw
liboping
libosinfo
libotf
libotr
libpagemaker
libpaper
libpciaccess
libpeas
libpfm
libpinyin
libplist
libpmemobj-cpp
libpng12
libpng15
libproxy
libpsm2
libpwquality
libqb
libqxp
libraqm
LibRaw
libraw1394
libreport
libreswan
librevenge
librsvg2
librx
libsamplerate
libsass
libsecret
libsemanage
libsigc++20
libsigsegv
libslirp
libSM
libsmbios
libsmi
libsndfile
libsodium
libspiro
libsrtp
libssh
libstaroffice
libstemmer
libstoragemgmt
libtdb
libteam
libtevent
libthai
libtnc
libtomcrypt
libtommath
libtpms
libtracecmd
libtraceevent
libtracefs
libtranslit
libucil
libunicap
libuninameslist
liburing
libusb1
libusbmuxd
libuser
libutempter
libvarlink
libverto
libvirt-dbus
libvirt-glib
libvirt-java
libvirt-python
libvisio
libvisual
libvoikko
libvorbis
libvpx
libwacom
libwnck3
libwpd
libwpe
libwpg
libwps
libwvstreams
libX11
libXau
libXaw
libxcb
libXcomposite
libxcrypt
libXcursor
libxcvt
libXdamage
libXdmcp
libXext
libxfce4util
libXfixes
libXfont2
libXft
libXi
libXinerama
libxkbcommon
libxkbfile
libxklavier
libxmlb
libXmu
libXpm
libXrandr
libXrender
libXres
libXScrnSaver
libxshmfence
libXt
libXtst
libXv
libXxf86vm
libyang
libyubikey
libzip
libzmf
lilv
linuxconsoletools
linuxptp
lksctp-tools
lldpd
llhttp
lockdev
logwatch
lpsolve
lrzsz
lua
lua-expat
lua-filesystem
lua-json
lua-lpeg
lua-lunitx
lua-rpm-macros
lua-term
luajit
lujavrite
luksmeta
lutok
lv2
lzip
lzop
m17n-db
m17n-lib
mac-robber
mailcap
mailx
malaga
malaga-suomi-voikko
mallard-rng
man-pages-cs
man-pages-es
man-pages-it
man-pages-ja
man-pages-ko
man-pages-pl
man-pages-ru
man-pages-zh-CN
mandoc
mariadb
mariadb-connector-c
mariadb-connector-odbc
marisa
maven-compiler-plugin
maven-jar-plugin
maven-parent
maven-resolver
maven-resources-plugin
maven-surefire
maven-wagon
mcelog
mcpp
mcstrans
mdadm
mdds
mdevctl
meanwhile
mecab
mecab-ipadic
media-player-info
memcached
memkind
mesa
mesa-libGLU
metis
microcode_ctl
microdnf
minicom
minizip-ng
mksh
mobile-broadband-provider-info
mock
mock-core-configs
mod_auth_gssapi
mod_auth_mellon
mod_auth_openidc
mod_authnz_pam
mod_fcgid
mod_http2
mod_intercept_form_submit
mod_lookup_identity
mod_md
mod_security
mod_security_crs
mod_wsgi
mokutil
mosh
mpage
mrtg
mstflint
mt-st
mtdev
mtools
mtr
mtx
munge
mutt
mythes
mythes-bg
mythes-ca
mythes-cs
mythes-da
mythes-de
mythes-el
mythes-en
mythes-eo
mythes-es
mythes-fr
mythes-ga
mythes-hu
mythes-mi
mythes-ne
mythes-nl
mythes-pl
mythes-pt
mythes-ro
mythes-ru
mythes-sk
mythes-sl
mythes-sv
mythes-uk
nbd
nbdkit
neon
netavark
netcdf
netcf
netlabel_tools
netpbm
netsniff-ng
nfs4-acl-tools
nftables
nilfs-utils
nkf
nload
nlopt
nodejs-packaging
nss-mdns
nss-pam-ldapd
nss_nis
nss_wrapper
ntfs-3g
ntfs-3g-system-compression
numad
numatop
numpy
nvml
oath-toolkit
ocaml
ocaml-alcotest
ocaml-astring
ocaml-augeas
ocaml-base
ocaml-bigarray-compat
ocaml-bisect-ppx
ocaml-calendar
ocaml-camlp-streams
ocaml-camlp5
ocaml-camomile
ocaml-cinaps
ocaml-cmdliner
ocaml-compiler-libs-janestreet
ocaml-cppo
ocaml-csexp
ocaml-csv
ocaml-ctypes
ocaml-curses
ocaml-dune
ocaml-extlib
ocaml-fileutils
ocaml-findlib
ocaml-fmt
ocaml-fpath
ocaml-gettext
ocaml-integers
ocaml-libvirt
ocaml-luv
ocaml-lwt
ocaml-markup
ocaml-mmap
ocaml-num
ocaml-ocamlbuild
ocaml-ocplib-endian
ocaml-ounit
ocaml-parsexp
ocaml-pp
ocaml-ppx-derivers
ocaml-ppx-here
ocaml-ppx-let
ocaml-ppxlib
ocaml-re
ocaml-react
ocaml-result
ocaml-seq
ocaml-sexplib
ocaml-sexplib0
ocaml-srpm-macros
ocaml-stdio
ocaml-stdlib-random
ocaml-topkg
ocaml-tyxml
ocaml-uutf
ocaml-xml-light
ocaml-zarith
ocl-icd
oddjob
ogdi
omping
opa
opal
open-vm-tools
openblas
opencc
opencl-filesystem
opencl-headers
opencryptoki
opencsd
opendnssec
OpenEXR
openjade
openjpeg2
openmpi
openobex
openoffice-lv
openrdate
opensc
openslp
opensm
opensp
openssl
openssl-ibmpkcs11
openssl-pkcs11
openwsman
optipng
orangefs
ORBit2
orc
os-prober
osinfo-db
osinfo-db-tools
overpass-fonts
p11-kit
p7zip
pacemaker
pacrunner
pakchois
pam_krb5
pam_wrapper
papi
paps
parallel
passim
patchelf
patchutils
pbzip2
pcp
pcsc-lite
pcsc-lite-ccid
PEGTL
perl
perl-Algorithm-C3
perl-Algorithm-Diff
perl-Alien-Build
perl-Alien-pkgconf
perl-AnyEvent
perl-AnyEvent-AIO
perl-AnyEvent-BDB
perl-App-cpanminus
perl-App-FatPacker
perl-AppConfig
perl-Archive-Extract
perl-Archive-Zip
perl-Authen-SASL
perl-B-COW
perl-B-Debug
perl-B-Hooks-EndOfScope
perl-B-Hooks-OP-Check
perl-B-Keywords
perl-B-Lint
perl-bareword-filehandles
perl-BDB
perl-Bit-Vector
perl-boolean
perl-Browser-Open
perl-BSD-Resource
perl-Business-ISBN
perl-Business-ISBN-Data
perl-Bytes-Random-Secure
perl-Capture-Tiny
perl-Carp-Clan
perl-CBOR-XS
perl-Class-Accessor
perl-Class-C3
perl-Class-C3-XS
perl-Class-Data-Inheritable
perl-Class-Factory-Util
perl-Class-Inspector
perl-Class-ISA
perl-Class-Load
perl-Class-Load-XS
perl-Class-Method-Modifiers
perl-Class-Singleton
perl-Class-Tiny
perl-Class-XSAccessor
perl-Clone
perl-Color-ANSI-Util
perl-Color-RGB-Util
perl-ColorThemeBase-Static
perl-ColorThemeRole-ANSI
perl-ColorThemes-Standard
perl-ColorThemeUtil-ANSI
perl-Compress-Bzip2
perl-Compress-LZF
perl-Compress-Raw-Lzma
perl-Config-AutoConf
perl-Config-INI
perl-Config-INI-Reader-Multiline
perl-Config-IniFiles
perl-Config-Simple
perl-Config-Tiny
perl-Const-Fast
perl-Convert-ASN1
perl-Convert-Bencode
perl-Coro
perl-Coro-Multicore
perl-CPAN-Changes
perl-CPAN-DistnameInfo
perl-CPAN-Meta-Check
perl-Cpanel-JSON-XS
perl-Crypt-CBC
perl-Crypt-DES
perl-Crypt-IDEA
perl-Crypt-OpenSSL-Bignum
perl-Crypt-OpenSSL-Guess
perl-Crypt-OpenSSL-Random
perl-Crypt-OpenSSL-RSA
perl-Crypt-PasswdMD5
perl-Crypt-Random-Seed
perl-CSS-Tiny
perl-Data-Dump
perl-Data-Munge
perl-Data-OptList
perl-Data-Peek
perl-Data-Section
perl-Data-UUID
perl-Date-Calc
perl-Date-ISO8601
perl-Date-Manip
perl-DateTime
perl-DateTime-Format-Builder
perl-DateTime-Format-DateParse
perl-DateTime-Format-HTTP
perl-DateTime-Format-IBeat
perl-DateTime-Format-ISO8601
perl-DateTime-Format-Mail
perl-DateTime-Format-Strptime
perl-DateTime-Locale
perl-DateTime-TimeZone
perl-DateTime-TimeZone-SystemV
perl-DateTime-TimeZone-Tzfile
perl-DBD-MySQL
perl-Devel-CallChecker
perl-Devel-Caller
perl-Devel-CheckBin
perl-Devel-CheckLib
perl-Devel-Cycle
perl-Devel-EnforceEncapsulation
perl-Devel-GlobalDestruction
perl-Devel-GlobalDestruction-XS
perl-Devel-Hide
perl-Devel-Leak
perl-Devel-LexAlias
perl-Devel-Refcount
perl-Devel-Size
perl-Devel-StackTrace
perl-Devel-Symdump
perl-Digest-BubbleBabble
perl-Digest-CRC
perl-Digest-HMAC
perl-Digest-SHA1
perl-Dist-CheckConflicts
perl-DynaLoader-Functions
perl-Email-Address
perl-Email-Date-Format
perl-Encode-Detect
perl-Encode-EUCJPASCII
perl-Encode-IMAPUTF7
perl-Encode-Locale
perl-Env-ShellWords
perl-Error
perl-EV
perl-Eval-Closure
perl-Event
perl-Exception-Class
perl-Expect
perl-ExtUtils-Config
perl-ExtUtils-Depends
perl-ExtUtils-Helpers
perl-ExtUtils-InstallPaths
perl-ExtUtils-PkgConfig
perl-FCGI
perl-Fedora-VSP
perl-FFI-CheckLib
perl-File-BaseDir
perl-File-BOM
perl-File-chdir
perl-File-CheckTree
perl-File-Copy-Recursive
perl-File-DesktopEntry
perl-File-Find-Object
perl-File-Find-Object-Rule
perl-File-Find-Rule
perl-File-Find-Rule-Perl
perl-File-Inplace
perl-File-Listing
perl-File-MimeInfo
perl-File-pushd
perl-File-ReadBackwards
perl-File-Remove
perl-File-ShareDir
perl-File-ShareDir-Install
perl-File-Slurp
perl-File-Slurp-Tiny
perl-File-Slurper
perl-File-TreeCreate
perl-File-Type
perl-Font-TTF
perl-FreezeThaw
perl-GD
perl-GD-Barcode
perl-generators
perl-Getopt-ArgvFile
perl-gettext
perl-Graphics-ColorNamesLite-WWW
perl-GSSAPI
perl-Guard
perl-Hook-LexWrap
perl-HTML-Parser
perl-HTML-Tagset
perl-HTML-Tree
perl-HTTP-Cookies
perl-HTTP-Daemon
perl-HTTP-Date
perl-HTTP-Message
perl-HTTP-Negotiate
perl-Image-Base
perl-Image-Info
perl-Image-Xbm
perl-Image-Xpm
perl-Import-Into
perl-Importer
perl-inc-latest
perl-indirect
perl-Inline-Files
perl-IO-AIO
perl-IO-All
perl-IO-CaptureOutput
perl-IO-Compress-Lzma
perl-IO-HTML
perl-IO-Multiplex
perl-IO-SessionData
perl-IO-Socket-INET6
perl-IO-String
perl-IO-stringy
perl-IO-Tty
perl-IPC-Run
perl-IPC-Run3
perl-IPC-System-Simple
perl-JSON
perl-JSON-Color
perl-JSON-MaybeXS
perl-LDAP
perl-libnet
perl-libwww-perl
perl-libxml-perl
perl-Lingua-EN-Inflect
perl-List-MoreUtils-XS
perl-local-lib
perl-Locale-Codes
perl-Locale-Maketext-Gettext
perl-Locale-Msgfmt
perl-Locale-PO
perl-Log-Message
perl-Log-Message-Simple
perl-LWP-MediaTypes
perl-LWP-Protocol-https
perl-Mail-AuthenticationResults
perl-Mail-DKIM
perl-Mail-IMAPTalk
perl-Mail-SPF
perl-MailTools
perl-Match-Simple
perl-Math-Int64
perl-Math-Random-ISAAC
perl-MIME-Charset
perl-MIME-Lite
perl-MIME-Types
perl-Mixin-Linewise
perl-MLDBM
perl-Mock-Config
perl-Module-Build-Tiny
perl-Module-CPANfile
perl-Module-Implementation
perl-Module-Install-AuthorRequires
perl-Module-Install-AuthorTests
perl-Module-Install-AutoLicense
perl-Module-Install-GithubMeta
perl-Module-Install-ManifestSkip
perl-Module-Install-ReadmeFromPod
perl-Module-Install-ReadmeMarkdownFromPod
perl-Module-Install-Repository
perl-Module-Install-TestBase
perl-Module-Load-Util
perl-Module-Manifest
perl-Module-Manifest-Skip
perl-Module-Package
perl-Module-Package-Au
perl-Module-Pluggable
perl-Module-Runtime
perl-Module-Signature
perl-Mojolicious
perl-Moo
perl-Mozilla-CA
perl-Mozilla-LDAP
perl-MRO-Compat
perl-multidimensional
perl-namespace-autoclean
perl-namespace-clean
perl-Net-CIDR-Lite
perl-Net-Daemon
perl-Net-DNS
perl-Net-DNS-Resolver-Mock
perl-Net-DNS-Resolver-Programmable
perl-Net-HTTP
perl-Net-IMAP-Simple
perl-Net-IMAP-Simple-SSL
perl-Net-IP
perl-Net-LibIDN2
perl-Net-Patricia
perl-Net-SMTP-SSL
perl-Net-SNMP
perl-Net-Telnet
perl-Newt
perl-NNTPClient
perl-NTLM
perl-Number-Compare
perl-Object-Deadly
perl-Object-HashBase
perl-Package-Anon
perl-Package-Constants
perl-Package-DeprecationManager
perl-Package-Generator
perl-Package-Stash
perl-Package-Stash-XS
perl-PadWalker
perl-Paper-Specs
perl-PAR-Dist
perl-Parallel-Iterator
perl-Params-Classify
perl-Params-Util
perl-Params-Validate
perl-Params-ValidationCompiler
perl-Parse-PMFile
perl-Parse-RecDescent
perl-Parse-Yapp
perl-Path-Tiny
perl-Perl-Critic
perl-Perl-Critic-More
perl-Perl-Destruct-Level
perl-Perl-MinimumVersion
perl-Perl4-CoreLibs
perl-PerlIO-gzip
perl-PerlIO-utf8_strict
perl-PkgConfig-LibPkgConf
perl-Pod-Coverage
perl-Pod-Coverage-TrustPod
perl-Pod-Escapes
perl-Pod-Eventual
perl-Pod-LaTeX
perl-Pod-Markdown
perl-Pod-Parser
perl-Pod-Plainer
perl-Pod-POM
perl-Pod-Spell
perl-PPI
perl-PPI-HTML
perl-PPIx-QuoteLike
perl-PPIx-Regexp
perl-PPIx-Utilities
perl-prefork
perl-Probe-Perl
perl-Razor-Agent
perl-Readonly
perl-Readonly-XS
perl-Ref-Util
perl-Ref-Util-XS
perl-Regexp-Pattern-Perl
perl-Return-MultiLevel
perl-Role-Tiny
perl-Scope-Guard
perl-Scope-Upper
perl-SGMLSpm
perl-SNMP_Session
perl-Socket6
perl-Software-License
perl-Sort-Versions
perl-Specio
perl-Spiffy
perl-strictures
perl-String-CRC32
perl-String-Format
perl-String-ShellQuote
perl-String-Similarity
perl-Sub-Exporter
perl-Sub-Exporter-Progressive
perl-Sub-Identify
perl-Sub-Infix
perl-Sub-Info
perl-Sub-Install
perl-Sub-Name
perl-Sub-Quote
perl-Sub-Uplevel
perl-SUPER
perl-Switch
perl-Syntax-Highlight-Engine-Kate
perl-Sys-CPU
perl-Sys-MemInfo
perl-Sys-Virt
perl-Taint-Runtime
perl-Task-Weaken
perl-Term-Size-Any
perl-Term-Size-Perl
perl-Term-Table
perl-Term-UI
perl-TermReadKey
perl-Test-Base
perl-Test-ClassAPI
perl-Test-CPAN-Meta
perl-Test-CPAN-Meta-JSON
perl-Test-Deep
perl-Test-Differences
perl-Test-DistManifest
perl-Test-Distribution
perl-Test-EOL
perl-Test-Exception
perl-Test-Exit
perl-Test-FailWarnings
perl-Test-Fatal
perl-Test-File
perl-Test-File-ShareDir
perl-Test-Harness
perl-Test-HasVersion
perl-Test-InDistDir
perl-Test-Inter
perl-Test-LeakTrace
perl-Test-LongString
perl-Test-Manifest
perl-Test-Memory-Cycle
perl-Test-MinimumVersion
perl-Test-MockObject
perl-Test-MockRandom
perl-Test-Needs
perl-Test-NoTabs
perl-Test-NoWarnings
perl-Test-Object
perl-Test-Output
perl-Test-Pod
perl-Test-Pod-Coverage
perl-Test-Portability-Files
perl-Test-Requires
perl-Test-RequiresInternet
perl-Test-Script
perl-Test-SubCalls
perl-Test-Synopsis
perl-Test-Taint
perl-Test-TrailingSpace
perl-Test-utf8
perl-Test-Vars
perl-Test-Warn
perl-Test-Without-Module
perl-Test2-Plugin-NoWarnings
perl-Test2-Suite
perl-Test2-Tools-Explain
perl-Text-CharWidth
perl-Text-CSV_XS
perl-Text-Diff
perl-Text-Glob
perl-Text-Iconv
perl-Text-Soundex
perl-Text-Unidecode
perl-Text-WrapI18N
perl-Tie-IxHash
perl-TimeDate
perl-Tree-DAG_Node
perl-Type-Tiny
perl-Unicode-EastAsianWidth
perl-Unicode-LineBreak
perl-Unicode-Map8
perl-Unicode-String
perl-Unicode-UTF8
perl-UNIVERSAL-can
perl-UNIVERSAL-isa
perl-Unix-Syslog
perl-URI
perl-Variable-Magic
perl-Version-Requirements
perl-WWW-RobotRules
perl-XML-Catalog
perl-XML-DOM
perl-XML-Dumper
perl-XML-Filter-BufferText
perl-XML-Generator
perl-XML-Grove
perl-XML-Handler-YAWriter
perl-XML-LibXML
perl-XML-LibXSLT
perl-XML-NamespaceSupport
perl-XML-Parser-Lite
perl-XML-RegExp
perl-XML-SAX
perl-XML-SAX-Base
perl-XML-SAX-Writer
perl-XML-Simple
perl-XML-TokeParser
perl-XML-TreeBuilder
perl-XML-Twig
perl-XML-Writer
perl-XML-XPath
perl-XML-XPathEngine
perl-XString
perl-YAML-LibYAML
perl-YAML-PP
perl-YAML-Syck
perltidy
pesign
phodav
php
php-pear
php-pecl-apcu
php-pecl-zip
physfs
picosat
pinfo
pipewire
pixman
pkcs11-helper
pkgconf
plexus-cipher
plexus-containers
plexus-pom
plexus-sec-dispatcher
plotutils
pmdk-convert
pmix
pngcrush
pngnq
po4a
podman
poetry
policycoreutils
polkit-pkla-compat
polkit-qt-1
portreserve
postfix
potrace
powertop
ppp
pps-tools
pptp
priv_wrapper
procmail
prometheus-node-exporter
ps_mem
psacct
pssh
psutils
ptlib
publicsuffix-list
pugixml
pulseaudio
puppet
pwgen
pyatspi
pybind11
pycairo
pyelftools
pyflakes
pygobject3
PyGreSQL
pykickstart
pylint
pyparted
pyproject-rpm-macros
pyserial
python-absl-py
python-aiodns
python-aiohttp
python-alsa
python-archspec
python-argcomplete
python-argparse-manpage
python-astroid
python-astunparse
python-async-generator
python-augeas
python-azure-sdk
python-backoff
python-beautifulsoup4
python-betamax
python-blinker
python-blivet
python-boltons
python-breathe
python-cached_property
python-cbor2
python-charset-normalizer
python-cheetah
python-click
python-cmd2
python-colorama
python-CommonMark
python-conda-libmamba-solver
python-conda-package-handling
python-conda-package-streaming
python-configshell
python-cpuinfo
python-cups
python-curio
python-cytoolz
python-d2to1
python-dbus-client-gen
python-dbus-python-client-gen
python-dbus-signature-pyparsing
python-dbusmock
python-ddt
python-debtcollector
python-decorator
python-distlib
python-dmidecode
python-dns
python-dtopt
python-dulwich
python-editables
python-enchant
python-entrypoints
python-ethtool
python-evdev
python-extras
python-faker
python-fasteners
python-fastjsonschema
python-fields
python-filelock
python-fixtures
python-flake8
python-flaky
python-flask
python-flit
python-flit-core
python-fluidity-sm
python-frozendict
python-funcsigs
python-gast
python-genshi
python-google-auth
python-google-auth-oauthlib
python-greenlet
python-gssapi
python-h5py
python-hatch-fancy-pypi-readme
python-hatch-vcs
python-hatchling
python-hs-dbus-signature
python-html5lib
python-httplib2
python-humanize
python-hwdata
python-importlib-metadata
python-iniconfig
python-inotify
python-into-dbus-python
python-IPy
python-iso8601
python-isodate
python-isort
python-itsdangerous
python-junit_xml
python-junitxml
python-justbases
python-justbytes
python-jwcrypto
python-jwt
python-kdcproxy
python-kerberos
python-kmod
python-kubernetes
python-lark
python-lazy-object-proxy
python-ldap
python-linux-procfs
python-lit
python-looseversion
python-markdown
python-markdown-it-py
python-mccabe
python-mdurl
python-memcached
python-menuinst
python-mimeparse
python-mock
python-monotonic
python-more-itertools
python-mpmath
python-msal
python-msrestazure
python-mutagen
python-networkx
python-nose2
python-ntlm-auth
python-oauth2client
python-openpyxl
python-openstackdocstheme
python-oslo-i18n
python-oslo-sphinx
python-paramiko
python-pathspec
python-pefile
python-pexpect
python-pkgconfig
python-platformdirs
python-pluggy
python-podman-api
python-poetry-core
python-process-tests
python-productmd
python-prometheus_client
python-ptyprocess
python-pycosat
python-pydbus
python-pymongo
python-PyMySQL
python-pyperclip
python-pyproject-api
python-pyproject-metadata
python-pyroute2
python-pyrsistent
python-pytest-benchmark
python-pytest-cov
python-pytest-expect
python-pytest-flake8
python-pytest-flakes
python-pytest-forked
python-pytest-mock
python-pytest-relaxed
python-pytest-runner
python-pytest-subtests
python-pytest-timeout
python-pytest-xdist
python-pytoml
python-pyudev
python-pywbem
python-qrcode
python-rdflib
python-recommonmark
python-requests-file
python-requests-ftp
python-requests-kerberos
python-requests-mock
python-requests-oauthlib
python-requests-toolbelt
python-requests_ntlm
python-responses
python-retrying
python-rfc3986
python-rich
python-rpm-generators
python-rpmautospec-core
python-rpmfluff
python-rtslib
python-ruamel-yaml
python-ruamel-yaml-clib
python-s3transfer
python-schedutils
python-scikit-build-core
python-semantic_version
python-should_dsl
python-simpleline
python-slip
python-smartypants
python-sniffio
python-sortedcontainers
python-soupsieve
python-sphinx
python-sphinx-epytext
python-sphinx-theme-py3doc-enhanced
python-sphinx_rtd_theme
python-sphinxcontrib-apidoc
python-sphinxcontrib-applehelp
python-sphinxcontrib-devhelp
python-sphinxcontrib-htmlhelp
python-sphinxcontrib-httpdomain
python-sphinxcontrib-jquery
python-sphinxcontrib-jsmath
python-sphinxcontrib-qthelp
python-sphinxcontrib-serializinghtml
python-sphinxygen
python-spnego
python-sqlalchemy
python-suds
python-systemd
python-tempita
python-templated-dictionary
python-termcolor
python-testpath
python-testresources
python-testscenarios
python-testtools
python-tidy
python-toml
python-tomli
python-toolz
python-tornado
python-tox
python-tox-current-env
python-tqdm
python-trio
python-trove-classifiers
python-typing-extensions
python-typogrify
python-uamqp
python-uritemplate
python-urwid
python-uswid
python-varlink
python-versioneer
python-virt-firmware
python-voluptuous
python-waitress
python-webencodings
python-webtest
python-wheel
python-whoosh
python-winrm
python-wrapt
python-xlrd
python-xlsxwriter
python-xmltodict
python-yubico
python-zipp
python-zmq
python-zstandard
python-zstd
python3-mallard-ducktype
python3-pycares
python3-pytest-asyncio
python3-typed_ast
pyusb
pywbem
pyxattr
qemu
qhull
qpdf
qperf
qr-code-generator
qt-rpm-macros
qt6-qtconnectivity
qt6-qtsensors
qt6-qtserialport
qtbase
qtdeclarative
qtsvg
qttools
quagga
quota
radvd
ragel
raptor2
rarian
rasdaemon
rasqal
rcs
rdist
rdma-core
re2
re2c
realmd
rear
recode
reproc
resource-agents
rest
rhash
rlwrap
rp-pppoe
rpm-mpi-hooks
rpmdevtools
rpmlint
rr
rtkit
rtl-sdr
ruby-augeas
rubygem-bson
rubygem-coderay
rubygem-diff-lcs
rubygem-flexmock
rubygem-hpricot
rubygem-introspection
rubygem-liquid
rubygem-maruku
rubygem-metaclass
rubygem-mongo
rubygem-mustache
rubygem-mysql2
rubygem-pkg-config
rubygem-rake
rubygem-rake-compiler
rubygem-ronn
rubygem-rouge
rubygem-rspec
rubygem-rspec-expectations
rubygem-rspec-mocks
rubygem-rspec-support
rubygem-scanf
rubygem-sys-filesystem
rubygem-thread_order
rusers
rust-cbindgen
s-nail
samba
sanlock
sassist
satyr
sbc
sblim-cim-client2
sblim-cmpi-base
sblim-cmpi-devel
sblim-cmpi-fsvol
sblim-cmpi-network
sblim-cmpi-nfsv3
sblim-cmpi-nfsv4
sblim-cmpi-params
sblim-cmpi-sysfs
sblim-cmpi-syslog
sblim-indication_helper
sblim-sfcb
sblim-sfcc
sblim-sfcCommon
sblim-testsuite
sblim-wbemcli
scl-utils
scotch
screen
scrub
sdl12-compat
SDL2
SDL_sound
sdparm
seabios
secilc
selinux-policy
serd
setools
setserial
setuptool
sgabios
sgml-common
sgpio
shared-mime-info
sharutils
shim-unsigned-aarch64
shim-unsigned-x64
simdjson
sip
sisu
skkdic
sleuthkit
slirp4netns
smartmontools
smc-tools
socket_wrapper
softhsm
sombok
sord
sos
sound-theme-freedesktop
soundtouch
sox
soxr
sparsehash
spausedd
spdlog
speex
speexdsp
spice-protocol
spice-vdagent
spirv-headers
spirv-tools
splix
squashfs-tools
squid
sratom
sscg
star
startup-notification
stress-ng
strongswan
stunnel
subscription-manager
subunit
suitesparse
SuperLU
supermin
switcheroo-control
swtpm
symlinks
sympy
sysfsutils
systemd
systemd-bootchart
t1lib
t1utils
taglib
tang
targetcli
tbb
tcl-pgtcl
tclx
teckit
telnet
thrift
tidy
time
tini
tinycdb
tix
tk
tlog
tmpwatch
tn5250
tofrodos
tokyocabinet
trace-cmd
tss2
ttembed
ttmkfdir
tuna
twolame
uchardet
uclibc-ng
ucpp
ucs-miscfixed-fonts
ucx
udftools
udica
udisks2
uglify-js
uid_wrapper
umockdev
unicode-emoji
unicode-ucd
unique3
units
upower
uriparser
urlview
usb_modeswitch
usb_modeswitch-data
usbguard
usbip
usbmuxd
usbredir
usermode
ustr
uthash
uuid
uw-imap
v4l-utils
vhostmd
vino
virglrenderer
virt-p2v
virt-top
virt-what
virt-who
vitess
vmem
volume_key
vorbis-tools
vte291
vulkan-headers
vulkan-loader
watchdog
wavpack
wayland
wayland-protocols
web-assets
webrtc-audio-processing
websocketpp
wget
whois
wireguard-tools
wireless-regdb
wireshark
woff2
wordnet
words
wpebackend-fdo
wsmancli
wvdial
x3270
xapian-core
Xaw3d
xcb-proto
xcb-util
xcb-util-image
xcb-util-keysyms
xcb-util-renderutil
xcb-util-wm
xdelta
xdg-dbus-proxy
xdg-utils
xdp-tools
xerces-c
xfconf
xfsdump
xhtml1-dtds
xkeyboard-config
xmlstarlet
xmltoman
xmvn
xorg-x11-apps
xorg-x11-drv-libinput
xorg-x11-font-utils
xorg-x11-fonts
xorg-x11-proto-devel
xorg-x11-server
xorg-x11-server-utils
xorg-x11-server-Xwayland
xorg-x11-util-macros
xorg-x11-utils
xorg-x11-xauth
xorg-x11-xbitmaps
xorg-x11-xinit
xorg-x11-xkb-utils
xorg-x11-xtrans-devel
xpp3
xrestop
xterm
xxhash
yajl
yaml-cpp
yasm
yelp-tools
yelp-xsl
ykclient
yp-tools
ypbind
ypserv
yq
z3
zenity
zerofree
zfs-fuse
zipper
zix
zopfli
zziplib |
| Fedora (Copyright Remi Collet) | [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/legalcode) | libmemcached-awesome
librabbitmq |
| Fedora (ISC) | [ISC License](https://github.com/sarugaku/resolvelib/blob/main/LICENSE) | python-resolvelib |
| Magnus Edenhill Open Source | [Magnus Edenhill Open Source BSD License](https://github.com/jemalloc/jemalloc/blob/dev/COPYING) | librdkafka |
| Microsoft | [Microsoft MIT License](/LICENSES-AND-NOTICES/LICENSE.md) | application-gateway-kubernetes-ingress
asc
azcopy
azl-otel-collector
azure-iot-sdk-c
azure-nvme-utils
azure-storage-cpp
azurelinux-image-tools
azurelinux-release
azurelinux-repos
azurelinux-rpm-macros
azurelinux-sysinfo
bazel
bmon
bpftrace
ccache
cert-manager
cf-cli
check-restart
clamav
cloud-hypervisor
cloud-provider-kubevirt
cmake-fedora
containerd2
coredns
dasel
dcos-cli
debugedit
dejavu-fonts
distroless-packages
docker-buildx
docker-cli
docker-compose
doxygen
dtc
edk2-hvloader-signed
elixir
espeak-ng
espeakup
flannel
fluent-bit
freefont
gflags
gh
go-md2man
grpc
grub2-efi-binary-signed
GSL
gtk-update-icon-cache
intel-pf-bb-config
ivykis
jsonbuilder
jx
kata-containers-cc
kata-packages-uvm
keda
keras
kernel-64k-signed
kernel-hwe-signed
kernel-mshv-signed
kernel-signed
kernel-uki
kernel-uki-signed
kpatch
kube-vip-cloud-provider
kubernetes
libacvp
libconfini
libconfuse
libgdiplus
libimobiledevice-glue
libmaxminddb
libmetalink
libsafec
libuv
libxml++
lld
lsb-release
ltp
lttng-consume
mm-common
moby-containerd-cc
moby-engine
msgpack
ncompress
networkd-dispatcher
nlohmann-json
nmap
ntopng
opentelemetry-cpp
packer
pcaudiolib
pcre2
perl-Test-Warnings
perl-Text-Template
pigz
prebuilt-ca-certificates
prebuilt-ca-certificates-base
prometheus-adapter
python-cachetools
python-cherrypy
python-cstruct
python-execnet
python-google-pasta
python-libclang
python-libevdev
python-logutils
python-ml-dtypes
python-namex
python-nocasedict
python-omegaconf
python-opt-einsum
python-optree
python-pecan
python-pip
python-pyrpm
python-remoto
python-repoze-lru
python-routes
python-rsa
python-setuptools
python-sphinxcontrib-websupport
python-tensorboard
python-tensorboard-plugin-wit
python-yamlloader
R
rabbitmq-server
rocksdb
rubygem-addressable
rubygem-asciidoctor
rubygem-bindata
rubygem-concurrent-ruby
rubygem-connection_pool
rubygem-cool.io
rubygem-deep_merge
rubygem-digest-crc
rubygem-elastic-transport
rubygem-elasticsearch
rubygem-elasticsearch-api
rubygem-eventmachine
rubygem-excon
rubygem-faraday
rubygem-faraday-em_http
rubygem-faraday-em_synchrony
rubygem-faraday-excon
rubygem-faraday-httpclient
rubygem-faraday-multipart
rubygem-faraday-net_http
rubygem-faraday-net_http_persistent
rubygem-faraday-rack
rubygem-faraday-retry
rubygem-ffi
rubygem-fiber-local
rubygem-hirb
rubygem-hocon
rubygem-hoe
rubygem-http_parser
rubygem-httpclient
rubygem-io-event
rubygem-jmespath
rubygem-ltsv
rubygem-mini_portile2
rubygem-minitest
rubygem-mocha
rubygem-msgpack
rubygem-multi_json
rubygem-multipart-post
rubygem-net-http-persistent
rubygem-nio4r
rubygem-nokogiri
rubygem-oj
rubygem-parallel
rubygem-power_assert
rubygem-prometheus-client
rubygem-protocol-hpack
rubygem-protocol-http
rubygem-protocol-http1
rubygem-protocol-http2
rubygem-public_suffix
rubygem-puppet-resource_api
rubygem-rdiscount
rubygem-rdkafka
rubygem-rexml
rubygem-ruby-kafka
rubygem-ruby-progressbar
rubygem-rubyzip
rubygem-semantic_puppet
rubygem-serverengine
rubygem-sigdump
rubygem-strptime
rubygem-systemd-journal
rubygem-test-unit
rubygem-thor
rubygem-timers
rubygem-tzinfo
rubygem-tzinfo-data
rubygem-webhdfs
rubygem-webrick
rubygem-yajl-ruby
rubygem-zip-zip
runc
sdbus-cpp
sgx-backwards-compatibility
shim
skopeo
span-lite
sriov-network-device-plugin
SymCrypt
SymCrypt-OpenSSL
systemd-boot-signed
tardev-snapshotter
tensorflow
tinyxml2
toml11
tracelogging
umoci
usrsctp
vala
valkey
vnstat
zstd |
| Netplan source | [GPLv3](https://github.com/canonical/netplan/blob/main/COPYING) | netplan |
| Numad source | [LGPLv2 License](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt) | numad |
-| NVIDIA | [ASL 2.0 License and spec specific licenses](http://www.apache.org/licenses/LICENSE-2.0) | fwctl
fwctl-hwe
fwctl-hwe-signed
fwctl-signed
ibarr
ibsim
iser
iser-hwe
iser-hwe-signed
iser-signed
isert
isert-hwe
isert-hwe-signed
isert-signed
knem
knem-hwe
knem-hwe-modules-signed
knem-modules-signed
libnvidia-container
mft_kernel
mft_kernel-hwe
mft_kernel-hwe-signed
mft_kernel-signed
mlnx-ethtool
mlnx-iproute2
mlnx-nfsrdma
mlnx-nfsrdma-hwe
mlnx-nfsrdma-hwe-signed
mlnx-nfsrdma-signed
mlnx-ofa_kernel
mlnx-ofa_kernel-hwe
mlnx-ofa_kernel-hwe-modules-signed
mlnx-ofa_kernel-modules-signed
mlnx-tools
mlx-bootctl
mlx-steering-dump
multiperf
nvidia-container-toolkit
ofed-docs
ofed-scripts
perftest
rshim
sockperf
srp
srp-hwe
srp-hwe-signed
srp-signed
xpmem
xpmem-hwe
xpmem-hwe-modules-signed
xpmem-lib
xpmem-modules-signed |
+| NVIDIA | [ASL 2.0 License and spec specific licenses](http://www.apache.org/licenses/LICENSE-2.0) | ibarr
ibsim
iser
iser-hwe
iser-hwe-signed
iser-signed
isert
isert-hwe
isert-hwe-signed
isert-signed
knem
knem-hwe
knem-hwe-modules-signed
knem-modules-signed
libnvidia-container
libvma
mft_kernel
mft_kernel-hwe
mft_kernel-hwe-signed
mft_kernel-signed
mlnx-ethtool
mlnx-iproute2
mlnx-nfsrdma
mlnx-nfsrdma-hwe
mlnx-nfsrdma-hwe-signed
mlnx-nfsrdma-signed
mlnx-ofa_kernel
mlnx-ofa_kernel-hwe
mlnx-ofa_kernel-hwe-modules-signed
mlnx-ofa_kernel-modules-signed
mlnx-tools
mlx-bootctl
mlx-steering-dump
multiperf
nvidia-container-toolkit
ofed-docs
ofed-scripts
perftest
rshim
sockperf
srp
srp-hwe
srp-hwe-signed
srp-signed
xpmem
xpmem-hwe
xpmem-hwe-modules-signed
xpmem-lib
xpmem-modules-signed |
| NVIDIA (BSD) | [BSD](https://github.com/Mellanox/sockperf/blob/sockperf_v2/copying) | sockperf |
| OpenEuler | [BSD-3 License](https://github.com/pytorch/pytorch/blob/master/LICENSE) | pytorch |
| OpenMamba | [Openmamba GPLv2 License](https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt) | bash-completion |
-| OpenSUSE | Following [openSUSE guidelines](https://en.opensuse.org/openSUSE:Specfile_guidelines#Specfile_Licensing) | ant
ant-junit
antlr
aopalliance
apache-commons-beanutils
apache-commons-cli
apache-commons-codec
apache-commons-collections
apache-commons-collections4
apache-commons-compress
apache-commons-daemon
apache-commons-dbcp
apache-commons-digester
apache-commons-httpclient
apache-commons-io
apache-commons-jexl
apache-commons-lang3
apache-commons-logging
apache-commons-net
apache-commons-pool
apache-commons-pool2
apache-commons-validator
apache-commons-vfs2
apache-parent
args4j
atinject
base64coder
bcel
bea-stax
beust-jcommander
bsf
byaccj
cal10n
cdparanoia
cglib
cni
containerized-data-importer
cpulimit
cri-o
ecj
fillup
flux
gd
geronimo-specs
glassfish-annotation-api
gnu-getopt
gnu-regexp
golang-packaging
guava
hamcrest
hawtjni-runtime
httpcomponents-core
influx-cli
influxdb
jakarta-taglibs-standard
jansi
jarjar
java-cup
java-cup-bootstrap
javacc
javacc-bootstrap
javassist
jboss-interceptors-1.2-api
jdepend
jflex
jflex-bootstrap
jlex
jline
jna
jsch
jsoup
jsr-305
jtidy
junit
junitperf
jzlib
kubevirt
kured
libcontainers-common
libtheora
libva
libvdpau
lynx
multus
objectweb-anttask
objectweb-asm
objenesis
oro
osgi-annotation
osgi-compendium
osgi-core
patterns-ceph-containers
plexus-classworlds
plexus-interpolation
plexus-utils
proj
psl-make-dafsa
publicsuffix
qdox
regexp
relaxngDatatype
rhino
ripgrep
servletapi4
servletapi5
shapelib
slf4j
trilead-ssh2
virtiofsd
xalan-j2
xbean
xcursor-themes
xerces-j2
xml-commons-apis
xml-commons-resolver
xmldb-api
xmlrpc-c
xmlunit
xz-java |
-| Photon | [Photon License](LICENSE-PHOTON.md) and [Photon Notice](NOTICE.APACHE2).
Also see [LICENSE-EXCEPTIONS.PHOTON](LICENSE-EXCEPTIONS.PHOTON). | acl
alsa-lib
alsa-utils
ansible
apparmor
apr
apr-util
asciidoc
atftp
audit
autoconf
autoconf-archive
autofs
autogen
automake
babel
bash
bc
bcc
bind
binutils
bison
blktrace
boost
btrfs-progs
bubblewrap
build-essential
bzip2
c-ares
cairo
cassandra
cassandra-driver
cdrkit
check
chkconfig
chrpath
cifs-utils
clang
cloud-init
cloud-utils-growpart
cmake
cni-plugins
core-packages
coreutils
cpio
cppunit
cqlsh
cracklib
crash
crash-gcore-command
createrepo_c
cri-tools
cronie
curl
cyrus-sasl
cyrus-sasl-bootstrap
dbus
dbus-glib
dejagnu
device-mapper-multipath
dialog
diffutils
dkms
dmidecode
dnsmasq
docbook-dtd-xml
docbook-style-xsl
dosfstools
dracut
dstat
e2fsprogs
ed
efibootmgr
efivar
elfutils
emacs
erlang
etcd
ethtool
expat
expect
fcgi
file
filesystem
findutils
flex
fontconfig
fping
freetype
fuse
gawk
gc
gcc
gdb
gdbm
gettext
git
git-lfs
glib
glib-networking
glibc
glibmm
gmp
gnome-common
gnupg2
gnuplot
gnutls
gobject-introspection
golang
golang-1.23
golang-1.24
gperf
gperftools
gpgme
gptfdisk
grep
groff
grub2
gtest
gtk-doc
guile
gzip
haproxy
harfbuzz
haveged
hdparm
http-parser
httpd
i2c-tools
iana-etc
icu
initramfs
initscripts
inotify-tools
intltool
iotop
iperf3
iproute
ipset
iptables
iputils
ipvsadm
ipxe
irqbalance
itstool
jansson
jq
json-c
json-glib
kbd
keepalived
kernel
kernel-64k
kernel-headers
kernel-hwe
kernel-hwe-headers
kernel-ipe
kernel-lpg-innovate
kernel-mshv
kernel-rt
kernel-uvm
keyutils
kmod
krb5
less
libaio
libarchive
libassuan
libatomic_ops
libcap
libcap-ng
libconfig
libdb
libdnet
libedit
libestr
libevent
libfastjson
libffi
libgcrypt
libgpg-error
libgssglue
libgudev
libjpeg-turbo
libksba
liblogging
libmbim
libmnl
libmodulemd
libmpc
libmspack
libndp
libnetfilter_conntrack
libnetfilter_cthelper
libnetfilter_cttimeout
libnetfilter_queue
libnfnetlink
libnftnl
libnl3
libnsl2
libpcap
libpipeline
libpng
libpsl
libqmi
librelp
librepo
librsync
libseccomp
libselinux
libsepol
libserf
libsigc++30
libsolv
libsoup
libssh2
libtalloc
libtar
libtasn1
libtiff
libtirpc
libtool
libunistring
libunwind
libusb
libvirt
libwebp
libxml2
libxslt
libyaml
linux-firmware
lldb
lldpad
llvm
lm-sensors
lmdb
log4cpp
logrotate
lshw
lsof
lsscsi
ltrace
lttng-tools
lttng-ust
lvm2
lz4
lzo
m2crypto
m4
make
man-db
man-pages
maven
mc
mercurial
meson
mlocate
ModemManager
mpfr
msr-tools
mysql
nano
nasm
ncurses
ndctl
net-snmp
net-tools
nettle
newt
nfs-utils
nghttp2
nginx
ninja-build
nodejs
npth
nspr
nss
nss-altfiles
ntp
numactl
nvme-cli
oniguruma
OpenIPMI
openldap
openscap
openssh
openvswitch
ostree
pam
pango
parted
patch
pciutils
perl-Canary-Stability
perl-CGI
perl-common-sense
perl-Crypt-SSLeay
perl-DBD-SQLite
perl-DBI
perl-DBIx-Simple
perl-Exporter-Tiny
perl-File-HomeDir
perl-File-Which
perl-IO-Socket-SSL
perl-JSON-Any
perl-JSON-XS
perl-libintl-perl
perl-List-MoreUtils
perl-Module-Build
perl-Module-Install
perl-Module-ScanDeps
perl-Net-SSLeay
perl-NetAddr-IP
perl-Object-Accessor
perl-Path-Class
perl-Try-Tiny
perl-Types-Serialiser
perl-WWW-Curl
perl-XML-Parser
perl-YAML
perl-YAML-Tiny
pgbouncer
pinentry
polkit
popt
postgresql
procps-ng
protobuf
protobuf-c
psmisc
pth
pyasn1-modules
pyOpenSSL
pyparsing
pytest
python-appdirs
python-asn1crypto
python-atomicwrites
python-attrs
python-bcrypt
python-certifi
python-cffi
python-chardet
python-configobj
python-constantly
python-coverage
python-cryptography
python-daemon
python-dateutil
python-defusedxml
python-distro
python-docopt
python-docutils
python-ecdsa
python-geomet
python-gevent
python-hyperlink
python-hypothesis
python-idna
python-imagesize
python-incremental
python-iniparse
python-ipaddr
python-jinja2
python-jmespath
python-jsonpatch
python-jsonpointer
python-jsonschema
python-lockfile
python-lxml
python-mako
python-markupsafe
python-mistune
python-msgpack
python-netaddr
python-netifaces
python-ntplib
python-oauthlib
python-packaging
python-pam
python-pbr
python-ply
python-prettytable
python-psutil
python-psycopg2
python-py
python-pyasn1
python-pycodestyle
python-pycparser
python-pycurl
python-pygments
python-pynacl
python-requests
python-setuptools_scm
python-simplejson
python-six
python-snowballstemmer
python-sphinx-theme-alabaster
python-twisted
python-urllib3
python-vcversioner
python-virtualenv
python-wcwidth
python-webob
python-websocket-client
python-werkzeug
python-zope-event
python-zope-interface
python3
pytz
PyYAML
rapidjson
readline
rng-tools
rpcbind
rpcsvc-proto
rpm
rpm-ostree
rrdtool
rsync
rsyslog
ruby
rust
rust-1.75
scons
sed
sg3_utils
shadow-utils
slang
snappy
socat
sqlite
sshpass
strace
subversion
sudo
swig
syslinux
syslog-ng
sysstat
systemd-bootstrap
systemtap
tar
tboot
tcl
tcpdump
tcsh
tdnf
telegraf
texinfo
tmux
tpm2-abrmd
tpm2-pkcs11
tpm2-pytss
tpm2-tools
tpm2-tss
traceroute
tree
tzdata
unbound
unixODBC
unzip
usbutils
userspace-rcu
utf8proc
util-linux
valgrind
vim
vsftpd
WALinuxAgent
which
wpa_supplicant
xfsprogs
xinetd
xmlsec1
xmlto
xz
zchunk
zeromq
zip
zlib
zsh |
+| OpenSUSE | Following [openSUSE guidelines](https://en.opensuse.org/openSUSE:Specfile_guidelines#Specfile_Licensing) | ant
ant-junit
antlr
aopalliance
apache-commons-beanutils
apache-commons-cli
apache-commons-codec
apache-commons-collections
apache-commons-collections4
apache-commons-compress
apache-commons-daemon
apache-commons-dbcp
apache-commons-digester
apache-commons-httpclient
apache-commons-io
apache-commons-jexl
apache-commons-lang3
apache-commons-logging
apache-commons-net
apache-commons-pool
apache-commons-pool2
apache-commons-validator
apache-commons-vfs2
apache-parent
args4j
atinject
base64coder
bcel
bea-stax
beust-jcommander
bsf
byaccj
cal10n
cdparanoia
cglib
cni
containerized-data-importer
cpulimit
cri-o
ecj
ed25519-java
fillup
flux
gd
geronimo-specs
glassfish-annotation-api
gnu-getopt
gnu-regexp
golang-packaging
guava
hamcrest
hawtjni-runtime
httpcomponents-core
influx-cli
influxdb
jakarta-taglibs-standard
jansi
jarjar
java-cup
java-cup-bootstrap
javacc
javacc-bootstrap
javassist
jbcrypt
jboss-interceptors-1.2-api
jdepend
jflex
jflex-bootstrap
jlex
jline
jna
jsch
jsoup
jsr-305
jtidy
junit
junitperf
jzlib
kubevirt
kured
libcontainers-common
libtheora
libva
libvdpau
lynx
multus
objectweb-anttask
objectweb-asm
objenesis
oro
osgi-annotation
osgi-compendium
osgi-core
patterns-ceph-containers
plexus-classworlds
plexus-interpolation
plexus-utils
proj
psl-make-dafsa
publicsuffix
qdox
regexp
relaxngDatatype
rhino
ripgrep
servletapi4
servletapi5
shapelib
slf4j
trilead-ssh2
virtiofsd
xalan-j2
xbean
xcursor-themes
xerces-j2
xml-commons-apis
xml-commons-resolver
xmldb-api
xmlrpc-c
xmlunit
xz-java |
+| Photon | [Photon License](LICENSE-PHOTON.md) and [Photon Notice](NOTICE.APACHE2).
Also see [LICENSE-EXCEPTIONS.PHOTON](LICENSE-EXCEPTIONS.PHOTON). | acl
alsa-lib
alsa-utils
ansible
apparmor
apr
apr-util
asciidoc
atftp
audit
autoconf
autoconf-archive
autofs
autogen
automake
babel
bash
bc
bcc
bind
binutils
bison
blktrace
boost
btrfs-progs
bubblewrap
build-essential
bzip2
c-ares
cairo
cassandra
cassandra-driver
cdrkit
check
chkconfig
chrpath
cifs-utils
clang
cloud-init
cloud-utils-growpart
cmake
cni-plugins
core-packages
coreutils
cpio
cppunit
cqlsh
cracklib
crash
crash-gcore-command
createrepo_c
cri-tools
cronie
curl
cyrus-sasl
cyrus-sasl-bootstrap
dbus
dbus-glib
dejagnu
device-mapper-multipath
dialog
diffutils
dkms
dmidecode
dnsmasq
docbook-dtd-xml
docbook-style-xsl
dosfstools
dracut
dstat
e2fsprogs
ed
efibootmgr
efivar
elfutils
emacs
erlang
etcd
ethtool
expat
expect
fcgi
file
filesystem
findutils
flex
fontconfig
fping
freetype
fuse
gawk
gc
gcc
gdb
gdbm
gettext
git
git-lfs
glib
glib-networking
glibc
glibmm
gmp
gnome-common
gnupg2
gnuplot
gnutls
gobject-introspection
golang
golang-1.23
golang-1.24
gperf
gperftools
gpgme
gptfdisk
grep
groff
grub2
gtest
gtk-doc
guile
gzip
haproxy
harfbuzz
haveged
hdparm
http-parser
httpd
i2c-tools
iana-etc
icu
initramfs
initscripts
inotify-tools
intltool
iotop
iperf3
iproute
ipset
iptables
iputils
ipvsadm
ipxe
irqbalance
itstool
jansson
jq
json-c
json-glib
kbd
keepalived
kernel
kernel-64k
kernel-headers
kernel-hwe
kernel-hwe-headers
kernel-ipe
kernel-lpg-innovate
kernel-mshv
kernel-rt
kernel-uvm
keyutils
kmod
krb5
less
libaio
libarchive
libassuan
libatomic_ops
libcap
libcap-ng
libconfig
libdb
libdnet
libedit
libestr
libevent
libfastjson
libffi
libgcrypt
libgpg-error
libgssglue
libgudev
libjpeg-turbo
libksba
liblogging
libmbim
libmnl
libmodulemd
libmpc
libmspack
libndp
libnetfilter_conntrack
libnetfilter_cthelper
libnetfilter_cttimeout
libnetfilter_queue
libnfnetlink
libnftnl
libnl3
libnsl2
libpcap
libpipeline
libpng
libpsl
libqmi
librelp
librepo
librsync
libseccomp
libselinux
libsepol
libserf
libsigc++30
libsolv
libsoup
libssh2
libtalloc
libtar
libtasn1
libtiff
libtirpc
libtool
libunistring
libunwind
libusb
libvirt
libwebp
libxml2
libxslt
libyaml
linux-firmware
lldb
lldpad
llvm
lm-sensors
lmdb
log4cpp
logrotate
lshw
lsof
lsscsi
ltrace
lttng-tools
lttng-ust
lvm2
lz4
lzo
m2crypto
m4
make
man-db
man-pages
maven
mc
mercurial
meson
mlocate
ModemManager
mpfr
msr-tools
mysql
nano
nasm
ncurses
ndctl
net-snmp
net-tools
nettle
newt
nfs-utils
nghttp2
nginx
ninja-build
nodejs
nodejs24
npth
nspr
nss
nss-altfiles
ntp
numactl
nvme-cli
oniguruma
OpenIPMI
openldap
openscap
openssh
openvswitch
ostree
pam
pango
parted
patch
pciutils
perl-Canary-Stability
perl-CGI
perl-common-sense
perl-Crypt-SSLeay
perl-DBD-SQLite
perl-DBI
perl-DBIx-Simple
perl-Exporter-Tiny
perl-File-HomeDir
perl-File-Which
perl-IO-Socket-SSL
perl-JSON-Any
perl-JSON-XS
perl-libintl-perl
perl-List-MoreUtils
perl-Module-Build
perl-Module-Install
perl-Module-ScanDeps
perl-Net-SSLeay
perl-NetAddr-IP
perl-Object-Accessor
perl-Path-Class
perl-Try-Tiny
perl-Types-Serialiser
perl-WWW-Curl
perl-XML-Parser
perl-YAML
perl-YAML-Tiny
pgbouncer
pinentry
polkit
popt
postgresql
procps-ng
protobuf
protobuf-c
psmisc
pth
pyasn1-modules
pyOpenSSL
pyparsing
pytest
python-appdirs
python-asn1crypto
python-atomicwrites
python-attrs
python-bcrypt
python-certifi
python-cffi
python-chardet
python-configobj
python-constantly
python-coverage
python-cryptography
python-daemon
python-dateutil
python-defusedxml
python-distro
python-docopt
python-docutils
python-ecdsa
python-geomet
python-gevent
python-hyperlink
python-hypothesis
python-idna
python-imagesize
python-incremental
python-iniparse
python-ipaddr
python-jinja2
python-jmespath
python-jsonpatch
python-jsonpointer
python-jsonschema
python-lockfile
python-lxml
python-mako
python-markupsafe
python-mistune
python-msgpack
python-netaddr
python-netifaces
python-ntplib
python-oauthlib
python-packaging
python-pam
python-pbr
python-ply
python-prettytable
python-psutil
python-psycopg2
python-py
python-pyasn1
python-pycodestyle
python-pycparser
python-pycurl
python-pygments
python-pynacl
python-requests
python-setuptools_scm
python-simplejson
python-six
python-snowballstemmer
python-sphinx-theme-alabaster
python-twisted
python-urllib3
python-vcversioner
python-virtualenv
python-wcwidth
python-webob
python-websocket-client
python-werkzeug
python-zope-event
python-zope-interface
python3
pytz
PyYAML
rapidjson
readline
rng-tools
rpcbind
rpcsvc-proto
rpm
rpm-ostree
rrdtool
rsync
rsyslog
ruby
rust
rust-1.75
scons
sed
sg3_utils
shadow-utils
slang
snappy
socat
sqlite
sshpass
strace
subversion
sudo
swig
syslinux
syslog-ng
sysstat
systemd-bootstrap
systemtap
tar
tboot
tcl
tcpdump
tcsh
tdnf
telegraf
texinfo
tmux
tpm2-abrmd
tpm2-pkcs11
tpm2-pytss
tpm2-tools
tpm2-tss
traceroute
tree
tzdata
unbound
unixODBC
unzip
usbutils
userspace-rcu
utf8proc
util-linux
valgrind
vim
vsftpd
WALinuxAgent
which
wpa_supplicant
xfsprogs
xinetd
xmlsec1
xmlto
xz
zchunk
zeromq
zip
zlib
zsh |
| RPM software management source | [GPLv2+ License](https://github.com/rpm-software-management/dnf5/blob/main/COPYING.md) | dnf5 |
| Source project | Same as the source project. | python-nocaselist |
| Sysbench source | [GPLv2+ License](https://github.com/akopytov/sysbench/blob/master/COPYING) | sysbench |
diff --git a/LICENSES-AND-NOTICES/SPECS/data/licenses.json b/LICENSES-AND-NOTICES/SPECS/data/licenses.json
index 0cafa4708ed..2f6ef2ad9f2 100644
--- a/LICENSES-AND-NOTICES/SPECS/data/licenses.json
+++ b/LICENSES-AND-NOTICES/SPECS/data/licenses.json
@@ -147,6 +147,7 @@
"cpufrequtils",
"cpuid",
"criu",
+ "crun",
"crypto-policies",
"cryptsetup",
"cscope",
@@ -847,6 +848,7 @@
"linuxptp",
"lksctp-tools",
"lldpd",
+ "llhttp",
"lockdev",
"logwatch",
"lpsolve",
@@ -1516,7 +1518,6 @@
"perl-Test-Requires",
"perl-Test-RequiresInternet",
"perl-Test-Script",
- "perl-Test-Simple",
"perl-Test-SubCalls",
"perl-Test-Synopsis",
"perl-Test-Taint",
@@ -1828,6 +1829,7 @@
"python-ruamel-yaml-clib",
"python-s3transfer",
"python-schedutils",
+ "python-scikit-build-core",
"python-semantic_version",
"python-should_dsl",
"python-simpleline",
@@ -1909,9 +1911,9 @@
"qperf",
"qr-code-generator",
"qt-rpm-macros",
- "qt5-qtconnectivity",
- "qt5-qtsensors",
- "qt5-qtserialport",
+ "qt6-qtconnectivity",
+ "qt6-qtsensors",
+ "qt6-qtserialport",
"qtbase",
"qtdeclarative",
"qtsvg",
@@ -2473,10 +2475,6 @@
"NVIDIA": {
"license": "[ASL 2.0 License and spec specific licenses](http://www.apache.org/licenses/LICENSE-2.0)",
"specs": [
- "fwctl",
- "fwctl-hwe",
- "fwctl-hwe-signed",
- "fwctl-signed",
"ibarr",
"ibsim",
"iser",
@@ -2492,6 +2490,7 @@
"knem-hwe-modules-signed",
"knem-modules-signed",
"libnvidia-container",
+ "libvma",
"mft_kernel",
"mft_kernel-hwe",
"mft_kernel-hwe-signed",
@@ -2588,6 +2587,7 @@
"cpulimit",
"cri-o",
"ecj",
+ "ed25519-java",
"fillup",
"flux",
"gd",
@@ -2610,6 +2610,7 @@
"javacc",
"javacc-bootstrap",
"javassist",
+ "jbcrypt",
"jboss-interceptors-1.2-api",
"jdepend",
"jflex",
@@ -2946,6 +2947,7 @@
"nginx",
"ninja-build",
"nodejs",
+ "nodejs24",
"npth",
"nspr",
"nss",
diff --git a/SPECS-EXTENDED/389-ds-base/389-ds-base.spec b/SPECS-EXTENDED/389-ds-base/389-ds-base.spec
index 02fdf2f65fe..88260f12b33 100644
--- a/SPECS-EXTENDED/389-ds-base/389-ds-base.spec
+++ b/SPECS-EXTENDED/389-ds-base/389-ds-base.spec
@@ -68,7 +68,7 @@ ExcludeArch: i686
Summary: 389 Directory Server (%{variant})
Name: 389-ds-base
Version: 3.1.1
-Release: 7%{?dist}
+Release: 9%{?dist}
License: GPL-3.0-or-later AND (0BSD OR Apache-2.0 OR MIT) AND (Apache-2.0 OR Apache-2.0 WITH LLVM-exception OR MIT) AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT OR Zlib) AND (Apache-2.0 OR MIT) AND (CC-BY-4.0 AND MIT) AND (MIT OR Apache-2.0) AND Unicode-DFS-2016 AND (MIT OR CC0-1.0) AND (MIT OR Unlicense) AND 0BSD AND Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND ISC AND MIT AND MIT AND ISC AND MPL-2.0 AND PSF-2.0
URL: https://www.port389.org
Vendor: Microsoft Corporation
@@ -83,6 +83,7 @@ Source4: 389-ds-base.sysusers
Source5: https://fedorapeople.org/groups/389ds/libdb-5.3.28-59.tar.bz2
%endif
+Patch0: rust-1.90-fixes.patch
Provides: ldif2ldbm >= 0
# Attach the buildrequires to the top level package:
@@ -732,6 +733,13 @@ exit 0
%endif
%changelog
+* Tue Jan 13 2025 Kavya Sree Kaitepalli - 3.1.1-9
+- Bump release to rebuild with rust
+- Add patch add explicit lifetime for ValueArrayRef iterator
+
+* Tue Jan 06 2026 Pawel Winogrodzki - 3.1.1-8
+- Bumping release to rebuild with new 'net-snmp' libs.
+
* Fri Aug 08 2025 Azure Linux Security Servicing Account - 3.1.1-7
- Bump release to rebuild with rust
diff --git a/SPECS-EXTENDED/389-ds-base/rust-1.90-fixes.patch b/SPECS-EXTENDED/389-ds-base/rust-1.90-fixes.patch
new file mode 100644
index 00000000000..c6c5bdaaf36
--- /dev/null
+++ b/SPECS-EXTENDED/389-ds-base/rust-1.90-fixes.patch
@@ -0,0 +1,25 @@
+From 3a0d6ff3272c4a3d5f2d552a436e4f0fe0756a0a Mon Sep 17 00:00:00 2001
+From: Kavya Sree Kaitepalli
+Date: Wed, 29 Oct 2025 06:38:08 +0000
+Subject: [PATCH] Add explicit lifetime for ValueArrayRef iterator for Rust 1.90
+
+---
+ src/slapi_r_plugin/src/value.rs | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/slapi_r_plugin/src/value.rs b/src/slapi_r_plugin/src/value.rs
+index 2fd35c8..fec74ac 100644
+--- a/src/slapi_r_plugin/src/value.rs
++++ b/src/slapi_r_plugin/src/value.rs
+@@ -61,7 +61,7 @@ impl ValueArrayRef {
+ ValueArrayRef { raw_slapi_val }
+ }
+
+- pub fn iter(&self) -> ValueArrayRefIter {
++ pub fn iter(&self) -> ValueArrayRefIter<'_> {
+ ValueArrayRefIter {
+ idx: 0,
+ va_ref: &self,
+--
+2.45.4
+
diff --git a/SPECS-EXTENDED/apache-commons-jexl/apache-commons-jexl.spec b/SPECS-EXTENDED/apache-commons-jexl/apache-commons-jexl.spec
old mode 100755
new mode 100644
index e0d9c62c0a1..da575850f59
--- a/SPECS-EXTENDED/apache-commons-jexl/apache-commons-jexl.spec
+++ b/SPECS-EXTENDED/apache-commons-jexl/apache-commons-jexl.spec
@@ -4,7 +4,7 @@
Summary: Java Expression Language (JEXL)
Name: apache-%{short_name}
Version: 2.1.1
-Release: 3%{?dist}
+Release: 4%{?dist}
License: Apache-2.0
Vendor: Microsoft Corporation
Distribution: Azure Linux
@@ -108,14 +108,40 @@ ln -sf %{name}/%{short_name}-compat.jar %{buildroot}%{_javadir}/%{short_name}-co
install -dm 0755 %{buildroot}%{_mavenpomdir}/%{name}
install -pm 0644 pom.xml %{buildroot}%{_mavenpomdir}/%{name}/%{short_name}.pom
%add_maven_depmap %{name}/%{short_name}.pom %{name}/%{short_name}.jar
-install -pm 0644 jexl2-compat/pom.xml %{buildroot}%{_mavenpomdir}/%{name}/%{short_name}-compat.pom
+install -pm 0644 jexl2-compat/pom.xml %{buildroot}%{_mavenpomdir}/%{name}/%{short_name}-compat.pom
%add_maven_depmap %{name}/%{short_name}-compat.pom %{name}/%{short_name}-compat.jar
# javadoc
install -dm 0755 %{buildroot}%{_javadocdir}/%{name}/jexl2-compat
cp -pr target/site/apidocs/* %{buildroot}%{_javadocdir}/%{name}/
cp -pr jexl2-compat/target/site/apidocs/* %{buildroot}%{_javadocdir}/%{name}/jexl2-compat/
+
+# Extract LICENSE if present
+legaldir=%{buildroot}%{_javadocdir}/%{name}/legal
+if [ -d "$legaldir" ]; then
+ install -Dm 0644 $legaldir/LICENSE \
+ %{buildroot}%{_licensedir}/apache-commons-jexl/LICENSE.javadoc
+fi
+
+# Delete ALL legal/ dirs
+find %{buildroot}%{_javadocdir}/%{name} -type d -name legal -exec rm -rf {} +
+
+# Run fdupes (this may create new symlinks)
%fdupes -s %{buildroot}%{_javadocdir}
+# Fix absolute symlinks inside jexl2-compat by rewriting relative to parent directory structure
+pushd %{buildroot}%{_javadocdir}/%{name}
+for f in $(find jexl2-compat -type l); do
+ tgt=$(readlink "$f")
+ if [[ "$tgt" = /* ]]; then
+ base=$(basename "$tgt")
+ # Compute depth-aware relative path
+ depth=$(dirname "$f" | awk -F/ '{ print NF-1 }')
+ rel=$(printf '../%.0s' $(seq 1 $depth))"$base"
+ ln -snf "$rel" "$f"
+ fi
+done
+popd
+
%check
# commons-jexl
%{ant} \
@@ -128,16 +154,20 @@ cp -pr jexl2-compat/target/site/apidocs/* %{buildroot}%{_javadocdir}/%{name}/jex
test
%files -f .mfiles
-%license LICENSE.txt
-%doc NOTICE.txt RELEASE-NOTES.txt
+%license LICENSE.txt NOTICE.txt
+%doc RELEASE-NOTES.txt
%{_javadir}/%{short_name}*.jar
%files javadoc
-%license LICENSE.txt
-%doc NOTICE.txt
+%license %{_licensedir}/apache-commons-jexl/LICENSE.javadoc
%{_javadocdir}/%{name}
%changelog
+
+* Mon Dec 22 2025 Aninda Pradhan - 2.1.1-4
+- Fixed license path warnings
+- License verified
+
* Mon Nov 14 2022 Sumedh Sharma - 2.1.1-3
- Fix build errors
* create 'Packages' directory under JDK_HOME
diff --git a/SPECS-EXTENDED/booth/booth.signatures.json b/SPECS-EXTENDED/booth/booth.signatures.json
index 228ec48b057..6af9ea5b554 100644
--- a/SPECS-EXTENDED/booth/booth.signatures.json
+++ b/SPECS-EXTENDED/booth/booth.signatures.json
@@ -1,5 +1,5 @@
{
"Signatures": {
- "booth-1.0.tar.gz": "1f4f6ed4fedebf7c52ca8dc9668218c99fbfe96bfbe9ac8f586bab7ef3b9b5d7"
+ "booth-1.2.tar.gz": "4f1c4581f71af1188893cce6bbe7d69ac7d9e8593ffd18a3a5f2449f4a5df3bf"
}
}
diff --git a/SPECS-EXTENDED/booth/booth.spec b/SPECS-EXTENDED/booth/booth.spec
index 6e43277c9a8..2f53f76ec96 100644
--- a/SPECS-EXTENDED/booth/booth.spec
+++ b/SPECS-EXTENDED/booth/booth.spec
@@ -1,12 +1,9 @@
# Disable automatic compilation of Python files in extra directories
%global _python_bytecompile_extra 0
-# set following to the actual commit or, for final release, concatenate
-# "boothver" macro to "v" (will yield a tag per the convention)
-%global commit 5d837d2b5bf1c240a5f1c5efe4e8d79f55727cca
-%global shortcommit %(c=%{commit}; echo ${c:0:7})
%{!?_pkgdocdir: %global _pkgdocdir %{_docdir}/%{name}}
%{!?_licensedir:%global license %doc}
%global test_path %{_datadir}/booth/tests
+%global booth_user booth_test_user
# RPMs are split as follows:
# * booth:
# - envelope package serving as a syntactic shortcut to install
@@ -31,14 +28,13 @@
%bcond_with glue
Summary: Ticket Manager for Multi-site Clusters
Name: booth
-Version: 1.0
-Release: 8%{?dist}
-License: GPLv2+
+Version: 1.2
+Release: 1%{?dist}
+License: GPL-2.0-or-later
Vendor: Microsoft Corporation
Distribution: Azure Linux
URL: https://github.com/ClusterLabs/%{name}
-Source0: https://github.com/ClusterLabs/%{name}/archive/%{commit}/%{name}-%{shortcommit}.tar.gz#/%{name}-%{version}.tar.gz
-Patch0: CVE-2022-2553.patch
+Source0: https://github.com/ClusterLabs/%{name}/releases/download/v%{version}/%{name}-%{version}.tar.gz
# direct build process dependencies
BuildRequires: autoconf
BuildRequires: automake
@@ -78,7 +74,9 @@ Requires: %{name}-core%{?_isa}
Requires: %{name}-site
%files
-# intentionally empty
+%license COPYING
+%dir %{_datadir}/pkgconfig
+%{_datadir}/pkgconfig/booth.pc
%description
Booth manages tickets which authorize cluster sites located
@@ -154,7 +152,7 @@ BuildArch: noarch
Automated tests for running Booth, ticket manager for multi-site clusters.
%prep
-%autosetup -p1 -n %{name}-%{commit}
+%autosetup -n %{name}-%{version}
%build
export CFLAGS=" %{build_cflags} -I/usr/include/pacemaker "
@@ -182,22 +180,43 @@ cp -a -t %{buildroot}/%{_pkgdocdir} \
rm -rf %{buildroot}/%{_initrddir}/booth-arbitrator
rm -rf %{buildroot}/%{_pkgdocdir}/README.upgrade-from-v0.1
rm -rf %{buildroot}/%{_pkgdocdir}/COPYING
+
+# Removing absolute symlinks
+rm -f %{buildroot}%{_sbindir}/booth
+rm -f %{buildroot}%{_sbindir}/geostore
+ln -s boothd %{buildroot}%{_sbindir}/booth
+ln -s boothd %{buildroot}%{_sbindir}/geostore
+
# tests
-mkdir -p %{buildroot}/%{test_path}
-cp -a -t %{buildroot}/%{test_path} \
- -- conf test unit-tests script/unit-test.py
-chmod +x %{buildroot}/%{test_path}/test/booth_path
-chmod +x %{buildroot}/%{test_path}/test/live_test.sh
-mkdir -p %{buildroot}/%{test_path}/src
-ln -s -t %{buildroot}/%{test_path}/src \
- -- %{_sbindir}/boothd
+mkdir -p %{test_path}
+cp -a -t %{test_path} \
+ -- conf test
+chmod +x %{test_path}/test/booth_path
+chmod +x %{test_path}/test/live_test.sh
+mkdir -p %{test_path}/src
+ln -s -t %{test_path}/src \
+ -- %{buildroot}/%{_sbindir}/boothd
+# Generate runtests.py and boothtestenv.py
+sed -e 's#PYTHON_SHEBANG#%{__python3} -Es#g' \
+ -e 's#TEST_SRC_DIR#%{test_path}/test#g' \
+ -e 's#TEST_BUILD_DIR#%{test_path}/test#g' \
+ %{test_path}/test/runtests.py.in > %{test_path}/test/runtests.py
+
+chmod +x %{test_path}/test/runtests.py
+
+sed -e 's#PYTHON_SHEBANG#%{__python3} -Es#g' \
+ -e 's#TEST_SRC_DIR#%{test_path}/test#g' \
+ -e 's#TEST_BUILD_DIR#%{test_path}/test#g' \
+ %{test_path}/test/boothtestenv.py.in > %{test_path}/test/boothtestenv.py
# https://fedoraproject.org/wiki/Packaging:Python_Appendix#Manual_byte_compilation
-%py_byte_compile %{__python3} %{buildroot}/%{test_path}
+%py_byte_compile %{__python3} %{test_path}
%check
# alternatively: test/runtests.py
-VERBOSE=1 make check
+# Booth tests cannot run as root in RPM build system
+useradd -s /usr/bin/sh %{booth_user}
+su %{booth_user} -s /bin/sh -c "VERBOSE=1 %{test_path}/test/runtests.py"
%files core
%license COPYING
@@ -212,6 +231,9 @@ VERBOSE=1 make check
%dir %{_sysconfdir}/booth
%exclude %{_sysconfdir}/booth/booth.conf.example
+%dir %attr (750, %{uname}, %{gname}) %{_var}/lib/booth/
+%dir %attr (750, %{uname}, %{gname}) %{_var}/lib/booth/cores
+
%files arbitrator
%{_unitdir}/booth@.service
%{_unitdir}/booth-arbitrator.service
@@ -233,11 +255,14 @@ VERBOSE=1 make check
%files test
%doc %{_pkgdocdir}/README-testing
# /usr/share/booth provided by -site
-%{test_path}
# /usr/lib/ocf/resource.d/booth provided by -site
%{_libdir}/ocf/resource.d/booth/sharedrsc
%changelog
+* Thu Dec 18 2025 Aditya Singh - 1.2-1
+- Upgrade to version 1.2
+- License verified.
+
* Wed Aug 30 2023 CBL-Mariner Servicing Account - 1.0-8
- Add patch for CVE-2022-2553
diff --git a/SPECS-EXTENDED/bsf/bsf.spec b/SPECS-EXTENDED/bsf/bsf.spec
index dc9c94f0f0f..1ec19b02b17 100644
--- a/SPECS-EXTENDED/bsf/bsf.spec
+++ b/SPECS-EXTENDED/bsf/bsf.spec
@@ -1,7 +1,7 @@
Summary: Bean Scripting Framework
Name: bsf
Version: 2.4.0
-Release: 19%{?dist}
+Release: 20%{?dist}
License: Apache-2.0
Vendor: Microsoft Corporation
Distribution: Azure Linux
@@ -85,6 +85,8 @@ install -DTm 644 %{SOURCE1} %{buildroot}%{_mavenpomdir}/JPP-%{name}.pom
# javadoc
install -d -m 755 %{buildroot}%{_javadocdir}/%{name}
cp -pr build/javadocs/* %{buildroot}%{_javadocdir}/%{name}
+mv %{buildroot}%{_javadocdir}/%{name}/legal/ADDITIONAL_LICENSE_INFO .
+mv %{buildroot}%{_javadocdir}/%{name}/legal/LICENSE .
%fdupes -s %{buildroot}%{_javadocdir}/%{name}
%files -f .mfiles
@@ -92,10 +94,14 @@ cp -pr build/javadocs/* %{buildroot}%{_javadocdir}/%{name}
%doc AUTHORS.txt CHANGES.txt README.txt TODO.txt RELEASE-NOTE.txt
%files javadoc
-%license LICENSE.txt NOTICE.txt
+%license LICENSE LICENSE.txt NOTICE.txt ADDITIONAL_LICENSE_INFO
%{_javadocdir}/%{name}
%changelog
+* Fri Jan 02 2026 Sumit Jena - 2.4.0-20
+- Fixed License Warnings.
+- Added additional License file.
+
* Tue Jan 03 2023 Sumedh Sharma - 2.4.0-19
- License verified
diff --git a/SPECS-EXTENDED/buildah/buildah.spec b/SPECS-EXTENDED/buildah/buildah.spec
index 83ad3316fb8..41d8b521fd7 100644
--- a/SPECS-EXTENDED/buildah/buildah.spec
+++ b/SPECS-EXTENDED/buildah/buildah.spec
@@ -30,7 +30,7 @@ Epoch: 0
Version: 1.41.4
# The `AND` needs to be uppercase in the License for SPDX compatibility
License: Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND ISC AND MIT AND MPL-2.0
-Release: 4%{?dist}
+Release: 6%{?dist}
Vendor: Microsoft Corporation
Distribution: Azure Linux
ExclusiveArch: aarch64 ppc64le s390x x86_64
@@ -43,7 +43,7 @@ BuildRequires: device-mapper-devel
BuildRequires: git-core
BuildRequires: golang >= 1.16.6
BuildRequires: glib2-devel
-BuildRequires: glibc-static >= 2.38-16%{?dist}
+BuildRequires: glibc-static >= 2.38-18%{?dist}
%if !%{defined gobuild}
BuildRequires: go-rpm-macros
%endif
@@ -173,6 +173,12 @@ make test-unit
%{_datadir}/%{name}/test
%changelog
+* Thu Jan 22 2026 Kanishk Bansal - 0:1.41.4-6
+- Bump to rebuild with updated glibc
+
+* Mon Jan 19 2026 Kanishk Bansal - 0:1.41.4-5
+- Bump to rebuild with updated glibc
+
* Mon Nov 10 2025 Andrew Phelps - 0:1.41.4-4
- Bump to rebuild with updated glibc
diff --git a/SPECS-EXTENDED/catatonit/catatonit.spec b/SPECS-EXTENDED/catatonit/catatonit.spec
index 79147e44475..110355521c2 100644
--- a/SPECS-EXTENDED/catatonit/catatonit.spec
+++ b/SPECS-EXTENDED/catatonit/catatonit.spec
@@ -3,7 +3,7 @@ Distribution: Azure Linux
Name: catatonit
Version: 0.1.7
-Release: 24%{?dist}
+Release: 26%{?dist}
Summary: A signal-forwarding process manager for containers
License: GPLv3+
URL: https://github.com/openSUSE/catatonit
@@ -13,7 +13,7 @@ BuildRequires: automake
BuildRequires: file
BuildRequires: gcc
BuildRequires: git
-BuildRequires: glibc-static >= 2.38-16%{?dist}
+BuildRequires: glibc-static >= 2.38-18%{?dist}
BuildRequires: libtool
BuildRequires: make
@@ -61,6 +61,12 @@ ln -s %{_libexecdir}/%{name}/%{name} %{buildroot}%{_libexecdir}/podman/%{name}
%{_libexecdir}/podman/%{name}
%changelog
+* Thu Jan 22 2026 Kanishk Bansal - 0.1.7-26
+- Bump to rebuild with updated glibc
+
+* Mon Jan 19 2026 Kanishk Bansal - 0.1.7-25
+- Bump to rebuild with updated glibc
+
* Mon Nov 10 2025 Andrew Phelps - 0.1.7-24
- Bump to rebuild with updated glibc
diff --git a/SPECS-EXTENDED/corosync/corosync.spec b/SPECS-EXTENDED/corosync/corosync.spec
index 08a17f3ab41..4a0ae2772c8 100644
--- a/SPECS-EXTENDED/corosync/corosync.spec
+++ b/SPECS-EXTENDED/corosync/corosync.spec
@@ -19,7 +19,7 @@ Distribution: Azure Linux
Name: corosync
Summary: The Corosync Cluster Engine and Application Programming Interfaces
Version: 3.0.4
-Release: 3%{?dist}
+Release: 4%{?dist}
License: BSD
URL: http://corosync.github.io/corosync/
Source0: http://build.clusterlabs.org/corosync/releases/%{name}-%{version}%{?gittarver}.tar.gz
@@ -160,7 +160,7 @@ fi
%endif
%files
-%doc LICENSE
+%license LICENSE
%{_sbindir}/corosync
%{_sbindir}/corosync-keygen
%{_sbindir}/corosync-cmapctl
@@ -219,7 +219,7 @@ Summary: The Corosync Cluster Engine Libraries
This package contains corosync libraries.
%files -n corosynclib
-%doc LICENSE
+%license LICENSE
%{_libdir}/libcfg.so.*
%{_libdir}/libcpg.so.*
%{_libdir}/libcmap.so.*
@@ -242,7 +242,6 @@ This package contains include files and man pages used to develop using
The Corosync Cluster Engine APIs.
%files -n corosynclib-devel
-%doc LICENSE
%dir %{_includedir}/corosync/
%{_includedir}/corosync/corodefs.h
%{_includedir}/corosync/cfg.h
@@ -281,12 +280,15 @@ Nodes can be added and removed as well as partitioned (to simulate
network splits)
%files -n corosync-vqsim
-%doc LICENSE
%{_bindir}/corosync-vqsim
%{_mandir}/man8/corosync-vqsim.8*
%endif
%changelog
+* Tue Jan 06 2026 Pawel Winogrodzki - 3.0.4-4
+- Bumping release to rebuild with new 'net-snmp' libs.
+- License verified.
+
* Thu Oct 14 2021 Pawel Winogrodzki - 3.0.4-3
- Initial CBL-Mariner import from Fedora 32 (license: MIT).
- Converting the 'Release' tag to the '[number].[distribution]' format.
diff --git a/SPECS-EXTENDED/criu/001-upstream-pr-2653.patch b/SPECS-EXTENDED/criu/001-upstream-pr-2653.patch
new file mode 100644
index 00000000000..bcb96fd1df3
--- /dev/null
+++ b/SPECS-EXTENDED/criu/001-upstream-pr-2653.patch
@@ -0,0 +1,134 @@
+From 22fdffbdde9476b27988b3ee0a4013a4453784c9 Mon Sep 17 00:00:00 2001
+From: Andrei Vagin
+Date: Mon, 21 Apr 2025 06:33:41 +0000
+Subject: [PATCH] net: nftables: avoid restore failure if the CRIU nft table
+ already exist
+
+CRIU locks the network during restore in an "empty" network namespace.
+However, "empty" in this context means CRIU isn't restoring the
+namespace. This network namespace can be the same namespace where
+processes have been dumped and so the network is already locked in it.
+
+Fixes #2650
+
+Signed-off-by: Andrei Vagin
+---
+ criu/cr-restore.c | 2 +-
+ criu/include/net.h | 2 +-
+ criu/net.c | 30 +++++++++++++++++-------------
+ 3 files changed, 19 insertions(+), 15 deletions(-)
+
+diff --git a/criu/cr-restore.c b/criu/cr-restore.c
+index 583b446e0b..30932f60a2 100644
+--- a/criu/cr-restore.c
++++ b/criu/cr-restore.c
+@@ -2119,7 +2119,7 @@ static int restore_root_task(struct pstree_item *init)
+ * the '--empty-ns net' mode no iptables C/R is done and we
+ * need to return these rules by hands.
+ */
+- ret = network_lock_internal();
++ ret = network_lock_internal(/* restore = */ true);
+ if (ret)
+ goto out_kill;
+ }
+diff --git a/criu/include/net.h b/criu/include/net.h
+index 5e8a848620..7c5ede21e1 100644
+--- a/criu/include/net.h
++++ b/criu/include/net.h
+@@ -31,7 +31,7 @@ extern int collect_net_namespaces(bool for_dump);
+
+ extern int network_lock(void);
+ extern void network_unlock(void);
+-extern int network_lock_internal(void);
++extern int network_lock_internal(bool restore);
+
+ extern struct ns_desc net_ns_desc;
+
+diff --git a/criu/net.c b/criu/net.c
+index ee46f1c495..300df480b0 100644
+--- a/criu/net.c
++++ b/criu/net.c
+@@ -3206,12 +3206,12 @@ static inline FILE *redirect_nftables_output(struct nft_ctx *nft)
+ }
+ #endif
+
+-static inline int nftables_lock_network_internal(void)
++static inline int nftables_lock_network_internal(bool restore)
+ {
+ #if defined(CONFIG_HAS_NFTABLES_LIB_API_0) || defined(CONFIG_HAS_NFTABLES_LIB_API_1)
+ cleanup_file FILE *fp = NULL;
+ struct nft_ctx *nft;
+- int ret = 0;
++ int ret = 0, exit_code = -1;
+ char table[32];
+ char buf[128];
+
+@@ -3224,11 +3224,16 @@ static inline int nftables_lock_network_internal(void)
+
+ fp = redirect_nftables_output(nft);
+ if (!fp)
+- goto out;
++ goto err2;
+
+ snprintf(buf, sizeof(buf), "create table %s", table);
+- if (NFT_RUN_CMD(nft, buf))
++ ret = NFT_RUN_CMD(nft, buf);
++ if (ret) {
++ /* The network has been locked on dump. */
++ if (restore && errno == EEXIST)
++ return 0;
+ goto err2;
++ }
+
+ snprintf(buf, sizeof(buf), "add chain %s output { type filter hook output priority 0; policy drop; }", table);
+ if (NFT_RUN_CMD(nft, buf))
+@@ -3246,17 +3251,16 @@ static inline int nftables_lock_network_internal(void)
+ if (NFT_RUN_CMD(nft, buf))
+ goto err1;
+
+- goto out;
+-
++ exit_code = 0;
++out:
++ nft_ctx_free(nft);
++ return exit_code;
+ err1:
+ snprintf(buf, sizeof(buf), "delete table %s", table);
+ NFT_RUN_CMD(nft, buf);
+ err2:
+- ret = -1;
+ pr_err("Locking network failed using nftables\n");
+-out:
+- nft_ctx_free(nft);
+- return ret;
++ goto out;
+ #else
+ pr_err("CRIU was built without libnftables support\n");
+ return -1;
+@@ -3288,7 +3292,7 @@ static int iptables_network_lock_internal(void)
+ return ret;
+ }
+
+-int network_lock_internal(void)
++int network_lock_internal(bool restore)
+ {
+ int ret = 0, nsret;
+
+@@ -3301,7 +3305,7 @@ int network_lock_internal(void)
+ if (opts.network_lock_method == NETWORK_LOCK_IPTABLES)
+ ret = iptables_network_lock_internal();
+ else if (opts.network_lock_method == NETWORK_LOCK_NFTABLES)
+- ret = nftables_lock_network_internal();
++ ret = nftables_lock_network_internal(restore);
+
+ if (restore_ns(nsret, &net_ns_desc))
+ ret = -1;
+@@ -3427,7 +3431,7 @@ int network_lock(void)
+ if (run_scripts(ACT_NET_LOCK))
+ return -1;
+
+- return network_lock_internal();
++ return network_lock_internal(false);
+ }
+
+ void network_unlock(void)
diff --git a/SPECS-EXTENDED/criu/criu.signatures.json b/SPECS-EXTENDED/criu/criu.signatures.json
index 31dcbf81e54..1068f5f56b3 100644
--- a/SPECS-EXTENDED/criu/criu.signatures.json
+++ b/SPECS-EXTENDED/criu/criu.signatures.json
@@ -1,6 +1,6 @@
{
"Signatures": {
- "criu-3.15.tar.bz2": "447cc1f350da94d190bcfda753695bf34ce91eee969df8263fcc33d08990a025",
+ "criu-4.1.1.tar.gz": "a5338fe696395843543e6e09c85ccaf36614bf172c26fe8506191b7b930d2dae",
"criu-tmpfiles.conf": "d40c7153756d170c4d68ac57598236a011c177ac41a1125813f8b2e16dc15c1a"
}
-}
+}
\ No newline at end of file
diff --git a/SPECS-EXTENDED/criu/criu.spec b/SPECS-EXTENDED/criu/criu.spec
index adfa656e4e7..a633990e463 100644
--- a/SPECS-EXTENDED/criu/criu.spec
+++ b/SPECS-EXTENDED/criu/criu.spec
@@ -4,54 +4,49 @@ Distribution: Azure Linux
%global py_prefix python3
%global py_binary %{py_prefix}
-
-
-
-
# With annobin enabled, CRIU does not work anymore. It seems CRIU's
# parasite code breaks if annobin is enabled.
%undefine _annotated_build
-Name: criu
-Version: 3.15
-Release: 3%{?dist}
-Provides: crtools = %{version}-%{release}
-Obsoletes: crtools <= 1.0-2
-Summary: Tool for Checkpoint/Restore in User-space
-License: GPLv2
-URL: http://criu.org/
-Source0: http://download.openvz.org/criu/criu-%{version}.tar.bz2
-
-Patch0: unifying_struct_names.patch
-
-%if 0%{?rhel} && 0%{?rhel} <= 7
-BuildRequires: perl
-# RHEL has no asciidoc; take man-page from Fedora 26
-# zcat /usr/share/man/man8/criu.8.gz > criu.8
-Source1: criu.8
-Source2: crit.1
-Source3: compel.1
-# The patch aio-fix.patch is needed as RHEL7
-# doesn't do "nr_events *= 2" in ioctx_alloc().
-Patch100: aio-fix.patch
-%endif
-
-Source4: criu-tmpfiles.conf
-
-BuildRequires: gcc
-BuildRequires: systemd
-BuildRequires: libnet-devel
-BuildRequires: protobuf-devel protobuf-c-devel %{py_prefix}-devel libnl3-devel libcap-devel
-
-BuildRequires: asciidoc xmlto
-BuildRequires: perl-interpreter
-BuildRequires: libselinux-devel
-BuildRequires: gnutls-devel
-BuildRequires: nftables-devel
-BuildRequires: git
+Name: criu
+Version: 4.1.1
+Release: 1%{?dist}
+Provides: crtools = %{version}-%{release}
+Obsoletes: crtools <= 1.0-2
+Summary: Tool for Checkpoint/Restore in User-space
+License: GPLv2
+URL: http://criu.org/
+Source0: https://github.com/checkpoint-restore/criu/archive/v%{version}/criu-%{version}.tar.gz
+
+Patch0: 001-upstream-pr-2653.patch
+
+Source5: criu-tmpfiles.conf
+
+BuildRequires: gcc
+BuildRequires: systemd
+BuildRequires: libnet-devel
+BuildRequires: protobuf-devel
+BuildRequires: protobuf-c-devel
+BuildRequires: %{py_prefix}-devel
+BuildRequires: libnl3-devel
+BuildRequires: libcap-devel
+BuildRequires: %{py_prefix}-pip
+BuildRequires: %{py_prefix}-setuptools
+BuildRequires: %{py_prefix}-wheel
+BuildRequires: %{py_prefix}-protobuf
+BuildRequires: asciidoc
+BuildRequires: perl-interpreter
+BuildRequires: libselinux-devel
+BuildRequires: gnutls-devel
+BuildRequires: libdrm-devel
+BuildRequires: libuuid-devel
+BuildRequires: libbsd-devel
+BuildRequires: nftables-devel
+BuildRequires: make
+BuildRequires: git
+BuildRequires: xmlto
# Checkpointing containers with a tmpfs requires tar
-Recommends: tar
-BuildRequires: libbsd-devel
+Recommends: tar
# user-space and kernel changes are only available for x86_64, arm,
@@ -65,102 +60,99 @@ criu is the user-space part of Checkpoint/Restore in User-space
Linux in user-space.
-%package devel
-Summary: Header files and libraries for %{name}
-Requires: %{name} = %{version}-%{release}
+%package devel
+Summary: Header files and libraries for %{name}
+Requires: %{name} = %{version}-%{release}
+Requires: %{name}-libs = %{version}-%{release}
-%description devel
+%description devel
This package contains header files and libraries for %{name}.
-%package libs
-Summary: Libraries for %{name}
-Requires: %{name} = %{version}-%{release}
+%package libs
+Summary: Libraries for %{name}
+Requires: %{name} = %{version}-%{release}
-%description libs
+%description libs
This package contains the libraries for %{name}
-
-%package -n %{py_prefix}-%{name}
+%package amdgpu-plugin
+Summary: AMD GPU plugin for %{name}
+Requires: %{name} = %{version}-%{release}
+
+%description amdgpu-plugin
+This package contains the AMD GPU plugin for %{name}
+
+%package cuda-plugin
+Summary: CUDA plugin for %{name}
+Requires: %{name} = %{version}-%{release}
+
+%description cuda-plugin
+This package contains the CUDA plugin for %{name}
+
+%package -n %{py_prefix}-%{name}
%{?python_provide:%python_provide %{py_prefix}-%{name}}
-Summary: Python bindings for %{name}
-%if 0%{?rhel} && 0%{?rhel} <= 7
-Requires: protobuf-python
-Requires: %{name} = %{version}-%{release} %{py_prefix}-ipaddr
-%else
-Requires: protobuf-%{py_prefix}
-Obsoletes: python2-criu < 3.10-1
-%endif
-
+Summary: Python bindings for %{name}
+Requires: %{py_prefix}-protobuf
+
%description -n %{py_prefix}-%{name}
%{py_prefix}-%{name} contains Python bindings for %{name}.
-
-%package -n crit
-Summary: CRIU image tool
-Requires: %{py_prefix}-%{name} = %{version}-%{release}
-
+
+%package -n crit
+Summary: CRIU image tool
+Requires: %{py_prefix}-%{name} = %{version}-%{release}
+
%description -n crit
crit is a tool designed to decode CRIU binary dump files and show
their content in human-readable form.
-
+
+%package -n criu-ns
+Summary: Tool to run CRIU in different namespaces
+Requires: %{name} = %{version}-%{release}
+
+%description -n criu-ns
+The purpose of the criu-ns wrapper script is to enable restoring a process
+tree that might require a specific PID that is already used on the system.
+This script can help to workaround the so called "PID mismatch" problem.
%prep
-%setup -q
-%patch 0 -p1
-
-%if 0%{?rhel} && 0%{?rhel} <= 7
-%patch 100 -p1
-%endif
+%autosetup -p1
%build
-# A small part of the build makes direct calls to "ld" instead of GCC and "LDFLAGS-MASK"
-# is used to cut out parts of "LDFLAGS", which "ld" doesn't understand.
-# "LDFLAGS-MASK" didn't expect the "-specs" argument Mariner contains
-# in the hardening flags and all direct calls to "ld" were crashing.
-sed -i -E "s/(LDFLAGS-MASK.*:= -Wl,%)/\1 -specs=%/" scripts/nmk/scripts/build.mk
-CFLAGS=`echo "$CFLAGS" | sed -e 's,-fstack-protector\S*,,g'` %make_build V=1 WERROR=0 RUNDIR=/run/criu PYTHON=%{py_binary}
-
+# This package calls LD directly without specifying the LTO plugins. Until
+# that is fixed, disable LTO.
+%define _lto_cflags %{nil}
+
+# %{?_smp_mflags} does not work
+# -fstack-protector breaks build
+LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now '
+export LDFLAGS
+make V=1 WERROR=0 PREFIX=%{_prefix} RUNDIR=/run/criu PYTHON=%{py_binary} PLUGINDIR=%{_libdir}/criu NETWORK_LOCK_DEFAULT=NETWORK_LOCK_NFTABLES
+make V=1 WERROR=0 PREFIX=%{_prefix} PLUGINDIR=%{_libdir}/criu amdgpu_plugin
make docs V=1
-
%install
-make install-criu DESTDIR=$RPM_BUILD_ROOT PREFIX=%{_prefix} LIBDIR=%{_libdir}
-make install-lib DESTDIR=$RPM_BUILD_ROOT PREFIX=%{_prefix} LIBDIR=%{_libdir} PYTHON=%{py_binary}
-
-# only install documentation on Fedora as it requires asciidoc,
-# which is not available on RHEL7
+sed -e "s,--upgrade --ignore-installed,--no-index --no-deps -v --no-build-isolation,g" -i lib/Makefile -i crit/Makefile
+make install-criu DESTDIR=$RPM_BUILD_ROOT PREFIX=%{_prefix} LIBDIR=%{_libdir} BINDIR=%{_bindir} SBINDIR=%{_sbindir}
+make install-lib DESTDIR=$RPM_BUILD_ROOT PREFIX=%{_prefix} LIBDIR=%{_libdir} PYTHON=%{py_binary} PIPFLAGS="--no-build-isolation --no-index --no-deps --progress-bar off --upgrade --ignore-installed"
+make install-amdgpu_plugin DESTDIR=$RPM_BUILD_ROOT PREFIX=%{_prefix} LIBDIR=%{_libdir} PLUGINDIR=%{_libdir}/criu
+make install-cuda_plugin DESTDIR=$RPM_BUILD_ROOT PREFIX=%{_prefix} LIBDIR=%{_libdir} PLUGINDIR=%{_libdir}/criu
+make install-crit DESTDIR=$RPM_BUILD_ROOT PREFIX=%{_prefix} LIBDIR=%{_libdir} BINDIR=%{_bindir} SBINDIR=%{_sbindir} PYTHON=%{py_binary} PIPFLAGS="--no-build-isolation --no-index --no-deps --progress-bar off --upgrade --ignore-installed"
make install-man DESTDIR=$RPM_BUILD_ROOT PREFIX=%{_prefix} LIBDIR=%{_libdir}
-
-
-
-
-
-
+rm -f $RPM_BUILD_ROOT%{_mandir}/man1/compel.1
+
mkdir -p %{buildroot}%{_tmpfilesdir}
-install -m 0644 %{SOURCE4} %{buildroot}%{_tmpfilesdir}/%{name}.conf
+install -m 0644 %{SOURCE5} %{buildroot}%{_tmpfilesdir}/%{name}.conf
install -d -m 0755 %{buildroot}/run/%{name}/
-%if 0%{?rhel}
-# remove devel and libs packages
-rm -rf $RPM_BUILD_ROOT%{_includedir}/criu
-rm $RPM_BUILD_ROOT%{_libdir}/*.so*
-rm -rf $RPM_BUILD_ROOT%{_libdir}/pkgconfig
-rm -rf $RPM_BUILD_ROOT%{_libexecdir}/%{name}
-%endif
-
-# remove static lib
-rm -f $RPM_BUILD_ROOT%{_libdir}/libcriu.a
-
%files
+%license COPYING
+%doc README.md
%{_sbindir}/%{name}
%doc %{_mandir}/man8/criu.8*
-%doc %{_mandir}/man1/compel.1*
-
%{_libexecdir}/%{name}
-
%dir /run/%{name}
%{_tmpfilesdir}/%{name}.conf
-%doc README.md COPYING
%files devel
@@ -170,23 +162,37 @@ rm -f $RPM_BUILD_ROOT%{_libdir}/libcriu.a
%files libs
%{_libdir}/*.so.*
-
-
+%{_libdir}/*.a
+
+%files amdgpu-plugin
+%{_libdir}/%{name}/amdgpu_plugin.so
+%doc %{_mandir}/man1/criu-amdgpu-plugin.1*
+
+%files cuda-plugin
+%{_libdir}/%{name}/cuda_plugin.so
+%doc plugins/cuda/README.md
+
%files -n %{py_prefix}-%{name}
-%if 0%{?rhel} && 0%{?rhel} <= 7
-%{python2_sitelib}/pycriu/*
-%{python2_sitelib}/*egg-info
-%else
-%{python3_sitelib}/pycriu/*
-%{python3_sitelib}/*egg-info
-%endif
-
+%{python3_sitelib}/pycriu*
+
%files -n crit
%{_bindir}/crit
+%{python3_sitelib}/crit-%{version}.dist-info/
+%{python3_sitelib}/crit
%doc %{_mandir}/man1/crit.1*
+
+%files -n criu-ns
+%{_sbindir}/criu-ns
+%doc %{_mandir}/man1/criu-ns.1*
+%post
+%tmpfiles_create %{name}.conf
%changelog
+* Fri Nov 07 2025 Sandeep Karambelkar - 4.1.1-1
+- Upgrade to 4.1.1 ref from Fedora 42
+- License verified
+
* Tue Sep 21 2021 Pawel Winogrodzki - 3.15-3
- Added a patch to fix build errors by unifying struct names across the source code.
- Removed the "-fstack-protector" flag breaking the build.
diff --git a/SPECS-EXTENDED/crun/crun.signatures.json b/SPECS-EXTENDED/crun/crun.signatures.json
new file mode 100644
index 00000000000..a3a523b62ed
--- /dev/null
+++ b/SPECS-EXTENDED/crun/crun.signatures.json
@@ -0,0 +1,5 @@
+{
+ "Signatures": {
+ "crun-1.24.tar.gz": "90b6e33a6400ba5355eed6efc46a4c890e48e6c96d99d2bbc7fe92803bdfce52"
+ }
+}
\ No newline at end of file
diff --git a/SPECS-EXTENDED/crun/crun.spec b/SPECS-EXTENDED/crun/crun.spec
new file mode 100644
index 00000000000..6b3d6742369
--- /dev/null
+++ b/SPECS-EXTENDED/crun/crun.spec
@@ -0,0 +1,192 @@
+%global krun_opts %{nil}
+%global wasmedge_opts %{nil}
+%global yajl_opts %{nil}
+
+%if %{defined copr_username}
+%define copr_build 1
+%endif
+
+# krun and wasm support not yet provided in azurelinux
+%global yajl_opts --enable-embedded-yajl
+
+Summary: OCI runtime written in C
+Name: crun
+Version: 1.24
+Release: 3%{?dist}
+Vendor: Microsoft Corporation
+Distribution: Azure Linux
+URL: https://github.com/containers/%{name}
+Source0: %{url}/releases/download/%{version}/%{name}-%{version}.tar.gz
+License: GPL-2.0-only
+BuildRequires: autoconf
+BuildRequires: automake
+BuildRequires: gcc
+BuildRequires: git-core
+BuildRequires: gperf
+BuildRequires: libcap-devel
+
+%if %{defined krun_support}
+BuildRequires: libkrun-devel
+%endif
+
+BuildRequires: systemd-devel
+
+%if %{defined system_yajl}
+BuildRequires: yajl-devel
+%endif
+
+BuildRequires: libseccomp-devel
+BuildRequires: python3-libmount
+BuildRequires: libtool
+BuildRequires: protobuf-c-devel
+BuildRequires: criu-devel >= 3.17.1-2
+Recommends: criu >= 3.17.1
+Recommends: criu-libs
+
+%if %{defined wasmedge_support}
+BuildRequires: wasmedge-devel
+%endif
+
+BuildRequires: python
+BuildRequires: glibc-static >= 2.38-18%{?dist}
+Provides: oci-runtime
+
+%description
+%{name} is a OCI runtime
+
+%if %{defined krun_support}
+%package krun
+Summary: %{name} with libkrun support
+Requires: libkrun
+Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
+Provides: krun = %{?epoch:%{epoch}:}%{version}-%{release}
+
+%description krun
+krun is a symlink to the %{name} binary, with libkrun as an additional dependency.
+%endif
+
+%if %{defined wasm_support}
+%package wasm
+Summary: %{name} with wasm support
+Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
+# wasm packages are not present on RHEL yet and are currently a PITA to test
+# Best to only include wasmedge as weak dep on rhel
+%if %{defined fedora}
+Requires: wasm-library
+%endif
+Recommends: wasmedge
+
+%description wasm
+%{name}-wasm is a symlink to the %{name} binary, with wasm as an additional dependency.
+%endif
+
+%prep
+%autosetup -p1 -n %{name}-%{version}
+
+%build
+./autogen.sh
+./configure --disable-silent-rules %{krun_opts} %{wasmedge_opts} %{yajl_opts}
+%make_build
+
+%install
+%make_install prefix=%{_prefix}
+rm -rf %{buildroot}%{_prefix}/lib*
+
+# Placeholder check to silence rpmlint
+%check
+
+%files
+%license COPYING
+%{_bindir}/%{name}
+%{_mandir}/man1/%{name}.1.gz
+
+%if %{defined krun_support}
+%files krun
+%license COPYING
+%{_bindir}/krun
+%{_mandir}/man1/krun.1.gz
+%endif
+
+%if %{defined wasm_support}
+%files wasm
+%license COPYING
+%{_bindir}/%{name}-wasm
+%endif
+
+%changelog
+* Thu Jan 22 2026 Kanishk Bansal - 1.24-3
+- Bump to rebuild with updated glibc
+
+* Mon Jan 19 2026 Kanishk Bansal - 1.24-2
+- Bump to rebuild with updated glibc
+
+* Fri Nov 07 2025 Sandeep Karambelkar - 1.24-1
+- Initial Azure Linux import from Fedora 42 (license: MIT).
+- Modified for building in azurelinux
+- License verified
+
+* Thu Jul 31 2025 Packit - 1.23.1-1
+- Update to 1.23.1 upstream release
+
+* Thu Jul 24 2025 Packit - 1.23-1
+- Update to 1.23 upstream release
+
+* Fri Jun 27 2025 Packit - 1.22-1
+- Update to 1.22 upstream release
+
+* Fri Mar 28 2025 Packit - 1.21-1
+- Update to 1.21 upstream release
+
+* Mon Feb 10 2025 Lokesh Mandvekar - 1.20-2
+- fix gating config
+
+* Wed Feb 05 2025 Packit - 1.20-1
+- Update to 1.20 upstream release
+
+* Thu Jan 16 2025 Fedora Release Engineering - 1.19.1-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
+
+* Wed Jan 15 2025 Lokesh Mandvekar - 1.19.1-3
+- TMT: use prepare conditionals
+
+* Thu Dec 26 2024 Lokesh Mandvekar - 1.19.1-2
+- TMT: sync tests from upstream
+
+* Tue Dec 17 2024 Packit - 1.19.1-1
+- Update to 1.19.1 upstream release
+
+* Fri Dec 06 2024 Packit - 1.19-1
+- Update to 1.19 upstream release
+
+* Thu Oct 31 2024 Packit - 1.18.2-1
+- Update to 1.18.2 upstream release
+
+* Wed Oct 30 2024 Packit - 1.18.1-1
+- Update to 1.18.1 upstream release
+
+* Tue Oct 22 2024 Packit - 1.18-1
+- Update to 1.18 upstream release
+
+* Mon Oct 21 2024 Yaakov Selkowitz - 1.17-3
+- Use embedded yajl in RHEL builds
+
+* Thu Sep 26 2024 David Abdurachmanov - 1.17-2
+- Disable criu support on riscv64
+
+* Tue Sep 10 2024 Lokesh Mandvekar - 1.17-1
+- bump to 1.17
+
+* Wed Jul 17 2024 Fedora Release Engineering - 1.15-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
+
+* Thu May 02 2024 Packit - 1.15-1
+- Update to 1.15 upstream release
+
+* Wed Mar 27 2024 Lokesh Mandvekar - 1.14.4-5
+- wasmedge should stay enabled for official fedora
+
+* Wed Mar 27 2024 Lokesh Mandvekar - 1.14.4-4
+- remove eln macro
+
+* Tue Mar 05 2024 Giuseppe Scrivano - 1.14.4-3
+- Revert "Add riscv64 support."
diff --git a/SPECS-EXTENDED/dyninst/dyninst.spec b/SPECS-EXTENDED/dyninst/dyninst.spec
index 93e1f4b4f4f..8d6ff8de0ff 100644
--- a/SPECS-EXTENDED/dyninst/dyninst.spec
+++ b/SPECS-EXTENDED/dyninst/dyninst.spec
@@ -1,7 +1,7 @@
Summary: An API for Run-time Code Generation
License: LGPLv2+
Name: dyninst
-Release: 26%{?dist}
+Release: 28%{?dist}
Vendor: Microsoft Corporation
Distribution: Azure Linux
URL: http://www.dyninst.org
@@ -31,7 +31,7 @@ BuildRequires: tbb tbb-devel
# Extra requires just for the testsuite
BuildRequires: gcc-gfortran libstdc++-static libxml2-devel
-BuildRequires: glibc-static >= 2.38-16%{?dist}
+BuildRequires: glibc-static >= 2.38-18%{?dist}
# Testsuite files should not provide/require anything
%{?filter_setup:
@@ -194,6 +194,12 @@ echo "%{_libdir}/dyninst" > %{buildroot}/etc/ld.so.conf.d/%{name}-%{_arch}.conf
%attr(644,root,root) %{_libdir}/dyninst/testsuite/*.a
%changelog
+* Thu Jan 22 2026 Kanishk Bansal - 10.1.0-28
+- Bump to rebuild with updated glibc
+
+* Mon Jan 19 2026 Kanishk Bansal - 10.1.0-27
+- Bump to rebuild with updated glibc
+
* Mon Nov 10 2025 Andrew Phelps - 10.1.0-26
- Bump to rebuild with updated glibc
diff --git a/SPECS-EXTENDED/ed25519-java/0001-EdDSAEngine.initVerify-Handle-any-non-EdDSAPublicKey.patch b/SPECS-EXTENDED/ed25519-java/0001-EdDSAEngine.initVerify-Handle-any-non-EdDSAPublicKey.patch
new file mode 100644
index 00000000000..6d7079ea1e9
--- /dev/null
+++ b/SPECS-EXTENDED/ed25519-java/0001-EdDSAEngine.initVerify-Handle-any-non-EdDSAPublicKey.patch
@@ -0,0 +1,37 @@
+From c5629faa3e1880cc71da506263f224bc818fe827 Mon Sep 17 00:00:00 2001
+From: Jack Grigg
+Date: Sun, 27 Jan 2019 23:27:00 +0000
+Subject: [PATCH 1/2] EdDSAEngine.initVerify(): Handle any non-EdDSAPublicKey
+ X.509-encoded pubkey
+
+sun.security.x509.X509Key is a JDK-internal API, and should not be used
+directly. Instead of looking for an instance of that class, we check the
+primary encoding format of the PublicKey, and proceed if it is "X.509".
+---
+ src/net/i2p/crypto/eddsa/EdDSAEngine.java | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/src/net/i2p/crypto/eddsa/EdDSAEngine.java b/src/net/i2p/crypto/eddsa/EdDSAEngine.java
+index 1f0ba6d..6b25410 100644
+--- a/src/net/i2p/crypto/eddsa/EdDSAEngine.java
++++ b/src/net/i2p/crypto/eddsa/EdDSAEngine.java
+@@ -29,7 +29,6 @@ import java.util.Arrays;
+ import net.i2p.crypto.eddsa.math.Curve;
+ import net.i2p.crypto.eddsa.math.GroupElement;
+ import net.i2p.crypto.eddsa.math.ScalarOps;
+-import sun.security.x509.X509Key;
+
+ /**
+ * Signing and verification for EdDSA.
+@@ -157,7 +156,7 @@ public final class EdDSAEngine extends Signature {
+ }
+ } else if (!key.getParams().getHashAlgorithm().equals(digest.getAlgorithm()))
+ throw new InvalidKeyException("Key hash algorithm does not match chosen digest");
+- } else if (publicKey instanceof X509Key) {
++ } else if (publicKey.getFormat().equals("X.509")) {
+ // X509Certificate will sometimes contain an X509Key rather than the EdDSAPublicKey itself; the contained
+ // key is valid but needs to be instanced as an EdDSAPublicKey before it can be used.
+ EdDSAPublicKey parsedPublicKey;
+--
+2.33.1
+
diff --git a/SPECS-EXTENDED/ed25519-java/0002-Disable-test-that-relies-on-internal-sun-JDK-classes.patch b/SPECS-EXTENDED/ed25519-java/0002-Disable-test-that-relies-on-internal-sun-JDK-classes.patch
new file mode 100644
index 00000000000..d8128286dea
--- /dev/null
+++ b/SPECS-EXTENDED/ed25519-java/0002-Disable-test-that-relies-on-internal-sun-JDK-classes.patch
@@ -0,0 +1,46 @@
+From 1ea7fb5ed949d8a458fda40b186868b7cffbb271 Mon Sep 17 00:00:00 2001
+From: Mat Booth
+Date: Wed, 1 Dec 2021 09:35:10 +0000
+Subject: [PATCH 2/2] Disable test that relies on internal sun JDK classes
+
+---
+ test/net/i2p/crypto/eddsa/EdDSAEngineTest.java | 18 ------------------
+ 1 file changed, 18 deletions(-)
+
+diff --git a/test/net/i2p/crypto/eddsa/EdDSAEngineTest.java b/test/net/i2p/crypto/eddsa/EdDSAEngineTest.java
+index 2ed793b..adc46fd 100644
+--- a/test/net/i2p/crypto/eddsa/EdDSAEngineTest.java
++++ b/test/net/i2p/crypto/eddsa/EdDSAEngineTest.java
+@@ -31,8 +31,6 @@ import net.i2p.crypto.eddsa.spec.EdDSAPublicKeySpec;
+ import org.junit.Rule;
+ import org.junit.Test;
+ import org.junit.rules.ExpectedException;
+-import sun.security.util.DerValue;
+-import sun.security.x509.X509Key;
+
+ /**
+ * @author str4d
+@@ -217,20 +215,4 @@ public class EdDSAEngineTest {
+ assertThat("verifyOneShot() failed", sgr.verifyOneShot(TEST_MSG, TEST_MSG_SIG), is(true));
+ }
+
+- @Test
+- public void testVerifyX509PublicKeyInfo() throws Exception {
+- EdDSAParameterSpec spec = EdDSANamedCurveTable.getByName("Ed25519");
+- Signature sgr = new EdDSAEngine(MessageDigest.getInstance(spec.getHashAlgorithm()));
+- for (Ed25519TestVectors.TestTuple testCase : Ed25519TestVectors.testCases) {
+- EdDSAPublicKeySpec pubKey = new EdDSAPublicKeySpec(testCase.pk, spec);
+- PublicKey vKey = new EdDSAPublicKey(pubKey);
+- PublicKey x509Key = X509Key.parse(new DerValue(vKey.getEncoded()));
+- sgr.initVerify(x509Key);
+-
+- sgr.update(testCase.message);
+-
+- assertThat("Test case " + testCase.caseNum + " failed",
+- sgr.verify(testCase.sig), is(true));
+- }
+- }
+ }
+--
+2.33.1
+
diff --git a/SPECS-EXTENDED/ed25519-java/ed25519-java-CVE-2020-36843.patch b/SPECS-EXTENDED/ed25519-java/ed25519-java-CVE-2020-36843.patch
new file mode 100644
index 00000000000..324025e3fcf
--- /dev/null
+++ b/SPECS-EXTENDED/ed25519-java/ed25519-java-CVE-2020-36843.patch
@@ -0,0 +1,39 @@
+--- ed25519-java-0.3.0/src/net/i2p/crypto/eddsa/EdDSAEngine.java 2025-03-14 14:47:43.404137953 +0100
++++ ed25519-java-0.3.0/src/net/i2p/crypto/eddsa/EdDSAEngine.java 2025-03-14 14:50:31.859888550 +0100
+@@ -12,6 +12,7 @@
+ package net.i2p.crypto.eddsa;
+
+ import java.io.ByteArrayOutputStream;
++import java.math.BigInteger;
+ import java.nio.ByteBuffer;
+ import java.security.InvalidAlgorithmParameterException;
+ import java.security.InvalidKeyException;
+@@ -29,6 +30,7 @@
+ import net.i2p.crypto.eddsa.math.Curve;
+ import net.i2p.crypto.eddsa.math.GroupElement;
+ import net.i2p.crypto.eddsa.math.ScalarOps;
++import net.i2p.crypto.eddsa.math.bigint.BigIntegerLittleEndianEncoding;
+
+ /**
+ * Signing and verification for EdDSA.
+@@ -69,6 +71,8 @@
+ public final class EdDSAEngine extends Signature {
+ public static final String SIGNATURE_ALGORITHM = "NONEwithEdDSA";
+
++ private static final BigInteger ORDER = new BigInteger("2").pow(252).add(new BigInteger("27742317777372353535851937790883648493"));
++
+ private MessageDigest digest;
+ private ByteArrayOutputStream baos;
+ private EdDSAKey key;
+@@ -306,6 +310,11 @@
+ h = key.getParams().getScalarOps().reduce(h);
+
+ byte[] Sbyte = Arrays.copyOfRange(sigBytes, b/8, b/4);
++ // RFC 8032
++ BigInteger Sbigint = (new BigIntegerLittleEndianEncoding()).toBigInteger(Sbyte);
++ if (Sbigint.compareTo(ORDER) >= 0)
++ return false;
++
+ // R = SB - H(Rbar,Abar,M)A
+ GroupElement R = key.getParams().getB().doubleScalarMultiplyVariableTime(
+ ((EdDSAPublicKey) key).getNegativeA(), h, Sbyte);
diff --git a/SPECS-EXTENDED/ed25519-java/ed25519-java-build.xml b/SPECS-EXTENDED/ed25519-java/ed25519-java-build.xml
new file mode 100644
index 00000000000..3a936462a6e
--- /dev/null
+++ b/SPECS-EXTENDED/ed25519-java/ed25519-java-build.xml
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/SPECS-EXTENDED/ed25519-java/ed25519-java.signatures.json b/SPECS-EXTENDED/ed25519-java/ed25519-java.signatures.json
new file mode 100644
index 00000000000..7272e958992
--- /dev/null
+++ b/SPECS-EXTENDED/ed25519-java/ed25519-java.signatures.json
@@ -0,0 +1,6 @@
+{
+ "Signatures": {
+ "ed25519-java-0.3.0.tar.gz": "a89a2331afb1db0bd06ce029c731db2d24684cebf111e796b51deb6e2a20a310",
+ "ed25519-java-build.xml": "2eb416752ef86be27a06581dfb60c6c4693d530ffa7f8e12f28112b40d65fab7"
+ }
+}
\ No newline at end of file
diff --git a/SPECS-EXTENDED/ed25519-java/ed25519-java.spec b/SPECS-EXTENDED/ed25519-java/ed25519-java.spec
new file mode 100644
index 00000000000..ff1e7410bd3
--- /dev/null
+++ b/SPECS-EXTENDED/ed25519-java/ed25519-java.spec
@@ -0,0 +1,125 @@
+Vendor: Microsoft Corporation
+Distribution: Azure Linux
+#
+# spec file for package ed25519-java
+#
+# Copyright (c) 2025 SUSE LLC
+#
+# All modifications and additions to the file contributed by third parties
+# remain the property of their copyright owners, unless otherwise agreed
+# upon. The license for this file, and modifications and additions to the
+# file, is the same license as for the pristine package itself (unless the
+# license for the pristine package is not an Open Source License, in which
+# case the license is the MIT License). An "Open Source License" is a
+# license that conforms to the Open Source Definition (Version 1.9)
+# published by the Open Source Initiative.
+
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
+#
+
+
+%global artifactId eddsa
+Name: ed25519-java
+Version: 0.3.0
+Release: 1%{?dist}
+Summary: Implementation of EdDSA (Ed25519) in Java
+License: CC0-1.0
+URL: https://github.com/str4d/ed25519-java
+Source0: https://github.com/str4d/ed25519-java/archive/v%{version}/%{name}-%{version}.tar.gz
+Source1: %{name}-build.xml
+Patch0: 0001-EdDSAEngine.initVerify-Handle-any-non-EdDSAPublicKey.patch
+Patch1: 0002-Disable-test-that-relies-on-internal-sun-JDK-classes.patch
+Patch2: %{name}-CVE-2020-36843.patch
+BuildRequires: ant
+BuildRequires: fdupes
+BuildRequires: java-devel >= 1.8
+BuildRequires: javapackages-local-bootstrap >= 6
+BuildRequires: javapackages-tools
+BuildArch: noarch
+
+%description
+This is an implementation of EdDSA in Java. Structurally, it
+is based on the ref10 implementation in SUPERCOP (see
+http://ed25519.cr.yp.to/software.html).
+
+There are two internal implementations:
+
+* A port of the radix-2^51 operations in ref10
+ - fast and constant-time, but only useful for Ed25519.
+* A generic version using BigIntegers for calculation
+ - a bit slower and not constant-time, but compatible
+ with any EdDSA parameter specification.
+
+%package javadoc
+Summary: Javadoc for %{name}
+
+%description javadoc
+This package contains javadoc for %{name}.
+
+%prep
+%setup -q
+cp %{SOURCE1} build.xml
+%patch -P 0 -p1
+%patch -P 1 -p1
+%patch -P 2 -p1
+
+%build
+ant jar javadoc
+
+%install
+
+# jar
+install -dm 0755 %{buildroot}%{_javadir}
+install -pm 0644 target/%{artifactId}-%{version}.jar %{buildroot}%{_javadir}/%{artifactId}.jar
+ln -sf %{_javadir}/%{artifactId}.jar %{buildroot}%{_javadir}/%{name}.jar
+
+# pom
+install -dm 0755 %{buildroot}%{_mavenpomdir}
+install -pm 0644 pom.xml %{buildroot}%{_mavenpomdir}/%{artifactId}.pom
+%add_maven_depmap %{artifactId}.pom %{artifactId}.jar
+
+# javadoc
+install -dm 0755 %{buildroot}%{_javadocdir}/%{name}
+cp -r target/site/apidocs/* %{buildroot}%{_javadocdir}/%{name}/
+mv %{buildroot}%{_javadocdir}/%{name}/legal/ADDITIONAL_LICENSE_INFO .
+mv %{buildroot}%{_javadocdir}/%{name}/legal/LICENSE .
+%fdupes -s %{buildroot}%{_javadocdir}
+
+%files -f .mfiles
+%{_javadir}/%{name}.jar
+%license LICENSE.txt
+%doc README.md
+
+
+%files javadoc
+%license LICENSE.txt
+%license LICENSE ADDITIONAL_LICENSE_INFO
+%{_javadocdir}/%{name}
+
+
+%changelog
+* Tue Dec 16 2025 BinduSri Adabala - 0.3.0-1
+- Initial CBL-Mariner import from openSUSE Tumbleweed (license: same as "License" tag).
+- License verified
+
+* Fri Mar 14 2025 Fridrich Strba
+- Added patch:
+ * ed25519-java-CVE-2020-36843.patch
+ + backport commit https://github.com/i2p/i2p.i2p/commit/
+ /d7d1dcb5399c61cf2916ccc45aa25b0209c88712
+ + Fixes bsc#1239551, CVE-2020-36843: no check performed on
+ scalar to avoid signature malleability
+* Wed Oct 30 2024 Fridrich Strba
+- Rewrite the build using ant
+* Wed Feb 21 2024 Gus Kenion
+- Use %%patch -P N instead of deprecated %%patchN.
+* Mon Sep 11 2023 Fridrich Strba
+- Reproducible builds: use SOURCE_DATE_EPOCH for timestamp
+* Tue Mar 22 2022 Fridrich Strba
+- Build with source and target levels 8
+- Added patches:
+ * 0001-EdDSAEngine.initVerify-Handle-any-non-EdDSAPublicKey.patch
+ * 0002-Disable-test-that-relies-on-internal-sun-JDK-classes.patch
+ + Remove use of internal sun JDK classes
+* Mon Jun 29 2020 Fridrich Strba
+- Initial packaging of ed25519 0.3.0
diff --git a/SPECS-EXTENDED/freeradius/freeradius.spec b/SPECS-EXTENDED/freeradius/freeradius.spec
index 49d57874e20..62be8ffdb52 100644
--- a/SPECS-EXTENDED/freeradius/freeradius.spec
+++ b/SPECS-EXTENDED/freeradius/freeradius.spec
@@ -6,7 +6,7 @@
Summary: High-performance and highly configurable free RADIUS server
Name: freeradius
Version: 3.2.5
-Release: 3%{?dist}
+Release: 4%{?dist}
Vendor: Microsoft Corporation
Distribution: Azure Linux
License: GPL-2.0-or-later AND LGPL-2.0-or-later
@@ -869,6 +869,9 @@ EOF
%attr(640,root,radiusd) %config(noreplace) /etc/raddb/mods-available/rest
%changelog
+* Tue Jan 06 2026 Pawel Winogrodzki - 3.2.5-4
+- Bumping release to rebuild with new 'net-snmp' libs.
+
* Fri Jan 31 2025 Jyoti kanase - 3.2.5-3
- Initial Azure Linux import from Fedora 41 (license: MIT).
- License verified.
diff --git a/SPECS-EXTENDED/gnome-desktop-testing/gnome-desktop-testing.signatures.json b/SPECS-EXTENDED/gnome-desktop-testing/gnome-desktop-testing.signatures.json
index bfd2121d551..92c4ffb9609 100644
--- a/SPECS-EXTENDED/gnome-desktop-testing/gnome-desktop-testing.signatures.json
+++ b/SPECS-EXTENDED/gnome-desktop-testing/gnome-desktop-testing.signatures.json
@@ -1,5 +1,5 @@
{
"Signatures": {
- "gnome-desktop-testing-v2018.1.tar.gz": "da0f7a434370fd4690c61aaedddacd7a15001e5e4ec71fadc9c00dd50d0ab5cf"
+ "gnome-desktop-testing-v2021.1.tar.gz": "d9037b3029452e54d4be478a9c39495512e737f85325c71ab92fc344c995620e"
}
}
diff --git a/SPECS-EXTENDED/gnome-desktop-testing/gnome-desktop-testing.spec b/SPECS-EXTENDED/gnome-desktop-testing/gnome-desktop-testing.spec
index adb85100dd3..afcebcd7b92 100644
--- a/SPECS-EXTENDED/gnome-desktop-testing/gnome-desktop-testing.spec
+++ b/SPECS-EXTENDED/gnome-desktop-testing/gnome-desktop-testing.spec
@@ -1,22 +1,18 @@
Vendor: Microsoft Corporation
Distribution: Azure Linux
Name: gnome-desktop-testing
-Version: 2018.1
-Release: 4%{?dist}
+Version: 2021.1
+Release: 1%{?dist}
Summary: GNOME test runner for installed tests
License: LGPLv2+
-URL: https://live.gnome.org/Initiatives/GnomeGoals/InstalledTests
+URL: https://gitlab.gnome.org/GNOME/gnome-desktop-testing
Source0: https://gitlab.gnome.org/GNOME/%{name}/-/archive/v%{version}/%{name}-v%{version}.tar.gz
BuildRequires: pkgconfig(gio-unix-2.0)
BuildRequires: systemd-devel
-BuildRequires: pkgconfig(libgsystem)
BuildRequires: git automake autoconf libtool
-# https://gitlab.gnome.org/GNOME/gnome-desktop-testing/merge_requests/1
-Patch0: 0001-Don-t-crash-on-unknown-command-line-options.patch
-
%description
gnome-desktop-testing-runner is a basic runner for tests that are
installed in /usr/share/installed-tests. For more information, see
@@ -34,11 +30,17 @@ make %{?_smp_mflags}
make install DESTDIR=$RPM_BUILD_ROOT
%files
-%doc COPYING README
+%license COPYING
%{_bindir}/gnome-desktop-testing-runner
%{_bindir}/ginsttest-runner
+%{_mandir}/man1/ginsttest-runner.1.gz
+%{_mandir}/man1/gnome-desktop-testing-runner.1.gz
%changelog
+* Wed Dec 24 2025 Aditya Singh - 2021.1-1
+- Upgrade to version 2021.1
+- License verified
+
* Tue Sep 19 2023 Jon Slobodzian - 2018.1-4
- Fix build issue for systemd/systemd-bootstrap confusion
- License verified
diff --git a/SPECS-EXTENDED/hawtjni-runtime/hawtjni-runtime.spec b/SPECS-EXTENDED/hawtjni-runtime/hawtjni-runtime.spec
index 82e8095fee0..c508e333eec 100644
--- a/SPECS-EXTENDED/hawtjni-runtime/hawtjni-runtime.spec
+++ b/SPECS-EXTENDED/hawtjni-runtime/hawtjni-runtime.spec
@@ -20,13 +20,14 @@ Distribution: Azure Linux
%global debug_package %{nil}
Name: hawtjni-runtime
Version: 1.17
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: HawtJNI Runtime
License: Apache-2.0 AND EPL-1.0 AND BSD-3-Clause
URL: https://github.com/fusesource/hawtjni
Source0: https://github.com/fusesource/hawtjni/archive/hawtjni-project-%{version}.tar.gz
+Patch0: use-commons-lang3.patch
BuildRequires: apache-commons-cli
-BuildRequires: apache-commons-lang
+BuildRequires: apache-commons-lang3
BuildRequires: fdupes
BuildRequires: java-devel
BuildRequires: javapackages-local-bootstrap
@@ -48,7 +49,7 @@ This package contains the API documentation for hawtjni.
Summary: Code generator that produces the JNI code
Requires: %{name} = %{version}
Requires: apache-commons-cli
-Requires: apache-commons-lang
+Requires: apache-commons-lang3
Requires: javapackages-tools
Requires: objectweb-asm >= 5
Requires: xbean
@@ -62,6 +63,7 @@ JNI code which powers the eclipse platform.
%prep
%setup -q -n hawtjni-hawtjni-project-%{version}
+%patch -P 0 -p1
%pom_disable_module hawtjni-example
%pom_disable_module hawtjni-maven-plugin
@@ -69,7 +71,7 @@ JNI code which powers the eclipse platform.
%pom_remove_plugin -r :maven-eclipse-plugin
# this dependency seems to be missing
-%pom_add_dep commons-lang:commons-lang hawtjni-generator
+%pom_add_dep commons-lang:commons-lang3 hawtjni-generator
for mod in runtime generator; do
%pom_remove_parent hawtjni-${mod}
@@ -80,19 +82,19 @@ done
%build
mkdir -p hawtjni-runtime/build/classes
-javac -d hawtjni-runtime/build/classes -source 6 -target 6 \
+javac -d hawtjni-runtime/build/classes -source 8 -target 8 \
$(find hawtjni-runtime/src/main/java/ -name *.java | xargs)
jar cf hawtjni-runtime.jar -C hawtjni-runtime/build/classes .
mkdir -p hawtjni-generator/build/classes
javac -d hawtjni-generator/build/classes \
- -source 6 -target 6 \
- -cp $(build-classpath commons-cli commons-lang objectweb-asm/asm objectweb-asm/asm-commons xbean/xbean-finder xbean/xbean-asm-util):hawtjni-runtime.jar \
+ -source 8 -target 8 \
+ -cp $(build-classpath commons-cli commons-lang3 objectweb-asm/asm objectweb-asm/asm-commons xbean/xbean-finder xbean/xbean-asm-util):hawtjni-runtime.jar \
$(find hawtjni-generator/src/main/java/ -name *.java | xargs)
jar cf hawtjni-generator.jar -C hawtjni-generator/build/classes .
jar uf hawtjni-generator.jar -C hawtjni-generator/src/main/resources .
mkdir -p hawtjni-runtime/build/apidoc
-javadoc -d hawtjni-runtime/build/apidoc -source 6 \
- -classpath $(build-classpath commons-cli commons-lang objectweb-asm/asm objectweb-asm/asm-commons xbean/xbean-finder xbean/xbean-asm-util) \
+javadoc -d hawtjni-runtime/build/apidoc -source 8 \
+ -classpath $(build-classpath commons-cli commons-lang3 objectweb-asm/asm objectweb-asm/asm-commons xbean/xbean-finder xbean/xbean-asm-util) \
$(find hawtjni-runtime/src/main/java/ -name *.java && \
find hawtjni-generator/src/main/java/ -name *.java| xargs)
@@ -113,9 +115,18 @@ install -m 0644 hawtjni-generator/pom.xml %{buildroot}%{_mavenpomdir}/hawtjni/ha
# javadoc
install -dm 755 %{buildroot}%{_javadocdir}/hawtjni
cp -pr hawtjni-runtime/build/apidoc/* %{buildroot}%{_javadocdir}/hawtjni/
+# to remove license warnings
+install -Dm 0644 hawtjni-runtime/build/apidoc/legal/LICENSE \
+ %{buildroot}%{_licensedir}/hawtjni/LICENSE.javadoc
+
+install -Dm 0644 hawtjni-runtime/build/apidoc/legal/ADDITIONAL_LICENSE_INFO \
+ %{buildroot}%{_licensedir}/hawtjni/ADDITIONAL_LICENSE_INFO.javadoc
+
+rm -rf %{buildroot}%{_javadocdir}/hawtjni/legal
+
%fdupes -s %{buildroot}%{_javadocdir}/hawtjni/
-%{jpackage_script org.fusesource.hawtjni.generator.HawtJNI "" "" commons-cli:commons-lang:objectweb-asm/asm:objectweb-asm/asm-commons:xbean/xbean-finder:xbean/xbean-asm-util:hawtjni/hawtjni-runtime:hawtjni/hawtjni-generator hawtjni-generator true}
+%{jpackage_script org.fusesource.hawtjni.generator.HawtJNI "" "" commons-cli:commons-lang3:objectweb-asm/asm:objectweb-asm/asm-commons:xbean/xbean-finder:xbean/xbean-asm-util:hawtjni/hawtjni-runtime:hawtjni/hawtjni-generator hawtjni-generator true}
%files -f .mfiles
%license license.txt
@@ -127,8 +138,13 @@ cp -pr hawtjni-runtime/build/apidoc/* %{buildroot}%{_javadocdir}/hawtjni/
%files -n hawtjni-javadoc
%{_javadocdir}/hawtjni
%license license.txt
+%license %{_licensedir}/hawtjni/*
%changelog
+* Wed Dec 24 2025 Aninda Pradhan - 1.17-3
+- Updated dependencies to use commons-lang3
+- License verified
+
* Thu Oct 14 2021 Pawel Winogrodzki - 1.17-2
- Converting the 'Release' tag to the '[number].[distribution]' format.
diff --git a/SPECS-EXTENDED/hawtjni-runtime/use-commons-lang3.patch b/SPECS-EXTENDED/hawtjni-runtime/use-commons-lang3.patch
new file mode 100644
index 00000000000..8edcb7b88b7
--- /dev/null
+++ b/SPECS-EXTENDED/hawtjni-runtime/use-commons-lang3.patch
@@ -0,0 +1,11 @@
+--- a/hawtjni-generator/src/main/java/org/fusesource/hawtjni/generator/model/ReflectField.java
++++ b/hawtjni-generator/src/main/java/org/fusesource/hawtjni/generator/model/ReflectField.java
+@@ -14,7 +14,7 @@
+ import java.util.Arrays;
+ import java.util.HashSet;
+
+-import org.apache.commons.lang.StringUtils;
++import org.apache.commons.lang3.StringUtils;
+ import org.fusesource.hawtjni.runtime.FieldFlag;
+ import org.fusesource.hawtjni.runtime.JniField;
+ import org.fusesource.hawtjni.runtime.T32;
diff --git a/SPECS-EXTENDED/highlight/highlight.signatures.json b/SPECS-EXTENDED/highlight/highlight.signatures.json
index 8359783c974..fbd474ad12a 100644
--- a/SPECS-EXTENDED/highlight/highlight.signatures.json
+++ b/SPECS-EXTENDED/highlight/highlight.signatures.json
@@ -1,5 +1,5 @@
{
"Signatures": {
- "highlight-3.54.tar.bz2": "8a50a85e94061b53085c6ad8cf110039217dbdd411ab846f9ff934bec7ecd6d0"
+ "highlight-4.18.tar.bz2": "1cd3e273e1e4fdc5c0d23c0a9055dd0efe196ab04b43ef5da39ba0df516a8498"
}
}
diff --git a/SPECS-EXTENDED/highlight/highlight.spec b/SPECS-EXTENDED/highlight/highlight.spec
index d7a0e2c5d48..253c4b48383 100644
--- a/SPECS-EXTENDED/highlight/highlight.spec
+++ b/SPECS-EXTENDED/highlight/highlight.spec
@@ -2,15 +2,21 @@ Vendor: Microsoft Corporation
Distribution: Azure Linux
Name: highlight
Summary: Universal source code to formatted text converter
-Version: 3.54
-Release: 3%{?dist}
-License: GPLv3
+Version: 4.18
+Release: 1%{?dist}
+License: GPL-3.0-only
URL: http://www.andre-simon.de/
-Source0: http://www.andre-simon.de/zip/%{name}-%{version}.tar.bz2
+Source0: https://gitlab.com/saalen/highlight/-/archive/v4.18/highlight-v4.18.tar.bz2#/%{name}-%{version}.tar.bz2
+
+%bcond qt 0
+
BuildRequires: gcc-c++
+%if %{with qt}
BuildRequires: qt5-qtbase-devel
+%endif
BuildRequires: lua-devel, boost-devel
BuildRequires: desktop-file-utils
+BuildRequires: make
%{?filter_setup:
%filter_from_provides /^perl(/d;
@@ -27,15 +33,17 @@ Language descriptions are configurable and support regular expressions.
The utility offers indentation and reformatting capabilities.
It is easily possible to create new language definitions and colour themes.
+%if %{with qt}
%package gui
-Summary: GUI for the hihghlight source code formatter
+Summary: GUI for the highlight source code formatter
Requires: %{name} = %{version}-%{release}
%description gui
A Qt-based GUI for the highlight source code formatter source.
+%endif
%prep
-%autosetup
+%autosetup -n %{name}-v%{version}
%build
CFLAGS="$CFLAGS -fPIC %{optflags}"; export CFLAGS
@@ -44,21 +52,37 @@ LDFLAGS="$LDFLAGS %{?__global_ldflags}"; export LDFLAGS
# disabled paralell builds to fix FTBFS on rawhide & highlight 3.52+
#make_build all gui CFLAGS="${CFLAGS}" \
- make all gui CFLAGS="${CFLAGS}" \
+ %{__make} all CFLAGS="${CFLAGS}" \
CXXFLAGS="${CXXFLAGS}" \
LDFLAGS="${LDFLAGS}" \
LFLAGS="-Wl,-O1 ${LDFLAGS}" \
PREFIX="%{_prefix}" \
- conf_dir="%{_sysconfdir}/highlight/" \
+ conf_dir="%{_sysconfdir}/"
+
+%if %{with qt}
+ %{__make} gui CFLAGS="${CFLAGS}" \
+ CXXFLAGS="${CXXFLAGS}" \
+ LDFLAGS="${LDFLAGS}" \
+ LFLAGS="-Wl,-O1 ${LDFLAGS}" \
+ PREFIX="%{_prefix}" \
+ conf_dir="%{_sysconfdir}/" \
QMAKE="%{_qt5_qmake}" \
QMAKE_STRIP=
+%endif
%install
-%make_install PREFIX="%{_prefix}" conf_dir="%{_sysconfdir}/highlight/"
+%make_install PREFIX="%{_prefix}" conf_dir="%{_sysconfdir}/"
mkdir -p $RPM_BUILD_ROOT%{_datadir}/applications
mkdir -p $RPM_BUILD_ROOT%{_datadir}/pixmaps
-make install-gui DESTDIR=$RPM_BUILD_ROOT PREFIX="%{_prefix}" conf_dir="%{_sysconfdir}/highlight/"
+%if %{with qt}
+make install-gui DESTDIR=$RPM_BUILD_ROOT PREFIX="%{_prefix}" conf_dir="%{_sysconfdir}/"
+%endif
+
+mv extras/langDefs-resources/UNLICENCE .
+mv extras/pandoc/LICENSE .
+rm extras/themes-resources/base16/LICENSE
+rm extras/themes-resources/css-themes/UNLICENCE
rm -rf $RPM_BUILD_ROOT%{_docdir}/%{name}/
@@ -71,18 +95,30 @@ desktop-file-install \
%{_datadir}/highlight/
%{_mandir}/man1/highlight.1*
%{_mandir}/man5/filetypes.conf.5*
+%{_datadir}/bash-completion/completions/highlight
+%{_datadir}/fish/vendor_completions.d/highlight.fish
+%{_datadir}/zsh/site-functions/_highlight
%config(noreplace) %{_sysconfdir}/highlight/
%doc ChangeLog* AUTHORS README* extras/
-%license COPYING
+%license COPYING LICENSE UNLICENCE
+ %if %{with qt}
%files gui
%{_bindir}/highlight-gui
%{_datadir}/applications/highlight.desktop
-%{_datadir}/pixmaps/highlight.xpm
+%{_datadir}/icons/hicolor/256x256/apps/highlight.png
+%else
+%exclude %{_datadir}/applications/highlight.desktop
+%endif
%changelog
+* Wed Dec 24 2025 Sumit Jena - 4.18-1
+- Update to version 4.18
+- Disabling GUI based subpackages.
+- License Verified
+
* Fri Oct 15 2021 Pawel Winogrodzki - 3.54-3
- Initial CBL-Mariner import from Fedora 32 (license: MIT).
diff --git a/SPECS-EXTENDED/ibus-libzhuyin/ibus-libzhuyin.signatures.json b/SPECS-EXTENDED/ibus-libzhuyin/ibus-libzhuyin.signatures.json
index 2b63df129d9..54c7a6cb24a 100644
--- a/SPECS-EXTENDED/ibus-libzhuyin/ibus-libzhuyin.signatures.json
+++ b/SPECS-EXTENDED/ibus-libzhuyin/ibus-libzhuyin.signatures.json
@@ -1,5 +1,5 @@
{
"Signatures": {
- "ibus-libzhuyin-1.9.1.tar.gz": "f0a322700aec3a00dc7c3a4a185f7ad7b1d27a989614b5b50c6aec39a03cf585"
+ "ibus-libzhuyin-1.10.4.tar.gz": "c21a3e1d7a8d9e6357f5ed0e3246111868b3fda04fcbb8cc726dab2d6363f265"
}
}
diff --git a/SPECS-EXTENDED/ibus-libzhuyin/ibus-libzhuyin.spec b/SPECS-EXTENDED/ibus-libzhuyin/ibus-libzhuyin.spec
index 94887b96b33..b293550dd32 100644
--- a/SPECS-EXTENDED/ibus-libzhuyin/ibus-libzhuyin.spec
+++ b/SPECS-EXTENDED/ibus-libzhuyin/ibus-libzhuyin.spec
@@ -1,24 +1,15 @@
Vendor: Microsoft Corporation
Distribution: Azure Linux
-# This package depends on automagic byte compilation
-# https://fedoraproject.org/wiki/Changes/No_more_automagic_Python_bytecompilation_phase_2
-%global _python_bytecompile_extra 1
-
-%global snapshot 0
Name: ibus-libzhuyin
-Version: 1.9.1
-Release: 6%{?dist}
+Version: 1.10.4
+Release: 1%{?dist}
Summary: New Zhuyin engine based on libzhuyin for IBus
License: GPLv2+
URL: https://github.com/libzhuyin/ibus-libzhuyin
-Source0: http://downloads.sourceforge.net/libzhuyin/ibus-libzhuyin/%{name}-%{version}.tar.gz
-%if %snapshot
-Patch0: ibus-libzhuyin-1.9.x-HEAD.patch
-%endif
+Source0: https://downloads.sourceforge.net/libzhuyin/ibus-libzhuyin/%{name}-%{version}.tar.gz
BuildRequires: gcc-c++
-BuildRequires: perl(File::Find)
BuildRequires: gettext-devel
BuildRequires: intltool
BuildRequires: libtool
@@ -40,11 +31,7 @@ It includes a Chinese Zhuyin (Bopomofo) input method
based on libzhuyin for IBus.
%prep
-%setup -q
-%if %snapshot
-%patch 0 -p1 -b .head
-%endif
-
+%autosetup
%build
%configure --disable-static \
@@ -52,17 +39,19 @@ based on libzhuyin for IBus.
--with-python=python3
# make -C po update-gmo
-make %{?_smp_mflags} V=1
+%make_build
%install
-make install DESTDIR=${RPM_BUILD_ROOT} INSTALL="install -p"
+%make_install
+
+%py_byte_compile %{python3} $RPM_BUILD_ROOT%{_datadir}/ibus-libzhuyin/setup
%find_lang %{name}
%files -f %{name}.lang
%license COPYING
%doc AUTHORS README ChangeLog INSTALL NEWS
-%{_datadir}/appdata/*.appdata.xml
+%{_datadir}/metainfo/*.appdata.xml
%{_datadir}/glib-2.0/schemas/*.gschema.xml
%{_datadir}/applications/ibus-setup-libzhuyin.desktop
%{_libexecdir}/ibus-engine-libzhuyin
@@ -74,8 +63,11 @@ make install DESTDIR=${RPM_BUILD_ROOT} INSTALL="install -p"
%{_datadir}/ibus-libzhuyin/*symbol.txt
%{_libdir}/ibus-libzhuyin/
-
%changelog
+* Mon Dec 22 2025 Aditya Singh - 1.10.4-1
+- Upgrade to version 1.10.4
+- License verified.
+
* Wed Feb 16 2022 Pawel Winogrodzki - 1.9.1-6
- License verified.
diff --git a/SPECS-EXTENDED/ibus-table-chinese/ibus-table-chinese.spec b/SPECS-EXTENDED/ibus-table-chinese/ibus-table-chinese.spec
index 7e78bfde325..8e84779efa7 100644
--- a/SPECS-EXTENDED/ibus-table-chinese/ibus-table-chinese.spec
+++ b/SPECS-EXTENDED/ibus-table-chinese/ibus-table-chinese.spec
@@ -6,7 +6,7 @@ Distribution: Azure Linux
%global createdb ibus-table-createdb
Name: ibus-table-chinese
Version: 1.8.3
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: Chinese input tables for IBus
Summary(zh_CN): 中文码表输入法
Summary(zh_TW): 中文碼表輸入法
@@ -556,7 +556,8 @@ rm -fr %{buildroot}%{_docdir}/*
%files wubi-haifeng
%{_datadir}/appdata/wubi-haifeng86.appdata.xml
-%doc tables/wubi-haifeng/COPYING tables/wubi-haifeng/README
+%doc tables/wubi-haifeng/README
+%license tables/wubi-haifeng/COPYING
%{ibus_icons_dir}/wubi-haifeng86.*
%verify(not size md5 mtime) %{ibus_tables_dir}/wubi-haifeng86.db
@@ -575,6 +576,10 @@ rm -fr %{buildroot}%{_docdir}/*
%verify(not size md5 mtime) %{ibus_tables_dir}/cantonyale.db
%changelog
+* Thu Dec 18 2025 Aditya Singh - 1.8.3-4
+- Addressed license warning issue.
+- License verified.
+
* Thu Jun 17 2021 Thomas Crain - 1.8.3-3
- Initial CBL-Mariner import from Fedora 32 (license: MIT).
- Supplement CMake module search path with the location of cmake-fedora's modules
diff --git a/SPECS-EXTENDED/ibus-table/ibus-table.signatures.json b/SPECS-EXTENDED/ibus-table/ibus-table.signatures.json
index 2a355d40e0d..68dbc7f3a0f 100644
--- a/SPECS-EXTENDED/ibus-table/ibus-table.signatures.json
+++ b/SPECS-EXTENDED/ibus-table/ibus-table.signatures.json
@@ -1,5 +1,5 @@
{
"Signatures": {
- "ibus-table-1.12.4.tar.gz": "71728473680df5dc19f17f0dee101445fac77b56423576018142faa4c78380ec"
+ "ibus-table-1.17.16.tar.gz": "c1040d4928308b85b3576a418c5cbd6622f199208f80d4a153d1b829ee8508b8"
}
}
diff --git a/SPECS-EXTENDED/ibus-table/ibus-table.spec b/SPECS-EXTENDED/ibus-table/ibus-table.spec
index b0739056787..a4ea440401c 100644
--- a/SPECS-EXTENDED/ibus-table/ibus-table.spec
+++ b/SPECS-EXTENDED/ibus-table/ibus-table.spec
@@ -2,17 +2,15 @@ Vendor: Microsoft Corporation
Distribution: Azure Linux
# This package depends on automagic byte compilation
# https://fedoraproject.org/wiki/Changes/No_more_automagic_Python_bytecompilation_phase_2
-%global _python_bytecompile_extra 1
Name: ibus-table
-Version: 1.12.4
-Release: 4%{?dist}
+Version: 1.17.16
+Release: 1%{?dist}
Summary: The Table engine for IBus platform
-License: LGPLv2+
+License: LGPL-2.1-or-later
URL: https://github.com/mike-fabian/ibus-table
-Source0: https://github.com/mike-fabian/ibus-table/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}.tar.gz
+Source0: https://github.com/mike-fabian/ibus-table/releases/download/%{version}/%{name}-%{version}.tar.gz
Requires: ibus > 1.3.0
-Requires: python(abi) >= 3.3
%{?__python3:Requires: %{__python3}}
BuildRequires: gcc
BuildRequires: ibus-devel > 1.3.0
@@ -65,17 +63,19 @@ The %{name}-tests package contains tests that can be used to verify
the functionality of the installed %{name} package.
%prep
-%setup -q
+%autosetup
%build
export PYTHON=%{__python3}
%configure --disable-static --disable-additional --enable-installed-tests
-%__make %{?_smp_mflags}
+%make_build
%install
%__rm -rf $RPM_BUILD_ROOT
export PYTHON=%{__python3}
-%__make DESTDIR=${RPM_BUILD_ROOT} NO_INDEX=true install pkgconfigdir=%{_datadir}/pkgconfig
+%make_install DESTDIR=${RPM_BUILD_ROOT} NO_INDEX=true pkgconfigdir=%{_datadir}/pkgconfig
+%py_byte_compile %{python3} %{buildroot}/usr/share/ibus-table/engine
+%py_byte_compile %{python3} %{buildroot}/usr/share/ibus-table/setup
%find_lang %{name}
@@ -137,16 +137,25 @@ export PYTHON=%{__python3}
%files -f %{name}.lang
-%doc AUTHORS COPYING README
+%doc AUTHORS README
%{_datadir}/%{name}
-%{_datadir}/metainfo/*.appdata.xml
+%{_datadir}/metainfo/*.metainfo.xml
%{_datadir}/ibus/component/table.xml
+%{_datadir}/icons/hicolor/16x16/apps/ibus-table.png
+%{_datadir}/icons/hicolor/22x22/apps/ibus-table.png
+%{_datadir}/icons/hicolor/32x32/apps/ibus-table.png
+%{_datadir}/icons/hicolor/48x48/apps/ibus-table.png
+%{_datadir}/icons/hicolor/64x64/apps/ibus-table.png
+%{_datadir}/icons/hicolor/128x128/apps/ibus-table.png
+%{_datadir}/icons/hicolor/256x256/apps/ibus-table.png
+%{_datadir}/icons/hicolor/scalable/apps/ibus-table.svg
%{_datadir}/applications/ibus-setup-table.desktop
%{_datadir}/glib-2.0/schemas/org.freedesktop.ibus.engine.table.gschema.xml
%{_bindir}/%{name}-createdb
%{_libexecdir}/ibus-engine-table
%{_libexecdir}/ibus-setup-table
%{_mandir}/man1/*
+%license COPYING
%files devel
%{_datadir}/pkgconfig/%{name}.pc
@@ -158,6 +167,10 @@ export PYTHON=%{__python3}
%{_datadir}/installed-tests/%{name}
%changelog
+* Tue Dec 16 2025 Aditya Singh - 1.17.16-1
+- Upgrade to version 1.17.16.
+- License verified.
+
* Fri Sep 01 2023 Pawel Winogrodzki - 1.12.4-4
- Disabling test dependencies due to build failures.
diff --git a/SPECS-EXTENDED/ibus/ibus.spec b/SPECS-EXTENDED/ibus/ibus.spec
index c927afd4c32..c3b0384f3ff 100644
--- a/SPECS-EXTENDED/ibus/ibus.spec
+++ b/SPECS-EXTENDED/ibus/ibus.spec
@@ -41,7 +41,7 @@ Distribution: Azure Linux
Name: ibus
Version: 1.5.31
# https://github.com/fedora-infra/rpmautospec/issues/101
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Intelligent Input Bus for Linux OS
License: LGPL-2.1-or-later
URL: https://github.com/ibus/%name/wiki
@@ -414,7 +414,8 @@ dconf update || :
%files -f %{name}10.lang
# FIXME: no version number
-%doc AUTHORS COPYING README
+%doc AUTHORS README
+%license COPYING
%dir %{_datadir}/ibus/
%{_bindir}/ibus
%{_bindir}/ibus-daemon
@@ -536,6 +537,10 @@ dconf update || :
%{_datadir}/installed-tests/ibus
%changelog
+* Thu Dec 18 2025 Aditya Singh - 1.5.31-2
+- Addressed license warning issue.
+- License verified.
+
* Thu Mar 13 2025 Sumit Jena - 1.5.31-1
- Update to version 1.5.31
- License verified
diff --git a/SPECS-EXTENDED/javacc/javacc.spec b/SPECS-EXTENDED/javacc/javacc.spec
index 262a360455f..629cc51e2e1 100644
--- a/SPECS-EXTENDED/javacc/javacc.spec
+++ b/SPECS-EXTENDED/javacc/javacc.spec
@@ -21,7 +21,7 @@ Distribution: Azure Linux
Summary: A Parser and Scanner Generator for Java
Name: javacc
Version: 7.0.4
-Release: 3%{?dist}
+Release: 4%{?dist}
License: BSD-3-Clause
Group: Development/Libraries/Java
URL: http://javacc.org
@@ -84,7 +84,7 @@ find ./examples -type f -exec sed -i 's/\r//' {} \;
%build
%{ant} \
- -Dant.build.javac.source=1.6 -Dant.build.javac.target=1.6 \
+ -Dant.build.javac.source=1.8 -Dant.build.javac.target=1.8 \
jar javadoc
%install
@@ -99,12 +99,31 @@ install -pm 0644 pom.xml %{buildroot}%{_mavenpomdir}/%{name}.pom
# javadoc
install -dm 0755 %{buildroot}%{_javadocdir}/%{name}
cp -pr target/javadoc/* %{buildroot}%{_javadocdir}/%{name}/
+
+# Move license-like files out of javadoc tree to avoid license warnings
+legaldir=%{buildroot}%{_javadocdir}/%{name}/legal
+
+if [ -d "$legaldir" ]; then
+ # install renamed copies into licensedir
+ install -Dm 0644 $legaldir/LICENSE \
+ %{buildroot}%{_licensedir}/javacc/LICENSE.javadoc
+
+ install -Dm 0644 $legaldir/ADDITIONAL_LICENSE_INFO \
+ %{buildroot}%{_licensedir}/javacc/ADDITIONAL_LICENSE_INFO.javadoc
+
+ # remove the originals to avoid confusion
+ rm -rf $legaldir
+fi
+
+# Remove all javadoc legal directories afterward
+find %{buildroot}%{_javadocdir}/%{name} -type d -name legal
+
%fdupes -s %{buildroot}%{_javadocdir}
%fdupes -s www
%fdupes -s examples
%jpackage_script javacc '' '' javacc javacc true
-ln -s %{_bindir}/javacc %{buildroot}%{_bindir}/javacc.sh
+ln -s javacc %{buildroot}%{_bindir}/javacc.sh
%jpackage_script jjdoc '' '' javacc jjdoc true
%jpackage_script jjtree '' '' javacc jjtree true
@@ -124,9 +143,15 @@ ln -s %{_bindir}/javacc %{buildroot}%{_bindir}/javacc.sh
%files javadoc
%license LICENSE
-%{_javadocdir}/%{name}
+%doc %{_javadocdir}/%{name}
+%license %{_licensedir}/javacc/*
%changelog
+* Wed Dec 17 2025 Aninda Pradhan - 7.0.4-4
+- Updated javac to use 1.8 to resolve build issues.
+- Fixed license path warnings
+- License verified
+
* Sat Jul 24 2021 Pawel Winogrodzki - 7.0.4-3
- Splitting as separate 'javacc' package with a build-time dependency on 'javacc-bootstrap'.
- Switching to using single digit 'Release' tags.
diff --git a/SPECS-EXTENDED/jbcrypt/jbcrypt-1.0.2.pom b/SPECS-EXTENDED/jbcrypt/jbcrypt-1.0.2.pom
new file mode 100644
index 00000000000..dcc1cf2c307
--- /dev/null
+++ b/SPECS-EXTENDED/jbcrypt/jbcrypt-1.0.2.pom
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+ 4.0.0
+ org.connectbot
+ jbcrypt
+ 1.0.2
+ jBCrypt
+ A fork of jBCrypt with more modern OpenBSD algorithms.
+ https://github.com/kruton/jbcrypt
+
+
+ ISC
+ https://www.isc.org/downloads/software-support-policy/isc-license/
+
+
+
+
+ Kenny Root
+ kenny@the-b.org
+
+
+
+ https://github.com/kruton/jbcrypt.git
+ https://github.com/kruton/jbcrypt.git
+ https://github.com/kruton/jbcrypt
+
+
diff --git a/SPECS-EXTENDED/jbcrypt/jbcrypt-build.xml b/SPECS-EXTENDED/jbcrypt/jbcrypt-build.xml
new file mode 100644
index 00000000000..175f45b06d1
--- /dev/null
+++ b/SPECS-EXTENDED/jbcrypt/jbcrypt-build.xml
@@ -0,0 +1,196 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ =================================== WARNING ===================================
+ JUnit is not present in the test classpath or your $ANT_HOME/lib directory. Tests not executed.
+ ===============================================================================
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/SPECS-EXTENDED/jbcrypt/jbcrypt.signatures.json b/SPECS-EXTENDED/jbcrypt/jbcrypt.signatures.json
new file mode 100644
index 00000000000..4b2d3d8c63d
--- /dev/null
+++ b/SPECS-EXTENDED/jbcrypt/jbcrypt.signatures.json
@@ -0,0 +1,7 @@
+{
+ "Signatures": {
+ "jbcrypt-1.0.2.pom": "c94024d7410ed6a1894e3f8e26df16c2d3f6931e89c6b3f17a9028ab4dba092b",
+ "jbcrypt-1.0.2.tar.gz": "0a18110f070f53e2f9ed1609e1a01a1d2042bbe87cba909a381f2f5a055a1142",
+ "jbcrypt-build.xml": "e85b12dde9acea14d76d09db813f90fde150c1f312e772ddffdb6d66cd51b5ef"
+ }
+}
\ No newline at end of file
diff --git a/SPECS-EXTENDED/jbcrypt/jbcrypt.spec b/SPECS-EXTENDED/jbcrypt/jbcrypt.spec
new file mode 100644
index 00000000000..126fcc62c99
--- /dev/null
+++ b/SPECS-EXTENDED/jbcrypt/jbcrypt.spec
@@ -0,0 +1,91 @@
+Vendor: Microsoft Corporation
+Distribution: Azure Linux
+#
+# spec file for package jbcrypt
+#
+# Copyright (c) 2024 SUSE LLC
+#
+# All modifications and additions to the file contributed by third parties
+# remain the property of their copyright owners, unless otherwise agreed
+# upon. The license for this file, and modifications and additions to the
+# file, is the same license as for the pristine package itself (unless the
+# license for the pristine package is not an Open Source License, in which
+# case the license is the MIT License). An "Open Source License" is a
+# license that conforms to the Open Source Definition (Version 1.9)
+# published by the Open Source Initiative.
+
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
+#
+
+
+Name: jbcrypt
+Version: 1.0.2
+Release: 1%{?dist}
+Summary: An implementation the OpenBSD Blowfish password hashing algorithm
+License: ISC
+Group: Development/Libraries/Java
+URL: https://github.com/kruton/%{name}
+Source0: https://github.com/kruton/%{name}/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}.tar.gz
+Source1: %{name}-build.xml
+Source2: https://repo1.maven.org/maven2/org/connectbot/%{name}/%{version}/%{name}-%{version}.pom
+BuildRequires: ant
+BuildRequires: fdupes
+BuildRequires: java-devel >= 1.8
+BuildRequires: javapackages-local-bootstrap >= 6
+BuildRequires: javapackages-tools
+BuildArch: noarch
+
+%description
+jBCrypt is an implementation the OpenBSD Blowfish password hashing
+algorithm.
+
+This system hashes passwords using a version of Bruce Schneier's
+Blowfish block cipher with modifications designed to raise the cost of
+off-line password cracking. The computation cost of the algorithm is
+parameterised, so it can be increased as computers get faster.
+
+%package javadoc
+Summary: Javadoc for %{name}
+Group: Development/Libraries/Java
+
+%description javadoc
+This package contains API documentation for %{name}.
+
+%prep
+%setup -q
+cp %{SOURCE1} build.xml
+
+%build
+%{ant} -Dtest.skip=true package javadoc
+
+%install
+install -dm 0755 %{buildroot}%{_javadir}
+install -pm 0644 target/%{name}-%{version}.jar %{buildroot}%{_javadir}/%{name}.jar
+
+install -dm 0755 %{buildroot}%{_mavenpomdir}
+install -pm 0644 %{SOURCE2} %{buildroot}%{_mavenpomdir}/%{name}.pom
+%add_maven_depmap %{name}.pom %{name}.jar -a org.connectbot.jbcrypt:jbcrypt
+
+install -dm 0755 %{buildroot}%{_javadocdir}
+cp -r target/site/apidocs %{buildroot}%{_javadocdir}/%{name}
+mv %{buildroot}%{_javadocdir}/%{name}/legal/ADDITIONAL_LICENSE_INFO .
+mv %{buildroot}%{_javadocdir}/%{name}/legal/LICENSE .
+%fdupes -s %{buildroot}%{_javadocdir}
+
+%files -f .mfiles
+%license LICENSE
+%doc README
+
+
+%files javadoc
+%license LICENSE ADDITIONAL_LICENSE_INFO
+%{_javadocdir}/%{name}
+
+
+%changelog
+* Tue Dec 16 2025 BinduSri Adabala - 1.0.2-1
+- Initial CBL-Mariner import from openSUSE Tumbleweed (license: same as "License" tag).
+- License verified
+
+* Tue Mar 12 2024 Fridrich Strba
+- Initial packaging of version 1.0.2
diff --git a/SPECS-EXTENDED/jtidy/build.xml b/SPECS-EXTENDED/jtidy/build.xml
deleted file mode 100644
index 8f4a88f7d15..00000000000
--- a/SPECS-EXTENDED/jtidy/build.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/SPECS-EXTENDED/jtidy/jtidy-build.xml b/SPECS-EXTENDED/jtidy/jtidy-build.xml
new file mode 100644
index 00000000000..954b0d8b607
--- /dev/null
+++ b/SPECS-EXTENDED/jtidy/jtidy-build.xml
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/SPECS-EXTENDED/jtidy/jtidy-rpmlintrc b/SPECS-EXTENDED/jtidy/jtidy-rpmlintrc
new file mode 100644
index 00000000000..86d44267df4
--- /dev/null
+++ b/SPECS-EXTENDED/jtidy/jtidy-rpmlintrc
@@ -0,0 +1 @@
+addFilter("invalid-license")
diff --git a/SPECS-EXTENDED/jtidy/jtidy.jtidy.script b/SPECS-EXTENDED/jtidy/jtidy.jtidy.script
deleted file mode 100644
index b6939917121..00000000000
--- a/SPECS-EXTENDED/jtidy/jtidy.jtidy.script
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/sh
-#
-# JTidy script
-# JPackage Project
-# $Id: jtidy.jtidy.script,v 1.1 2002/08/30 20:27:06 scop Exp $
-
-# Source functions library
-if [ -f /usr/share/java-utils/java-functions ] ; then
- . /usr/share/java-utils/java-functions
-else
- echo "Can't find functions library, aborting"
- exit 1
-fi
-
-# Configuration
-MAIN_CLASS=org.w3c.tidy.Tidy
-BASE_JARS="jtidy xerces-j2 xml-commons-apis"
-
-# Set parameters
-set_jvm
-set_classpath $BASE_JARS
-set_flags $BASE_FLAGS
-set_options $BASE_OPTIONS
-
-# Let's start
-run "$@"
diff --git a/SPECS-EXTENDED/jtidy/jtidy.signatures.json b/SPECS-EXTENDED/jtidy/jtidy.signatures.json
index bdf17f0ab22..230b2601698 100644
--- a/SPECS-EXTENDED/jtidy/jtidy.signatures.json
+++ b/SPECS-EXTENDED/jtidy/jtidy.signatures.json
@@ -1,9 +1,7 @@
{
"Signatures": {
- "build.xml": "3d0dc374b73697277f33da5332298980a3880bd49d95172507f42f10e8ea4942",
- "jtidy-r813.tar.bz2": "ef3a8d5094281ce419aaabd16474971e8b656c9056dac5d4eedb608fb44d9712",
- "jtidy.jtidy.script": "e0ac56a85eb11c20a2b3abd27072b84b5da4af108852b341840d2ff8e0e49fed",
- "maven-build.properties": "aa55c81591c1379770ec96bdac30da5ff966925ccfa392117b5c236c913894ab",
- "maven-build.xml": "6d2be5301ac3489ee1c2e18244a3a1421378fdc2261db3f2082de840d2c1006e"
+ "jtidy-1.0.4.tar.gz": "1df3eca7077a1290f1e9b633422a3d8ac4f2fc5a0f487a129a193d58b039ea45",
+ "jtidy-build.xml": "f933286ec074603c3f748bd79f6c874feb0880b12067ba88c1d9f6fc27d0d28a",
+ "jtidy-rpmlintrc": "ee1003144292574a34c0f5cddf05a52ed1a2b27489b5ab550cc393d9cb7d9449"
}
}
diff --git a/SPECS-EXTENDED/jtidy/jtidy.spec b/SPECS-EXTENDED/jtidy/jtidy.spec
index 7f0d61ca2a6..09bd3210688 100644
--- a/SPECS-EXTENDED/jtidy/jtidy.spec
+++ b/SPECS-EXTENDED/jtidy/jtidy.spec
@@ -1,53 +1,24 @@
Vendor: Microsoft Corporation
Distribution: Azure Linux
-#
-# spec file for package jtidy
-#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
-#
-# All modifications and additions to the file contributed by third parties
-# remain the property of their copyright owners, unless otherwise agreed
-# upon. The license for this file, and modifications and additions to the
-# file, is the same license as for the pristine package itself (unless the
-# license for the pristine package is not an Open Source License, in which
-# case the license is the MIT License). An "Open Source License" is a
-# license that conforms to the Open Source Definition (Version 1.9)
-# published by the Open Source Initiative.
-
-# Please submit bugfixes or comments via https://bugs.opensuse.org/
-#
-
-
-%define with() %{expand:%%{?with_%{1}:1}%%{!?with_%{1}:0}}
-%define without() %{expand:%%{?with_%{1}:0}%%{!?with_%{1}:1}}
-%define bcond_with() %{expand:%%{?_with_%{1}:%%global with_%{1} 1}}
-%define bcond_without() %{expand:%%{!?_without_%{1}:%%global with_%{1} 1}}
-%define _without_maven 1
-%define section free
-%bcond_with maven
Name: jtidy
-Version: 8.0
-Release: 32%{?dist}
+VCS: https://src.suse.de/pool/jtidy?trackingbranch=slfo-1.2#0765e5b9560995812fcac0bb88fd0e409490c8343acc52ef06cfa2af91680a0d
+Version: 1.0.4
+Release: 1%{?dist}
Summary: HTML syntax checker and pretty printer
-License: BSD
+License: HTMLTIDY
Group: Development/Libraries/Java
-URL: http://jtidy.sourceforge.net/
-# svn export -r813 http://svn.sourceforge.net/svnroot/jtidy/trunk/jtidy/ jtidy
-# # bnc#501764
-# rm jtidy/src/config/clover.license
-Source0: %{_distro_sources_url}/jtidy-r813.tar.bz2
-Source1: %{name}.jtidy.script
-Source2: build.xml
-Source3: maven-build.properties
-Source4: maven-build.xml
+URL: https://github.com/jtidy/jtidy
+Source0: https://github.com/jtidy/jtidy/archive/refs/tags/jtidy-1.0.4.tar.gz
+Source1: %{name}-build.xml
+Source100: %{name}-rpmlintrc
BuildRequires: ant >= 1.6
BuildRequires: ant-junit
BuildRequires: fdupes
BuildRequires: javapackages-local-bootstrap
BuildRequires: xerces-j2
-BuildRequires: xml-commons-apis
+BuildRequires: xml-apis
Requires: xerces-j2
-Requires: xml-commons-apis
+Requires: xml-apis
BuildArch: noarch
%description
@@ -79,34 +50,19 @@ cleaning up malformed and faulty HTML. In addition, JTidy provides a
DOM parser for real-world HTML.
%prep
-%setup -q -n %{name}
-cp -p %{SOURCE2} %{SOURCE3} %{SOURCE4} .
-
-sed -i 's/charset="ISO-8859-1"/charset="UTF-8"/' maven-build.xml
+%setup -q -n %{name}-%{name}-%{version}
+cp -p %{SOURCE1} build.xml
%build
-export MAVEN_REPO_LOCAL=$(pwd)/.m2/repository
-mkdir -p $MAVEN_REPO_LOCAL
-if [ `uname -m` = "ppc64" -o `uname -m` = "ppc64le" ];then
-export ANT_OPTS="-Xss2m"
-else
-export ANT_OPTS="-Xss1m"
-fi
-export CLASSPATH=$(build-classpath junit slf4j xerces-j2 xml-commons-jaxp-1.3-apis):`pwd`/target/classes:`pwd`/target/test-classes
-export OPT_JAR_LIST="junit ant/ant-junit"
+mkdir -p lib
+build-jar-repository -s lib xerces-j2 xml-apis
%{ant} \
- -Dbuild.sysclasspath=only \
- -Dmaven.mode.offline=true \
- -Dmaven.repo.local=$MAVEN_REPO_LOCAL \
- -Dmaven.test.skip=true \
- -Dmaven.test.error.ignore=true \
package javadoc
%install
-
# jar
install -d -m 0755 %{buildroot}%{_javadir}
-install -m 644 target/jtidy-8.0-SNAPSHOT.jar %{buildroot}%{_javadir}/%{name}.jar
+install -m 644 target/%{name}-%{version}.jar %{buildroot}%{_javadir}/%{name}.jar
# pom
install -d -m 755 %{buildroot}%{_mavenpomdir}
@@ -117,28 +73,26 @@ install -pm 644 pom.xml %{buildroot}%{_mavenpomdir}/%{name}.pom
install -d -m 0755 %{buildroot}%{_javadocdir}/%{name}
cp -aL target/site/apidocs/* %{buildroot}%{_javadocdir}/%{name}
%fdupes -s %{buildroot}%{_javadocdir}/%{name}
+mv %{buildroot}%{_javadocdir}/%{name}/legal/ADDITIONAL_LICENSE_INFO .
+mv %{buildroot}%{_javadocdir}/%{name}/legal/LICENSE .
# shell script
-install -d -m 0755 %{buildroot}%{_bindir}
-install -p -m 0755 %{SOURCE1} %{buildroot}%{_bindir}/%{name}
+%jpackage_script org.w3c.tidy.Tidy "" "" %{name}:xerces-j2:xml-apis %{name} true
# ant.d
install -d -m 0755 %{buildroot}%{_sysconfdir}/ant.d
cat > %{buildroot}%{_sysconfdir}/ant.d/%{name} << EOF
-jtidy xerces-j2 xml-commons-jaxp-1.3-apis
+jtidy xerces-j2 xml-apis
EOF
%files
-%defattr(0644,root,root,0755)
%license LICENSE.txt
+%license LICENSE
+%license ADDITIONAL_LICENSE_INFO
%{_javadir}/%{name}.jar
-%{_mavenpomdir}/*
-%if %{defined _maven_repository}
-%{_mavendepmapfragdir}/%{name}
-%else
-%{_datadir}/maven-metadata/%{name}.xml*
-%endif
%config(noreplace) %{_sysconfdir}/ant.d/%{name}
+%exclude /usr/share/maven-poms/%{name}.pom
+%exclude /usr/share/maven-metadata/%{name}.xml
%files javadoc
%defattr(0644,root,root,0755)
@@ -149,37 +103,6 @@ EOF
%{_bindir}/*
%changelog
-* Thu Feb 22 2024 Pawel Winogrodzki - 8.0-32
-- Updating naming for 3.0 version of Azure Linux.
-
-* Fri Apr 15 2022 Pawel Winogrodzki - 8.0-31
-- Updating source URL.
-- License verified.
-
-* Thu Oct 14 2021 Pawel Winogrodzki - 8.0-30
-- Converting the 'Release' tag to the '[number].[distribution]' format.
-
-* Mon Nov 16 2020 Ruying Chen - 8.0-29.7
-- Initial CBL-Mariner import from openSUSE Tumbleweed (license: same as "License" tag).
-- Use javapackages-local-bootstrap to avoid build cycle.
-
-* Mon Oct 29 2018 Fridrich Strba
-- Fix javadoc build
-- Package maven artifact
-* Fri Sep 8 2017 fstrba@suse.com
-- Modified file:
- * maven-build.xml
- + Specify java source and target level 1.6 in order to allow
- building with jdk9
-* Thu Dec 5 2013 dvaleev@suse.com
-- increase stack size for ppc64le
-* Mon Sep 9 2013 tchvatal@suse.com
-- Move from jpackage-utils to javapackage-tools
-* Wed Dec 12 2012 dvaleev@suse.com
-- increase stack size for ppc64
-* Fri Jun 15 2012 mvyskocil@suse.cz
-- disable javadoc (workaround for jdk7 build)
-* Wed May 20 2009 mvyskocil@suse.cz
-- 'fixed bnc#501764: removed clover.license from source tarball'
-* Thu May 7 2009 mvyskocil@suse.cz
-- Initial packaging of 8.0 in SUSE (from jpp 5.0)
+* Fri Nov 21 2025 Akarsh Chaudhary - 1.0.4-1
+- Initial Azure Linux import from openSUSE Tumbleweed (license: same as "License" tag).
+- License verified
diff --git a/SPECS-EXTENDED/jtidy/maven-build.properties b/SPECS-EXTENDED/jtidy/maven-build.properties
deleted file mode 100644
index 508181a3b50..00000000000
--- a/SPECS-EXTENDED/jtidy/maven-build.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-#Generated by Maven Ant Plugin - DO NOT EDIT THIS FILE!
-#Thu Oct 02 12:28:05 EDT 2008
-project.build.outputDirectory=${maven.build.outputDir}
-project.build.directory=${maven.build.dir}
-maven.test.reports=${maven.build.dir}/test-reports
-maven.build.finalName=jtidy-8.0-SNAPSHOT
-maven.reporting.outputDirectory=${maven.build.dir}/site
-maven.build.testResourceDir.0=src/test/resources
-maven.build.outputDir=${maven.build.dir}/classes
-maven.build.resourceDir.0=src/main/resources
-maven.build.testOutputDir=${maven.build.dir}/test-classes
-maven.repo.local=${user.home}/.m2/repository
-maven.settings.offline=false
-maven.build.dir=target
-maven.settings.interactiveMode=true
-maven.build.testDir.0=src/test/java
-maven.build.srcDir.0=src/main/java
diff --git a/SPECS-EXTENDED/jtidy/maven-build.xml b/SPECS-EXTENDED/jtidy/maven-build.xml
deleted file mode 100644
index 1cb188bdfe5..00000000000
--- a/SPECS-EXTENDED/jtidy/maven-build.xml
+++ /dev/null
@@ -1,322 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- =================================== WARNING ===================================
- JUnit is not present in your $ANT_HOME/lib directory. Tests not executed.
- ===============================================================================
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/SPECS-EXTENDED/kernel-ipe/config b/SPECS-EXTENDED/kernel-ipe/config
index ac2579594bf..036939da340 100644
--- a/SPECS-EXTENDED/kernel-ipe/config
+++ b/SPECS-EXTENDED/kernel-ipe/config
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/x86_64 6.6.117.1 Kernel Configuration
+# Linux/x86_64 6.6.121.1 Kernel Configuration
#
CONFIG_CC_VERSION_TEXT="gcc (GCC) 13.2.0"
CONFIG_CC_IS_GCC=y
@@ -1170,7 +1170,7 @@ CONFIG_XFRM_OFFLOAD=y
CONFIG_XFRM_ALGO=m
CONFIG_XFRM_USER=m
# CONFIG_XFRM_USER_COMPAT is not set
-# CONFIG_XFRM_INTERFACE is not set
+CONFIG_XFRM_INTERFACE=m
CONFIG_XFRM_SUB_POLICY=y
CONFIG_XFRM_MIGRATE=y
CONFIG_XFRM_STATISTICS=y
@@ -1220,7 +1220,7 @@ CONFIG_INET_DIAG=m
CONFIG_INET_TCP_DIAG=m
CONFIG_INET_UDP_DIAG=m
# CONFIG_INET_RAW_DIAG is not set
-# CONFIG_INET_DIAG_DESTROY is not set
+CONFIG_INET_DIAG_DESTROY=y
CONFIG_TCP_CONG_ADVANCED=y
CONFIG_TCP_CONG_BIC=m
CONFIG_TCP_CONG_CUBIC=y
@@ -2062,7 +2062,8 @@ CONFIG_DMIID=y
CONFIG_DMI_SYSFS=m
CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y
# CONFIG_ISCSI_IBFT is not set
-# CONFIG_FW_CFG_SYSFS is not set
+CONFIG_FW_CFG_SYSFS=m
+# CONFIG_FW_CFG_SYSFS_CMDLINE is not set
CONFIG_SYSFB=y
# CONFIG_SYSFB_SIMPLEFB is not set
# CONFIG_GOOGLE_FIRMWARE is not set
@@ -7169,7 +7170,7 @@ CONFIG_SQUASHFS_ZLIB=y
CONFIG_SQUASHFS_LZ4=y
CONFIG_SQUASHFS_LZO=y
CONFIG_SQUASHFS_XZ=y
-# CONFIG_SQUASHFS_ZSTD is not set
+CONFIG_SQUASHFS_ZSTD=y
# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
# CONFIG_SQUASHFS_EMBEDDED is not set
CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
diff --git a/SPECS-EXTENDED/kernel-ipe/config_aarch64 b/SPECS-EXTENDED/kernel-ipe/config_aarch64
index 57521d161aa..600b9693681 100644
--- a/SPECS-EXTENDED/kernel-ipe/config_aarch64
+++ b/SPECS-EXTENDED/kernel-ipe/config_aarch64
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/arm64 6.6.117.1 Kernel Configuration
+# Linux/arm64 6.6.121.1 Kernel Configuration
#
CONFIG_CC_VERSION_TEXT="gcc (GCC) 13.2.0"
CONFIG_CC_IS_GCC=y
@@ -1231,7 +1231,7 @@ CONFIG_INET_DIAG=m
CONFIG_INET_TCP_DIAG=m
CONFIG_INET_UDP_DIAG=m
# CONFIG_INET_RAW_DIAG is not set
-# CONFIG_INET_DIAG_DESTROY is not set
+CONFIG_INET_DIAG_DESTROY=y
CONFIG_TCP_CONG_ADVANCED=y
CONFIG_TCP_CONG_BIC=m
CONFIG_TCP_CONG_CUBIC=y
@@ -4715,6 +4715,7 @@ CONFIG_SPI_SUN6I=m
CONFIG_SPI_SYNQUACER=m
CONFIG_SPI_MXIC=m
# CONFIG_SPI_TEGRA210_QUAD is not set
+# CONFIG_SPI_TEGRA114 is not set
# CONFIG_SPI_TEGRA20_SFLASH is not set
CONFIG_SPI_THUNDERX=m
CONFIG_SPI_XCOMM=m
@@ -8523,7 +8524,6 @@ CONFIG_STAGING=y
# CONFIG_RTL8192U is not set
# CONFIG_RTLLIB is not set
# CONFIG_RTL8723BS is not set
-# CONFIG_R8712U is not set
# CONFIG_RTS5208 is not set
# CONFIG_VT6655 is not set
# CONFIG_VT6656 is not set
diff --git a/SPECS-EXTENDED/kernel-ipe/kernel-ipe.signatures.json b/SPECS-EXTENDED/kernel-ipe/kernel-ipe.signatures.json
index b136a0efd60..bba710e66c5 100644
--- a/SPECS-EXTENDED/kernel-ipe/kernel-ipe.signatures.json
+++ b/SPECS-EXTENDED/kernel-ipe/kernel-ipe.signatures.json
@@ -1,14 +1,14 @@
{
"Signatures": {
"azurelinux-ca-20230216.pem": "d545401163c75878319f01470455e6bc18a5968e39dd964323225e3fe308849b",
- "config": "f9b4a11f5f16da83111766e1af913b77103a6dc872b848bb25d41a5be68cb032",
- "config_aarch64": "d4207f14d92b0b873856ed4d26ee7c340ed8fe77e0beea9e5047d632c48189b3",
+ "config": "45568c4b391b581400145626bd7ca1712028bfcef6b1f3ab4691c27786a91c3a",
+ "config_aarch64": "77ba2d0761f07f9d1182fd3ab469106e99c38e839665e5af699379a1a204a844",
"cpupower": "d7518767bf2b1110d146a49c7d42e76b803f45eb8bd14d931aa6d0d346fae985",
"cpupower.service": "b057fe9e5d0e8c36f485818286b80e3eba8ff66ff44797940e99b1fd5361bb98",
"sha512hmac-openssl.sh": "02ab91329c4be09ee66d759e4d23ac875037c3b56e5a598e32fd1206da06a27f",
"azl-ipe-boot-policy.pol": "f2b7941bd3b721aadc8e937d0472c36fe5e140221f7bb54af6ef905884e0372c",
"Makefile": "1c2e740407215ed9b9cbbc09f9102bc99c08b370bbe2cbb0490aefdc9eb70455",
"tarfs.c": "066084e1ca2c1e7ba83e76a6696cf17928e7efb46a2b1670a7a1f597c2d9bc51",
- "kernel-6.6.117.1.tar.gz": "bfbbeba626396e2bab9bd520a46943e68d228a91e8f11cd662bf4fb3996443d3"
+ "kernel-6.6.121.1.tar.gz": "aa5721db931ce7b5a7a2c9a554c78e399dbe76e823356d36f860308cfa9c5e12"
}
}
diff --git a/SPECS-EXTENDED/kernel-ipe/kernel-ipe.spec b/SPECS-EXTENDED/kernel-ipe/kernel-ipe.spec
index 7a527d3cd7f..ac871c7905c 100644
--- a/SPECS-EXTENDED/kernel-ipe/kernel-ipe.spec
+++ b/SPECS-EXTENDED/kernel-ipe/kernel-ipe.spec
@@ -32,7 +32,7 @@
Summary: Linux Kernel
Name: kernel-ipe
-Version: 6.6.117.1
+Version: 6.6.121.1
Release: 1%{?dist}
License: GPLv2
Vendor: Microsoft Corporation
@@ -460,6 +460,21 @@ echo "initrd of kernel %{uname_r} removed" >&2
%{_sysconfdir}/bash_completion.d/bpftool
%changelog
+* Mon Feb 02 2026 CBL-Mariner Servicing Account - 6.6.121.1-1
+- Auto-upgrade to 6.6.121.1
+
+* Tue Jan 28 2026 Sean Dougherty - 6.6.119.3-4
+- Enable CONFIG_FW_CFG_SYSFS and CONFIG_SQUASHFS_ZSTD
+
+* Fri Jan 16 2026 Rachel Menge - 6.6.119.3-3
+- Enable XFRM_INTERFACE
+
+* Thu Jan 08 2026 Rachel Menge - 6.6.119.3-2
+- Enable CONFIG_INET_DIAG_DESTROY
+
+* Tue Jan 06 2026 CBL-Mariner Servicing Account - 6.6.119.3-1
+- Auto-upgrade to 6.6.119.3
+
* Wed Nov 26 2025 CBL-Mariner Servicing Account - 6.6.117.1-1
- Auto-upgrade to 6.6.117.1
diff --git a/SPECS-EXTENDED/lasso/lasso.signatures.json b/SPECS-EXTENDED/lasso/lasso.signatures.json
index a71c8f6e6e6..76a29baebcc 100644
--- a/SPECS-EXTENDED/lasso/lasso.signatures.json
+++ b/SPECS-EXTENDED/lasso/lasso.signatures.json
@@ -1,5 +1,5 @@
{
"Signatures": {
- "lasso-2.8.0.tar.gz": "ffcbd5851d98586c7e1caf43bad66164211a3b61d12bf860a0598448ff9f2b38"
+ "lasso-2.9.0.tar.gz": "225f664fe602b73bb5eaf5c4b60a6b07eb2d936d0dd0cafb222524c801d98e5d"
}
}
diff --git a/SPECS-EXTENDED/lasso/lasso.spec b/SPECS-EXTENDED/lasso/lasso.spec
index 3bd2b175648..4a5c7f6b45b 100644
--- a/SPECS-EXTENDED/lasso/lasso.spec
+++ b/SPECS-EXTENDED/lasso/lasso.spec
@@ -3,20 +3,26 @@ Distribution: Azure Linux
%global with_java 0
%global with_php 0
%global with_perl 1
+%global with_python3 1
%global with_wsf 0
-%global obsolete_old_lang_subpackages 0
+%global default_sign_algo "rsa-sha1"
+%global min_hash_algo "sha1"
%if %{with_php}
-%if "%{php_version}" < "5.6"
-%global ini_name %{name}.ini
-%else
%global ini_name 40-%{name}.ini
%endif
-%endif
%global configure_args %{nil}
%global configure_args %{configure_args}
+%if %{default_sign_algo}
+ %global configure_args %{configure_args} --with-default-sign-algo=%{default_sign_algo}
+%endif
+
+%if %{min_hash_algo}
+ %global configure_args %{configure_args} --with-min-hash-algo=%{min_hash_algo}
+%endif
+
%if !%{with_java}
%global configure_args %{configure_args} --disable-java
%endif
@@ -26,66 +32,56 @@ Distribution: Azure Linux
%endif
%if %{with_php}
- %global configure_args %{configure_args} --enable-php5=yes --with-php5-config-dir=%{php_inidir}
+ %global configure_args %{configure_args} --enable-php5=no --enable-php7=yes --with-php7-config-dir=%{php_inidir}
%else
- %global configure_args %{configure_args} --enable-php5=no
+ %global configure_args %{configure_args} --enable-php5=no --enable-php7=no
%endif
%if %{with_wsf}
%global configure_args %{configure_args} --enable-wsf --with-sasl2=%{_prefix}/sasl2
%endif
+%if !%{with_python3}
+ %global configure_args %{configure_args} --disable-python
+%endif
+
Summary: Liberty Alliance Single Sign On
Name: lasso
-Version: 2.8.0
+Version: 2.9.0
Release: 1%{?dist}
-License: GPLv2+
-URL: http://lasso.entrouvert.org/
-Source: http://dev.entrouvert.org/lasso/lasso-%{version}.tar.gz
+License: GPL-2.0-or-later
+URL: https://lasso.entrouvert.org/
+Source0: https://git.entrouvert.org/entrouvert/lasso/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: check-devel
+BuildRequires: gcc
BuildRequires: glib2-devel
BuildRequires: gtk-doc
BuildRequires: libtool
BuildRequires: libtool-ltdl-devel
BuildRequires: libxml2-devel
-BuildRequires: libxslt-devel
+BuildRequires: make
BuildRequires: openssl-devel
-BuildRequires: swig
-BuildRequires: xmlsec1-devel >= 1.2.25-4
-BuildRequires: xmlsec1-openssl-devel >= 1.2.25-4
-BuildRequires: zlib-devel
-%if %{with_java}
-BuildRequires: java-devel
-BuildRequires: jpackage-utils
-%endif
-%if %{with_perl}
-BuildRequires: perl-devel
-BuildRequires: perl-generators
-BuildRequires: perl(Error)
-BuildRequires: perl(ExtUtils::MakeMaker)
-BuildRequires: perl(strict)
-BuildRequires: perl(Test::More)
-BuildRequires: perl(warnings)
-BuildRequires: perl(XSLoader)
-%endif
-%if %{with_php}
-BuildRequires: expat-devel
-BuildRequires: php-devel
-%endif
-# The Lasso build system requires python, especially the binding generators
BuildRequires: python3
-BuildRequires: python3-devel
-BuildRequires: python3-lxml
BuildRequires: python3-six
+BuildRequires: (python3-setuptools if python3 >= 3.12)
+BuildRequires: swig
+BuildRequires: xmlsec1-devel
+BuildRequires: xmlsec1-openssl-devel
+BuildRequires: zlib-devel
%if %{with_wsf}
BuildRequires: cyrus-sasl-devel
%endif
-Requires: xmlsec1 >= 1.2.25-4
+Requires: xmlsec1
+
+# lasso upstream no longer supports java bindings
+# see https://dev.entrouvert.org/issues/45876#change-289747
+# and https://dev.entrouvert.org/issues/51418
+Obsoletes: java-lasso < %{version}-%{release}
%description
Lasso is a library that implements the Liberty Alliance Single Sign On
@@ -104,7 +100,15 @@ documentation for Lasso.
%if %{with_perl}
%package -n perl-%{name}
Summary: Liberty Alliance Single Sign On (lasso) Perl bindings
-Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
+BuildRequires: perl-devel
+BuildRequires: perl-generators
+BuildRequires: perl-interpreter
+BuildRequires: perl(Error)
+BuildRequires: perl(ExtUtils::MakeMaker)
+BuildRequires: perl(strict)
+BuildRequires: perl(Test::More)
+BuildRequires: perl(warnings)
+BuildRequires: perl(XSLoader)
Requires: %{name}%{?_isa} = %{version}-%{release}
%description -n perl-%{name}
@@ -114,14 +118,11 @@ Perl language bindings for the lasso (Liberty Alliance Single Sign On) library.
%if %{with_java}
%package -n java-%{name}
Summary: Liberty Alliance Single Sign On (lasso) Java bindings
-Requires: java
+Buildrequires: java-1.8.0-openjdk-devel
+BuildRequires: jpackage-utils
+Requires: java-headless
Requires: jpackage-utils
Requires: %{name}%{?_isa} = %{version}-%{release}
-%if %{obsolete_old_lang_subpackages}
-Provides: %{name}-java = %{version}-%{release}
-Provides: %{name}-java%{?_isa} = %{version}-%{release}
-Obsoletes: %{name}-java < %{version}-%{release}
-%endif
%description -n java-%{name}
Java language bindings for the lasso (Liberty Alliance Single Sign On) library.
@@ -130,6 +131,8 @@ Java language bindings for the lasso (Liberty Alliance Single Sign On) library.
%if %{with_php}
%package -n php-%{name}
Summary: Liberty Alliance Single Sign On (lasso) PHP bindings
+BuildRequires: expat-devel
+BuildRequires: php-devel
Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: php(zend-abi) = %{php_zend_api}
Requires: php(api) = %{php_core_api}
@@ -139,51 +142,52 @@ PHP language bindings for the lasso (Liberty Alliance Single Sign On) library.
%endif
+
+%if %{with_python3}
%package -n python3-%{name}
%{?python_provide:%python_provide python3-%{name}}
Summary: Liberty Alliance Single Sign On (lasso) Python bindings
+BuildRequires: python3-devel
+BuildRequires: python3-lxml
Requires: python3
Requires: %{name}%{?_isa} = %{version}-%{release}
-Provides: lasso-python = %{version}-%{release}
%description -n python3-%{name}
Python language bindings for the lasso (Liberty Alliance Single Sign On)
library.
+%endif
%prep
-%autosetup -p1
+%autosetup -n %{name}
# Remove any python script shebang lines (unless they refer to python3)
sed -i -E -e '/^#![[:blank:]]*(\/usr\/bin\/env[[:blank:]]+python[^3]?\>)|(\/usr\/bin\/python[^3]?\>)/d' \
`grep -r -l -E '^#![[:blank:]]*(/usr/bin/python[^3]?)|(/usr/bin/env[[:blank:]]+python[^3]?)' *`
%build
-export JAVA_HOME=%{java_home}
+%if 0%{?with_java}
+export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
+%endif
+echo %{version} > .tarball-version
./autogen.sh
-
-%configure %{configure_args} --with-python=%{__python3}
+%if 0%{?with_python3}
+ %configure %{configure_args} --with-python=%{__python3}
+%else
+ %configure %{configure_args}
+%endif
%make_build CFLAGS="%{optflags}"
%check
-make check CK_TIMEOUT_MULTIPLIER=5
+make check CK_TIMEOUT_MULTIPLIER=10
%install
-#install -m 755 -d %{buildroot}%{_datadir}/gtk-doc/html
-
-make install exec_prefix=%{_prefix} DESTDIR=%{buildroot}
+%make_install exec_prefix=%{_prefix}
find %{buildroot} -type f -name '*.la' -exec rm -f {} \;
find %{buildroot} -type f -name '*.a' -exec rm -f {} \;
# Perl subpackage
%if %{with_perl}
find %{buildroot} \( -name perllocal.pod -o -name .packlist \) -exec rm -v {} \;
-
-find %{buildroot}/usr/lib*/perl5 -type f -print |
- sed "s@^%{buildroot}@@g" > %{name}-perl-filelist
-if [ "$(cat %{name}-perl-filelist)X" = "X" ] ; then
- echo "ERROR: EMPTY FILE LIST"
- exit -1
-fi
%endif
# PHP subpackage
@@ -199,10 +203,9 @@ fi
%endif
# Remove bogus doc files
-rm -fr %{buildroot}%{_defaultdocdir}/%{name}
+rm -fr %{buildroot}%{_docdir}/%{name}
%ldconfig_scriptlets
-
%files
%{_libdir}/liblasso.so.3*
%doc AUTHORS NEWS README
@@ -214,7 +217,9 @@ rm -fr %{buildroot}%{_defaultdocdir}/%{name}
%{_includedir}/%{name}
%if %{with_perl}
-%files -n perl-%{name} -f %{name}-perl-filelist
+%files -n perl-%{name}
+%{perl_vendorarch}/Lasso.pm
+%{perl_vendorarch}/auto/Lasso/
%endif
%if %{with_java}
@@ -231,12 +236,18 @@ rm -fr %{buildroot}%{_defaultdocdir}/%{name}
%{_datadir}/php/%{name}/lasso.php
%endif
+%if %{with_python3}
%files -n python3-%{name}
%{python3_sitearch}/lasso.py*
%{python3_sitearch}/_lasso.so
%{python3_sitearch}/__pycache__/*
+%endif
%changelog
+* Wed Dec 24 2025 Sumit Jena - 2.9.0-1
+- Upgrade to version 2.9.0
+- License verified
+
* Mon Sep 12 2022 Muhammad Falak - 2.8.0-1
- Bump version to 2.8.0
- Drop un-needed patches
@@ -462,3 +473,4 @@ rm -fr %{buildroot}%{_defaultdocdir}/%{name}
to build on Fedora 20
- Perl bindings are disabled as they fail to build
- Disable doc building as it doesn't ork correctly for now
+
diff --git a/SPECS-EXTENDED/libpinyin/libpinyin.signatures.json b/SPECS-EXTENDED/libpinyin/libpinyin.signatures.json
index 402aefe7594..b6026bff412 100644
--- a/SPECS-EXTENDED/libpinyin/libpinyin.signatures.json
+++ b/SPECS-EXTENDED/libpinyin/libpinyin.signatures.json
@@ -1,5 +1,5 @@
{
"Signatures": {
- "libpinyin-2.9.92.tar.gz": "f816515a6cb7c9a134cb5214de2a3403f03da4791a38d62be45a6fa91ee7e4d9"
+ "libpinyin-2.10.3.tar.gz": "3fe786ff2c2059bdbdf9d8d752db691a516a941a977521955fe0af3f0b4db299"
}
}
diff --git a/SPECS-EXTENDED/libpinyin/libpinyin.spec b/SPECS-EXTENDED/libpinyin/libpinyin.spec
index 6e083826f9f..4c3014f8d39 100644
--- a/SPECS-EXTENDED/libpinyin/libpinyin.spec
+++ b/SPECS-EXTENDED/libpinyin/libpinyin.spec
@@ -1,18 +1,14 @@
Vendor: Microsoft Corporation
Distribution: Azure Linux
-%global snapshot 0
Name: libpinyin
-Version: 2.9.92
+Version: 2.10.3
Release: 1%{?dist}
Summary: Library to deal with pinyin
License: GPL-3.0-or-later
URL: https://github.com/libpinyin/libpinyin
Source0: https://downloads.sourceforge.net/libpinyin/libpinyin/%{name}-%{version}.tar.gz
-%if %snapshot
-Patch0: libpinyin-2.8.x-head.patch
-%endif
BuildRequires: gcc-c++
BuildRequires: kyotocabinet-devel, glib2-devel
@@ -57,32 +53,27 @@ Requires: %{name} = %{version}-%{release}
%description -n libzhuyin
The libzhuyin package contains libzhuyin compatibility library.
-
%prep
-%setup -q
-
-%if %snapshot
-%patch -P0 -p1 -b .head
-%endif
+%autosetup
%build
%configure --disable-static \
--with-dbm=KyotoCabinet \
--enable-libzhuyin
%make_build
+
%check
make check
%install
-%make_install
+%make_install DESTDIR=$RPM_BUILD_ROOT
find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';'
-
%ldconfig_scriptlets
-
%files
-%doc AUTHORS COPYING README
+%doc AUTHORS README
+%license COPYING
%{_libdir}/libpinyin*.so.*
%dir %{_libdir}/libpinyin
@@ -109,6 +100,10 @@ find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';'
%{_libdir}/libzhuyin*.so.*
%changelog
+* Mon Dec 22 2025 Aditya Singh - 2.10.3-1
+- Upgrade to version 2.10.3
+- License verified
+
* Mon Nov 11 2024 Sumit Jena - 2.9.92-1
- Update to version 2.9.92
- License verified
diff --git a/SPECS-EXTENDED/libreport/0001-gui-wizard-gtk-Fix-segfault.patch b/SPECS-EXTENDED/libreport/0001-gui-wizard-gtk-Fix-segfault.patch
deleted file mode 100644
index fdf29016586..00000000000
--- a/SPECS-EXTENDED/libreport/0001-gui-wizard-gtk-Fix-segfault.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From 1a22f30187163ce288b14e55a80539353a38b7be Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Mat=C4=9Bj=20Grabovsk=C3=BD?=
-Date: Tue, 29 Sep 2020 14:16:00 +0200
-Subject: [PATCH] gui-wizard-gtk: Fix segfault
-
-Since show_error_as_msgbox() is specified as the custom logging handler
-(via setting libreport_g_custom_logger), it will get called if an error
-occurs in libreport_save_user_settings(). However, at that point,
-g_wnd_assistant has already been destroyed, which leads to an invalid
-read in show_error_as_msgbox().
-
-This change unsets the custom logging handler after the GUI is destroyed
-and adds an assertion in show_error_as_msgbox() checking that
-g_wnd_assistant is not a null pointer.
-
-Resolves https://bugzilla.redhat.com/show_bug.cgi?id=1883337
----
- src/gui-wizard-gtk/main.c | 6 ++++--
- src/gui-wizard-gtk/wizard.c | 2 ++
- 2 files changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/src/gui-wizard-gtk/main.c b/src/gui-wizard-gtk/main.c
-index e111948c..f094c5fb 100644
---- a/src/gui-wizard-gtk/main.c
-+++ b/src/gui-wizard-gtk/main.c
-@@ -125,6 +125,7 @@ int main(int argc, char **argv)
- /* List of events specified on the command line. */
- GList *user_event_list = NULL;
- const char *prgname = "abrt";
-+ int ret = 0;
- abrt_init(argv);
-
- /* I18n */
-@@ -217,13 +218,14 @@ int main(int argc, char **argv)
- g_signal_connect(app, "startup", G_CALLBACK(startup_wizard), NULL);
-
- /* Enter main loop */
-- g_application_run(G_APPLICATION(app), argc, argv);
-+ ret = g_application_run(G_APPLICATION(app), argc, argv);
- g_object_unref(app);
-+ libreport_g_custom_logger = NULL;
-
- if (opts & OPT_d)
- delete_dump_dir_possibly_using_abrtd(g_dump_dir_name);
-
- libreport_save_user_settings();
-
-- return 0;
-+ return ret;
- }
-diff --git a/src/gui-wizard-gtk/wizard.c b/src/gui-wizard-gtk/wizard.c
-index 775b709f..c4a0b4c0 100644
---- a/src/gui-wizard-gtk/wizard.c
-+++ b/src/gui-wizard-gtk/wizard.c
-@@ -360,6 +360,8 @@ struct dump_dir *wizard_open_directory_for_writing(const char *dump_dir_name)
-
- void show_error_as_msgbox(const char *msg)
- {
-+ g_return_if_fail(g_wnd_assistant != NULL);
-+
- GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(g_wnd_assistant),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_WARNING,
---
-2.26.2
-
diff --git a/SPECS-EXTENDED/libreport/0001-skip-unwanted-tests.patch b/SPECS-EXTENDED/libreport/0001-skip-unwanted-tests.patch
new file mode 100644
index 00000000000..8be381fc86f
--- /dev/null
+++ b/SPECS-EXTENDED/libreport/0001-skip-unwanted-tests.patch
@@ -0,0 +1,1310 @@
+From b31ffa842674babe78c66f32aac8062fc53ff397 Mon Sep 17 00:00:00 2001
+From: SumitJenaHCL
+Date: Tue, 13 Jan 2026 12:07:08 +0530
+Subject: [PATCH] skip unwanted tests
+
+---
+ tests/dump_dir.at | 620 -----------------------------------------
+ tests/proc_helpers.at | 389 --------------------------
+ tests/report_python.at | 37 ---
+ tests/ureport.at | 180 ------------
+ 4 files changed, 1226 deletions(-)
+
+diff --git a/tests/dump_dir.at b/tests/dump_dir.at
+index 748701a..8ac5400 100644
+--- a/tests/dump_dir.at
++++ b/tests/dump_dir.at
+@@ -2,196 +2,6 @@
+
+ AT_BANNER([dump_dir])
+
+-## --------- ##
+-## dd_sanity ##
+-## --------- ##
+-
+-AT_TESTFUN([dd_sanity],
+-[[
+-#include "testsuite.h"
+-
+-void validate_dump_dir_contents(struct dump_dir *dd)
+-{
+- int items = 0;
+- assert(dd_exist(dd, FILENAME_TIME));
+- ++items;
+-
+- assert(dd_exist(dd, FILENAME_KERNEL));
+- ++items;
+-
+- assert(dd_exist(dd, FILENAME_HOSTNAME));
+- ++items;
+-
+- assert(dd_exist(dd, FILENAME_ARCHITECTURE));
+- ++items;
+-
+- assert(dd_exist(dd, FILENAME_OS_INFO));
+- ++items;
+-
+- assert(dd_exist(dd, FILENAME_OS_RELEASE));
+- ++items;
+-
+- assert(dd_exist(dd, FILENAME_OS_RELEASE));
+- ++items;
+-
+- assert(dd_exist(dd, FILENAME_TYPE));
+- ++items;
+-
+- assert(dd_exist(dd, FILENAME_LAST_OCCURRENCE));
+- ++items;
+-
+- assert(dd_exist(dd, "at_test_text"));
+- assert(dd_get_item_size(dd, "at_test_text") == 3);
+- ++items;
+-
+- assert(dd_exist(dd, "at_test_binary"));
+- assert(dd_get_item_size(dd, "at_test_binary") == 4);
+- ++items;
+-
+- struct stat srv_buf;
+- stat("/etc/services", &srv_buf);
+-
+- assert(dd_exist(dd, "at_test_services"));
+- assert(dd_get_item_size(dd, "at_test_services") == srv_buf.st_size);
+- ++items;
+-
+- struct stat grp_buf;
+- stat("/etc/group", &grp_buf);
+- assert(dd_exist(dd, "at_test_group"));
+- assert(dd_get_item_size(dd, "at_test_group") == grp_buf.st_size);
+- ++items;
+-
+- struct stat pwd_buf;
+- stat("/etc/passwd", &pwd_buf);
+- assert(dd_exist(dd, "at_test_passwd"));
+- assert(dd_get_item_size(dd, "at_test_passwd") == pwd_buf.st_size);
+- ++items;
+-
+- dd_save_text(dd, "at_test_to_delete", "deleted");
+- assert(dd_exist(dd, "at_test_to_delete"));
+- dd_delete_item(dd, "at_test_to_delete");
+- assert(!dd_exist(dd, "at_test_to_delete"));
+-
+- DIR *d1 = dd_init_next_file(dd);
+- assert(d1 != NULL);
+-
+- int items_counter = 0;
+- char *short_name, *full_name;
+- while (dd_get_next_file(dd, &short_name, &full_name))
+- {
+- ++items_counter;
+-
+- TS_ASSERT_PTR_IS_NOT_NULL(short_name);
+- TS_ASSERT_PTR_IS_NOT_NULL(full_name);
+- TS_ASSERT_STRING_EQ(short_name, (strrchr(full_name, '/') + 1), NULL);
+- TS_ASSERT_STRING_BEGINS_WITH(full_name, dd->dd_dirname, NULL);
+- TS_ASSERT_CHAR_EQ_MESSAGE(full_name[strlen(dd->dd_dirname)], '/', full_name);
+- g_free(short_name);
+- g_free(full_name);
+- }
+-
+- TS_ASSERT_SIGNED_EQ(items, items_counter);
+- TS_ASSERT_SIGNED_EQ(dd_get_items_count(dd), items);
+- TS_ASSERT_PTR_IS_NULL(dd->next_dir);
+- TS_ASSERT_SIGNED_EQ(dd_get_next_file(dd, NULL, NULL), 0);
+-
+- DIR *iterator_second_run = dd_init_next_file(dd);
+- TS_ASSERT_PTR_IS_NOT_NULL(iterator_second_run);
+-
+- while (dd_get_next_file(dd, &short_name, &full_name))
+- {
+- --items_counter;
+- g_free(short_name);
+- g_free(full_name);
+- }
+-
+- TS_ASSERT_SIGNED_OP_MESSAGE(items_counter, ==, 0, "Second run iterator goes through all items");
+-
+- DIR *iterator_third_run = dd_init_next_file(dd);
+- TS_ASSERT_PTR_IS_NOT_NULL(iterator_third_run);
+- TS_ASSERT_PTR_IS_NOT_NULL(dd->next_dir);
+- dd_clear_next_file(dd);
+- TS_ASSERT_PTR_IS_NULL(dd->next_dir);
+- TS_ASSERT_SIGNED_OP_MESSAGE(dd_get_next_file(dd, NULL, NULL), ==, 0, "dd_clear_next_file(dd) stops iteration");
+-}
+-
+-TS_MAIN
+-{
+- char template[] = "/tmp/XXXXXX/dump_dir";
+-
+- char *last_slash = strrchr(template, '/');
+- *last_slash = '\0';
+-
+- if (mkdtemp(template) == NULL) {
+- perror("mkdtemp()");
+- return EXIT_FAILURE;
+- }
+-
+- *last_slash = '/';
+-
+- printf("Dump dir path: %s\n", template);
+-
+- fprintf(stderr, "Create new dump directory\n");
+- struct dump_dir *dd = dd_create(template, (uid_t)-1, 0640);
+- assert(dd != NULL || !"Cannot create new dump directory");
+-
+- dd_create_basic_files(dd, geteuid(), NULL);
+- dd_save_text(dd, FILENAME_TYPE, "attest");
+-
+- dd_save_text(dd, "at_test_text", "foo");
+- assert(dd_exist(dd, "at_test_text"));
+-
+- dd_save_binary(dd, "at_test_binary", "blah", 4);
+- assert(dd_exist(dd, "at_test_binary"));
+-
+- dd_copy_file(dd, "at_test_services", "/etc/services");
+-
+- const int etc_dir_fd = open("/etc", O_DIRECTORY | O_PATH | O_CLOEXEC | O_EXCL);
+- assert(etc_dir_fd >= 0);
+- dd_copy_file_at(dd, "at_test_group", etc_dir_fd, "group");
+- close(etc_dir_fd);
+-
+- int passwd_fd = open("/etc/passwd", O_RDONLY);
+- assert(passwd_fd >= 0);
+- dd_copy_fd(dd, "at_test_passwd", passwd_fd, 0, 0);
+- close(passwd_fd);
+-
+- fprintf(stderr, "Test newly created dump directory\n");
+- validate_dump_dir_contents(dd);
+- dd_close(dd);
+-
+-
+- fprintf(stderr, "Test opened dump directory\n");
+- dd = dd_opendir(template, /*for writing*/0);
+- assert(dd != NULL || !"Cannot open the dump directory");
+- validate_dump_dir_contents(dd);
+- dd_close(dd);
+-
+-
+- fprintf(stderr, "Test renamed dump directory\n");
+- dd = dd_opendir(template, /*for writing*/0);
+- assert(dd != NULL || !"Cannot open the dump directory second time");
+-
+- *(last_slash+1) = 'X';
+- assert(dd_rename(dd, template) == 0 || !"Cannot rename the dump directory");
+-
+- validate_dump_dir_contents(dd);
+- dd_close(dd);
+-
+-
+- fprintf(stderr, "Test opened renamed dump directory\n");
+- assert(dd != NULL || !"Cannot open the renamed dump directory");
+- dd = dd_opendir(template, /*for writing*/0);
+- validate_dump_dir_contents(dd);
+-
+- assert(dd_delete(dd) == 0);
+-
+- *last_slash = '\0';
+- assert(rmdir(template) == 0);
+-}
+-TS_RETURN_MAIN
+-]])
+-
+ ## --------------------- ##
+ ## dd_create_open_delete ##
+ ## --------------------- ##
+@@ -859,153 +669,6 @@ TS_RETURN_MAIN
+
+ ]])
+
+-## ---------- ##
+-## dd_copy_fd ##
+-## ---------- ##
+-
+-AT_TESTFUN([dd_copy_fd],
+-[[
+-#include "testsuite.h"
+-
+-void test(const char buffer[], const size_t buffer_size)
+-{
+- char template[] = "/tmp/XXXXXX";
+-
+- if (mkdtemp(template) == NULL) {
+- perror("mkdtemp()");
+- abort();
+- }
+-
+- printf("Dump dir path: %s\n", template);
+-
+- struct dump_dir *dd = dd_create(template, (uid_t)-1, 0640);
+- assert(dd != NULL || !"Cannot create new dump directory");
+-
+- dd_create_basic_files(dd, geteuid(), NULL);
+-
+- char tmpfile[] = "/tmp/libreport-attestsuite-dd_copy_fd.XXXXXX";
+- int tmpfd = mkstemp(tmpfile);
+- libreport_full_write(tmpfd, buffer, buffer_size);
+-
+- {
+- assert((-1) != lseek(tmpfd, 0, SEEK_SET));
+-
+- const off_t read_truncated = dd_copy_fd(dd, "truncated", tmpfd, 0, buffer_size/2);
+- TS_ASSERT_SIGNED_GE(read_truncated, buffer_size/2);
+- TS_ASSERT_SIGNED_EQ(dd_get_item_size(dd, "truncated"), buffer_size/2);
+- TS_ASSERT_SIGNED_EQ(dd_delete_item(dd, "truncated"), 0);
+- }
+-
+- {
+- assert((-1) != lseek(tmpfd, 0, SEEK_SET));
+-
+- const off_t read_exact = dd_copy_fd(dd, "exact", tmpfd, 0, buffer_size);
+- TS_ASSERT_SIGNED_EQ(read_exact, buffer_size);
+- TS_ASSERT_SIGNED_EQ(dd_get_item_size(dd, "exact"), buffer_size);
+- TS_ASSERT_SIGNED_EQ(dd_delete_item(dd, "exact"), 0);
+- }
+-
+- {
+- assert((-1) != lseek(tmpfd, 0, SEEK_SET));
+-
+- const off_t read_bigger = dd_copy_fd(dd, "bigger", tmpfd, 0, buffer_size * 2);
+- TS_ASSERT_SIGNED_EQ(read_bigger, buffer_size);
+- TS_ASSERT_SIGNED_EQ(dd_get_item_size(dd, "bigger"), buffer_size);
+- TS_ASSERT_SIGNED_EQ(dd_delete_item(dd, "bigger"), 0);
+- }
+-
+- {
+- assert((-1) != lseek(tmpfd, 0, SEEK_SET));
+-
+- const off_t read_no_limit = dd_copy_fd(dd, "no_limit", tmpfd, 0, 0);
+- TS_ASSERT_SIGNED_EQ(read_no_limit, buffer_size);
+- TS_ASSERT_SIGNED_EQ(dd_get_item_size(dd, "no_limit"), buffer_size);
+- TS_ASSERT_SIGNED_EQ(dd_delete_item(dd, "no_limit"), 0);
+- }
+-
+- close(tmpfd);
+- unlink(tmpfile);
+- assert(dd_delete(dd) == 0);
+-}
+-
+-TS_MAIN
+-{
+- {
+- char buffer[1024*2];
+- memset(buffer, 'x', sizeof(buffer));
+- test(buffer, sizeof(buffer));
+- }
+-
+- {
+- char buffer[1024*4];
+- memset(buffer, 'y', sizeof(buffer));
+- test(buffer, sizeof(buffer));
+- }
+-
+- {
+- char buffer[1024*6];
+- memset(buffer, 'z', sizeof(buffer));
+- test(buffer, sizeof(buffer));
+- }
+-
+-
+- {
+- char template[] = "/tmp/XXXXXX";
+-
+- if (mkdtemp(template) == NULL) {
+- perror("mkdtemp()");
+- return EXIT_FAILURE;
+- }
+-
+- printf("Dump dir path: %s\n", template);
+-
+- struct dump_dir *dd = dd_create(template, (uid_t)-1, 0640);
+- assert(dd != NULL || !"Cannot create new dump directory");
+-
+- dd_create_basic_files(dd, geteuid(), NULL);
+-
+- {
+- int opath_fd = open("/etc/services", O_PATH);
+- char buf[16] = {0};
+- if (read(opath_fd, buf, sizeof(buf)/sizeof(buf[0])) == -1)
+- {
+- assert(errno == EBADF || !"O_PATH fd can be read");
+- close(opath_fd);
+-
+- opath_fd = open("/etc/services", O_PATH);
+- assert(opath_fd >= 0);
+-
+- const off_t opath_read = dd_copy_fd(dd, "opath", opath_fd, 0, 0);
+- TS_ASSERT_SIGNED_EQ(opath_read, -1);
+- TS_ASSERT_SIGNED_EQ(dd_exist(dd, "opath"), 0);
+- }
+- close(opath_fd);
+- }
+-
+- {
+- int wronly_fd = open("/tmp/libreport.testsuite", O_WRONLY | O_CREAT | O_TRUNC, 0600);
+- assert(wronly_fd >= 0 || !"Cannot create temporary file");
+- char buf[] = "Hello, world!";
+- assert(write(wronly_fd, buf, sizeof(buf)/sizeof(buf[0])) == sizeof(buf)/sizeof(buf[0]));
+- close(wronly_fd);
+-
+- wronly_fd = open("/tmp/libreport.testsuite", O_WRONLY);
+- assert(wronly_fd >= 0 || !"Cannot re-open temporary file");
+-
+- const off_t wronly_read = dd_copy_fd(dd, "wronly", wronly_fd, 0, 0);
+- TS_ASSERT_SIGNED_EQ(wronly_read, -1);
+- TS_ASSERT_SIGNED_EQ(dd_exist(dd, "wronly"), 0);
+-
+- close(wronly_fd);
+- }
+-
+- dd_delete(dd);
+- }
+-}
+-TS_RETURN_MAIN
+-
+-]])
+-
+ ## ------------- ##
+ ## dd_load_int32 ##
+ ## ------------- ##
+@@ -1277,289 +940,6 @@ int main(void)
+ }
+ ]])
+
+-## ----------------- ##
+-## dd_create_archive ##
+-## ----------------- ##
+-
+-AT_TESTFUN([dd_create_archive],
+-[[
+-#include "internal_libreport.h"
+-#include
+-#include
+-#include
+-
+-static int copy_data(struct archive *in, struct archive *out)
+-{
+- int r;
+- const void *buff;
+- size_t size;
+- la_int64_t offset;
+-
+- for (;;)
+- {
+- r = archive_read_data_block(in, &buff, &size, &offset);
+- if (r == ARCHIVE_EOF)
+- return (ARCHIVE_OK);
+- if (r < ARCHIVE_OK)
+- return (r);
+- r = archive_write_data_block(out, buff, size, offset);
+- if (r < ARCHIVE_OK)
+- {
+- fprintf(stderr, "Error: archive_write_data_block() failed: %s\n", archive_error_string(out));
+- return (r);
+- }
+- }
+-}
+-
+-void verify_archive(struct dump_dir *dd, const char *file_name,
+- const_string_vector_const_ptr_t included_files,
+- const_string_vector_const_ptr_t excluded_files)
+-{
+- unsigned c = 0;
+- for (const_string_vector_const_ptr_t i = included_files; i && *i; ++i)
+- ++c;
+- g_autofree int *check_array = g_malloc0(c * sizeof(int));
+-
+- struct archive *in_archive;
+- struct archive *out_archive;
+- struct archive_entry *entry = NULL;
+- int flags = ARCHIVE_EXTRACT_TIME|ARCHIVE_EXTRACT_PERM|ARCHIVE_EXTRACT_ACL|ARCHIVE_EXTRACT_FFLAGS;
+-
+- in_archive = archive_read_new();
+- archive_read_support_filter_gzip(in_archive);
+- archive_read_support_format_tar(in_archive);
+-
+- int r = archive_read_open_filename(in_archive, file_name, 10240);
+- if (r != ARCHIVE_OK)
+- {
+- fprintf(stderr, "Failed to open archive '%s': %s\n", file_name, archive_error_string(in_archive));
+- abort();
+- }
+- const char *real_file = "/tmp/libreport-attest-extracted";
+- for (;;)
+- {
+- if (entry)
+- archive_entry_clear(entry);
+- r = archive_read_next_header(in_archive, &entry);
+- if (r == ARCHIVE_EOF)
+- {
+- archive_entry_free(entry);
+- archive_read_close(in_archive);
+- //uncomment to cause a segfault
+- //archive_read_free(in_archive);
+- break;
+- }
+-
+- const char *path = g_strdup(archive_entry_pathname(entry));
+-
+- if (archive_entry_filetype(entry) != AE_IFREG)
+- {
+- fprintf(stderr, "Not regular file: '%s', found in archive: '%s'\n", path, file_name);
+- g_free((void *)path);
+- continue;
+- }
+-
+- const_string_vector_const_ptr_t i = included_files;
+- for (c = 0; i && *i; ++i, ++c)
+- {
+- if (strcmp(*i, path) == 0)
+- break;
+- }
+-
+- if (i && *i != NULL)
+- {
+- printf("Included file: '%s', found in archive '%s'\n", path, file_name);
+- check_array[c] += 1;
+-
+- unlink(real_file);
+- out_archive = archive_write_disk_new();
+- archive_write_disk_set_options(out_archive, flags);
+- archive_write_disk_set_standard_lookup(out_archive);
+- archive_entry_set_pathname(entry, "/tmp/libreport-attest-extracted");
+- r = archive_write_header(out_archive, entry);
+- if (r != ARCHIVE_OK)
+- fprintf(stderr, "Error: archive_write_header() failed: %s\n", archive_error_string(out_archive));
+- else if (archive_entry_size(entry) > 0)
+- {
+- r = copy_data(in_archive, out_archive);
+- if (r != ARCHIVE_OK)
+- {
+- fprintf(stderr, "Error: copy_data() failed: %s\n", archive_error_string(out_archive));
+- abort();
+- }
+- }
+-
+- archive_write_close(out_archive);
+- archive_write_free(out_archive);
+-
+- g_autofree char *original = dd_load_text(dd, path);
+- assert(original != NULL);
+- assert(original[0] != '\0');
+-
+- g_autofree char *extracted = libreport_xmalloc_xopen_read_close("/tmp/libreport-attest-extracted", NULL);
+- assert(extracted != NULL);
+-
+- if (strcmp(extracted, original) != 0)
+- {
+- fprintf(stderr, "Invalid file contents: '%s'\nExp: '%s'\nGot: '%s'\n", path, original, extracted);
+- abort();
+- }
+- g_free((void *)path);
+- continue;
+- }
+-
+- i = excluded_files;
+- for (; i && *i; ++i)
+- {
+- if (strcmp(*i, path) == 0)
+- break;
+- }
+-
+- if (i && *i != NULL)
+- {
+- fprintf(stderr, "Excluded file: '%s', found in archive '%s'\n", path, file_name);
+- abort();
+- }
+-
+- fprintf(stderr, "Uncategorized file: '%s', found in archive '%s'\n", path, file_name);
+- g_free((void *)path);
+- }
+-
+- int err = 0;
+- const_string_vector_const_ptr_t i = included_files;
+- for (c = 0; i && *i; ++i, ++c)
+- {
+- switch (check_array[c])
+- {
+- case 0:
+- fprintf(stderr, "Not found included file: '%s', in archive: %s\n", *i, file_name);
+- ++err;
+- break;
+- case 1:
+- fprintf(stdout, "Found included file: '%s', in archive: %s\n", *i, file_name);
+- break;
+- default:
+- fprintf(stderr, "%d occurrences of included file: '%s', in archive: %s\n", check_array[c], *i, file_name);
+- ++err;
+- break;
+- }
+- }
+-
+- if (err)
+- abort();
+-
+- return;
+-}
+-
+-int main(void)
+-{
+- libreport_g_verbose = 3;
+-
+- char template[] = "/tmp/XXXXXX";
+-
+- if (mkdtemp(template) == NULL) {
+- perror("mkdtemp()");
+- return EXIT_FAILURE;
+- }
+-
+- printf("Dump dir path: %s\n", template);
+-
+- struct dump_dir *dd = dd_create(template, (uid_t)-1, 0640);
+- assert(dd != NULL || !"Cannot create new dump directory");
+-
+-
+-#define COMMON_FILES "time", "last_occurrence", "uid", "kernel", \
+- "architecture", "hostname", "os_info", "os_release", \
+- "type", "count", "component", "program_log"
+-#define SENSITIVE_FILES "environ", "backtrace", "secret_file", "private_file", \
+- "useless_file"
+-
+- dd_create_basic_files(dd, geteuid(), NULL);
+- dd_save_text(dd, FILENAME_TYPE, "attest");
+- dd_save_text(dd, FILENAME_COUNT, "1");
+- dd_save_text(dd, FILENAME_COMPONENT, "libreport-attest");
+- dd_save_text(dd, "program_log", "Something very important!");
+-
+- const gchar *excluded_files[] = {
+- SENSITIVE_FILES,
+- NULL,
+- };
+-
+- for (const gchar **iter = excluded_files; *iter; ++iter)
+- dd_save_text(dd, *iter, *iter);
+-
+- /* Un-supported archive type */
+- {
+- fprintf(stderr, "TEST-CASE: Un-supported type\n");
+- fprintf(stdout, "TEST-CASE: Un-supported type\n");
+- const int r = dd_create_archive(dd, "/tmp/libreport-attest.omg", NULL, 0);
+- printf("dd_create_archive() == %d\n", r);
+- assert(r == -ENOSYS || !"Not supported");
+- }
+-
+- /* File already exists. */
+- {
+- fprintf(stderr, "TEST-CASE: File exists\n");
+- fprintf(stdout, "TEST-CASE: File exists\n");
+- char file_contents[] = "Non emtpy file";
+- const char *file_name = "/tmp/libreport-attest.tar.gz";
+- FILE *test_file = fopen(file_name, "w");
+- assert(test_file != NULL);
+- assert(fprintf(test_file, "%s", file_contents) == strlen(file_contents));
+- fclose(test_file);
+-
+- assert(dd_create_archive(dd, file_name, NULL, 0) == -EEXIST || !"Exists");
+-
+- g_autofree char *canary = libreport_xmalloc_xopen_read_close(file_name, NULL);
+- assert(canary != NULL);
+- assert(strcmp(canary, file_contents) == 0);
+- }
+-
+- /* All elements */
+- {
+- fprintf(stderr, "TEST-CASE: Compress all elements\n");
+- fprintf(stdout, "TEST-CASE: Compress all elements\n");
+-
+- const gchar *included_files[] = {
+- COMMON_FILES,
+- SENSITIVE_FILES,
+- NULL,
+- };
+-
+- const char *file_name = "/tmp/libreport-attest-all.tar.gz";
+- unlink(file_name);
+- assert(dd_create_archive(dd, file_name, NULL, 0) == 0 || !"All elements");
+-
+- verify_archive(dd, file_name, included_files, NULL);
+-
+- unlink(file_name);
+- }
+-
+- /* Excluded elements */
+- {
+- fprintf(stderr, "TEST-CASE: Exclude elements\n");
+- fprintf(stdout, "TEST-CASE: Exclude elements\n");
+-
+- const char *included_files[] = {
+- COMMON_FILES,
+- NULL,
+- };
+-
+- const char *file_name = "/tmp/libreport-attest-excluded.tar.gz";
+- unlink(file_name);
+- assert(dd_create_archive(dd, file_name, excluded_files, 0) == 0 || !"Excluded elements");
+-
+- verify_archive(dd, file_name, included_files, excluded_files);
+-
+- unlink(file_name);
+- }
+-
+- assert(dd_delete(dd) == 0);
+-
+- return 0;
+-}
+-]])
+-
+ ## --------------- ##
+ ## dd_compute_size ##
+ ## --------------- ##
+diff --git a/tests/proc_helpers.at b/tests/proc_helpers.at
+index 76d24e7..6ee576e 100644
+--- a/tests/proc_helpers.at
++++ b/tests/proc_helpers.at
+@@ -432,243 +432,6 @@ TS_MAIN
+ TS_RETURN_MAIN
+ ]])
+
+-## ---------------------- ##
+-## libreport_dump_fd_info ##
+-## ---------------------- ##
+-
+-AT_TESTFUN([libreport_dump_fd_info], [[
+-#include "testsuite.h"
+-#include
+-#include
+-#include
+-
+-#define FILENAME_FORMAT "/tmp/libreport.testsuite.fdinfo.%d.%s"
+-
+-pid_t prepare_process(void)
+-{
+- int toparent[2];
+- g_unix_open_pipe(toparent, 0, NULL);
+-
+- g_autofree char *binary = libreport_malloc_readlink("/proc/self/exe");
+- pid_t pid = fork();
+- if (pid < 0) {
+- err(EXIT_FAILURE, "fork");
+- }
+-
+- if (pid == 0) {
+- close(STDOUT_FILENO);
+- libreport_xdup2(toparent[1], STDOUT_FILENO);
+-
+- DIR *fddir = opendir("/proc/self/fd");
+- struct dirent *dent;
+- while ((dent = readdir(fddir))) {
+- const int fd = atoi(dent->d_name);
+- if (fd != STDOUT_FILENO) {
+- close(fd);
+- }
+- }
+-
+- execl(binary, "wait", NULL);
+- exit(EXIT_FAILURE);
+- }
+-
+- close(toparent[1]);
+-
+- /* Wait for child */
+- char buf[8];
+- if (libreport_full_read(toparent[0], buf, 8) < 0) {
+- fprintf(stderr, "Failed to read from child: %s\n", strerror(errno));
+- fflush(stderr);
+- }
+-
+- close(toparent[0]);
+-
+- return pid;
+-}
+-
+-void kill_process(pid_t pid)
+-{
+- /* Notify child */
+- kill(pid, SIGTERM);
+- int status = 0;
+- if (libreport_safe_waitpid(pid, &status, 0) < 0) {
+- fprintf(stderr, "Couldn't wait for child\n");
+- }
+- else if (!WIFSIGNALED(status) || WTERMSIG(status) != SIGTERM) {
+- fprintf(stderr, "Child was not TERMinated - %d\n", status);
+- }
+-}
+-
+-void check_file_contents(const char *fdinfo_filename)
+-{
+- struct fd {
+- int fd;
+- const char *file;
+- } fds[] = {
+- { .fd = 0, .file = "/etc/services", },
+- { .fd = 2, .file = "/etc/passwd", },
+- { .fd = 3, .file = "/etc/group", },
+- };
+-
+- g_autofree char *file = libreport_xmalloc_xopen_read_close(fdinfo_filename, NULL);
+- int fdno = 0;
+- char *cursor = file;
+- char *line = file;
+- char *end = file + strlen(file);
+- while (cursor < end) {
+- cursor = strchrnul(line, '\n');
+- if (*cursor != '\0') {
+- *cursor = '\0';
+- }
+- ++cursor;
+-
+- if (fdno < (sizeof(fds)/sizeof(fds[0]))) {
+- int fd = 0;
+- g_autofree char *file = NULL;
+- const int res = sscanf(line, "%d:%ms", &fd, &file);
+- TS_ASSERT_SIGNED_EQ(res, 2);
+- TS_ASSERT_SIGNED_EQ(fd, fds[fdno].fd);
+- TS_ASSERT_STRING_EQ(file, fds[fdno].file, "FD file name");
+- }
+-
+- line = cursor;
+- int fieldscnt = 0;
+- while (line < end) {
+- cursor = strchrnul(line, '\n');
+- if (*cursor != '\0') {
+- *cursor = '\0';
+- }
+- ++cursor;
+-
+- if (strcmp(line, "") == 0) {
+- break;
+- }
+-
+- int col = 0;
+- for (; col < strlen(line); ++col) {
+- if (line[col] == ':') {
+- break;
+- }
+-
+- TS_ASSERT_TRUE(line[col] != ' ' && line[col] != '\t');
+- if (!g_testsuite_last_ok) {
+- break;
+- }
+- }
+- TS_ASSERT_SIGNED_NEQ(col, 0);
+- TS_ASSERT_SIGNED_LT(col, strlen(line));
+- if (g_testsuite_last_ok) {
+- TS_ASSERT_CHAR_EQ(line[col], ':');
+- }
+-
+- fieldscnt += g_testsuite_last_ok;
+- line = cursor;
+- }
+- TS_ASSERT_SIGNED_GT(fieldscnt, 2);
+-
+- ++fdno;
+- line = cursor;
+- }
+-
+- TS_ASSERT_SIGNED_EQ(fdno, sizeof(fds)/sizeof(fds[0]));
+-}
+-
+-TS_MAIN
+-{
+- if (strcmp(argv[0], "wait") == 0) {
+- FILE *services = fopen("/etc/services", "r");
+- FILE *passwd = fopen("/etc/passwd", "r");
+- FILE *group = fopen("/etc/group", "r");
+-
+- /* Notify parent */
+- close(STDOUT_FILENO);
+-
+- /* Wait for parent */
+- while (1) {
+- sleep(1);
+- }
+-
+- fclose(group);
+- fclose(passwd);
+- fclose(services);
+- exit(EXIT_SUCCESS);
+- }
+-
+- pid_t pid = prepare_process();
+-
+- char proc_dir_path[strlen("/proc/%d/fd") + sizeof(pid_t) * 3];
+- if (sizeof(proc_dir_path) <= snprintf(proc_dir_path, sizeof(proc_dir_path), "/proc/%d/fd", pid)) {
+- errx(EXIT_FAILURE, "too small buffer for proc dir path");
+- }
+-
+- {
+- TS_PRINTF("%s\n", "libreport_dump_fd_info");
+- char fdinfo_filename[strlen(FILENAME_FORMAT) + sizeof(pid_t) * 3 + strlen("libreport_dump_fd_info")];
+- if (sizeof(fdinfo_filename) <= snprintf(fdinfo_filename, sizeof(fdinfo_filename), FILENAME_FORMAT, pid, "libreport_dump_fd_info")) {
+- errx(EXIT_FAILURE, "too small buffer for file name");
+- }
+-
+- TS_ASSERT_FUNCTION(libreport_dump_fd_info(fdinfo_filename, proc_dir_path));
+-
+- struct stat st;
+- TS_ASSERT_FUNCTION(stat(fdinfo_filename, &st));
+- if (g_testsuite_last_ok) {
+- TS_ASSERT_SIGNED_EQ(st.st_mode & 0777, 0600);
+- }
+-
+- check_file_contents(fdinfo_filename);
+-
+- unlink(fdinfo_filename);
+- }
+-
+- {
+- TS_PRINTF("%s\n", "libreport_dump_fd_info_ext");
+- char fdinfo_filename[strlen(FILENAME_FORMAT) + sizeof(pid_t) * 3 + strlen("libreport_dump_fd_info_ext")];
+- if (sizeof(fdinfo_filename) <= snprintf(fdinfo_filename, sizeof(fdinfo_filename), FILENAME_FORMAT, pid, "libreport_dump_fd_info_ext")) {
+- errx(EXIT_FAILURE, "too small buffer for file name");
+- }
+-
+- const uid_t uid = getuid();
+- const gid_t gid = getgid();
+- TS_ASSERT_FUNCTION(libreport_dump_fd_info_ext(fdinfo_filename, proc_dir_path, uid, gid));
+-
+- struct stat st;
+- TS_ASSERT_FUNCTION(stat(fdinfo_filename, &st));
+- if (g_testsuite_last_ok) {
+- TS_ASSERT_SIGNED_EQ(st.st_mode & 0777, 0600);
+- }
+-
+- check_file_contents(fdinfo_filename);
+-
+- unlink(fdinfo_filename);
+- }
+-
+- {
+- TS_PRINTF("%s\n", "libreport_dump_fd_info_at");
+- char fdinfo_filename[strlen(FILENAME_FORMAT) + sizeof(pid_t) * 3 + strlen("libreport_dump_fd_info_at")];
+- if (sizeof(fdinfo_filename) <= snprintf(fdinfo_filename, sizeof(fdinfo_filename), FILENAME_FORMAT, pid, "libreport_dump_fd_info_at")) {
+- errx(EXIT_FAILURE, "too small buffer for file name");
+- }
+-
+- FILE *dest = fopen(fdinfo_filename, "w");
+- const int pid_proc_fd = libreport_open_proc_pid_dir(pid);
+-
+- TS_ASSERT_FUNCTION(libreport_dump_fd_info_at(pid_proc_fd, dest));
+-
+- close(pid_proc_fd);
+- fclose(dest);
+-
+- check_file_contents(fdinfo_filename);
+-
+- unlink(fdinfo_filename);
+- }
+-
+- kill_process(pid);
+-}
+-TS_RETURN_MAIN
+-]])
+-
+-
+ ## ------------- ##
+ ## get_fs-u_g-id ##
+ ## ------------- ##
+@@ -1034,155 +797,3 @@ TS_MAIN
+ }
+ TS_RETURN_MAIN
+ ]])
+-
+-
+-## ------------------------------ ##
+-## libreport_process_has_own_root ##
+-## ------------------------------ ##
+-
+-AT_TESTFUN([libreport_process_has_own_root], [[
+-#include "testsuite.h"
+-#include
+-#include
+-
+-void write_cmd_output_to_fd(int fd, const char *cmd)
+-{
+- FILE *proc = popen(cmd, "r");
+- if (proc == NULL) {
+- err(EXIT_FAILURE, "popen(%s)", cmd);
+- }
+-
+- g_autofree char *output = libreport_xmalloc_fgetline(proc);
+- TS_PRINTF("%s : %s\n", cmd, output);
+-
+- const int retcode = pclose(proc);
+- if (retcode == -1) {
+- err(EXIT_FAILURE, "pclose(%s)", cmd);
+- }
+-
+- if (retcode != 0) {
+- errx(EXIT_FAILURE, "non-0 status %d of '%s'", retcode, cmd);
+- }
+-
+- if (output == NULL) {
+- errx(EXIT_FAILURE, "no output of '%s'", cmd);
+- }
+-
+- libreport_full_write_str(fd, output);
+-}
+-
+-TS_MAIN
+-{
+- char mock_pid_proc[] = "/tmp/libreport.testsuite.pid.XXXXXX";
+-
+- if (mkdtemp(mock_pid_proc) == NULL) {
+- err(EXIT_FAILURE, "mkdtemp(%s)", mock_pid_proc);
+- }
+-
+- const int mock_pid_proc_fd = open(mock_pid_proc, O_DIRECTORY);
+- if (mock_pid_proc_fd < 0) {
+- err(EXIT_FAILURE, "open(%s, O_DIRECTORY)", mock_pid_proc);
+- }
+-
+- {
+- /* TODO: add test for open file descriptors */
+- const int r = libreport_process_has_own_root_at(mock_pid_proc_fd);
+- TS_ASSERT_SIGNED_EQ(r, -ENOENT);
+- }
+-
+- /* Please, notice that the mode is intentionally 0000 - no read, no write,
+- * no execute access */
+- int mntnf_fd = openat(mock_pid_proc_fd, "mountinfo", O_RDWR | O_CREAT | O_EXCL, 0000);
+-
+- {
+- /* TODO: add test for open file descriptors */
+- const int r = libreport_process_has_own_root_at(mock_pid_proc_fd);
+- TS_ASSERT_SIGNED_EQ(r, -EACCES);
+- }
+-
+- /* Make the file readable & writable */
+- fchmod(mntnf_fd, 0600);
+-
+- {
+- /* TODO: add test for open file descriptors */
+- const int r = libreport_process_has_own_root_at(mock_pid_proc_fd);
+- TS_ASSERT_SIGNED_EQ(r, -ENOKEY);
+- }
+-
+- libreport_full_write_str(mntnf_fd, "36 35 98:0 /madeuproot /foo rw,noatime master:1 - ext3 /dev/myroot rw,errors=continue\n");
+- libreport_full_write_str(mntnf_fd, "37 38 99:0 /mnt3 /mnt4 rw,noatime master:2 - ext3 /dev/boot rw,errors=continue\n");
+-
+- fsync(mntnf_fd);
+- lseek(mntnf_fd, 0, SEEK_SET);
+-
+- TS_PRINTF("Made-up mountinfo created in %s\n", mock_pid_proc);
+-
+- {
+- /* TODO: add test for open file descriptors */
+- const int r = libreport_process_has_own_root_at(mock_pid_proc_fd);
+- TS_ASSERT_SIGNED_EQ(r, -ENOKEY);
+- }
+-
+- TS_PRINTF("Going to copy /proc/1/mountinfo to %s\n", mock_pid_proc);
+-
+- const int pid1_mntnf_fd = open("/proc/1/mountinfo", O_RDONLY);
+- if (pid1_mntnf_fd < 0) {
+- err(EXIT_FAILURE, "/proc/1/mountinfo");
+- }
+-
+- TS_PRINTF("Copying /proc/1/mountinfo to %s\n", mock_pid_proc);
+-
+- {
+- int r = 0;
+-
+- while ((r = sendfile(mntnf_fd, pid1_mntnf_fd, NULL, 65535)) > 0)
+- ;
+-
+- if (r < 0) {
+- err(EXIT_FAILURE, "Cannot copy /proc/1/mountinfo to %s", mock_pid_proc);
+- }
+- }
+-
+- close(pid1_mntnf_fd);
+-
+- fsync(mntnf_fd);
+- lseek(mntnf_fd, 0, SEEK_SET);
+-
+- TS_PRINTF("Copied /proc/1/mountinfo to %s\n", mock_pid_proc);
+-
+- {
+- /* TODO: add test for open file descriptors */
+- const int r = libreport_process_has_own_root_at(mock_pid_proc_fd);
+- TS_ASSERT_SIGNED_EQ(r, 0);
+- }
+-
+- /* Test different source directory. Swap / with \ in the mock mountinfo. */
+- fsync(mntnf_fd);
+- lseek(mntnf_fd, 0, SEEK_SET);
+-
+- libreport_full_write_str(mntnf_fd, "12 34 567:89 /madeuproot / ");
+- write_cmd_output_to_fd(mntnf_fd, "findmnt -F /proc/1/mountinfo -r -n -o VFS-OPTIONS,OPT-FIELDS -T /");
+- libreport_full_write_str(mntnf_fd, " - ");
+- write_cmd_output_to_fd(mntnf_fd, "findmnt -F /proc/1/mountinfo -r -n -o FSTYPE,SOURCE,FS-OPTIONS -T /");
+-
+- fsync(mntnf_fd);
+- lseek(mntnf_fd, 0, SEEK_SET);
+-
+- {
+- /* TODO: add test for open file descriptors */
+- const int r = libreport_process_has_own_root_at(mock_pid_proc_fd);
+- TS_ASSERT_SIGNED_EQ(r, 1);
+- }
+-
+- close(mntnf_fd);
+-
+- if (unlinkat(mock_pid_proc_fd, "mountinfo", 0) < 0) {
+- perror("unlinkat(fd, mountinfo)");
+- }
+-
+- if (rmdir(mock_pid_proc) < 0) {
+- perror("rmdir(/mock_pid_dir)");
+- }
+-}
+-TS_RETURN_MAIN
+-]])
+diff --git a/tests/report_python.at b/tests/report_python.at
+index 31c0142..f267427 100644
+--- a/tests/report_python.at
++++ b/tests/report_python.at
+@@ -70,43 +70,6 @@ if __name__ == "__main__":
+ sys.exit(main())
+ ]])
+
+-## ----------------------- ##
+-## get_from_etc_os_release ##
+-## ----------------------- ##
+-
+-AT_PYTESTFUN([get_from_etc_os_release],
+-[[import sys
+-
+-sys.path.insert(0, "../../../src/report-python")
+-sys.path.insert(0, "../../../src/report-python/report/.libs")
+-
+-report = __import__("report", globals(), locals(), [], 0)
+-sys.modules["report"] = report
+-
+-import os
+-
+-if not os.path.exists("/etc/os-release"):
+- print("Cannot run the test: '/etc/os-release' does not exist")
+- sys.exit(1)
+-
+-exit_code = 0
+-if report.getProduct_fromOSRELEASE() != report.getProduct():
+- print("getProduct('{0}') did not return PRODUCT='{1}' from /etc/os-release".format(report.getProduct(), report.getProduct_fromOSRELEASE()))
+- exit_code += 1
+-
+-if report.getVersion_fromOSRELEASE() != report.getVersion():
+- print("getVersion('{0}') did not return PRODUCT_VERSION='{1}' from /etc/os-release".format(report.getVersion(), report.getVersion_fromOSRELEASE()))
+- exit_code += 1
+-
+-if exit_code != 0:
+- print("++++ /etc/os-release ++++")
+- with open("/etc/os-release") as osrel:
+- sys.stdout.write(osrel.read())
+- print("^^^^ /etc/os-release ^^^^")
+-
+-sys.exit(exit_code)
+-]])
+-
+ ## ---------------------------------- ##
+ ## create_dump_dir_uid_does_not_exist ##
+ ## ---------------------------------- ##
+diff --git a/tests/ureport.at b/tests/ureport.at
+index 7ac67dc..849f1c9 100644
+--- a/tests/ureport.at
++++ b/tests/ureport.at
+@@ -764,101 +764,6 @@ int main(void)
+ }
+ ]])
+
+-## -------------------------- ##
+-## libreport_ureport_do_post ##
+-## -------------------------- ##
+-
+-AT_TESTFUN([libreport_ureport_do_post],
+-[[
+-#include "internal_libreport.h"
+-#include "ureport.h"
+-#include
+-#include "libreport_curl.h"
+-#include "problem_data.h"
+-
+-int main(void)
+-{
+- libreport_g_verbose=3;
+-
+- struct dump_dir *dd = dd_create("./test", (uid_t)-1L, DEFAULT_DUMP_DIR_MODE);
+- assert(dd != NULL);
+- dd_create_basic_files(dd, (uid_t)-1L, NULL);
+- dd_save_text(dd, FILENAME_TYPE, "CCpp");
+- dd_save_text(dd, FILENAME_ANALYZER, "CCpp");
+- dd_save_text(dd, FILENAME_PKG_EPOCH, "pkg_epoch");
+- dd_save_text(dd, FILENAME_PKG_ARCH, "pkg_arch");
+- dd_save_text(dd, FILENAME_PKG_RELEASE, "pkg_release");
+- dd_save_text(dd, FILENAME_PKG_VERSION, "pkg_version");
+- dd_save_text(dd, FILENAME_PKG_NAME, "pkg_name");
+- const char *bt = "{ \"signal\": 6, \"executable\": \"/usr/bin/will_abort\" }";
+- dd_save_text(dd, FILENAME_CORE_BACKTRACE, bt);
+- dd_save_text(dd, FILENAME_COUNT, "1");
+- dd_close(dd);
+-
+- g_autofree char *json = libreport_ureport_from_dump_dir_ext("./test", NULL);
+-
+- /* wrong url */
+- struct ureport_server_config config;
+- libreport_ureport_server_config_init(&config);
+- struct post_state *post_state = libreport_ureport_do_post(json, &config, "not_exist");
+- assert(post_state->curl_result == CURLE_COULDNT_RESOLVE_HOST);
+-
+- free_post_state(post_state);
+- libreport_ureport_server_config_destroy(&config);
+- delete_dump_dir("./test");
+-
+- return 0;
+-}
+-]])
+-
+-## ------------------------- ##
+-## libreport_ureport_submit ##
+-## ------------------------- ##
+-
+-AT_TESTFUN([libreport_ureport_submit],
+-[[
+-#include "internal_libreport.h"
+-#include "ureport.h"
+-#include
+-#include "libreport_curl.h"
+-#include "problem_data.h"
+-
+-int main(void)
+-{
+- libreport_g_verbose=3;
+-
+- struct dump_dir *dd = dd_create("./test", (uid_t)-1L, DEFAULT_DUMP_DIR_MODE);
+- assert(dd != NULL);
+- dd_create_basic_files(dd, (uid_t)-1L, NULL);
+- dd_save_text(dd, FILENAME_TYPE, "CCpp");
+- dd_save_text(dd, FILENAME_ANALYZER, "CCpp");
+- dd_save_text(dd, FILENAME_PKG_EPOCH, "pkg_epoch");
+- dd_save_text(dd, FILENAME_PKG_ARCH, "pkg_arch");
+- dd_save_text(dd, FILENAME_PKG_RELEASE, "pkg_release");
+- dd_save_text(dd, FILENAME_PKG_VERSION, "pkg_version");
+- dd_save_text(dd, FILENAME_PKG_NAME, "pkg_name");
+- const char *bt = "{ \"signal\": 6, \"executable\": \"/usr/bin/will_abort\" }";
+- dd_save_text(dd, FILENAME_CORE_BACKTRACE, bt);
+- dd_save_text(dd, FILENAME_COUNT, "1");
+- dd_close(dd);
+-
+- g_autofree char *json = libreport_ureport_from_dump_dir_ext("./test", NULL);
+-
+- /* wrong url */
+- struct ureport_server_config config;
+- libreport_ureport_server_config_init(&config);
+- struct ureport_server_response *response = libreport_ureport_submit(json, &config);
+-
+- assert(response == NULL);
+-
+- libreport_ureport_server_response_free(response);
+- libreport_ureport_server_config_destroy(&config);
+- delete_dump_dir("./test");
+-
+- return 0;
+-}
+-]])
+-
+ ## --------------------------- ##
+ ## ureport_json_attachment_new ##
+ ## --------------------------- ##
+@@ -918,91 +823,6 @@ int main(void)
+ }
+ ]])
+
+-## ----------------------------------- ##
+-## libreport_ureport_from_dump_dir_ext ##
+-## ----------------------------------- ##
+-
+-AT_TESTFUN([libreport_ureport_from_dump_dir_ext],
+-[[
+-#include "internal_libreport.h"
+-#include "ureport.h"
+-#include
+-#include "libreport_curl.h"
+-#include "problem_data.h"
+-
+-int main(void)
+-{
+- libreport_g_verbose=3;
+-
+- struct dump_dir *dd = dd_create("./test", (uid_t)-1L, DEFAULT_DUMP_DIR_MODE);
+- assert(dd != NULL);
+- dd_create_basic_files(dd, (uid_t)-1L, NULL);
+- dd_save_text(dd, FILENAME_TYPE, "CCpp");
+- dd_save_text(dd, FILENAME_ANALYZER, "CCpp");
+- dd_save_text(dd, FILENAME_PKG_EPOCH, "pkg_epoch");
+- dd_save_text(dd, FILENAME_PKG_ARCH, "pkg_arch");
+- dd_save_text(dd, FILENAME_PKG_RELEASE, "pkg_release");
+- dd_save_text(dd, FILENAME_PKG_VERSION, "pkg_version");
+- dd_save_text(dd, FILENAME_PKG_NAME, "pkg_name");
+- const char *bt = "{ \"signal\": 6, \"executable\": \"/usr/bin/will_abort\" }";
+- dd_save_text(dd, FILENAME_CORE_BACKTRACE, bt);
+- dd_save_text(dd, FILENAME_COUNT, "1");
+- dd_close(dd);
+-
+- /* no auth */
+- char *ureport = libreport_ureport_from_dump_dir_ext("./test", NULL);
+- assert(strstr(ureport, "auth") == NULL);
+- g_free(ureport);
+-
+- /* auth */
+- dd = dd_opendir("./test", 0);
+- dd_save_text(dd, FILENAME_HOSTNAME, "env_hostname");
+- dd_close(dd);
+-
+- struct ureport_server_config config;
+- libreport_ureport_server_config_init(&config);
+-
+- GHashTable *settings = g_hash_table_new_full(g_str_hash, g_str_equal, free, free);
+-
+- setenv("uReport_IncludeAuthData", "yes", 1);
+- setenv("uReport_AuthDataItems", "hostname", 1);
+-
+- libreport_ureport_server_config_load(&config, settings);
+-
+- ureport = libreport_ureport_from_dump_dir_ext("./test", &config.ur_prefs);
+- assert(strstr(ureport, "auth") != NULL);
+- assert(strstr(ureport, "\"hostname\": \"env_hostname\"") != NULL);
+- g_free(ureport);
+-
+- libreport_ureport_server_config_destroy(&config);
+- if (settings)
+- g_hash_table_destroy(settings);
+-
+- /* auth with unknown uReport_AuthDataItems */
+- libreport_ureport_server_config_init(&config);
+-
+- settings = g_hash_table_new_full(g_str_hash, g_str_equal, free, free);
+-
+- setenv("uReport_AuthDataItems", "hostname, unknown", 1);
+-
+- libreport_ureport_server_config_load(&config, settings);
+-
+- ureport = libreport_ureport_from_dump_dir_ext("./test", &config.ur_prefs);
+- assert(strstr(ureport, "auth") != NULL);
+- assert(strstr(ureport, "\"hostname\": \"env_hostname\"") != NULL);
+- assert(strstr(ureport, "unknown") == NULL);
+- g_free(ureport);
+-
+- libreport_ureport_server_config_destroy(&config);
+- if (settings)
+- g_hash_table_destroy(settings);
+- delete_dump_dir("./test");
+-
+- return 0;
+-}
+-]])
+-
+-
+ ## ------------------------------------- ##
+ ## ureport_server_config_load_basic_auth ##
+ ## ------------------------------------- ##
+--
+2.45.4
+
diff --git a/SPECS-EXTENDED/libreport/libreport.signatures.json b/SPECS-EXTENDED/libreport/libreport.signatures.json
index b0c554ae2f4..0325089df3b 100644
--- a/SPECS-EXTENDED/libreport/libreport.signatures.json
+++ b/SPECS-EXTENDED/libreport/libreport.signatures.json
@@ -1,5 +1,5 @@
{
"Signatures": {
- "libreport-2.13.1.tar.gz": "d8523ff6993ba1514550eb745e09eb9e35b4e24bad0f31dcfccb6f4e3f58e2bf"
+ "libreport-2.17.15.tar.gz": "cf181ed248f6bf12233b459e4a504fab645b3ce8040b6855a073453756311166"
}
}
diff --git a/SPECS-EXTENDED/libreport/libreport.spec b/SPECS-EXTENDED/libreport/libreport.spec
index 5aa5500078c..b6a93f3e064 100644
--- a/SPECS-EXTENDED/libreport/libreport.spec
+++ b/SPECS-EXTENDED/libreport/libreport.spec
@@ -1,94 +1,94 @@
%bcond_without bugzilla
+
+%define dbus_devel dbus-devel
%define libjson_devel json-c-devel
+
%define glib_ver 2.43.4
-Summary: Generic library for reporting various problems
-Name: libreport
-Version: 2.13.1
-Release: 9%{?dist}
-License: GPLv2+
+Summary: Generic library for reporting various problems
+Name: libreport
+Version: 2.17.15
+Release: 1%{?dist}
+License: GPL-2.0-or-later
Vendor: Microsoft Corporation
Distribution: Azure Linux
-URL: https://abrt.readthedocs.org/
-Source: https://github.com/abrt/%{name}/archive/%{version}/%{name}-%{version}.tar.gz
-Patch0: 0001-gui-wizard-gtk-Fix-segfault.patch
-BuildRequires: dbus-devel
-# BuildRequires: gtk3-devel
-BuildRequires: asciidoc
-BuildRequires: augeas
-BuildRequires: augeas-devel
-BuildRequires: curl-devel
-BuildRequires: desktop-file-utils
-BuildRequires: doxygen
-BuildRequires: gettext
-BuildRequires: git-core
-BuildRequires: glib2-devel >= %{glib_ver}
-BuildRequires: intltool
-BuildRequires: libproxy-devel
-BuildRequires: libtar-devel
-BuildRequires: libtool
-BuildRequires: libxml2-devel
-BuildRequires: lz4
-BuildRequires: nettle-devel
-BuildRequires: newt-devel
-BuildRequires: python3-devel
-BuildRequires: satyr-devel >= 0.24
-BuildRequires: systemd-devel
-BuildRequires: texinfo
-BuildRequires: xmlrpc-c
-BuildRequires: xmlto
-BuildRequires: xz
-Requires: glib2 >= %{glib_ver}
-Requires: libreport-filesystem = %{version}-%{release}
-Requires: lz4
-Requires: nettle
-Requires: satyr >= 0.24
-Requires: xz
-%if 0%{?with_check} && 0%{?mariner_failing_tests}
-# A test case uses zh_CN locale to verify XML event translations
-BuildRequires: glibc-all-langpacks
-%endif
+URL: https://abrt.readthedocs.org/
+Source: https://github.com/abrt/%{name}/archive/%{version}/%{name}-%{version}.tar.gz
+Patch1: 0001-skip-unwanted-tests.patch
+BuildRequires: %{dbus_devel}
+BuildRequires: gtk3-devel
+BuildRequires: curl-devel
+BuildRequires: desktop-file-utils
+BuildRequires: python3-devel
+BuildRequires: gettext
+BuildRequires: libxml2-devel
+BuildRequires: intltool
+BuildRequires: libtool
+BuildRequires: make
+BuildRequires: texinfo
+BuildRequires: asciidoc
+BuildRequires: xmlto
+BuildRequires: newt-devel
+BuildRequires: satyr-devel >= 0.38
+BuildRequires: glib2-devel >= %{glib_ver}
+BuildRequires: git-core
+
%if %{with bugzilla}
-BuildRequires: xmlrpc-c-devel
+BuildRequires: xmlrpc-c-devel
%endif
+BuildRequires: doxygen
+BuildRequires: systemd-devel
+BuildRequires: augeas-devel
+BuildRequires: augeas
+BuildRequires: libarchive-devel
+Requires: libreport-filesystem = %{version}-%{release}
+Requires: satyr%{?_isa} >= 0.38
+Requires: glib2%{?_isa} >= %{glib_ver}
+Requires: libarchive%{?_isa}
+
# Required for the temporary modularity hack, see below
%if 0%{?_module_build}
-BuildRequires: sed
+BuildRequires: sed
%endif
+Obsoletes: %{name}-compat < 2.13.2
+Obsoletes: %{name}-plugin-rhtsupport < 2.13.2
+Obsoletes: %{name}-rhel < 2.13.2
+
%description
Libraries providing API for reporting different problems in applications
to different bug targets like Bugzilla, ftp, trac, etc...
%package filesystem
-Summary: Filesystem layout for libreport
-BuildArch: noarch
+Summary: Filesystem layout for libreport
+BuildArch: noarch
%description filesystem
Filesystem layout for libreport
%package devel
-Summary: Development libraries and headers for libreport
-Requires: libreport = %{version}-%{release}
+Summary: Development libraries and headers for libreport
+Requires: libreport = %{version}-%{release}
%description devel
Development libraries and headers for libreport
%package web
-Summary: Library providing network API for libreport
-Requires: libreport = %{version}-%{release}
+Summary: Library providing network API for libreport
+Requires: libreport = %{version}-%{release}
%description web
Library providing network API for libreport
%package web-devel
-Summary: Development headers for libreport-web
-Requires: libreport-web = %{version}-%{release}
+Summary: Development headers for libreport-web
+Requires: libreport-web = %{version}-%{release}
%description web-devel
Development headers for libreport-web
%package -n python3-libreport
+Summary: Python 3 bindings for report-libs
%if 0%{?_module_build}
# This is required for F26 Boltron (the modular release)
# Different parts of libreport are shipped with different
@@ -96,63 +96,81 @@ Development headers for libreport-web
# strict NVR dependency to make it work. Temporary and
# limited to F26 Boltron.
%global distfreerelease %(echo %{release}|sed 's/%{?dist}$//'||echo 0)
-Requires: libreport >= %{version}-%{distfreerelease}
+Requires: libreport >= %{version}-%{distfreerelease}
%else
-Requires: libreport = %{version}-%{release}
+Requires: libreport = %{version}-%{release}
%endif
-Summary: Python 3 bindings for report-libs
+Requires: python3-dnf
+Requires: python3-requests
+Requires: python3-urllib3
%{?python_provide:%python_provide python3-libreport}
-Requires: python3-dnf
%description -n python3-libreport
Python 3 bindings for report-libs.
%package cli
-Summary: %{name}'s command line interface
-Requires: %{name} = %{version}-%{release}
+Summary: %{name}'s command line interface
+Requires: %{name} = %{version}-%{release}
%description cli
This package contains simple command line tool for working
with problem dump reports
%package newt
-Summary: %{name}'s newt interface
-Requires: %{name} = %{version}-%{release}
-Provides: report-newt = 0:0.23-1
-Obsoletes: report-newt < 0:0.23-1
+Summary: %{name}'s newt interface
+Requires: %{name} = %{version}-%{release}
+Provides: report-newt = 0:0.23-1
+Obsoletes: report-newt < 0:0.23-1
%description newt
This package contains a simple newt application for reporting
bugs
+%package gtk
+Summary: GTK front-end for libreport
+Requires: libreport = %{version}-%{release}
+Requires: libreport-plugin-reportuploader = %{version}-%{release}
+Provides: report-gtk = 0:0.23-1
+Obsoletes: report-gtk < 0:0.23-1
+
+%description gtk
+Applications for reporting bugs using libreport backend
+
+%package gtk-devel
+Summary: Development libraries and headers for libreport
+Requires: libreport-gtk = %{version}-%{release}
+
+%description gtk-devel
+Development libraries and headers for libreport-gtk
+
%package plugin-kerneloops
-Summary: %{name}'s kerneloops reporter plugin
-Requires: %{name} = %{version}-%{release}
-Requires: curl
-Requires: libreport-web = %{version}-%{release}
+Summary: %{name}'s kerneloops reporter plugin
+Requires: curl
+Requires: %{name} = %{version}-%{release}
+Requires: libreport-web = %{version}-%{release}
%description plugin-kerneloops
This package contains plugin which sends kernel crash information to specified
server, usually to kerneloops.org.
%package plugin-logger
-Summary: %{name}'s logger reporter plugin
-Requires: %{name} = %{version}-%{release}
+Summary: %{name}'s logger reporter plugin
+Requires: %{name} = %{version}-%{release}
%description plugin-logger
The simple reporter plugin which writes a report to a specified file.
%package plugin-systemd-journal
-Summary: %{name}'s systemd journal reporter plugin
-Requires: %{name} = %{version}-%{release}
+Summary: %{name}'s systemd journal reporter plugin
+Requires: %{name} = %{version}-%{release}
%description plugin-systemd-journal
The simple reporter plugin which writes a report to the systemd journal.
%package plugin-mailx
-Summary: %{name}'s mailx reporter plugin
-Requires: %{name} = %{version}-%{release}
-Requires: mailx
+Summary: %{name}'s mailx reporter plugin
+Requires: %{name} = %{version}-%{release}
+Requires: /usr/bin/mailx
%description plugin-mailx
The simple reporter plugin which sends a report via mailx to a specified
@@ -160,123 +178,56 @@ email address.
%if %{with bugzilla}
%package plugin-bugzilla
-Summary: %{name}'s bugzilla plugin
-Requires: %{name} = %{version}-%{release}
-Requires: libreport-web = %{version}-%{release}
+Summary: %{name}'s bugzilla plugin
+Requires: %{name} = %{version}-%{release}
+Requires: libreport-web = %{version}-%{release}
+Requires: python3-libreport = %{version}-%{release}
%description plugin-bugzilla
Plugin to report bugs into the bugzilla.
%endif
%package plugin-mantisbt
-Summary: %{name}'s mantisbt plugin
-Requires: %{name} = %{version}-%{release}
-Requires: libreport-web = %{version}-%{release}
+Summary: %{name}'s mantisbt plugin
+Requires: %{name} = %{version}-%{release}
+Requires: libreport-web = %{version}-%{release}
%description plugin-mantisbt
Plugin to report bugs into the mantisbt.
%package centos
-Summary: %{name}'s CentOS Bug Tracker workflow
-Requires: %{name} = %{version}-%{release}
-Requires: libreport-plugin-mantisbt = %{version}-%{release}
-Requires: libreport-web = %{version}-%{release}
+Summary: %{name}'s CentOS Bug Tracker workflow
+Requires: %{name} = %{version}-%{release}
+Requires: libreport-web = %{version}-%{release}
+Requires: libreport-plugin-mantisbt = %{version}-%{release}
%description centos
Workflows to report issues into the CentOS Bug Tracker.
%package plugin-ureport
-Summary: %{name}'s micro report plugin
-BuildRequires: %{libjson_devel}
-Requires: %{name} = %{version}-%{release}
-Requires: libreport-web = %{version}-%{release}
-%if 0%{?rhel}
-Requires: python3-subscription-manager-rhsm
-%endif
+Summary: %{name}'s micro report plugin
+BuildRequires: %{libjson_devel}
+Requires: %{name} = %{version}-%{release}
+Requires: libreport-web = %{version}-%{release}
%description plugin-ureport
Uploads micro-report to abrt server
-%package plugin-rhtsupport
-Summary: %{name}'s RHTSupport plugin
-Requires: %{name} = %{version}-%{release}
-Requires: libreport-web = %{version}-%{release}
-
-%description plugin-rhtsupport
-Plugin to report bugs into RH support system.
-
-%if %{with bugzilla}
-%package compat
-Summary: %{name}'s compat layer for obsoleted 'report' package
-Requires: %{name}-plugin-bugzilla = %{version}-%{release}
-Requires: %{name}-plugin-rhtsupport = %{version}-%{release}
-Requires: libreport = %{version}-%{release}
-
-%description compat
-Provides 'report' command-line tool.
-%endif
-
%package plugin-reportuploader
-Summary: %{name}'s reportuploader plugin
-Requires: %{name} = %{version}-%{release}
-Requires: libreport-web = %{version}-%{release}
+Summary: %{name}'s reportuploader plugin
+Requires: %{name} = %{version}-%{release}
+Requires: libreport-web = %{version}-%{release}
%description plugin-reportuploader
Plugin to report bugs into anonymous FTP site associated with ticketing system.
-%if 0%{?fedora}
-%package fedora
-Summary: Default configuration for reporting bugs via Fedora infrastructure
-Requires: %{name} = %{version}-%{release}
-
-%description fedora
-Default configuration for reporting bugs via Fedora infrastructure
-used to easily configure the reporting process for Fedora systems. Just
-install this package and you're done.
-%endif
-
-%if 0%{?rhel}
-%package rhel
-Summary: Default configuration for reporting bugs via Red Hat infrastructure
-Requires: %{name} = %{version}-%{release}
-Requires: %{name}-plugin-ureport
-
-%description rhel
-Default configuration for reporting bugs via Red Hat infrastructure
-used to easily configure the reporting process for Red Hat systems. Just
-install this package and you're done.
-
-%package rhel-bugzilla
-Summary: Default configuration for reporting bugs to Red Hat Bugzilla
-Requires: %{name} = %{version}-%{release}
-Requires: libreport-plugin-bugzilla = %{version}-%{release}
-Requires: libreport-plugin-ureport = %{version}-%{release}
-
-%description rhel-bugzilla
-Default configuration for reporting bugs to Red Hat Bugzilla used to easily
-configure the reporting process for Red Hat systems. Just install this package
-and you're done.
-
-%package rhel-anaconda-bugzilla
-Summary: Default configuration for reporting anaconda bugs to Red Hat Bugzilla
-Requires: %{name} = %{version}-%{release}
-Requires: libreport-plugin-bugzilla = %{version}-%{release}
-
-%description rhel-anaconda-bugzilla
-Default configuration for reporting Anaconda problems to Red Hat Bugzilla used
-to easily configure the reporting process for Red Hat systems. Just install this
-package and you're done.
-%endif
-
%if %{with bugzilla}
%package anaconda
-Summary: Default configuration for reporting anaconda bugs
-Requires: %{name} = %{version}-%{release}
-Requires: libreport-plugin-reportuploader = %{version}-%{release}
-%if 0%{?rhel}
-Requires: libreport-plugin-rhtsupport = %{version}-%{release}
-%else
-Requires: libreport-plugin-bugzilla = %{version}-%{release}
+Summary: Default configuration for reporting anaconda bugs
+Requires: %{name} = %{version}-%{release}
+Requires: libreport-plugin-reportuploader = %{version}-%{release}
+%if ! 0%{?rhel} || 0%{?eln}
+Requires: libreport-plugin-bugzilla = %{version}-%{release}
%endif
%description anaconda
@@ -285,29 +236,25 @@ data over ftp/scp...
%endif
%prep
-%autosetup -S git
+%autosetup -p1
%build
-autoconf
+./autogen.sh
%configure \
%if %{without bugzilla}
--without-bugzilla \
-%endif
-%if 0%{?rhel}
- --enable-import-rhtsupport-cert \
%endif
--enable-doxygen-docs \
- --disable-silent-rules \
- --without-gtk
+ --disable-silent-rules
%make_build
%install
%make_install \
%if %{with python3}
- PYTHON=python3 \
-%endif # with python3
+ PYTHON=%{__python3} \
+%endif
mandir=%{_mandir}
%find_lang %{name}
@@ -331,8 +278,6 @@ mkdir -p %{buildroot}/%{_datadir}/%{name}/workflows/
# After everything is installed, remove info dir
rm -f %{buildroot}/%{_infodir}/dir
-# Remove unwanted Fedora specific workflow configuration files
-%if 0%{!?fedora:1}
rm -f %{buildroot}/%{_datadir}/libreport/workflows/workflow_FedoraCCpp.xml
rm -f %{buildroot}/%{_datadir}/libreport/workflows/workflow_FedoraKerneloops.xml
rm -f %{buildroot}/%{_datadir}/libreport/workflows/workflow_FedoraPython.xml
@@ -345,10 +290,8 @@ rm -f %{buildroot}/%{_datadir}/libreport/workflows/workflow_FedoraJavaScript.xml
rm -f %{buildroot}/%{_sysconfdir}/libreport/workflows.d/report_fedora.conf
rm -f %{buildroot}%{_mandir}/man5/report_fedora.conf.5
rm -f %{buildroot}/%{_datadir}/libreport/workflows/workflow_AnacondaFedora.xml
-%endif
# Remove unwanted RHEL specific workflow configuration files
-%if 0%{!?rhel:1}
rm -f %{buildroot}/%{_datadir}/libreport/workflows/workflow_RHELCCpp.xml
rm -f %{buildroot}/%{_datadir}/libreport/workflows/workflow_RHELKerneloops.xml
rm -f %{buildroot}/%{_datadir}/libreport/workflows/workflow_RHELPython.xml
@@ -383,34 +326,50 @@ rm -f %{buildroot}/%{_sysconfdir}/libreport/workflows.d/report_rhel_bugzilla.con
rm -f %{buildroot}%{_mandir}/man5/report_rhel.conf.5
rm -f %{buildroot}%{_mandir}/man5/report_uReport.conf.5
rm -f %{buildroot}%{_mandir}/man5/report_rhel_bugzilla.conf.5
-%endif
-
-rm -f %{buildroot}%{_mandir}/man1/report-gtk.1
-rm -f %{buildroot}%{_mandir}/man5/forbidden_words.conf.5
-rm -f %{buildroot}%{_mandir}/man5/ignored_words.conf.5
%check
-make check
-check_result=$?
-if [[ $check_result -ne 0 ]]; then
+make check|| {
# find and print the logs of failed test
# do not cat tests/testsuite.log because it contains a lot of bloat
find tests/testsuite.dir -name "testsuite.log" -print -exec cat '{}' \;
-fi
-[[ $check_result -eq 0 ]]
+ exit 1
+}
%ldconfig_scriptlets
%ldconfig_scriptlets web
+%if 0%{?rhel} && 0%{?rhel} <= 7
+%post gtk
+%{?ldconfig}
+# update icon cache
+touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
+
+%postun gtk
+%{?ldconfig}
+if [ $1 -eq 0 ] ; then
+ touch --no-create %{_datadir}/icons/hicolor &>/dev/null
+ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
+fi
+
+%posttrans gtk
+gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
+
+%endif
%files -f %{name}.lang
%doc README.md
%license COPYING
%config(noreplace) %{_sysconfdir}/%{name}/libreport.conf
%config(noreplace) %{_sysconfdir}/%{name}/report_event.conf
+%config(noreplace) %{_sysconfdir}/%{name}/forbidden_words.conf
+%config(noreplace) %{_sysconfdir}/%{name}/ignored_words.conf
+%config(noreplace) %{_sysconfdir}/%{name}/ignored_elements.conf
%{_datadir}/%{name}/conf.d/libreport.conf
%{_libdir}/libreport.so.*
%{_mandir}/man5/libreport.conf.5*
%{_mandir}/man5/report_event.conf.5*
+%{_mandir}/man5/forbidden_words.conf.5*
+%{_mandir}/man5/ignored_words.conf.5*
+%{_mandir}/man5/ignored_elements.conf.5*
# filesystem package owns /usr/share/augeas/lenses directory
%{_datadir}/augeas/lenses/libreport.aug
@@ -441,6 +400,9 @@ fi
%{_includedir}/libreport/file_obj.h
%{_includedir}/libreport/config_item_info.h
%{_includedir}/libreport/workflow.h
+%{_includedir}/libreport/problem_details_widget.h
+%{_includedir}/libreport/problem_details_dialog.h
+%{_includedir}/libreport/problem_utils.h
%{_includedir}/libreport/ureport.h
%{_includedir}/libreport/reporters.h
%{_includedir}/libreport/global_configuration.h
@@ -472,6 +434,16 @@ fi
%{_bindir}/report-newt
%{_mandir}/man1/report-newt.1.gz
+%files gtk
+%{_bindir}/report-gtk
+%{_libdir}/libreport-gtk.so.*
+%{_mandir}/man1/report-gtk.1.gz
+
+%files gtk-devel
+%{_libdir}/libreport-gtk.so
+%{_includedir}/libreport/internal_libreport_gtk.h
+%{_libdir}/pkgconfig/libreport-gtk.pc
+
%files plugin-kerneloops
%{_datadir}/%{name}/events/report_Kerneloops.xml
%{_mandir}/man*/reporter-kerneloops.*
@@ -515,7 +487,7 @@ fi
%{_mandir}/man1/reporter-ureport.1.gz
%{_mandir}/man5/ureport.conf.5.gz
%{_datadir}/%{name}/events/report_uReport.xml
-%if 0%{?rhel}
+%if 0%{?rhel} && ! 0%{?eln}
%config(noreplace) %{_sysconfdir}/libreport/workflows.d/report_uReport.conf
%{_datadir}/%{name}/workflows/workflow_uReport.xml
%{_mandir}/man5/report_uReport.conf.5.*
@@ -545,6 +517,8 @@ fi
%{_mandir}/man5/bugzilla_formatdup_analyzer_libreport.conf.5.*
%{_mandir}/man5/bugzilla_format_kernel.conf.5.*
%{_bindir}/reporter-bugzilla
+%{_bindir}/reporter-bugzilla-python
+
%endif
%files plugin-mantisbt
@@ -581,26 +555,6 @@ fi
%config(noreplace) %{_sysconfdir}/libreport/events.d/centos_report_event.conf
%{_mandir}/man5/centos_report_event.conf.5.gz
-%files plugin-rhtsupport
-%config(noreplace) %{_sysconfdir}/libreport/plugins/rhtsupport.conf
-%{_datadir}/%{name}/conf.d/plugins/rhtsupport.conf
-%{_datadir}/%{name}/events/report_RHTSupport.xml
-%{_datadir}/%{name}/events/report_RHTSupport_AddData.xml
-%if 0%{?rhel}
-%attr(600,root,root)%{_sysconfdir}/%{name}/cert-api.access.redhat.com.pem
-%endif
-%config(noreplace) %{_sysconfdir}/libreport/events.d/rhtsupport_event.conf
-%{_mandir}/man1/reporter-rhtsupport.1.gz
-%{_mandir}/man5/rhtsupport.conf.5.*
-%{_mandir}/man5/rhtsupport_event.conf.5.*
-%{_bindir}/reporter-rhtsupport
-
-%if %{with bugzilla}
-%files compat
-%{_bindir}/report
-%{_mandir}/man1/report.1.gz
-%endif
-
%files plugin-reportuploader
%{_mandir}/man*/reporter-upload.*
%{_mandir}/man5/uploader_event.conf.5.*
@@ -617,67 +571,10 @@ fi
%config(noreplace) %{_sysconfdir}/libreport/events/report_Uploader.conf
%{_mandir}/man5/report_Uploader.conf.5.*
-%if 0%{?fedora}
-%files fedora
-%{_datadir}/%{name}/workflows/workflow_FedoraCCpp.xml
-%{_datadir}/%{name}/workflows/workflow_FedoraKerneloops.xml
-%{_datadir}/%{name}/workflows/workflow_FedoraPython.xml
-%{_datadir}/%{name}/workflows/workflow_FedoraPython3.xml
-%{_datadir}/%{name}/workflows/workflow_FedoraVmcore.xml
-%{_datadir}/%{name}/workflows/workflow_FedoraXorg.xml
-%{_datadir}/%{name}/workflows/workflow_FedoraLibreport.xml
-%{_datadir}/%{name}/workflows/workflow_FedoraJava.xml
-%{_datadir}/%{name}/workflows/workflow_FedoraJavaScript.xml
-%config(noreplace) %{_sysconfdir}/libreport/workflows.d/report_fedora.conf
-%{_mandir}/man5/report_fedora.conf.5.*
-%endif
-
-%if 0%{?rhel}
-%files rhel
-%{_datadir}/%{name}/workflows/workflow_RHELCCpp.xml
-%{_datadir}/%{name}/workflows/workflow_RHELKerneloops.xml
-%{_datadir}/%{name}/workflows/workflow_RHELPython.xml
-%{_datadir}/%{name}/workflows/workflow_RHELvmcore.xml
-%{_datadir}/%{name}/workflows/workflow_RHELxorg.xml
-%{_datadir}/%{name}/workflows/workflow_RHELLibreport.xml
-%{_datadir}/%{name}/workflows/workflow_RHELJava.xml
-%{_datadir}/%{name}/workflows/workflow_RHELJavaScript.xml
-%{_datadir}/%{name}/workflows/workflow_RHELAddDataCCpp.xml
-%{_datadir}/%{name}/workflows/workflow_RHELAddDataJava.xml
-%{_datadir}/%{name}/workflows/workflow_RHELAddDataKerneloops.xml
-%{_datadir}/%{name}/workflows/workflow_RHELAddDataLibreport.xml
-%{_datadir}/%{name}/workflows/workflow_RHELAddDataPython.xml
-%{_datadir}/%{name}/workflows/workflow_RHELAddDatavmcore.xml
-%{_datadir}/%{name}/workflows/workflow_RHELAddDataxorg.xml
-%{_datadir}/%{name}/workflows/workflow_RHELAddDataJavaScript.xml
-%config(noreplace) %{_sysconfdir}/libreport/workflows.d/report_rhel.conf
-%config(noreplace) %{_sysconfdir}/libreport/workflows.d/report_rhel_add_data.conf
-%{_mandir}/man5/report_rhel.conf.5.*
-
-%files rhel-bugzilla
-%{_datadir}/%{name}/workflows/workflow_RHELBugzillaCCpp.xml
-%{_datadir}/%{name}/workflows/workflow_RHELBugzillaKerneloops.xml
-%{_datadir}/%{name}/workflows/workflow_RHELBugzillaPython.xml
-%{_datadir}/%{name}/workflows/workflow_RHELBugzillaVmcore.xml
-%{_datadir}/%{name}/workflows/workflow_RHELBugzillaXorg.xml
-%{_datadir}/%{name}/workflows/workflow_RHELBugzillaLibreport.xml
-%{_datadir}/%{name}/workflows/workflow_RHELBugzillaJava.xml
-%{_datadir}/%{name}/workflows/workflow_RHELBugzillaJavaScript.xml
-%config(noreplace) %{_sysconfdir}/libreport/workflows.d/report_rhel_bugzilla.conf
-%{_mandir}/man5/report_rhel_bugzilla.conf.5.*
-
-%files rhel-anaconda-bugzilla
-%{_datadir}/%{name}/workflows/workflow_AnacondaRHELBugzilla.xml
-%endif
%if %{with bugzilla}
+
%files anaconda
-%if 0%{?fedora}
-%{_datadir}/%{name}/workflows/workflow_AnacondaFedora.xml
-%endif
-%if 0%{?rhel}
-%{_datadir}/%{name}/workflows/workflow_AnacondaRHEL.xml
-%endif
%{_datadir}/%{name}/workflows/workflow_AnacondaUpload.xml
%config(noreplace) %{_sysconfdir}/libreport/workflows.d/anaconda_event.conf
%config(noreplace) %{_sysconfdir}/libreport/events.d/bugzilla_anaconda_event.conf
@@ -690,6 +587,10 @@ fi
%endif
%changelog
+* Thu Nov 28 2024 Sumit Jena - 2.17.15-1
+- Update to version 2.17.15
+- License verified.
+
* Tue Dec 20 2022 Muhammad Falak - 2.13.1-9
- License verified
diff --git a/SPECS-EXTENDED/llhttp/llhttp.signatures.json b/SPECS-EXTENDED/llhttp/llhttp.signatures.json
new file mode 100644
index 00000000000..08472879443
--- /dev/null
+++ b/SPECS-EXTENDED/llhttp/llhttp.signatures.json
@@ -0,0 +1,6 @@
+{
+ "Signatures": {
+ "llhttp-9.3.0.tar.gz": "d6612eefc06a32c778b1d3044cb07aac49eed8f14db689ded91c609b94d51502",
+ "llhttp-release-v9.3.0.tar.gz": "1a2b45cb8dda7082b307d336607023aa65549d6f060da1d246b1313da22b685a"
+ }
+}
\ No newline at end of file
diff --git a/SPECS-EXTENDED/llhttp/llhttp.spec b/SPECS-EXTENDED/llhttp/llhttp.spec
new file mode 100644
index 00000000000..046643c05b5
--- /dev/null
+++ b/SPECS-EXTENDED/llhttp/llhttp.spec
@@ -0,0 +1,250 @@
+# This package is rather exotic. The compiled library is a typical shared
+# library with a C API. However, it has only a tiny bit of C source code. Most
+# of the library is written in TypeScript, which is transpiled to C, via LLVM
+# IR, using llparse (https://github.com/nodejs/llparse)—all of which happens
+# within the NodeJS ecosystem.
+#
+# Historically, this package “built like” a NodeJS package, with a
+# dev-dependency bundle from NPM that we used to transpile the original
+# TypeScript sources to C downstream. Since 9.3.0, it is no longer practical to
+# re-generate the C sources from Typescript without using pre-compiled esbuild
+# executables from NPM, so we use the upstream “release” tarball with
+# pre-generated C source and header files included.
+#
+# That allows this package to be built without running the NodeJS/Typescript
+# machinery in the build (via a large “dev” dependency bundle. However, this
+# release archive lacks the original TypeScript source code for the generated C
+# code, so we need to include this in an additional source. For details, see:
+# https://docs.fedoraproject.org/en-US/packaging-guidelines/what-can-be-packaged/#pregenerated-code
+
+# This package is a dependency of libgit2 which in turn is one of rpmautospec.
+# When upgrading to a version with a new soname, this package needs to provide
+# both in order to bootstrap itself and libgit2. Set %%bootstrap and
+# %%previous_so_version for this (and unset and rebuild later).
+#
+%bcond bootstrap 0
+%global so_version 9.3
+%global previous_so_version 9.2
+
+Name: llhttp
+Version: 9.3.0
+Release: 6%{?dist}
+Summary: Port of http_parser to llparse
+Vendor: Microsoft Corporation
+Distribution: Azure Linux
+
+# SPDX
+License: MIT
+URL: https://github.com/nodejs/llhttp
+Source0: %{url}/archive/refs/tags/release/v%{version}/llhttp-release-v%{version}.tar.gz
+# Contains the original TypeScript sources, which we must include in the source
+# RPM per packaging guidelines.
+Source1: %{url}/archive/v%{version}/llhttp-%{version}.tar.gz
+
+# For compiling the C library
+BuildRequires: cmake
+BuildRequires: gcc
+# There is no C++ involved, but CMake searches for a C++ compiler.
+BuildRequires: gcc-c++
+
+%if %{with bootstrap}
+%if "%{_lib}" == "lib64"
+BuildRequires: libllhttp.so.%{previous_so_version}()(64bit)
+%else
+BuildRequires: libllhttp.so.%{previous_so_version}
+%endif
+%endif
+
+%description
+This project is a port of http_parser to TypeScript. llparse is used to
+generate the output C source file, which could be compiled and linked with the
+embedder's program (like Node.js).
+
+%package devel
+Summary: Development files for llhttp
+Requires: llhttp%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
+
+%description devel
+The llhttp-devel package contains libraries and header files for
+developing applications that use llhttp.
+
+%prep
+%autosetup -n llhttp-release-v%{version}
+
+%conf
+%cmake
+
+%build
+%cmake_build
+
+%install
+%cmake_install
+
+%if %{with bootstrap}
+cp -vp %{_libdir}/libllhttp.so.%{previous_so_version}{,.*} \
+ %{buildroot}%{_libdir}
+%endif
+
+# The same obstacles that prevent us from re-generating the C sources from
+# TypeScript also prevent us from running the tests, which rely on NodeJS.
+
+%files
+# Files LICENSE and LICENSE-MIT are duplicates.
+%license LICENSE
+%doc README.md
+%{_libdir}/libllhttp.so.%{so_version}{,.*}
+%if %{with bootstrap}
+%{_libdir}/libllhttp.so.%{previous_so_version}{,.*}
+%endif
+
+%files devel
+%{_includedir}/llhttp.h
+%{_libdir}/libllhttp.so
+%{_libdir}/pkgconfig/libllhttp.pc
+%{_libdir}/cmake/llhttp/
+
+%changelog
+* Tue Dec 23 2025 Aditya Singh - 9.3.0-6
+- Initial Azure Linux import from Fedora 44 (license: MIT).
+- License verified.
+
+* Thu Jul 24 2025 Fedora Release Engineering - 9.3.0-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
+
+* Mon May 19 2025 Benjamin A. Beasley - 9.3.0-4
+- Non-bootstrap build
+
+* Mon May 19 2025 Benjamin A. Beasley - 9.3.0-3
+- Minor style tweaks to bootstrapping machinery
+
+* Mon May 19 2025 Nils Philippsen - 9.3.0-2
+- Make package bootstrappable for rpmautospec
+
+* Sun May 04 2025 Benjamin A. Beasley - 9.3.0-1
+- Update to 9.3.0 (close RHBZ#2363919)
+
+* Tue Apr 29 2025 Benjamin A. Beasley - 9.2.1-6
+- Correct a term in the SourceLicense
+
+* Fri Jan 17 2025 Fedora Release Engineering - 9.2.1-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
+
+* Mon Dec 16 2024 Benjamin A. Beasley - 9.2.1-4
+- Omit build-time license auditing on i686
+- This keeps llhttp from blocking licensecheck’s dependencies or askalono-
+ cli from dropping i686 support.
+
+* Fri Dec 13 2024 Benjamin A. Beasley - 9.2.1-3
+- Add a SourceLicense field
+- Re-generate the dev-dependencies bundle
+
+* Thu Jul 18 2024 Fedora Release Engineering - 9.2.1-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
+
+* Thu Apr 04 2024 Benjamin A. Beasley - 9.2.1-1
+- Update to 9.2.1 (close RHBZ#2273352, fix CVE-2024-27982)
+- Switch from xz to zstd compression for the “dev” bundle archive
+
+* Thu Mar 21 2024 Benjamin A. Beasley - 9.2.0-4
+- Format check-null-licenses with “ruff format”
+
+* Wed Feb 14 2024 Benjamin A. Beasley - 9.2.0-1
+- Update to 9.2.0 (close RHBZ#2263250)
+
+* Wed Feb 14 2024 Benjamin A. Beasley - 9.1.3-6
+- Compress the dev dependency bundle with xz instead of gzip
+
+* Sun Feb 11 2024 Yaakov Selkowitz - 9.1.3-5
+- Avoid licensecheck dependency in RHEL builds
+
+* Thu Feb 08 2024 Benjamin A. Beasley - 9.1.3-4
+- Better audit (and document auditing of) dev dependency licenses
+
+* Thu Jan 25 2024 Fedora Release Engineering - 9.1.3-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
+
+* Sun Jan 21 2024 Fedora Release Engineering - 9.1.3-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
+
+* Thu Oct 05 2023 Benjamin A. Beasley - 9.1.3-1
+- Update to 9.1.3 (close RHBZ#2242220)
+
+* Tue Oct 03 2023 Benjamin A. Beasley - 9.1.2-1
+- Update to 9.1.2
+
+* Thu Sep 14 2023 Benjamin A. Beasley - 9.1.1-1
+- Update to 9.1.1
+
+* Thu Sep 14 2023 Benjamin A. Beasley - 9.1.0-1
+- Update to 9.1.0
+
+* Mon Aug 21 2023 Benjamin A. Beasley - 9.0.1-1
+- Update to 9.0.1 (close RHBZ#2228290)
+
+* Tue Aug 01 2023 Benjamin A. Beasley - 9.0.0-1
+- Update to 9.0.0
+
+* Sat Jul 29 2023 Benjamin A. Beasley - 8.1.1-1
+- Update to 8.1.1 (close RHBZ#2216591)
+
+* Thu Jul 20 2023 Fedora Release Engineering - 8.1.0-6
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
+
+* Sat Jun 03 2023 Benjamin A. Beasley - 8.1.0-5
+- Remove explicit %%set_build_flags, not needed since F36
+
+* Wed Feb 15 2023 Benjamin A. Beasley - 8.1.0-4
+- Fix test compiling/execution
+
+* Thu Jan 19 2023 Fedora Release Engineering - 8.1.0-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
+
+* Tue Dec 20 2022 Benjamin A. Beasley - 8.1.0-2
+- Indicate dirs. in files list with trailing slashes
+
+* Sat Oct 15 2022 Benjamin A. Beasley - 8.1.0-1
+- Update to 8.1.0 (close RHBZ#2131175)
+
+* Sat Oct 15 2022 Benjamin A. Beasley - 8.0.0-1
+- Update to 8.0.0 (close RHBZ#2131175)
+
+* Sat Oct 15 2022 Benjamin A. Beasley - 6.0.10-2
+- Drop workarounds for Python 3.10 and older
+
+* Thu Sep 29 2022 Stephen Gallagher - 6.0.10-1
+- Update to v6.0.10
+
+* Thu Aug 25 2022 Miro Hrončok - 6.0.9-2
+- Use tomllib/python-tomli instead of dead upstream python-toml
+
+* Thu Aug 11 2022 Benjamin A. Beasley - 6.0.9-1
+- Update to 6.0.9 (close RHBZ#2116231)
+- Bumped .so version from downstream 0.1 to upstream 6.0
+- Better upstream support for building and installing a shared library
+- The -devel package now contains a .pc file
+- Tests are now built with gcc and fully respect distro flags
+
+* Thu Jul 21 2022 Fedora Release Engineering - 6.0.6-8
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
+
+* Wed Apr 20 2022 Benjamin A. Beasley - 6.0.6-7
+- Drop “forge” macros, which aren’t really doing much here
+
+* Thu Jan 20 2022 Fedora Release Engineering - 6.0.6-6
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
+
+* Fri Dec 24 2021 Benjamin A. Beasley - 6.0.6-5
+- Add a note about LLHTTP_STRICT_MODE to the package description
+
+* Fri Dec 24 2021 Benjamin A. Beasley - 6.0.6-4
+- Revert "Build with LLHTTP_STRICT_MODE enabled"
+
+* Wed Dec 22 2021 Benjamin A. Beasley - 6.0.6-3
+- Build with LLHTTP_STRICT_MODE enabled
+
+* Tue Dec 14 2021 Benjamin A. Beasley - 6.0.6-2
+- Dep. on cmake-filesystem is now auto-generated
+
+* Mon Dec 06 2021 Benjamin A. Beasley - 6.0.6-1
+- Initial package (close RHBZ#2029461)
+## END: Generated by rpmautospec
diff --git a/SPECS-EXTENDED/mod_auth_openidc/mod_auth_openidc.spec b/SPECS-EXTENDED/mod_auth_openidc/mod_auth_openidc.spec
index 6a9007e296d..7d9509d0b65 100644
--- a/SPECS-EXTENDED/mod_auth_openidc/mod_auth_openidc.spec
+++ b/SPECS-EXTENDED/mod_auth_openidc/mod_auth_openidc.spec
@@ -13,7 +13,7 @@
Summary: OpenID Connect auth module for Apache HTTP Server
Name: mod_auth_openidc
Version: 2.4.14.2
-Release: 1%{?dist}
+Release: 2%{?dist}
License: ASL 2.0
Vendor: Microsoft Corporation
Distribution: Azure Linux
@@ -30,7 +30,7 @@ BuildRequires: httpd-devel
BuildRequires: jansson-devel
BuildRequires: jq-devel
BuildRequires: openssl-devel
-BuildRequires: pcre-devel
+BuildRequires: pcre2-devel
Requires: httpd-mmn
%description
@@ -87,6 +87,9 @@ install -m 700 -d %{buildroot}%{httpd_pkg_cache_dir}/cache
%dir %attr(0700, apache, apache) %{httpd_pkg_cache_dir}/cache
%changelog
+* Thu Jan 08 2026 Aditya Singh - 2.4.14.2-2
+- Bump to rebuild with updated pcre2.
+
* Tue Sep 05 2023 Archana Choudhary - 2.4.14.2-1
- Upgrade to 2.4.14.2 - CVE-2021-20718, CVE-2021-39191, CVE-2022-23527, CVE-2023-28625
- Add DESTDIR to resolve mod_auth_openidc.so filepath
diff --git a/SPECS-EXTENDED/osgi-compendium/osgi-compendium.spec b/SPECS-EXTENDED/osgi-compendium/osgi-compendium.spec
index 1307a415f7c..62df804437f 100644
--- a/SPECS-EXTENDED/osgi-compendium/osgi-compendium.spec
+++ b/SPECS-EXTENDED/osgi-compendium/osgi-compendium.spec
@@ -20,7 +20,7 @@ Distribution: Azure Linux
Name: osgi-compendium
Version: 7.0.0
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Interfaces and Classes for use in compiling OSGi bundles
License: Apache-2.0
Group: Development/Libraries/Java
@@ -108,10 +108,14 @@ install -pm 0644 pom.xml %{buildroot}%{_mavenpomdir}/%{name}/osgi.cmpn.pom
# javadoc
install -dm 0755 %{buildroot}%{_javadocdir}/%{name}
cp -pr target/site/apidocs/* %{buildroot}%{_javadocdir}/%{name}/
+mv %{buildroot}%{_javadocdir}/%{name}/legal/ADDITIONAL_LICENSE_INFO .
+mv %{buildroot}%{_javadocdir}/%{name}/legal/LICENSE .
+
%fdupes -s %{buildroot}%{_javadocdir}
%files -f .mfiles
%license LICENSE
+%license ADDITIONAL_LICENSE_INFO
%doc about.html
%files javadoc
@@ -119,6 +123,10 @@ cp -pr target/site/apidocs/* %{buildroot}%{_javadocdir}/%{name}/
%{_javadocdir}/%{name}
%changelog
+* Wed Dec 24 2025 Durga Jagadeesh Palli - 7.0.0-3
+- address license warning.
+- License verified
+
* Thu Oct 14 2021 Pawel Winogrodzki - 7.0.0-2
- Converting the 'Release' tag to the '[number].[distribution]' format.
diff --git a/SPECS-EXTENDED/osgi-core/osgi-core-build.xml b/SPECS-EXTENDED/osgi-core/osgi-core-build.xml
index eb4671f5416..cce1cd290e0 100644
--- a/SPECS-EXTENDED/osgi-core/osgi-core-build.xml
+++ b/SPECS-EXTENDED/osgi-core/osgi-core-build.xml
@@ -6,13 +6,13 @@
-
+
-
-
+
+
@@ -110,12 +110,12 @@
-
-
+
+
-
+
diff --git a/SPECS-EXTENDED/osgi-core/osgi-core.signatures.json b/SPECS-EXTENDED/osgi-core/osgi-core.signatures.json
index 604efa9f425..3a42ec49814 100644
--- a/SPECS-EXTENDED/osgi-core/osgi-core.signatures.json
+++ b/SPECS-EXTENDED/osgi-core/osgi-core.signatures.json
@@ -1,8 +1,8 @@
{
"Signatures": {
"LICENSE-2.0": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30",
- "osgi-core-build.xml": "d9499d11320d38261befe31bbdbfbd4552762fcb6ea8d9ee24af3f39db938d41",
- "osgi.core-7.0.0-sources.jar": "e25ca4d936521cd1cd67f655ec01f57ce5e0316be9edc99f8a2f985580b10f9c",
- "osgi.core-7.0.0.pom": "d51d5fd23e1e6e0d3babdbd82a2b922e3a7ddbe19dadc0e00504affb9090098e"
+ "osgi-core-build.xml": "476eb29bb6b1fb401bc4da55d5725c07678a377e843c8d4820287a91da84bdac",
+ "osgi.core-8.0.0-sources.jar": "df92374f65300db3b22927ef5d0cb654db2ba0cfba459c45917bf8735920b280",
+ "osgi.core-8.0.0.pom": "651f76ba29bb4392d36aea56f7d0b0c82fc4917024d9e6a843774bba5015eb53"
}
-}
+}
\ No newline at end of file
diff --git a/SPECS-EXTENDED/osgi-core/osgi-core.spec b/SPECS-EXTENDED/osgi-core/osgi-core.spec
index 59faea118cd..f1d9df81702 100644
--- a/SPECS-EXTENDED/osgi-core/osgi-core.spec
+++ b/SPECS-EXTENDED/osgi-core/osgi-core.spec
@@ -3,7 +3,7 @@ Distribution: Azure Linux
#
# spec file for package osgi-core
#
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,8 +19,8 @@ Distribution: Azure Linux
Name: osgi-core
-Version: 7.0.0
-Release: 2%{?dist}
+Version: 8.0.0
+Release: 1%{?dist}
Summary: OSGi Core API
License: Apache-2.0
Group: Development/Libraries/Java
@@ -31,13 +31,13 @@ Source2: http://www.apache.org/licenses/LICENSE-2.0
Source3: %{name}-build.xml
BuildRequires: ant
BuildRequires: fdupes
-BuildRequires: javapackages-local-bootstrap
+BuildRequires: javapackages-local-bootstrap >= 6
BuildRequires: osgi-annotation
BuildRequires: unzip
BuildArch: noarch
%description
-OSGi Core Release 7, Interfaces and Classes for use in compiling bundles.
+OSGi Core Release 8, Interfaces and Classes for use in compiling bundles.
%package javadoc
Summary: API documentation for %{name}
@@ -94,16 +94,24 @@ install -pm 0644 pom.xml %{buildroot}%{_mavenpomdir}/%{name}/osgi.core.pom
# javadoc
install -dm 0755 %{buildroot}%{_javadocdir}/%{name}
cp -pr target/site/apidocs/* %{buildroot}%{_javadocdir}/%{name}/
+mv %{buildroot}%{_javadocdir}/%{name}/legal/ADDITIONAL_LICENSE_INFO .
+mv %{buildroot}%{_javadocdir}/%{name}/legal/LICENSE .
+
%fdupes -s %{buildroot}%{_javadocdir}
%files -f .mfiles
%license LICENSE
+%license ADDITIONAL_LICENSE_INFO
%files javadoc
%license LICENSE
%{_javadocdir}/%{name}
%changelog
+* Wed Dec 17 2025 Durga Jagadeesh Palli - 8.0.0-1
+- Upgrade to 8.0.0 (Reference: openSUSE Tumbleweed)
+- License verified
+
* Thu Oct 14 2021 Pawel Winogrodzki - 7.0.0-2
- Converting the 'Release' tag to the '[number].[distribution]' format.
diff --git a/SPECS-EXTENDED/osgi-core/osgi.core-7.0.0.pom b/SPECS-EXTENDED/osgi-core/osgi.core-8.0.0.pom
similarity index 75%
rename from SPECS-EXTENDED/osgi-core/osgi.core-7.0.0.pom
rename to SPECS-EXTENDED/osgi-core/osgi.core-8.0.0.pom
index ee61e137004..c15b493c331 100644
--- a/SPECS-EXTENDED/osgi-core/osgi.core-7.0.0.pom
+++ b/SPECS-EXTENDED/osgi-core/osgi.core-8.0.0.pom
@@ -3,8 +3,8 @@
4.0.0
org.osgi
osgi.core
- 7.0.0
- OSGi Core Release 7, Interfaces and Classes for use in compiling bundles
+ 8.0.0
+ OSGi Core Release 8, Interfaces and Classes for use in compiling bundles
org.osgi:osgi.core
https://www.osgi.org/
@@ -14,7 +14,7 @@
Apache-2.0
- http://www.apache.org/licenses/LICENSE-2.0
+ https://www.apache.org/licenses/LICENSE-2.0
repo
Apache License, Version 2.0
@@ -23,7 +23,7 @@
https://osgi.org/gitweb/build.git
scm:git:https://osgi.org/git/build.git
scm:git:https://osgi.org/git/build.git
- hudson-build.core-1432
+ r8-core-final
@@ -34,4 +34,12 @@
https://www.osgi.org/
+
+
+ org.osgi
+ osgi.annotation
+ 7.0.0
+ provided
+
+
diff --git a/SPECS-EXTENDED/pacemaker/pacemaker.signatures.json b/SPECS-EXTENDED/pacemaker/pacemaker.signatures.json
index 4655a8b80a3..2d6c6f2e47e 100644
--- a/SPECS-EXTENDED/pacemaker/pacemaker.signatures.json
+++ b/SPECS-EXTENDED/pacemaker/pacemaker.signatures.json
@@ -1,5 +1,6 @@
{
"Signatures": {
- "pacemaker-2.1.5.tar.gz": "7654b78f08d4994b9fd31b8592addbd7f4b173e2cbf30336722419f1ce45e185"
+ "pacemaker-3.0.1.tar.gz": "17a823c52d5448de817162f334b038598e22ea3e24e63a8819f978fac2b252e4",
+ "pacemaker.sysusers": "b599209cf97e03f192393c16ca8a93ffd8ddcb1ea9db73a60d6480fa7d89800b"
}
}
diff --git a/SPECS-EXTENDED/pacemaker/pacemaker.spec b/SPECS-EXTENDED/pacemaker/pacemaker.spec
index a13e7282f1c..3f5780788dd 100644
--- a/SPECS-EXTENDED/pacemaker/pacemaker.spec
+++ b/SPECS-EXTENDED/pacemaker/pacemaker.spec
@@ -1,3 +1,12 @@
+#
+# Copyright 2008-2023 the Pacemaker project contributors
+#
+# The version control history for this file may have further details.
+#
+# This source code is licensed under the GNU General Public License version 2
+# or later (GPLv2+) WITHOUT ANY WARRANTY.
+#
+
# User-configurable globals and defines to control package behavior
# (these should not test {with X} values, which are declared later)
@@ -8,15 +17,25 @@
## Where to install Pacemaker documentation
%global pcmk_docdir %{_docdir}/%{name}
-## Where bug reports should be submitted
-## Leave bug_url undefined to use ClusterLabs default, others define it here
+## GitHub entity that distributes source (for ease of using a fork)
+%global github_owner ClusterLabs
+
## What to use as the OCF resource agent root directory
%global ocf_root %{_prefix}/lib/ocf
-## Add option to enable support for stonith/external fencing agents
-%bcond_with stonithd
+## Since git v2.11, the extent of abbreviation is autoscaled by default
+## (used to be constant of 7), so we need to convey it for non-tags, too.
+%global commit_abbrev 9
+
+# Define conditionals so that "rpmbuild --with " and
+# "rpmbuild --without " can enable and disable specific features
+
+
+## Add option for Linux-HA (stonith/external) fencing agent support
+%bcond_with linuxha
+
## Add option for whether to support storing sensitive information outside CIB
%bcond_without cibsecrets
@@ -38,16 +57,16 @@
## after upgrading to versions that support synchronization.
%bcond_without sbd_sync
-## NOTE: skip --with upstart_job
## Add option to turn off hardening of libraries and daemon executables
-%bcond_with hardening
-
-## Add option to enable (or disable) links for legacy daemon names
-%bcond_with legacy_links
+%bcond_without hardening
# Define globals for convenient use later
+## Portion of export/dist tarball name after "pacemaker-", and release version
+%define archive_version %(c=%{commit}; echo ${c:0:%{commit_abbrev}})
+%define archive_github_url %{archive_version}#/%{name}-%{archive_version}.tar.gz
+
## Base GnuTLS cipher priorities (presumably only the initial, required keyword)
## overridable with "rpmbuild --define 'pcmk_gnutls_priorities PRIORITY-SPEC'"
%define gnutls_priorities %{?pcmk_gnutls_priorities}%{!?pcmk_gnutls_priorities:@SYSTEM}
@@ -59,101 +78,143 @@
%global pkgname_bzip2_devel bzip2-devel
%global pkgname_docbook_xsl docbook-style-xsl
%global pkgname_gettext gettext-devel
-%global pkgname_gnutls_devel gnutls-devel
%global pkgname_shadow_utils shadow-utils
%global pkgname_procps procps-ng
%global pkgname_glue_libs cluster-glue-libs
%global pkgname_pcmk_libs %{name}-libs
-%global hacluster_id 189
## Distro-specific configuration choices
-### Use 2.0-style output when other distro packages don't support current output
-%global compat20 --enable-compat-2.0
-
-### Default concurrent-fencing to true when distro prefers that
-%global concurrent_fencing --with-concurrent-fencing-default=true
-
### Default resource-stickiness to 1 when distro prefers that
%global resource_stickiness --with-resource-stickiness-default=1
+
+# Python-related definitions
+
+## Turn off auto-compilation of Python files outside Python specific paths,
+## so there's no risk that unexpected "__python" macro gets picked to do the
+## RPM-native byte-compiling there (only "{_datadir}/pacemaker/tests" affected)
+## -- distro-dependent tricks or automake's fallback to be applied there
+%if %{defined _python_bytecompile_extra}
+%global _python_bytecompile_extra 0
+%else
+### the statement effectively means no RPM-native byte-compiling will occur at
+### all, so distro-dependent tricks for Python-specific packages to be applied
+%global __os_install_post %(echo '%{__os_install_post}' | {
+ sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g'; })
+%endif
+
## Prefer Python 3 definitions explicitly, in case 2 is also available
+%if %{defined __python3}
%global python_name python3
%global python_path %{__python3}
%define python_site %{?python3_sitelib}%{!?python3_sitelib:%(
%{python_path} -c 'from distutils.sysconfig import get_python_lib as gpl; print(gpl(1))' 2>/dev/null)}
+%else
+%if %{defined python_version}
+%global python_name python%(echo %{python_version} | cut -d'.' -f1)
+%define python_path %{?__python}%{!?__python:/usr/bin/%{python_name}}
+%else
+%global python_name python
+%global python_path %{?__python}%{!?__python:/usr/bin/python%{?python_pkgversion}}
+%endif
+%define python_site %{?python_sitelib}%{!?python_sitelib:%(
+ %{python_name} -c 'from distutils.sysconfig import get_python_lib as gpl; print(gpl(1))' 2>/dev/null)}
+%endif
# Keep sane profiling data if requested
%if %{with profiling}
+
## Disable -debuginfo package and stripping binaries/libraries
%define debug_package %{nil}
+
%endif
-Summary: Scalable High-Availability cluster resource manager
+
Name: pacemaker
-Version: 2.1.5
-Release: 5%{?dist}
-License: GPLv2+ and LGPLv2+
+Summary: Scalable High-Availability cluster resource manager
+Version: 3.0.1
+Release: 1%{?dist}
+Vendor: Microsoft Corporation
+Distribution: Azure Linux
+License: GPL-2.0-or-later AND LGPL-2.1-or-later
Url: https://www.clusterlabs.org/
-Source0: https://github.com/ClusterLabs/pacemaker/archive/refs/tags/Pacemaker-2.1.5.tar.gz#/%{name}-%{version}.tar.gz
-Requires: resource-agents
-Requires: %{pkgname_pcmk_libs}%{?_isa} = %{version}-%{release}
-Requires: %{name}-cluster-libs%{?_isa} = %{version}-%{release}
-Requires: %{name}-cli = %{version}-%{release}
+
+Source0: https://github.com/ClusterLabs/pacemaker/archive/refs/tags/Pacemaker-%{version}.tar.gz#/%{name}-%{version}.tar.gz
+Source1: pacemaker.sysusers
+
+Requires: resource-agents
+Requires: %{pkgname_pcmk_libs}%{?_isa} = %{version}-%{release}
+Requires: %{name}-cluster-libs%{?_isa} = %{version}-%{release}
+Requires: %{name}-cli = %{version}-%{release}
%{?systemd_requires}
-Requires: %{python_path}
-BuildRequires: %{python_name}-devel
+
+Requires: %{python_path}
+BuildRequires: %{python_name}-devel
+BuildRequires: %{python_name}-setuptools
+
# Pacemaker requires a minimum libqb functionality
-Requires: libqb >= 0.17.0
-#BuildRequires: libqb-devel >= 0.17.0
-BuildRequires: pkgconfig(libqb) >= 0.17.0
+Requires: libqb >= 1.0.1
+BuildRequires: libqb-devel >= 1.0.1
+
# Required basic build tools
-BuildRequires: autoconf
-BuildRequires: automake
-BuildRequires: coreutils
-BuildRequires: findutils
-BuildRequires: gcc
-BuildRequires: grep
-BuildRequires: libtool
+BuildRequires: autoconf
+BuildRequires: automake
+BuildRequires: coreutils
+BuildRequires: findutils
+BuildRequires: gcc
+BuildRequires: grep
+BuildRequires: libtool
%if %{defined pkgname_libtool_devel}
-BuildRequires: %{?pkgname_libtool_devel}
+BuildRequires: %{?pkgname_libtool_devel}
%endif
-BuildRequires: make
-BuildRequires: pkgconfig
-BuildRequires: sed
+BuildRequires: make
+BuildRequires: pkgconfig >= 0.28
+BuildRequires: sed
+
# Required for core functionality
-BuildRequires: pkgconfig(glib-2.0) >= 2.42
-BuildRequires: libxml2-devel
-BuildRequires: libxslt-devel
-BuildRequires: libuuid-devel
-BuildRequires: %{pkgname_bzip2_devel}
+BuildRequires: pkgconfig(glib-2.0) >= 2.42
+BuildRequires: pkgconfig(gnutls) >= 3.1.7
+BuildRequires: pkgconfig(libxml-2.0) >= 2.9.2
+BuildRequires: systemd-devel
+BuildRequires: libxslt-devel
+BuildRequires: pkgconfig(uuid)
+BuildRequires: %{pkgname_bzip2_devel}
+
# Enables optional functionality
-BuildRequires: pkgconfig(dbus-1)
-BuildRequires: %{pkgname_docbook_xsl}
-BuildRequires: %{pkgname_gnutls_devel}
-BuildRequires: help2man
-BuildRequires: ncurses-devel
-BuildRequires: pam-devel
-BuildRequires: %{pkgname_gettext} >= 0.18
+BuildRequires: pkgconfig(dbus-1) >= 1.5.12
+BuildRequires: %{pkgname_docbook_xsl}
+BuildRequires: help2man
+BuildRequires: ncurses-devel
+BuildRequires: pam-devel
+BuildRequires: %{pkgname_gettext} >= 0.18
+
# Required for "make check"
-%if 0%{?with_check}
-BuildRequires: libcmocka-devel
-%endif
-BuildRequires: corosync-devel >= 2.0.0
-%if %{with stonithd}
-BuildRequires: %{pkgname_glue_libs}-devel
+BuildRequires: libcmocka-devel >= 1.1.0
+BuildRequires: %{python_name}-psutil
+
+# RH patches are created by git, so we need git to apply them
+BuildRequires: git
+
+Requires: corosync >= 2.0.0
+BuildRequires: corosync-devel >= 2.0.0
+
+%if %{with linuxha}
+BuildRequires: %{pkgname_glue_libs}-devel
%endif
+
%if %{with doc}
-BuildRequires: asciidoc
-BuildRequires: inkscape
-BuildRequires: %{python_name}-sphinx
+BuildRequires: %{python_name}-sphinx
%endif
-BuildRequires: systemd
-Requires: corosync >= 2.0.0
+
+# Creation of Users / Groups
+BuildRequires: systemd-rpm-macros
+
# Booth requires this
-Provides: pacemaker-ticket-support = 2.0
-Provides: pcmk-cluster-manager = %{version}-%{release}
-Provides: pcmk-cluster-manager%{?_isa} = %{version}-%{release}
+Provides: pacemaker-ticket-support = 2.0
+
+Provides: pcmk-cluster-manager = %{version}-%{release}
+Provides: pcmk-cluster-manager%{?_isa} = %{version}-%{release}
%description
Pacemaker is an advanced, scalable High-Availability cluster resource
@@ -167,21 +228,21 @@ when related resources fail and can be configured to periodically check
resource health.
Available rpmbuild rebuild options:
- --with(out) : cibsecrets hardening nls pre_release profiling stonithd
+ --with(out) : cibsecrets hardening linuxha nls profiling
%package cli
-License: GPLv2+ and LGPLv2+
-Summary: Command line tools for controlling Pacemaker clusters
-Requires: %{pkgname_pcmk_libs}%{?_isa} = %{version}-%{release}
-Recommends: pcmk-cluster-manager = %{version}-%{release}
+License: GPL-2.0-or-later AND LGPL-2.1-or-later
+Summary: Command line tools for controlling Pacemaker clusters
+Requires: %{pkgname_pcmk_libs}%{?_isa} = %{version}-%{release}
+Recommends: pcmk-cluster-manager = %{version}-%{release}
# For crm_report
-Recommends: tar
-Recommends: bzip2
-Requires: perl-TimeDate
-Requires: %{pkgname_procps}
-Requires: psmisc
-Requires: %{python_name}-psutil
-Requires(post): coreutils
+Recommends: tar
+Recommends: bzip2
+Requires: perl-TimeDate
+Requires: %{pkgname_procps}
+Requires: psmisc
+Requires: %{python_name}-psutil
+Requires(post):coreutils
%description cli
Pacemaker is an advanced, scalable High-Availability cluster resource
@@ -192,16 +253,17 @@ to query and control the cluster from machines that may, or may not,
be part of the cluster.
%package -n %{pkgname_pcmk_libs}
-License: GPLv2+ and LGPLv2+
-Summary: Core Pacemaker libraries
-Requires(pre): %{pkgname_shadow_utils}
-Requires: %{name}-schemas = %{version}-%{release}
+License: GPL-2.0-or-later AND LGPL-2.1-or-later
+Summary: Core Pacemaker libraries
+Requires(pre): %{pkgname_shadow_utils}
+Requires: %{name}-schemas = %{version}-%{release}
# sbd 1.4.0+ supports the libpe_status API for pe_working_set_t
# sbd 1.4.2+ supports startup/shutdown handshake via pacemakerd-api
# and handshake defaults to enabled for rhel builds
# sbd 1.5.0+ handshake defaults to enabled with upstream sbd-release
# implicitly supports handshake defaults to enabled in this spec
-Conflicts: sbd < 1.5.0
+Conflicts: sbd < 1.5.0
+Conflicts: pcs < 0.11
%description -n %{pkgname_pcmk_libs}
Pacemaker is an advanced, scalable High-Availability cluster resource
@@ -211,9 +273,9 @@ The %{pkgname_pcmk_libs} package contains shared libraries needed for cluster
nodes and those just running the CLI tools.
%package cluster-libs
-License: GPLv2+ and LGPLv2+
-Summary: Cluster Libraries used by Pacemaker
-Requires: %{pkgname_pcmk_libs}%{?_isa} = %{version}-%{release}
+License: GPL-2.0-or-later AND LGPL-2.1-or-later
+Summary: Cluster Libraries used by Pacemaker
+Requires: %{pkgname_pcmk_libs}%{?_isa} = %{version}-%{release}
%description cluster-libs
Pacemaker is an advanced, scalable High-Availability cluster resource
@@ -222,16 +284,30 @@ manager.
The %{name}-cluster-libs package contains cluster-aware shared
libraries needed for nodes that will form part of the cluster nodes.
+%package -n %{python_name}-%{name}
+License: LGPL-2.1-or-later
+Summary: Python libraries for Pacemaker
+Requires: %{python_path}
+Requires: %{pkgname_pcmk_libs} = %{version}-%{release}
+BuildArch: noarch
+
+%description -n %{python_name}-%{name}
+Pacemaker is an advanced, scalable High-Availability cluster resource
+manager.
+
+The %{python_name}-%{name} package contains a Python library that can be used
+to interface with Pacemaker.
+
%package remote
-License: GPLv2+ and LGPLv2+
-Summary: Pacemaker remote executor daemon for non-cluster nodes
-Requires: %{pkgname_pcmk_libs}%{?_isa} = %{version}-%{release}
-Requires: %{name}-cli = %{version}-%{release}
-Requires: resource-agents
-# -remote can be fully independent of systemd
-%{?systemd_ordering}%{!?systemd_ordering:%{?systemd_requires}}
-Provides: pcmk-cluster-manager = %{version}-%{release}
-Provides: pcmk-cluster-manager%{?_isa} = %{version}-%{release}
+License: GPL-2.0-or-later AND LGPL-2.1-or-later
+Summary: Pacemaker remote executor daemon for non-cluster nodes
+Requires: %{pkgname_pcmk_libs}%{?_isa} = %{version}-%{release}
+Requires: %{name}-cli = %{version}-%{release}
+Requires: %{python_name}-%{name} = %{version}-%{release}
+Requires: resource-agents
+%{?systemd_requires}
+Provides: pcmk-cluster-manager = %{version}-%{release}
+Provides: pcmk-cluster-manager%{?_isa} = %{version}-%{release}
%description remote
Pacemaker is an advanced, scalable High-Availability cluster resource
@@ -242,20 +318,20 @@ which is capable of extending pacemaker functionality to remote
nodes not running the full corosync/cluster stack.
%package -n %{pkgname_pcmk_libs}-devel
-License: GPLv2+ and LGPLv2+
-Summary: Pacemaker development package
-Requires: %{pkgname_pcmk_libs}%{?_isa} = %{version}-%{release}
-Requires: %{name}-cluster-libs%{?_isa} = %{version}-%{release}
-Requires: %{pkgname_bzip2_devel}%{?_isa}
-Requires: corosync-devel >= 2.0.0
-Requires: glib2-devel%{?_isa}
-Requires: libqb-devel%{?_isa}
+License: GPL-2.0-or-later AND LGPL-2.1-or-later
+Summary: Pacemaker development package
+Requires: %{pkgname_pcmk_libs}%{?_isa} = %{version}-%{release}
+Requires: %{name}-cluster-libs%{?_isa} = %{version}-%{release}
+Requires: %{pkgname_bzip2_devel}%{?_isa}
+Requires: corosync-devel >= 2.0.0
+Requires: glib2-devel%{?_isa}
+Requires: libqb-devel%{?_isa} >= 1.0.1
%if %{defined pkgname_libtool_devel_arch}
-Requires: %{?pkgname_libtool_devel_arch}
+Requires: %{?pkgname_libtool_devel_arch}
%endif
-Requires: libuuid-devel%{?_isa}
-Requires: libxml2-devel%{?_isa}
-Requires: libxslt-devel%{?_isa}
+Requires: libuuid-devel%{?_isa}
+Requires: libxml2-devel%{?_isa} >= 2.9.2
+Requires: libxslt-devel%{?_isa}
%description -n %{pkgname_pcmk_libs}-devel
Pacemaker is an advanced, scalable High-Availability cluster resource
@@ -265,25 +341,31 @@ The %{pkgname_pcmk_libs}-devel package contains headers and shared libraries
for developing tools for Pacemaker.
%package cts
-License: GPLv2+ and LGPLv2+
-Summary: Test framework for cluster-related technologies like Pacemaker
-Requires: %{python_path}
-Requires: %{pkgname_pcmk_libs} = %{version}-%{release}
-Requires: %{name}-cli = %{version}-%{release}
-Requires: %{pkgname_procps}
-Requires: psmisc
-BuildArch: noarch
-
+License: GPL-2.0-or-later AND LGPL-2.1-or-later
+Summary: Test framework for cluster-related technologies like Pacemaker
+Requires: %{python_path}
+Requires: %{pkgname_pcmk_libs} = %{version}-%{release}
+Requires: %{name}-cli = %{version}-%{release}
+Requires: %{pkgname_procps}
+Requires: psmisc
+BuildArch: noarch
+
+# systemd Python bindings are a separate package in some distros
+%if %{defined systemd_requires}
+%if %{defined fedora} || %{defined rhel}
+Requires: %{python_name}-systemd
+%endif
+%endif
%description cts
Test framework for cluster-related technologies like Pacemaker
%package doc
-License: CC-BY-SA-4.0
-Summary: Documentation for Pacemaker
-BuildArch: noarch
-Conflicts: %{name}-libs > %{version}-%{release}
-Conflicts: %{name}-libs < %{version}-%{release}
+License: CC-BY-SA-4.0
+Summary: Documentation for Pacemaker
+BuildArch: noarch
+Conflicts: %{name}-libs > %{version}-%{release}
+Conflicts: %{name}-libs < %{version}-%{release}
%description doc
Documentation for Pacemaker.
@@ -292,9 +374,9 @@ Pacemaker is an advanced, scalable High-Availability cluster resource
manager.
%package schemas
-License: GPLv2+
-Summary: Schemas and upgrade stylesheets for Pacemaker
-BuildArch: noarch
+License: GPL-2.0-or-later
+Summary: Schemas and upgrade stylesheets for Pacemaker
+BuildArch: noarch
%description schemas
Schemas and upgrade stylesheets for Pacemaker
@@ -303,10 +385,15 @@ Pacemaker is an advanced, scalable High-Availability cluster resource
manager.
%prep
-%autosetup -p1 -n %{name}-Pacemaker-%{version}
+%autosetup -n %{name}-Pacemaker-%{version} -S git_am -p 1
+# in f33 s390x complains but shouldn't hurt globally
+# as configure.ac is checking for support
+sed -i configure.ac -e "s/-Wall/-Wall -Wno-format-truncation/"
%build
-export systemdsystemunitdir=%{?_unitdir}%{!?_unitdir:no}
+
+export systemdsystemunitdir=%{?_unitdir}
+
%if %{with hardening}
# prefer distro-provided hardening flags in case they are defined
# through _hardening_{c,ld}flags macros, configure script will
@@ -321,12 +408,9 @@ export LDFLAGS_HARDENED_LIB="%{?_hardening_ldflags}"
./autogen.sh
-CFLAGS="%{optflags} -DQB_KILL_ATTRIBUTE_SECTION"
-
-%configure \
+%{configure} \
PYTHON=%{python_path} \
%{!?with_hardening: --disable-hardening} \
- %{?with_legacy_links: --enable-legacy-links} \
%{?with_profiling: --with-profiling} \
%{?with_cibsecrets: --with-cibsecrets} \
%{?with_nls: --enable-nls} \
@@ -334,32 +418,56 @@ CFLAGS="%{optflags} -DQB_KILL_ATTRIBUTE_SECTION"
%{?gnutls_priorities: --with-gnutls-priorities="%{gnutls_priorities}"} \
%{?bug_url: --with-bug-url=%{bug_url}} \
%{?ocf_root: --with-ocfdir=%{ocf_root}} \
- %{?concurrent_fencing} \
%{?resource_stickiness} \
- %{?compat20} \
--disable-static \
--with-initdir=%{_initrddir} \
--with-runstatedir=%{_rundir} \
--localstatedir=%{_var} \
- --with-nagios=true \
--with-version=%{version}-%{release}
-%make_build
+make %{_smp_mflags} V=1
+
+pushd python
+%py3_build
+popd
+
+%check
+make %{_smp_mflags} check
+{ cts/cts-scheduler --run load-stopped-loop \
+ && cts/cts-cli -V \
+ && touch .CHECKED
+} 2>&1 | sed 's/[fF]ail/faiil/g' # prevent false positives in rpmlint
+[ -f .CHECKED ] && rm -f -- .CHECKED
%install
-%make_install
+# skip automake-native Python byte-compilation, since RPM-native one (possibly
+# distro-confined to Python-specific directories, which is currently the only
+# relevant place, anyway) assures proper intrinsic alignment with wider system
+# (such as with py_byte_compile macro, which is concurrent Fedora/EL specific)
+make install \
+ DESTDIR=%{buildroot} V=1 docdir=%{pcmk_docdir} \
+ %{?_python_bytecompile_extra:%{?py_byte_compile:am__py_compile=true}}
+
+pushd python
+%py3_install
+popd
-mkdir -p %{buildroot}%{_localstatedir}/lib/rpm-state/%{name}
+mkdir -p %{buildroot}%{_datadir}/pacemaker/nagios/plugins-metadata
+for file in $(find %{nagios_name}-%{nagios_hash}/metadata -type f); do
+ install -m 644 $file %{buildroot}%{_datadir}/pacemaker/nagios/plugins-metadata
+done
+
+
+mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/lib/rpm-state/%{name}
# Don't package libtool archives
-find %{buildroot} -type f -name "*.la" -delete -print
+find %{buildroot} -name '*.la' -type f -print0 | xargs -0 rm -f
# Do not package these either
rm -f %{buildroot}/%{_sbindir}/fence_legacy
rm -f %{buildroot}/%{_mandir}/man8/fence_legacy.*
-%{py_byte_compile %{python_path} %{buildroot}%{_datadir}/pacemaker/tests}
-%{py_byte_compile %{python_path} %{buildroot}%{python_site}/cts}
+install -p -D -m 0644 %{SOURCE1} %{buildroot}%{_sysusersdir}/pacemaker.conf
%post
%systemd_post pacemaker.service
@@ -410,7 +518,7 @@ fi
if [ "$1" -eq 2 ]; then
# Package upgrade, not initial install:
# Move any pre-2.0 logs to new location to ensure they get rotated
- { mv -fbS.rpmsave %{_}//pacemaker.log* %{_var}/log/pacemaker \
+ { mv -fbS.rpmsave %{_var}/log/pacemaker.log* %{_var}/log/pacemaker \
|| mv -f %{_var}/log/pacemaker.log* %{_var}/log/pacemaker
} >/dev/null 2>/dev/null || :
fi
@@ -421,12 +529,6 @@ fi
%postun cli
%systemd_postun_with_restart crm_mon.service
-%pre -n %{pkgname_pcmk_libs}
-# @TODO Use sysusers.d:
-# https://fedoraproject.org/wiki/Changes/Adopting_sysusers.d_format
-getent group %{gname} >/dev/null || groupadd -r %{gname} -g %{hacluster_id}
-getent passwd %{uname} >/dev/null || useradd -r -g %{gname} -u %{hacluster_id} -s /sbin/nologin -c "cluster user" %{uname}
-exit 0
%ldconfig_scriptlets -n %{pkgname_pcmk_libs}
%ldconfig_scriptlets cluster-libs
@@ -434,27 +536,23 @@ exit 0
%files
###########################################################
%config(noreplace) %{_sysconfdir}/sysconfig/pacemaker
+%config(noreplace) %{_sysconfdir}/logrotate.d/pacemaker
%{_sbindir}/pacemakerd
%{_unitdir}/pacemaker.service
-%exclude %{_datadir}/pacemaker/nagios/plugins-metadata/*
-
-%exclude %{_libexecdir}/pacemaker/cts-log-watcher
%exclude %{_libexecdir}/pacemaker/cts-support
%exclude %{_sbindir}/pacemaker-remoted
-%exclude %{_sbindir}/pacemaker_remoted
%{_libexecdir}/pacemaker/*
-%{_sbindir}/crm_master
%{_sbindir}/fence_watchdog
+%doc %{_mandir}/man7/pacemaker-based.*
%doc %{_mandir}/man7/pacemaker-controld.*
%doc %{_mandir}/man7/pacemaker-schedulerd.*
%doc %{_mandir}/man7/pacemaker-fenced.*
%doc %{_mandir}/man7/ocf_pacemaker_controld.*
%doc %{_mandir}/man7/ocf_pacemaker_remote.*
-%doc %{_mandir}/man8/crm_master.*
%doc %{_mandir}/man8/fence_watchdog.*
%doc %{_mandir}/man8/pacemakerd.*
@@ -462,16 +560,15 @@ exit 0
%license licenses/GPLv2
%license COPYING
-%doc ChangeLog
+%doc ChangeLog.md
-%dir %attr (750, %{uname}, %{gname}) %{_sharedstatedir}/pacemaker/cib
-%dir %attr (750, %{uname}, %{gname}) %{_sharedstatedir}/pacemaker/pengine
+%dir %attr (750, %{uname}, %{gname}) %{_var}/lib/pacemaker/cib
+%dir %attr (750, %{uname}, %{gname}) %{_var}/lib/pacemaker/pengine
%{ocf_root}/resource.d/pacemaker/controld
%{ocf_root}/resource.d/pacemaker/remote
%files cli
%dir %attr (750, root, %{gname}) %{_sysconfdir}/pacemaker
-%config(noreplace) %{_sysconfdir}/logrotate.d/pacemaker
%config(noreplace) %{_sysconfdir}/sysconfig/crm_mon
%{_unitdir}/crm_mon.service
@@ -485,6 +582,7 @@ exit 0
%{_sbindir}/crm_diff
%{_sbindir}/crm_error
%{_sbindir}/crm_failcount
+%{_sbindir}/crm_master
%{_sbindir}/crm_mon
%{_sbindir}/crm_node
%{_sbindir}/crm_resource
@@ -505,37 +603,43 @@ exit 0
%{_datadir}/snmp/mibs/PCMK-MIB.txt
%exclude %{ocf_root}/resource.d/pacemaker/controld
-%exclude %{ocf_root}/resource.d/pacemaker/o2cb
%exclude %{ocf_root}/resource.d/pacemaker/remote
%dir %{ocf_root}
%dir %{ocf_root}/resource.d
%{ocf_root}/resource.d/pacemaker
-%doc %{_mandir}/man7/*
+%doc %{_mandir}/man7/*pacemaker*
+%exclude %{_mandir}/man7/pacemaker-based.*
%exclude %{_mandir}/man7/pacemaker-controld.*
%exclude %{_mandir}/man7/pacemaker-schedulerd.*
%exclude %{_mandir}/man7/pacemaker-fenced.*
%exclude %{_mandir}/man7/ocf_pacemaker_controld.*
-%exclude %{_mandir}/man7/ocf_pacemaker_o2cb.*
%exclude %{_mandir}/man7/ocf_pacemaker_remote.*
-%doc %{_mandir}/man8/*
-%exclude %{_mandir}/man8/crm_master.*
+%doc %{_mandir}/man8/crm*.8.gz
+%doc %{_mandir}/man8/attrd_updater.*
+%doc %{_mandir}/man8/cibadmin.*
+%if %{with cibsecrets}
+ %doc %{_mandir}/man8/cibsecret.*
+%endif
%exclude %{_mandir}/man8/fence_watchdog.*
%exclude %{_mandir}/man8/pacemakerd.*
%exclude %{_mandir}/man8/pacemaker-remoted.*
+%doc %{_mandir}/man8/iso8601.*
+%doc %{_mandir}/man8/stonith_admin.*
%license licenses/GPLv2
%license COPYING
-%doc ChangeLog
+%doc ChangeLog.md
-%dir %attr (750, %{uname}, %{gname}) %{_sharedstatedir}/pacemaker
-%dir %attr (750, %{uname}, %{gname}) %{_sharedstatedir}/pacemaker/blackbox
-%dir %attr (750, %{uname}, %{gname}) %{_sharedstatedir}/pacemaker/cores
+%dir %attr (750, %{uname}, %{gname}) %{_var}/lib/pacemaker
+%dir %attr (750, %{uname}, %{gname}) %{_var}/lib/pacemaker/blackbox
+%dir %attr (750, %{uname}, %{gname}) %{_var}/lib/pacemaker/cores
%dir %attr (770, %{uname}, %{gname}) %{_var}/log/pacemaker
%dir %attr (770, %{uname}, %{gname}) %{_var}/log/pacemaker/bundles
-%files -n %{pkgname_pcmk_libs} %{?with_nls:-f %{name}.lang}
+%files -n %{pkgname_pcmk_libs} %{?with_nls:-f\\\\\\ %{name}.lang}
+%{_sysusersdir}/pacemaker.conf
%{_libdir}/libcib.so.*
%{_libdir}/liblrmd.so.*
%{_libdir}/libcrmservice.so.*
@@ -546,13 +650,21 @@ exit 0
%{_libdir}/libstonithd.so.*
%license licenses/LGPLv2.1
%license COPYING
-%doc ChangeLog
+%doc ChangeLog.md
%files cluster-libs
%{_libdir}/libcrmcluster.so.*
%license licenses/LGPLv2.1
%license COPYING
-%doc ChangeLog
+%doc ChangeLog.md
+
+%files -n %{python_name}-%{name}
+%{python3_sitelib}/pacemaker/
+%{python3_sitelib}/pacemaker-*.egg-info
+%exclude %{python3_sitelib}/pacemaker/_cts/
+%license licenses/LGPLv2.1
+%license COPYING
+%doc ChangeLog.md
%files remote
%config(noreplace) %{_sysconfdir}/sysconfig/pacemaker
@@ -563,34 +675,46 @@ exit 0
%{_unitdir}/pacemaker_remote.service
%{_sbindir}/pacemaker-remoted
-%{_sbindir}/pacemaker_remoted
%{_mandir}/man8/pacemaker-remoted.*
%license licenses/GPLv2
%license COPYING
-%doc ChangeLog
+%doc ChangeLog.md
%files doc
%doc %{pcmk_docdir}
+%exclude %{pcmk_docdir}/licenses/*
+%exclude %{pcmk_docdir}/COPYING
+%license COPYING
+%license licenses/GPLv2
%license licenses/CC-BY-SA-4.0
+%license licenses/RevisedBSD
+%license licenses/LGPLv2.1
%files cts
-%{python_site}/cts
+%{python3_sitelib}/pacemaker/_cts/
%{_datadir}/pacemaker/tests
-%{_libexecdir}/pacemaker/cts-log-watcher
%{_libexecdir}/pacemaker/cts-support
%license licenses/GPLv2
%license COPYING
-%doc ChangeLog
+%doc ChangeLog.md
%files -n %{pkgname_pcmk_libs}-devel
%{_includedir}/pacemaker
-%{_libdir}/*.so
-%{_libdir}/pkgconfig/*.pc
+%{_libdir}/libcib.so
+%{_libdir}/liblrmd.so
+%{_libdir}/libcrmservice.so
+%{_libdir}/libcrmcommon.so
+%{_libdir}/libpe_status.so
+%{_libdir}/libpe_rules.so
+%{_libdir}/libpacemaker.so
+%{_libdir}/libstonithd.so
+%{_libdir}/libcrmcluster.so
+%{_libdir}/pkgconfig/*pacemaker*.pc
%license licenses/LGPLv2.1
%license COPYING
-%doc ChangeLog
+%doc ChangeLog.md
%files schemas
%license licenses/GPLv2
@@ -602,6 +726,10 @@ exit 0
%{_datadir}/pkgconfig/pacemaker-schemas.pc
%changelog
+* Mon Nov 10 2025 Jyoti kanase - 3.0.1-1
+- Upgrade to 3.0.1
+- License Verified.
+
* Tue Sep 19 2023 Jon Slobodzian - 2.1.5-5
- Fix build issue for systemd/systemd-bootstrap confusion
diff --git a/SPECS-EXTENDED/pacemaker/pacemaker.sysusers b/SPECS-EXTENDED/pacemaker/pacemaker.sysusers
new file mode 100644
index 00000000000..daadb965e2a
--- /dev/null
+++ b/SPECS-EXTENDED/pacemaker/pacemaker.sysusers
@@ -0,0 +1,3 @@
+#Type Name ID GECOS Home directory Shell
+g haclient 189
+u hacluster 189:haclient "cluster user" /var/lib/pacemaker /sbin/nologin
diff --git a/SPECS-EXTENDED/perl-Alien-pkgconf/perl-Alien-pkgconf.signatures.json b/SPECS-EXTENDED/perl-Alien-pkgconf/perl-Alien-pkgconf.signatures.json
index 5c7ddab055e..69f3e942533 100644
--- a/SPECS-EXTENDED/perl-Alien-pkgconf/perl-Alien-pkgconf.signatures.json
+++ b/SPECS-EXTENDED/perl-Alien-pkgconf/perl-Alien-pkgconf.signatures.json
@@ -1,5 +1,5 @@
{
"Signatures": {
- "perl-Alien-pkgconf-0.20.tar.gz": "93ac0adcaccfa5ca3151bc9a4a3cc5e9d0591696b6ee059a3311f1e1cb49410d"
+ "Alien-pkgconf-0.21.tar.gz": "b9abab04605aab11089005b98e5ff202b93912cbde2ec67ee688f278ea77f765"
}
-}
\ No newline at end of file
+}
diff --git a/SPECS-EXTENDED/perl-Alien-pkgconf/perl-Alien-pkgconf.spec b/SPECS-EXTENDED/perl-Alien-pkgconf/perl-Alien-pkgconf.spec
index 0b7eea0900a..c83412f3fc6 100644
--- a/SPECS-EXTENDED/perl-Alien-pkgconf/perl-Alien-pkgconf.spec
+++ b/SPECS-EXTENDED/perl-Alien-pkgconf/perl-Alien-pkgconf.spec
@@ -1,15 +1,16 @@
Name: perl-Alien-pkgconf
-Version: 0.20
+Version: 0.21
Release: 1%{?dist}
Summary: Discover pkgconf and libpkgconf
-# Other files: GPL+ or Artistic
+# Other files: GPL-1.0-or-later OR Artistic-1.0-Perl
## Not used
# pkgconf-1.3.9/aclocal.m4: GPLv3+ with exceptions
-License: GPL+ or Artistic
+License: GPL-1.0-or-later OR Artistic-1.0-Perl
+SourceLicense: (%{license}) AND GPL-3.0-or-later WITH Autoconf-exception-macro
Vendor: Microsoft Corporation
Distribution: Azure Linux
URL: https://metacpan.org/release/Alien-pkgconf
-Source0: https://cpan.metacpan.org/authors/id/P/PL/PLICEASE/Alien-pkgconf-%{version}.tar.gz#/perl-Alien-pkgconf-%{version}.tar.gz
+Source0: https://cpan.metacpan.org/authors/id/P/PL/PLICEASE/Alien-pkgconf-%{version}.tar.gz
Patch0: Alien-pkgconf-0.19-Accept-pkgconf-1.9.patch
# This is a full-arch package because it stores data about arch-specific
# libpkgconf.so library and it stores them into arch-specific directory.
@@ -58,7 +59,7 @@ but rather to provide the necessary package by a CPAN module that needs
libpkgconf, such as PkgConfig::LibPkgConf.
%prep
-%setup -q -n Alien-pkgconf-%{version}
+%autosetup -p1 -n Alien-pkgconf-%{version}
%build
unset ALIEN_FORCE ALIEN_INSTALL_TYPE
@@ -72,11 +73,20 @@ perl Makefile.PL INSTALLDIRS=vendor NO_PACKLIST=1 NO_PERLLOCAL=1
%files
%license LICENSE
%doc Changes README
-%{perl_vendorarch}/auto/*
-%{perl_vendorarch}/Alien
-%{_mandir}/man3/*
+%dir %{perl_vendorarch}/auto/Alien
+%{perl_vendorarch}/auto/Alien/pkgconf
+%dir %{perl_vendorarch}/auto/share
+%dir %{perl_vendorarch}/auto/share/dist
+%{perl_vendorarch}/auto/share/dist/Alien-pkgconf
+%dir %{perl_vendorarch}/Alien
+%{perl_vendorarch}/Alien/pkgconf.pm
+%{_mandir}/man3/Alien::pkgconf.*
%changelog
+* Tue Dec 23 2025 Aditya Singh - 0.21-1
+- Upgrade to version 0.21
+- License verified
+
* Fri Mar 14 2025 Jyoti Kanase - 0.20-1
- Upgrade to 0.20
- License verified
diff --git a/SPECS-EXTENDED/perl-FFI-CheckLib/perl-FFI-CheckLib.signatures.json b/SPECS-EXTENDED/perl-FFI-CheckLib/perl-FFI-CheckLib.signatures.json
index abd85ecad0a..b5218b048cc 100644
--- a/SPECS-EXTENDED/perl-FFI-CheckLib/perl-FFI-CheckLib.signatures.json
+++ b/SPECS-EXTENDED/perl-FFI-CheckLib/perl-FFI-CheckLib.signatures.json
@@ -1,5 +1,5 @@
{
"Signatures": {
- "perl-FFI-CheckLib-0.26.tar.gz": "06e33bf0807f841626248197e8f39475ac50d1364a0336836c9b581d19a97f65"
+ "perl-FFI-CheckLib-0.31.tar.gz": "04d885fc377d44896e5ea1c4ec310f979bb04f2f18658a7e7a4d509f7e80bb80"
}
}
diff --git a/SPECS-EXTENDED/perl-FFI-CheckLib/perl-FFI-CheckLib.spec b/SPECS-EXTENDED/perl-FFI-CheckLib/perl-FFI-CheckLib.spec
index 206eb83c520..450f09fe86d 100644
--- a/SPECS-EXTENDED/perl-FFI-CheckLib/perl-FFI-CheckLib.spec
+++ b/SPECS-EXTENDED/perl-FFI-CheckLib/perl-FFI-CheckLib.spec
@@ -1,20 +1,22 @@
+Vendor: Microsoft Corporation
+Distribution: Azure Linux
# Run optional test
%{bcond_without perl_FFI_Changes_enables_optional_test}
Name: perl-FFI-CheckLib
-Version: 0.26
-Release: 3%{?dist}
+Version: 0.31
+Release: 2%{?dist}
Summary: Check that a library is available for FFI
-License: GPL+ or Artistic
-Vendor: Microsoft Corporation
-Distribution: Azure Linux
+License: GPL-1.0-or-later OR Artistic-1.0-Perl
URL: https://metacpan.org/release/FFI-CheckLib
Source0: https://cpan.metacpan.org/authors/id/P/PL/PLICEASE/FFI-CheckLib-%{version}.tar.gz#/perl-FFI-CheckLib-%{version}.tar.gz
BuildArch: noarch
+BuildRequires: coreutils
BuildRequires: make
BuildRequires: perl-generators
BuildRequires: perl-interpreter
BuildRequires: perl(:VERSION) >= 5.6
+BuildRequires: perl(Config)
BuildRequires: perl(ExtUtils::MakeMaker) >= 6.76
BuildRequires: perl(strict)
BuildRequires: perl(warnings)
@@ -22,16 +24,21 @@ BuildRequires: perl(warnings)
BuildRequires: perl(base)
BuildRequires: perl(Carp)
BuildRequires: perl(DynaLoader)
+BuildRequires: perl(Env)
BuildRequires: perl(Exporter)
+BuildRequires: perl(File::Basename)
BuildRequires: perl(File::Spec)
+# File::Which is used from private functions which are only called on Darwin.
+BuildRequires: perl(List::Util) >= 1.33
# Tests:
-BuildRequires: perl(Config)
+# File::Which is a run-time dependency on Darwin only. The code is exhibited by a test,
+# but never on Linux in production.
+BuildRequires: perl(File::Which)
BuildRequires: perl(lib)
BuildRequires: perl(Test2::API) >= 1.302015
-BuildRequires: perl(Test2::Mock)
-BuildRequires: perl(Test2::Require::EnvVar) >= 0.000060
-BuildRequires: perl(Test2::Require::Module) >= 0.000060
-BuildRequires: perl(Test2::V0) >= 0.000060
+BuildRequires: perl(Test2::Require::EnvVar) >= 0.000121
+BuildRequires: perl(Test2::Require::Module) >= 0.000121
+BuildRequires: perl(Test2::V0) >= 0.000121
%if %{with perl_FFI_Changes_enables_optional_test}
# Optional tests:
BuildRequires: perl(Env)
@@ -39,8 +46,18 @@ BuildRequires: perl(Test::Exit)
# Test/More.pl is not helpful
# FFI::Platypus not used
%endif
-Requires: perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
Requires: perl(DynaLoader)
+Requires: perl(File::Basename)
+
+# Remove under-specified dependencies
+%global __requires_exclude %{?__requires_exclude:%{__requires_exclude}|}^perl\\((Test2::API|Test2::Require::EnvVar|Test2::Require::Module|Test2::V0)\\)$
+
+# Remove private modules
+%global __requires_exclude %{__requires_exclude}|^perl\\((Test2::Plugin::FauxOS|Test2::Tools::FauxDynaLoader|Test2::Tools::NoteStderr)\\)
+%global __provides_exclude %{?__provides_exclude:%{__provides_exclude}|}^perl\\((Alien::libbar|Test2::Plugin::FauxOS|Test2::Tools::FauxDynaLoader|Test2::Tools::NoteStderr)\\)
+
+# Removed dependency on external modules perl(FFI::Platypus) and perl(Test2::Tools::Process) to correct install failure.
+%global __requires_exclude %{?__requires_exclude:%{__requires_exclude}|}(^perl\\(FFI::Platypus\\)$|^perl\\(Test2::Tools::Process\\)$)
%description
This Perl module checks whether a particular dynamic library is available for
@@ -50,28 +67,76 @@ packages are not installed. It also provides a find_lib function that will
return the full path to the found dynamic library, which can be feed directly
into FFI::Platypus or FFI::Raw.
+%if %{with tests}
+%package tests
+Summary: Tests for %{name}
+Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
+Requires: perl-Test-Harness
+# Tests:
+# File::Which is a run-time dependency on Darwin only. The code is exhibited by a test,
+# but never on Linux in production.
+Requires: perl(File::Which)
+Requires: perl(Test2::API) >= 1.302015
+Requires: perl(Test2::Require::EnvVar) >= 0.000121
+Requires: perl(Test2::Require::Module) >= 0.000121
+Requires: perl(Test2::V0) >= 0.000121
+
+%description tests
+Tests from %{name}. Execute them
+with "%{_libexecdir}/%{name}/test".
+%endif
+
%prep
%setup -q -n FFI-CheckLib-%{version}
-
+%if !%{with perl_FFI_Changes_enables_optional_test}
+rm t/ffi_checklib__exit.t
+perl -i -ne 'print $_ unless m{\A\Qt/ffi_checklib__exit.t\E\b}' MANIFEST
+%endif
+# Help generators to recognize Perl scripts
+for F in t/*.t; do
+ perl -i -MConfig -ple 'print $Config{startperl} if $. == 1 && !s{\A#!\s*perl}{$Config{startperl}}' "$F"
+ chmod +x "$F"
+done
+
%build
perl Makefile.PL INSTALLDIRS=vendor NO_PACKLIST=1 NO_PERLLOCAL=1
%{make_build}
%install
%{make_install}
-%{_fixperms} $RPM_BUILD_ROOT/*
-
+%{_fixperms} %{buildroot}/*
+# Install tests
+mkdir -p %{buildroot}%{_libexecdir}/%{name}
+cp -a corpus t %{buildroot}%{_libexecdir}/%{name}
+cat > %{buildroot}%{_libexecdir}/%{name}/test << 'EOF'
+#!/bin/sh
+unset CIPSOMETHING FFI_CHECKLIB_PATH
+cd %{_libexecdir}/%{name} && exec prove -I . -j "$(getconf _NPROCESSORS_ONLN)"
+EOF
+chmod +x %{buildroot}%{_libexecdir}/%{name}/test
+
%check
-unset EXTRA_CI
+unset CIPSOMETHING FFI_CHECKLIB_PATH
+export HARNESS_OPTIONS=j$(perl -e 'if ($ARGV[0] =~ /.*-j([0-9][0-9]*).*/) {print $1} else {print 1}' -- '%{?_smp_mflags}')
make test
%files
%license LICENSE
%doc Changes README
-%{perl_vendorlib}/*
-%{_mandir}/man3/*
+%dir %{perl_vendorlib}/FFI
+%{perl_vendorlib}/FFI/CheckLib.pm
+%{_mandir}/man3/FFI::CheckLib.*
+%{_libexecdir}/%{name}
+
%changelog
+* Wed Dec 24 2025 Aditya Singh - 0.31-2
+- Removed dependency on external modules to correct install failure.
+
+* Thu Nov 20 2025 Akarsh Chaudhary - 0.31-1
+- Upgrade to version 0.31 (license: MIT).
+- License verified
+
* Fri Oct 15 2021 Pawel Winogrodzki - 0.26-3
- Initial CBL-Mariner import from Fedora 32 (license: MIT).
diff --git a/SPECS-EXTENDED/perl-Params-ValidationCompiler/perl-Params-ValidationCompiler.signatures.json b/SPECS-EXTENDED/perl-Params-ValidationCompiler/perl-Params-ValidationCompiler.signatures.json
index 0e6a212c303..8086e2f3ae1 100644
--- a/SPECS-EXTENDED/perl-Params-ValidationCompiler/perl-Params-ValidationCompiler.signatures.json
+++ b/SPECS-EXTENDED/perl-Params-ValidationCompiler/perl-Params-ValidationCompiler.signatures.json
@@ -1,5 +1,5 @@
{
"Signatures": {
- "perl-Params-ValidationCompiler-0.30.tar.gz": "dc5bee23383be42765073db284bed9fbd819d4705ad649c20b644452090d16cb"
+ "Params-ValidationCompiler-0.31.tar.gz": "7b6497173f1b6adb29f5d51d8cf9ec36d2f1219412b4b2410e9d77a901e84a6d"
}
}
diff --git a/SPECS-EXTENDED/perl-Params-ValidationCompiler/perl-Params-ValidationCompiler.spec b/SPECS-EXTENDED/perl-Params-ValidationCompiler/perl-Params-ValidationCompiler.spec
index 44a9b0a8129..49ba7d52aee 100644
--- a/SPECS-EXTENDED/perl-Params-ValidationCompiler/perl-Params-ValidationCompiler.spec
+++ b/SPECS-EXTENDED/perl-Params-ValidationCompiler/perl-Params-ValidationCompiler.spec
@@ -1,3 +1,5 @@
+Vendor: Microsoft Corporation
+Distribution: Azure Linux
# Run optional test
%if ! (0%{?rhel})
%bcond_without perl_Params_ValidationCompiler_enables_optional_test
@@ -6,14 +8,12 @@
%endif
Name: perl-Params-ValidationCompiler
-Version: 0.30
-Release: 7%{?dist}
+Version: 0.31
+Release: 1%{?dist}
Summary: Build an optimized subroutine parameter validator once, use it forever
-License: Artistic 2.0
-Vendor: Microsoft Corporation
-Distribution: Azure Linux
+License: Artistic-2.0
URL: https://metacpan.org/release/Params-ValidationCompiler
-Source0: https://cpan.metacpan.org/modules/by-module/Params/Params-ValidationCompiler-%{version}.tar.gz#/perl-Params-ValidationCompiler-%{version}.tar.gz
+Source0: https://cpan.metacpan.org/modules/by-module/Params/Params-ValidationCompiler-%{version}.tar.gz
BuildArch: noarch
# Build
BuildRequires: coreutils
@@ -24,7 +24,7 @@ BuildRequires: perl(ExtUtils::MakeMaker) > 6.75
# Module
BuildRequires: perl(B)
BuildRequires: perl(Carp)
-BuildRequires: perl(Class::XSAccessor)
+BuildRequires: perl(Class::XSAccessor) >= 1.17
BuildRequires: perl(Eval::Closure)
BuildRequires: perl(Exception::Class)
BuildRequires: perl(Exporter)
@@ -58,8 +58,7 @@ BuildRequires: perl(Types::Standard)
%endif
%endif
# Dependencies
-Requires: perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
-Recommends: perl(Class::XSAccessor)
+Recommends: perl(Class::XSAccessor) >= 1.17
Recommends: perl(Sub::Util) >= 1.40
%description
@@ -89,6 +88,10 @@ make test
%{_mandir}/man3/Params::ValidationCompiler::Exceptions.3*
%changelog
+* Mon Dec 22 2025 Akarsh Chaudhary - 0.31-1
+- Upgrade to version 0.31 (license: MIT).
+- License verified
+
* Fri Oct 15 2021 Pawel Winogrodzki - 0.30-7
- Initial CBL-Mariner import from Fedora 32 (license: MIT).
diff --git a/SPECS-EXTENDED/perl-PkgConfig-LibPkgConf/PkgConfig-LibPkgConf-0.11-Fix-resolving-flags-for-packages-with-a-name-differe.patch b/SPECS-EXTENDED/perl-PkgConfig-LibPkgConf/PkgConfig-LibPkgConf-0.11-Fix-resolving-flags-for-packages-with-a-name-differe.patch
new file mode 100644
index 00000000000..925ec103dc9
--- /dev/null
+++ b/SPECS-EXTENDED/perl-PkgConfig-LibPkgConf/PkgConfig-LibPkgConf-0.11-Fix-resolving-flags-for-packages-with-a-name-differe.patch
@@ -0,0 +1,99 @@
+From 39b8a0e8f664dc103a552dbab1cdccdab8ce3062 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?=
+Date: Tue, 7 Mar 2023 09:16:10 +0100
+Subject: [PATCH] Fix resolving flags for packages with a name different from
+ its identifier
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Alien-Build-2.77 tests revealed a bug in constructing a query for
+pkgconf-1.9 solver: If a package file had file name different from
+a Name value inside the file, the package was able to be found, but
+the flags solver searched for the Name and found nothing.
+
+Studying pre-pkgconf documentation shows that Name value is only
+a human-oriented display name and a base of the package file name
+should be used instead as a package identifier. This base name is
+stored into an id field of the package structure of pkgconf.
+
+This patch fixes it by using the id field instead. It also adds a test
+to prevent from future regressions.
+
+Signed-off-by: Petr Písař
+---
+ LibPkgConf.xs | 2 +-
+ MANIFEST | 1 +
+ corpus/lib4/bar.pc | 4 ++++
+ t/client.t | 14 +++++++++++++-
+ 4 files changed, 19 insertions(+), 2 deletions(-)
+ create mode 100644 corpus/lib4/bar.pc
+
+diff --git a/LibPkgConf.xs b/LibPkgConf.xs
+index 63c78fb..57e6892 100644
+--- a/LibPkgConf.xs
++++ b/LibPkgConf.xs
+@@ -117,7 +117,7 @@ solve_flags(pkgconf_pkg_t *package, my_client_t *client, int type,
+ #if LIBPKGCONF_VERSION >= 10900
+ if (sizeof(query_string) <=
+ snprintf(query_string, sizeof(query_string), "%s = %s",
+- package->realname, package->version))
++ package->id, package->version))
+ false;
+ pkgconf_queue_push(&query, query_string);
+ if (loaded_from_file)
+diff --git a/MANIFEST b/MANIFEST
+index 77378df..1eb4491 100644
+--- a/MANIFEST
++++ b/MANIFEST
+@@ -6,6 +6,7 @@ corpus/lib1/foo1a.pc
+ corpus/lib2/bar.pc
+ corpus/lib2/foo.pc
+ corpus/lib3/foo.pc
++corpus/lib4/bar.pc
+ INSTALL
+ lib/PkgConfig/LibPkgConf.pm
+ lib/PkgConfig/LibPkgConf/Client.pm
+diff --git a/corpus/lib4/bar.pc b/corpus/lib4/bar.pc
+new file mode 100644
+index 0000000..47e52dd
+--- /dev/null
++++ b/corpus/lib4/bar.pc
+@@ -0,0 +1,4 @@
++Name: foo
++Description: A pkg-config file whose identifier does not match its name
++Version: 1.2.3
++Cflags: -fPIC
+diff --git a/t/client.t b/t/client.t
+index 6c80f83..db115fe 100644
+--- a/t/client.t
++++ b/t/client.t
+@@ -206,7 +206,7 @@ subtest 'path attributes' => sub {
+
+ mkpath "$root/$_", 0, 0700 for qw(
+ foo bar baz ralph trans formers foo/lib bar/lib trans/lib formers/lib
+- foo/include bar/include trans/include formers/include
++ /foo/include bar/include trans/include formers/include
+ );
+
+ subtest 'search path' => sub {
+@@ -295,4 +295,16 @@ subtest 'global' => sub {
+
+ };
+
++subtest 'a package with a different name' => sub {
++
++ my $client = PkgConfig::LibPkgConf::Client->new( path => 'corpus/lib4' );
++
++ is( $client->find('foo'), undef, 'A human-readable name foo is ignored');
++
++ my $pkg = $client->find('bar');
++ isnt( $pkg, undef, 'An identifier bar is found' );
++ is( $pkg->cflags, '-fPIC ', 'Cflags are retrieved' );
++
++};
++
+ done_testing;
+--
+2.39.2
+
diff --git a/SPECS-EXTENDED/perl-PkgConfig-LibPkgConf/PkgConfig-LibPkgConf-0.11-adapt_to_pkgconf_1.9.4.patch b/SPECS-EXTENDED/perl-PkgConfig-LibPkgConf/PkgConfig-LibPkgConf-0.11-adapt_to_pkgconf_1.9.4.patch
new file mode 100644
index 00000000000..9a6cd94fbb7
--- /dev/null
+++ b/SPECS-EXTENDED/perl-PkgConfig-LibPkgConf/PkgConfig-LibPkgConf-0.11-adapt_to_pkgconf_1.9.4.patch
@@ -0,0 +1,1107 @@
+From 75e02d57bd188286c69469e92f75cd672c2bcb08 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?=
+Date: Thu, 23 Feb 2023 17:12:24 +0100
+Subject: [PATCH 1/8] Adapt to pkgconf-1.9.4
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Fixes error handled prototype.
+Adapts to passing flags to file_open.
+Adapts tests to no traling spaces (incompatible change).
+Works around a possible pkgconf regression with trailing null bytes.
+
+TODO: t/package.t fails on missing shared libs from dependencies.
+TODO: Restore compatibility with older pkgconfs.
+Signed-off-by: Petr Písař
+---
+ LibPkgConf.xs | 13 ++++++++++---
+ t/client.t | 2 +-
+ t/package.t | 28 ++++++++++++++--------------
+ t/simple.t | 8 ++++----
+ 4 files changed, 29 insertions(+), 22 deletions(-)
+
+diff --git a/LibPkgConf.xs b/LibPkgConf.xs
+index 3afa483..4055d40 100644
+--- a/LibPkgConf.xs
++++ b/LibPkgConf.xs
+@@ -14,7 +14,7 @@ struct my_client_t {
+ typedef struct my_client_t my_client_t;
+
+ static bool
+-my_error_handler(const char *msg, const pkgconf_client_t *_, const void *data)
++my_error_handler(const char *msg, const pkgconf_client_t *_, void *data)
+ {
+ dSP;
+
+@@ -243,7 +243,7 @@ _package_from_file(self, filename)
+ CODE:
+ fp = fopen(filename, "r");
+ if(fp != NULL)
+- RETVAL = PTR2IV(pkgconf_pkg_new_from_file(&self->client, filename, fp));
++ RETVAL = PTR2IV(pkgconf_pkg_new_from_file(&self->client, filename, fp, 0));
+ else
+ RETVAL = 0;
+ OUTPUT:
+@@ -385,6 +385,7 @@ _get_string(self, client, type)
+ INIT:
+ pkgconf_list_t unfiltered_list = PKGCONF_LIST_INITIALIZER;
+ pkgconf_list_t filtered_list = PKGCONF_LIST_INITIALIZER;
++ char *buffer;
+ size_t len;
+ int eflag;
+ int flags;
+@@ -411,8 +412,14 @@ _get_string(self, client, type)
+ len = pkgconf_fragment_render_len(&filtered_list, escape, NULL);
+ RETVAL = newSV(len == 1 ? len : len-1);
+ SvPOK_on(RETVAL);
++ buffer = SvPVX(RETVAL);
++ pkgconf_fragment_render_buf(&filtered_list, buffer, len, escape, NULL);
++ /*
++ * Trim trailing null bytes observed in pkgconf-1.9.4. Probably related to
++ * 648a2249fcb10bf679bdb587ef2bbddaab3023ad pkgconf commit.
++ */
++ while (len > 1 && buffer[len-2] == '\0') len--;
+ SvCUR_set(RETVAL, len-1);
+- pkgconf_fragment_render_buf(&filtered_list, SvPVX(RETVAL), len, escape, NULL);
+ pkgconf_fragment_free(&filtered_list);
+ pkgconf_fragment_free(&unfiltered_list);
+ OUTPUT:
+diff --git a/t/client.t b/t/client.t
+index 6c80f83..1850622 100644
+--- a/t/client.t
++++ b/t/client.t
+@@ -289,7 +289,7 @@ subtest 'global' => sub {
+ my $client = PkgConfig::LibPkgConf::Client->new( path => 'corpus/lib1', global => { prefix => '/klingon/autobot/force' } );
+ my $pkg = $client->find('foo');
+
+- is( $pkg->cflags, '-fPIC -I/klingon/autobot/force/include/foo ' );
++ is( $pkg->cflags, '-fPIC -I/klingon/autobot/force/include/foo' );
+
+ };
+
+diff --git a/t/package.t b/t/package.t
+index 8da6efb..a4b1e6d 100644
+--- a/t/package.t
++++ b/t/package.t
+@@ -43,9 +43,9 @@ subtest 'find' => sub {
+ is $pkg->version, '1.2.3', 'version';
+ is $pkg->description, 'A testing pkg-config file', 'description';
+
+- is $pkg->libs, '-L/test/lib -lfoo ', 'libs';
+- is $pkg->cflags, '-fPIC -I/test/include/foo ', 'cflags';
+- is $pkg->cflags_static, '-fPIC -I/test/include/foo -DFOO_STATIC ', 'cflags_static';
++ is $pkg->libs, '-L/test/lib -lfoo', 'libs';
++ is $pkg->cflags, '-fPIC -I/test/include/foo', 'cflags';
++ is $pkg->cflags_static, '-fPIC -I/test/include/foo -DFOO_STATIC', 'cflags_static';
+
+ my @libs = $pkg->list_libs;
+ my @cflags = $pkg->list_cflags;
+@@ -101,9 +101,9 @@ subtest 'package_from_file' => sub {
+ is $pkg->version, '1.2.3', 'version';
+ is $pkg->description, 'A testing pkg-config file', 'description';
+
+- is $pkg->libs, '-L/test/lib -lfoo ', 'libs';
+- is $pkg->cflags, '-fPIC -I/test/include/foo ', 'cflags';
+- is $pkg->cflags_static, '-fPIC -I/test/include/foo -DFOO_STATIC ', 'cflags_static';
++ is $pkg->libs, '-L/test/lib -lfoo', 'libs';
++ is $pkg->cflags, '-fPIC -I/test/include/foo', 'cflags';
++ is $pkg->cflags_static, '-fPIC -I/test/include/foo -DFOO_STATIC', 'cflags_static';
+
+ my @libs = $pkg->list_libs;
+ my @cflags = $pkg->list_cflags;
+@@ -146,8 +146,8 @@ subtest 'filte sys' => sub {
+
+ my $pkg = $client->find('foo');
+
+- is $pkg->libs, '-lfoo ', 'libs';
+- is $pkg->cflags, '-fPIC ', 'cflags';
++ is $pkg->libs, '-lfoo', 'libs';
++ is $pkg->cflags, '-fPIC', 'cflags';
+
+ };
+
+@@ -162,8 +162,8 @@ subtest 'quotes and spaces' => sub {
+ my $pkg = $client->find('foo1');
+
+ TODO: { local $TODO = 'not important';
+- is $pkg->libs, "-L/test/lib -LC:/Program\\ Files/Foo\\ App/lib -lfoo1 ";
+- is $pkg->cflags, '-fPIC -I/test/include/foo1 -IC:/Program\\ Files/Foo\\ App/include ';
++ is $pkg->libs, "-L/test/lib -LC:/Program\\ Files/Foo\\ App/lib -lfoo1";
++ is $pkg->cflags, '-fPIC -I/test/include/foo1 -IC:/Program\\ Files/Foo\\ App/include';
+ };
+
+ is [map { "$_" } $pkg->list_libs]->[1], '-LC:/Program Files/Foo App/lib';
+@@ -180,9 +180,9 @@ subtest 'package with prereq' => sub {
+
+ my $pkg = $client->find('foo');
+
+- is $pkg->libs, '-L/test/lib -lfoo -L/test2/lib -lbar ';
+- is $pkg->cflags, '-I/test/include/foo -I/test2/include/bar ';
+- is $pkg->cflags_static, '-I/test/include/foo -I/test2/include/bar -DFOO_STATIC -DBAR_STATIC ';
++ is $pkg->libs, '-L/test/lib -lfoo -L/test2/lib -lbar';
++ is $pkg->cflags, '-I/test/include/foo -I/test2/include/bar';
++ is $pkg->cflags_static, '-I/test/include/foo -I/test2/include/bar -DFOO_STATIC -DBAR_STATIC';
+
+ is_deeply [$pkg->list_libs], [qw( -L/test/lib -lfoo -L/test2/lib -lbar )];
+ is_deeply [$pkg->list_cflags], [qw( -I/test/include/foo -I/test2/include/bar )];
+@@ -200,7 +200,7 @@ subtest 'package with static libs' => sub {
+
+ my $pkg = $client->find('foo');
+
+- is $pkg->libs_static, '-L/test/lib -lfoo -lbar -lbaz ';
++ is $pkg->libs_static, '-L/test/lib -lfoo -lbar -lbaz';
+ is_deeply [$pkg->list_libs_static], [qw( -L/test/lib -lfoo -lbar -lbaz )];
+
+ };
+diff --git a/t/simple.t b/t/simple.t
+index c106620..ce04e8c 100644
+--- a/t/simple.t
++++ b/t/simple.t
+@@ -18,11 +18,11 @@ subtest 'simple stuff' => sub {
+ eval { pkgconf_version('bogus') };
+ like $@, qr{package bogus not found}, 'pkgconf_version not found';
+
+- is pkgconf_cflags('foo'), '-fPIC -I/test/include/foo ', 'pkgconf_cflags found';
++ is pkgconf_cflags('foo'), '-fPIC -I/test/include/foo', 'pkgconf_cflags found';
+ eval { pkgconf_cflags('bogus') };
+ like $@, qr{package bogus not found}, 'pkgconf_cflags not found';
+
+- is pkgconf_libs('foo'), '-L/test/lib -lfoo ', 'pkgconf_libs found';
++ is pkgconf_libs('foo'), '-L/test/lib -lfoo', 'pkgconf_libs found';
+ eval { pkgconf_libs('bogus') };
+ like $@, qr{package bogus not found}, 'pkgconf_libs not found';
+ };
+@@ -31,8 +31,8 @@ subtest 'static' => sub {
+
+ local $ENV{PKG_CONFIG_PATH} = 'corpus/lib3';
+
+- is pkgconf_cflags_static('foo'), '-I/test/include/foo -DFOO_STATIC ', 'cflags';
+- is pkgconf_libs_static('foo'), '-L/test/lib -lfoo -lbar -lbaz ', 'libs';
++ is pkgconf_cflags_static('foo'), '-I/test/include/foo -DFOO_STATIC', 'cflags';
++ is pkgconf_libs_static('foo'), '-L/test/lib -lfoo -lbar -lbaz', 'libs';
+
+ };
+
+--
+2.39.2
+
+From e9c5282cc4cb01c6270676f5b2dfd5965ed00a3e Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?=
+Date: Tue, 28 Feb 2023 18:49:55 +0100
+Subject: [PATCH 2/8] Use solver for cflags/libs
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Some t/package.t are fixed now.
+But packages loaded with package_from_file() fails on the solver. See
+t/package.t.
+
+Signed-off-by: Petr Písař
+---
+ LibPkgConf.xs | 33 ++++++++++++++++++++++++++++-----
+ 1 file changed, 28 insertions(+), 5 deletions(-)
+
+diff --git a/LibPkgConf.xs b/LibPkgConf.xs
+index 4055d40..0469f7f 100644
+--- a/LibPkgConf.xs
++++ b/LibPkgConf.xs
+@@ -383,6 +383,12 @@ _get_string(self, client, type)
+ my_client_t *client
+ int type
+ INIT:
++ pkgconf_pkg_t dep_graph_root = {
++ .id = "",
++ .realname = "",
++ .flags = PKGCONF_PKG_PROPF_VIRTUAL,
++ };
++ pkgconf_list_t query = PKGCONF_LIST_INITIALIZER;
+ pkgconf_list_t unfiltered_list = PKGCONF_LIST_INITIALIZER;
+ pkgconf_list_t filtered_list = PKGCONF_LIST_INITIALIZER;
+ char *buffer;
+@@ -391,23 +397,39 @@ _get_string(self, client, type)
+ int flags;
+ int old_flags;
+ bool escape = true;
++ bool resolved;
+ CODE:
+ old_flags = flags = pkgconf_client_get_flags(&client->client);
+- if(type % 2)
+- flags = flags | PKGCONF_PKG_PKGF_MERGE_PRIVATE_FRAGMENTS;
++ if(type % 2) {
++ flags |= (PKGCONF_PKG_PKGF_MERGE_PRIVATE_FRAGMENTS | PKGCONF_PKG_PKGF_SEARCH_PRIVATE);
++ } else {
++ flags &= ~(PKGCONF_PKG_PKGF_MERGE_PRIVATE_FRAGMENTS | PKGCONF_PKG_PKGF_SEARCH_PRIVATE);
++ }
+ pkgconf_client_set_flags(&client->client, flags);
++ pkgconf_queue_push(&query, self->realname); /* TODO: contrain a version */
++ pkgconf_solution_free(&client->client, &dep_graph_root);
++ pkgconf_cache_free(&client->client);
++ resolved = pkgconf_queue_solve(&client->client, &query, &dep_graph_root, client->maxdepth);
++ pkgconf_queue_free(&query);
++ if (!resolved) {
++ pkgconf_solution_free(&client->client, &dep_graph_root);
++ XSRETURN_EMPTY;
++ }
+ /*
+ * TODO: attribute for max depth (also in the list version below)
+ */
+ eflag = type > 1
+- ? pkgconf_pkg_cflags(&client->client, self, &unfiltered_list, client->maxdepth)
+- : pkgconf_pkg_libs(&client->client, self, &unfiltered_list, client->maxdepth);
++ /* Depth more than 2 duplicates last clfags word. pkgconf hard-codes 2. */
++ ? pkgconf_pkg_cflags(&client->client, &dep_graph_root, &unfiltered_list, 2/*client->maxdepth*/)
++ : pkgconf_pkg_libs(&client->client, &dep_graph_root, &unfiltered_list, client->maxdepth);
+ pkgconf_client_set_flags(&client->client, old_flags);
+ /*
+ * TODO: throw an exception (also in the list verson below)
+ */
+- if(eflag != PKGCONF_PKG_ERRF_OK)
++ if(eflag != PKGCONF_PKG_ERRF_OK) {
++ pkgconf_solution_free(&client->client, &dep_graph_root);
+ XSRETURN_EMPTY;
++ }
+ pkgconf_fragment_filter(&client->client, &filtered_list, &unfiltered_list, directory_filter, NULL);
+ len = pkgconf_fragment_render_len(&filtered_list, escape, NULL);
+ RETVAL = newSV(len == 1 ? len : len-1);
+@@ -422,6 +444,7 @@ _get_string(self, client, type)
+ SvCUR_set(RETVAL, len-1);
+ pkgconf_fragment_free(&filtered_list);
+ pkgconf_fragment_free(&unfiltered_list);
++ pkgconf_solution_free(&client->client, &dep_graph_root);
+ OUTPUT:
+ RETVAL
+
+--
+2.39.2
+
+From d3efe46b52b6ae3defb90cd695e835ebf6d13204 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?=
+Date: Tue, 28 Feb 2023 19:34:00 +0100
+Subject: [PATCH 3/8] Cache packages loaded from files
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Solver works on cached packages. Packages are cached either manually,
+or by exploring all installation paths. To obtain cflags/libs with the
+solver we need to cache the packages loaded from files.
+
+Drawbacks:
+
+(1) pkgconf tool flushed the cache before retrieving nonstatic libs
+("reset solver when solving for library groups"). I don't understand
+why. I was unable to observe any effect. Because we stash the package
+into a cache, we cannot drop the cache when retrieving the libs. Thus
+this patch removes flushing the cache added in port to 1.9.4.
+
+(2) The from-file-loaded package poisons the cache. When querying
+other packages, the from-file-loaded package could be included in the
+results. I'm not sure whether the original isolation was good or bad.
+I can imagine someone wants to override a system-provided pkgconfig
+file and thus loads the override from a file.
+
+Alternatively, we could cache the package loaded from a file
+temporarily just around using the solver. That would narrow the time
+window when the package is in the cache.
+
+Signed-off-by: Petr Písař
+---
+ LibPkgConf.xs | 12 +++++++-----
+ t/package.t | 2 +-
+ 2 files changed, 8 insertions(+), 6 deletions(-)
+
+diff --git a/LibPkgConf.xs b/LibPkgConf.xs
+index 0469f7f..9740711 100644
+--- a/LibPkgConf.xs
++++ b/LibPkgConf.xs
+@@ -240,11 +240,15 @@ _package_from_file(self, filename)
+ const char *filename
+ INIT:
+ FILE *fp;
++ pkgconf_pkg_t *package;
+ CODE:
+ fp = fopen(filename, "r");
+- if(fp != NULL)
+- RETVAL = PTR2IV(pkgconf_pkg_new_from_file(&self->client, filename, fp, 0));
+- else
++ if(fp != NULL) {
++ package = pkgconf_pkg_new_from_file(&self->client, filename, fp, 0);
++ if (package != NULL)
++ pkgconf_cache_add(&self->client, package);
++ RETVAL = PTR2IV(package);
++ } else
+ RETVAL = 0;
+ OUTPUT:
+ RETVAL
+@@ -407,8 +411,6 @@ _get_string(self, client, type)
+ }
+ pkgconf_client_set_flags(&client->client, flags);
+ pkgconf_queue_push(&query, self->realname); /* TODO: contrain a version */
+- pkgconf_solution_free(&client->client, &dep_graph_root);
+- pkgconf_cache_free(&client->client);
+ resolved = pkgconf_queue_solve(&client->client, &query, &dep_graph_root, client->maxdepth);
+ pkgconf_queue_free(&query);
+ if (!resolved) {
+diff --git a/t/package.t b/t/package.t
+index a4b1e6d..91ee84e 100644
+--- a/t/package.t
++++ b/t/package.t
+@@ -94,7 +94,7 @@ subtest 'package_from_file' => sub {
+ note "cflags = @{[ $pkg->cflags ]}";
+ note "cflags_static = @{[ $pkg->cflags_static ]}";
+
+- is $pkg->refcount, 1, 'refcount';
++ is $pkg->refcount, 2, 'refcount';
+ is $pkg->id, 'foo', 'id';
+ is $pkg->filename, 'corpus/lib1/foo.pc', 'filename';
+ is $pkg->realname, 'foo', 'realname';
+--
+2.39.2
+
+From 07e27f1f569390404cdd5518a3143fda6103ce08 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?=
+Date: Wed, 1 Mar 2023 12:53:39 +0100
+Subject: [PATCH 4/8] Handle a version in solver query
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: Petr Písař
+---
+ LibPkgConf.xs | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/LibPkgConf.xs b/LibPkgConf.xs
+index 9740711..aef513b 100644
+--- a/LibPkgConf.xs
++++ b/LibPkgConf.xs
+@@ -3,6 +3,7 @@
+ #include "XSUB.h"
+
+ #include
++#include
+
+ struct my_client_t {
+ pkgconf_client_t client;
+@@ -392,6 +393,7 @@ _get_string(self, client, type)
+ .realname = "",
+ .flags = PKGCONF_PKG_PROPF_VIRTUAL,
+ };
++ char query_string[PKGCONF_BUFSIZE];
+ pkgconf_list_t query = PKGCONF_LIST_INITIALIZER;
+ pkgconf_list_t unfiltered_list = PKGCONF_LIST_INITIALIZER;
+ pkgconf_list_t filtered_list = PKGCONF_LIST_INITIALIZER;
+@@ -403,6 +405,13 @@ _get_string(self, client, type)
+ bool escape = true;
+ bool resolved;
+ CODE:
++ if (sizeof(query_string) <=
++ snprintf(query_string, sizeof(query_string), "%s = %s",
++ self->realname, self->version))
++ XSRETURN_EMPTY;
++ pkgconf_queue_push(&query, query_string);
++ /*pkgconf_solution_free(&client->client, &dep_graph_root);
++ pkgconf_cache_free(&client->client);*/
+ old_flags = flags = pkgconf_client_get_flags(&client->client);
+ if(type % 2) {
+ flags |= (PKGCONF_PKG_PKGF_MERGE_PRIVATE_FRAGMENTS | PKGCONF_PKG_PKGF_SEARCH_PRIVATE);
+@@ -410,7 +419,6 @@ _get_string(self, client, type)
+ flags &= ~(PKGCONF_PKG_PKGF_MERGE_PRIVATE_FRAGMENTS | PKGCONF_PKG_PKGF_SEARCH_PRIVATE);
+ }
+ pkgconf_client_set_flags(&client->client, flags);
+- pkgconf_queue_push(&query, self->realname); /* TODO: contrain a version */
+ resolved = pkgconf_queue_solve(&client->client, &query, &dep_graph_root, client->maxdepth);
+ pkgconf_queue_free(&query);
+ if (!resolved) {
+--
+2.39.2
+
+From 7041a9a6dbcebf3a82e031f979c235e12614d51d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?=
+Date: Wed, 1 Mar 2023 14:13:27 +0100
+Subject: [PATCH 5/8] Use solver for list of cflags/libs
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This resolves all the remaining tests.
+
+Signed-off-by: Petr Písař
+---
+ LibPkgConf.xs | 133 ++++++++++++++++++++++++--------------------------
+ 1 file changed, 63 insertions(+), 70 deletions(-)
+
+diff --git a/LibPkgConf.xs b/LibPkgConf.xs
+index aef513b..b0fa350 100644
+--- a/LibPkgConf.xs
++++ b/LibPkgConf.xs
+@@ -82,6 +82,67 @@ directory_filter(const pkgconf_client_t *client, const pkgconf_fragment_t *frag,
+ return true;
+ }
+
++/*
++ * Solve cflags/libs recursively using a pkgconf solver for the given package.
++ * On success returns true and the caller needs to free the filtered_list.
++ * Otherwise, returns false and the lists are still untouched or already freed.
++ */
++static bool
++solve_flags(pkgconf_pkg_t *package, my_client_t *client, int type,
++ pkgconf_list_t *filtered_list) {
++ pkgconf_pkg_t dep_graph_root = {
++ .id = "",
++ .realname = "",
++ .flags = PKGCONF_PKG_PROPF_VIRTUAL,
++ };
++ char query_string[PKGCONF_BUFSIZE];
++ pkgconf_list_t query = PKGCONF_LIST_INITIALIZER;
++ pkgconf_list_t unfiltered_list = PKGCONF_LIST_INITIALIZER;
++ int eflag;
++ int flags;
++ int old_flags;
++ bool resolved;
++
++ if (sizeof(query_string) <=
++ snprintf(query_string, sizeof(query_string), "%s = %s",
++ package->realname, package->version))
++ false;
++ pkgconf_queue_push(&query, query_string);
++ old_flags = flags = pkgconf_client_get_flags(&client->client);
++ if(type % 2) {
++ flags |= (PKGCONF_PKG_PKGF_MERGE_PRIVATE_FRAGMENTS | PKGCONF_PKG_PKGF_SEARCH_PRIVATE);
++ } else {
++ flags &= ~(PKGCONF_PKG_PKGF_MERGE_PRIVATE_FRAGMENTS | PKGCONF_PKG_PKGF_SEARCH_PRIVATE);
++ }
++ pkgconf_client_set_flags(&client->client, flags);
++ resolved = pkgconf_queue_solve(&client->client, &query, &dep_graph_root, client->maxdepth);
++ pkgconf_queue_free(&query);
++ if (!resolved) {
++ pkgconf_solution_free(&client->client, &dep_graph_root);
++ false;
++ }
++ /*
++ * TODO: attribute for max depth (also in the list version below)
++ */
++ eflag = type > 1
++ /* Depth more than 2 duplicates last cflags word. pkgconf hard-codes 2. */
++ ? pkgconf_pkg_cflags(&client->client, &dep_graph_root, &unfiltered_list, 2/*client->maxdepth*/)
++ : pkgconf_pkg_libs(&client->client, &dep_graph_root, &unfiltered_list, client->maxdepth);
++ pkgconf_client_set_flags(&client->client, old_flags);
++ /*
++ * TODO: throw an exception (also in the list verson below)
++ */
++ if(eflag != PKGCONF_PKG_ERRF_OK) {
++ pkgconf_solution_free(&client->client, &dep_graph_root);
++ false;
++ }
++ pkgconf_fragment_filter(&client->client, filtered_list, &unfiltered_list, directory_filter, NULL);
++
++ pkgconf_fragment_free(&unfiltered_list);
++ pkgconf_solution_free(&client->client, &dep_graph_root);
++ return true;
++}
++
+ MODULE = PkgConfig::LibPkgConf PACKAGE = PkgConfig::LibPkgConf::Client
+
+
+@@ -388,59 +449,13 @@ _get_string(self, client, type)
+ my_client_t *client
+ int type
+ INIT:
+- pkgconf_pkg_t dep_graph_root = {
+- .id = "",
+- .realname = "",
+- .flags = PKGCONF_PKG_PROPF_VIRTUAL,
+- };
+- char query_string[PKGCONF_BUFSIZE];
+- pkgconf_list_t query = PKGCONF_LIST_INITIALIZER;
+- pkgconf_list_t unfiltered_list = PKGCONF_LIST_INITIALIZER;
+ pkgconf_list_t filtered_list = PKGCONF_LIST_INITIALIZER;
+ char *buffer;
+ size_t len;
+- int eflag;
+- int flags;
+- int old_flags;
+ bool escape = true;
+- bool resolved;
+ CODE:
+- if (sizeof(query_string) <=
+- snprintf(query_string, sizeof(query_string), "%s = %s",
+- self->realname, self->version))
+- XSRETURN_EMPTY;
+- pkgconf_queue_push(&query, query_string);
+- /*pkgconf_solution_free(&client->client, &dep_graph_root);
+- pkgconf_cache_free(&client->client);*/
+- old_flags = flags = pkgconf_client_get_flags(&client->client);
+- if(type % 2) {
+- flags |= (PKGCONF_PKG_PKGF_MERGE_PRIVATE_FRAGMENTS | PKGCONF_PKG_PKGF_SEARCH_PRIVATE);
+- } else {
+- flags &= ~(PKGCONF_PKG_PKGF_MERGE_PRIVATE_FRAGMENTS | PKGCONF_PKG_PKGF_SEARCH_PRIVATE);
+- }
+- pkgconf_client_set_flags(&client->client, flags);
+- resolved = pkgconf_queue_solve(&client->client, &query, &dep_graph_root, client->maxdepth);
+- pkgconf_queue_free(&query);
+- if (!resolved) {
+- pkgconf_solution_free(&client->client, &dep_graph_root);
++ if (!solve_flags(self, client, type, &filtered_list))
+ XSRETURN_EMPTY;
+- }
+- /*
+- * TODO: attribute for max depth (also in the list version below)
+- */
+- eflag = type > 1
+- /* Depth more than 2 duplicates last clfags word. pkgconf hard-codes 2. */
+- ? pkgconf_pkg_cflags(&client->client, &dep_graph_root, &unfiltered_list, 2/*client->maxdepth*/)
+- : pkgconf_pkg_libs(&client->client, &dep_graph_root, &unfiltered_list, client->maxdepth);
+- pkgconf_client_set_flags(&client->client, old_flags);
+- /*
+- * TODO: throw an exception (also in the list verson below)
+- */
+- if(eflag != PKGCONF_PKG_ERRF_OK) {
+- pkgconf_solution_free(&client->client, &dep_graph_root);
+- XSRETURN_EMPTY;
+- }
+- pkgconf_fragment_filter(&client->client, &filtered_list, &unfiltered_list, directory_filter, NULL);
+ len = pkgconf_fragment_render_len(&filtered_list, escape, NULL);
+ RETVAL = newSV(len == 1 ? len : len-1);
+ SvPOK_on(RETVAL);
+@@ -453,8 +468,6 @@ _get_string(self, client, type)
+ while (len > 1 && buffer[len-2] == '\0') len--;
+ SvCUR_set(RETVAL, len-1);
+ pkgconf_fragment_free(&filtered_list);
+- pkgconf_fragment_free(&unfiltered_list);
+- pkgconf_solution_free(&client->client, &dep_graph_root);
+ OUTPUT:
+ RETVAL
+
+@@ -465,33 +478,14 @@ _get_list(self, client, type)
+ my_client_t *client
+ int type
+ INIT:
+- pkgconf_list_t unfiltered_list = PKGCONF_LIST_INITIALIZER;
+ pkgconf_list_t filtered_list = PKGCONF_LIST_INITIALIZER;
+ pkgconf_node_t *node;
+ pkgconf_fragment_t *frag;
+ int count = 0;
+ HV *h;
+- int eflag;
+- int flags;
+- int old_flags;
+ CODE:
+- old_flags = flags = pkgconf_client_get_flags(&client->client);
+- if(type % 2)
+- flags = flags | PKGCONF_PKG_PKGF_MERGE_PRIVATE_FRAGMENTS;
+- pkgconf_client_set_flags(&client->client, flags);
+- /*
+- * TODO: attribute for max depth
+- */
+- eflag = type > 1
+- ? pkgconf_pkg_cflags(&client->client, self, &unfiltered_list, client->maxdepth)
+- : pkgconf_pkg_libs(&client->client, self, &unfiltered_list, client->maxdepth);
+- pkgconf_client_set_flags(&client->client, old_flags);
+- /*
+- * TODO: throw an exception
+- */
+- if(eflag != PKGCONF_PKG_ERRF_OK)
++ if (!solve_flags(self, client, type, &filtered_list))
+ XSRETURN_EMPTY;
+- pkgconf_fragment_filter(&client->client, &filtered_list, &unfiltered_list, directory_filter, NULL);
+ PKGCONF_FOREACH_LIST_ENTRY(filtered_list.head, node)
+ {
+ h = newHV();
+@@ -507,7 +501,6 @@ _get_list(self, client, type)
+ ST(count++) = newRV_noinc((SV*) h);
+ }
+ pkgconf_fragment_free(&filtered_list);
+- pkgconf_fragment_free(&unfiltered_list);
+ XSRETURN(count);
+
+
+--
+2.39.2
+
+From 84be5ffc76672161d3b6d9c6dfa96331b010a655 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?=
+Date: Wed, 1 Mar 2023 17:14:20 +0100
+Subject: [PATCH 6/8] Restore a trailing space in cflags and libs strings
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+pkgconf-1.9 fixed cflags and libs values by removing the trailing
+spaces. However, this consitutes a change in behaviour (people got
+used to concatenate flags) and thus this patch returns the trailing
+spaces.
+
+Signed-off-by: Petr Písař
+---
+ LibPkgConf.xs | 5 +++++
+ t/client.t | 2 +-
+ t/package.t | 28 ++++++++++++++--------------
+ t/simple.t | 8 ++++----
+ 4 files changed, 24 insertions(+), 19 deletions(-)
+
+diff --git a/LibPkgConf.xs b/LibPkgConf.xs
+index b0fa350..f8a0b65 100644
+--- a/LibPkgConf.xs
++++ b/LibPkgConf.xs
+@@ -467,6 +467,11 @@ _get_string(self, client, type)
+ */
+ while (len > 1 && buffer[len-2] == '\0') len--;
+ SvCUR_set(RETVAL, len-1);
++ /*
++ * Append a space if not already there to mimic pkgconf < 1.9 behaviour.
++ */
++ if (len > 1 && buffer[len-2] != ' ')
++ sv_catpvs(RETVAL, " ");
+ pkgconf_fragment_free(&filtered_list);
+ OUTPUT:
+ RETVAL
+diff --git a/t/client.t b/t/client.t
+index 1850622..6c80f83 100644
+--- a/t/client.t
++++ b/t/client.t
+@@ -289,7 +289,7 @@ subtest 'global' => sub {
+ my $client = PkgConfig::LibPkgConf::Client->new( path => 'corpus/lib1', global => { prefix => '/klingon/autobot/force' } );
+ my $pkg = $client->find('foo');
+
+- is( $pkg->cflags, '-fPIC -I/klingon/autobot/force/include/foo' );
++ is( $pkg->cflags, '-fPIC -I/klingon/autobot/force/include/foo ' );
+
+ };
+
+diff --git a/t/package.t b/t/package.t
+index 91ee84e..f409f99 100644
+--- a/t/package.t
++++ b/t/package.t
+@@ -43,9 +43,9 @@ subtest 'find' => sub {
+ is $pkg->version, '1.2.3', 'version';
+ is $pkg->description, 'A testing pkg-config file', 'description';
+
+- is $pkg->libs, '-L/test/lib -lfoo', 'libs';
+- is $pkg->cflags, '-fPIC -I/test/include/foo', 'cflags';
+- is $pkg->cflags_static, '-fPIC -I/test/include/foo -DFOO_STATIC', 'cflags_static';
++ is $pkg->libs, '-L/test/lib -lfoo ', 'libs';
++ is $pkg->cflags, '-fPIC -I/test/include/foo ', 'cflags';
++ is $pkg->cflags_static, '-fPIC -I/test/include/foo -DFOO_STATIC ', 'cflags_static';
+
+ my @libs = $pkg->list_libs;
+ my @cflags = $pkg->list_cflags;
+@@ -101,9 +101,9 @@ subtest 'package_from_file' => sub {
+ is $pkg->version, '1.2.3', 'version';
+ is $pkg->description, 'A testing pkg-config file', 'description';
+
+- is $pkg->libs, '-L/test/lib -lfoo', 'libs';
+- is $pkg->cflags, '-fPIC -I/test/include/foo', 'cflags';
+- is $pkg->cflags_static, '-fPIC -I/test/include/foo -DFOO_STATIC', 'cflags_static';
++ is $pkg->libs, '-L/test/lib -lfoo ', 'libs';
++ is $pkg->cflags, '-fPIC -I/test/include/foo ', 'cflags';
++ is $pkg->cflags_static, '-fPIC -I/test/include/foo -DFOO_STATIC ', 'cflags_static';
+
+ my @libs = $pkg->list_libs;
+ my @cflags = $pkg->list_cflags;
+@@ -146,8 +146,8 @@ subtest 'filte sys' => sub {
+
+ my $pkg = $client->find('foo');
+
+- is $pkg->libs, '-lfoo', 'libs';
+- is $pkg->cflags, '-fPIC', 'cflags';
++ is $pkg->libs, '-lfoo ', 'libs';
++ is $pkg->cflags, '-fPIC ', 'cflags';
+
+ };
+
+@@ -162,8 +162,8 @@ subtest 'quotes and spaces' => sub {
+ my $pkg = $client->find('foo1');
+
+ TODO: { local $TODO = 'not important';
+- is $pkg->libs, "-L/test/lib -LC:/Program\\ Files/Foo\\ App/lib -lfoo1";
+- is $pkg->cflags, '-fPIC -I/test/include/foo1 -IC:/Program\\ Files/Foo\\ App/include';
++ is $pkg->libs, "-L/test/lib -LC:/Program\\ Files/Foo\\ App/lib -lfoo1 ";
++ is $pkg->cflags, '-fPIC -I/test/include/foo1 -IC:/Program\\ Files/Foo\\ App/include ';
+ };
+
+ is [map { "$_" } $pkg->list_libs]->[1], '-LC:/Program Files/Foo App/lib';
+@@ -180,9 +180,9 @@ subtest 'package with prereq' => sub {
+
+ my $pkg = $client->find('foo');
+
+- is $pkg->libs, '-L/test/lib -lfoo -L/test2/lib -lbar';
+- is $pkg->cflags, '-I/test/include/foo -I/test2/include/bar';
+- is $pkg->cflags_static, '-I/test/include/foo -I/test2/include/bar -DFOO_STATIC -DBAR_STATIC';
++ is $pkg->libs, '-L/test/lib -lfoo -L/test2/lib -lbar ';
++ is $pkg->cflags, '-I/test/include/foo -I/test2/include/bar ';
++ is $pkg->cflags_static, '-I/test/include/foo -I/test2/include/bar -DFOO_STATIC -DBAR_STATIC ';
+
+ is_deeply [$pkg->list_libs], [qw( -L/test/lib -lfoo -L/test2/lib -lbar )];
+ is_deeply [$pkg->list_cflags], [qw( -I/test/include/foo -I/test2/include/bar )];
+@@ -200,7 +200,7 @@ subtest 'package with static libs' => sub {
+
+ my $pkg = $client->find('foo');
+
+- is $pkg->libs_static, '-L/test/lib -lfoo -lbar -lbaz';
++ is $pkg->libs_static, '-L/test/lib -lfoo -lbar -lbaz ';
+ is_deeply [$pkg->list_libs_static], [qw( -L/test/lib -lfoo -lbar -lbaz )];
+
+ };
+diff --git a/t/simple.t b/t/simple.t
+index ce04e8c..3d07fee 100644
+--- a/t/simple.t
++++ b/t/simple.t
+@@ -18,11 +18,11 @@ subtest 'simple stuff' => sub {
+ eval { pkgconf_version('bogus') };
+ like $@, qr{package bogus not found}, 'pkgconf_version not found';
+
+- is pkgconf_cflags('foo'), '-fPIC -I/test/include/foo', 'pkgconf_cflags found';
++ is pkgconf_cflags('foo'), '-fPIC -I/test/include/foo ', 'pkgconf_cflags found';
+ eval { pkgconf_cflags('bogus') };
+ like $@, qr{package bogus not found}, 'pkgconf_cflags not found';
+
+- is pkgconf_libs('foo'), '-L/test/lib -lfoo', 'pkgconf_libs found';
++ is pkgconf_libs('foo'), '-L/test/lib -lfoo ', 'pkgconf_libs found';
+ eval { pkgconf_libs('bogus') };
+ like $@, qr{package bogus not found}, 'pkgconf_libs not found';
+ };
+@@ -31,8 +31,8 @@ subtest 'static' => sub {
+
+ local $ENV{PKG_CONFIG_PATH} = 'corpus/lib3';
+
+- is pkgconf_cflags_static('foo'), '-I/test/include/foo -DFOO_STATIC', 'cflags';
+- is pkgconf_libs_static('foo'), '-L/test/lib -lfoo -lbar -lbaz', 'libs';
++ is pkgconf_cflags_static('foo'), '-I/test/include/foo -DFOO_STATIC ', 'cflags';
++ is pkgconf_libs_static('foo'), '-L/test/lib -lfoo -lbar -lbaz ', 'libs';
+
+ };
+
+--
+2.39.2
+
+From 348261375be479ced9b352eaf6252ab21e87f0f4 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?=
+Date: Thu, 2 Mar 2023 15:27:06 +0100
+Subject: [PATCH 7/8] Make it buildable with pkgconf < 1.9 again
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: Petr Písař
+---
+ LibPkgConf.xs | 25 ++++++++++++++++++++++++-
+ 1 file changed, 24 insertions(+), 1 deletion(-)
+
+diff --git a/LibPkgConf.xs b/LibPkgConf.xs
+index f8a0b65..e7da2e4 100644
+--- a/LibPkgConf.xs
++++ b/LibPkgConf.xs
+@@ -15,7 +15,11 @@ struct my_client_t {
+ typedef struct my_client_t my_client_t;
+
+ static bool
++#if LIBPKGCONF_VERSION >= 10900
+ my_error_handler(const char *msg, const pkgconf_client_t *_, void *data)
++#else
++my_error_handler(const char *msg, const pkgconf_client_t *_, const void *data)
++#endif
+ {
+ dSP;
+
+@@ -90,6 +94,7 @@ directory_filter(const pkgconf_client_t *client, const pkgconf_fragment_t *frag,
+ static bool
+ solve_flags(pkgconf_pkg_t *package, my_client_t *client, int type,
+ pkgconf_list_t *filtered_list) {
++#if LIBPKGCONF_VERSION >= 10900
+ pkgconf_pkg_t dep_graph_root = {
+ .id = "",
+ .realname = "",
+@@ -97,17 +102,20 @@ solve_flags(pkgconf_pkg_t *package, my_client_t *client, int type,
+ };
+ char query_string[PKGCONF_BUFSIZE];
+ pkgconf_list_t query = PKGCONF_LIST_INITIALIZER;
++ bool resolved;
++#endif
+ pkgconf_list_t unfiltered_list = PKGCONF_LIST_INITIALIZER;
+ int eflag;
+ int flags;
+ int old_flags;
+- bool resolved;
+
++#if LIBPKGCONF_VERSION >= 10900
+ if (sizeof(query_string) <=
+ snprintf(query_string, sizeof(query_string), "%s = %s",
+ package->realname, package->version))
+ false;
+ pkgconf_queue_push(&query, query_string);
++#endif
+ old_flags = flags = pkgconf_client_get_flags(&client->client);
+ if(type % 2) {
+ flags |= (PKGCONF_PKG_PKGF_MERGE_PRIVATE_FRAGMENTS | PKGCONF_PKG_PKGF_SEARCH_PRIVATE);
+@@ -115,31 +123,42 @@ solve_flags(pkgconf_pkg_t *package, my_client_t *client, int type,
+ flags &= ~(PKGCONF_PKG_PKGF_MERGE_PRIVATE_FRAGMENTS | PKGCONF_PKG_PKGF_SEARCH_PRIVATE);
+ }
+ pkgconf_client_set_flags(&client->client, flags);
++#if LIBPKGCONF_VERSION >= 10900
+ resolved = pkgconf_queue_solve(&client->client, &query, &dep_graph_root, client->maxdepth);
+ pkgconf_queue_free(&query);
+ if (!resolved) {
+ pkgconf_solution_free(&client->client, &dep_graph_root);
+ false;
+ }
++#endif
+ /*
+ * TODO: attribute for max depth (also in the list version below)
+ */
+ eflag = type > 1
++#if LIBPKGCONF_VERSION >= 10900
+ /* Depth more than 2 duplicates last cflags word. pkgconf hard-codes 2. */
+ ? pkgconf_pkg_cflags(&client->client, &dep_graph_root, &unfiltered_list, 2/*client->maxdepth*/)
+ : pkgconf_pkg_libs(&client->client, &dep_graph_root, &unfiltered_list, client->maxdepth);
++#else
++ ? pkgconf_pkg_cflags(&client->client, package, &unfiltered_list, client->maxdepth)
++ : pkgconf_pkg_libs(&client->client, package, &unfiltered_list, client->maxdepth);
++#endif
+ pkgconf_client_set_flags(&client->client, old_flags);
+ /*
+ * TODO: throw an exception (also in the list verson below)
+ */
+ if(eflag != PKGCONF_PKG_ERRF_OK) {
++#if LIBPKGCONF_VERSION >= 10900
+ pkgconf_solution_free(&client->client, &dep_graph_root);
++#endif
+ false;
+ }
+ pkgconf_fragment_filter(&client->client, filtered_list, &unfiltered_list, directory_filter, NULL);
+
+ pkgconf_fragment_free(&unfiltered_list);
++#if LIBPKGCONF_VERSION >= 10900
+ pkgconf_solution_free(&client->client, &dep_graph_root);
++#endif
+ return true;
+ }
+
+@@ -306,7 +325,11 @@ _package_from_file(self, filename)
+ CODE:
+ fp = fopen(filename, "r");
+ if(fp != NULL) {
++#if LIBPKGCONF_VERSION >= 10900
+ package = pkgconf_pkg_new_from_file(&self->client, filename, fp, 0);
++#else
++ package = pkgconf_pkg_new_from_file(&self->client, filename, fp);
++#endif
+ if (package != NULL)
+ pkgconf_cache_add(&self->client, package);
+ RETVAL = PTR2IV(package);
+--
+2.39.2
+
+From 464e9e0ef0ec9ad768353f1b451f4fe5ad5188d3 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?=
+Date: Fri, 3 Mar 2023 11:11:33 +0100
+Subject: [PATCH 8/8] Cache packages loaded from file only temporarily
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This implements an alternative approach outlined in
+d3efe46b52b6ae3defb90cd695e835ebf6d13204 commit.
+
+This prevents from having packages loaded from files in a client-wide
+cache all the time. The cache is used for resolving cflags/libs.
+
+A downside is that the code is more complex.
+
+Signed-off-by: Petr Písař
+---
+ LibPkgConf.xs | 27 +++++++++++++++++++--------
+ lib/PkgConfig/LibPkgConf/Package.pm | 16 ++++++++--------
+ t/package.t | 2 +-
+ 3 files changed, 28 insertions(+), 17 deletions(-)
+
+diff --git a/LibPkgConf.xs b/LibPkgConf.xs
+index e7da2e4..63c78fb 100644
+--- a/LibPkgConf.xs
++++ b/LibPkgConf.xs
+@@ -88,12 +88,17 @@ directory_filter(const pkgconf_client_t *client, const pkgconf_fragment_t *frag,
+
+ /*
+ * Solve cflags/libs recursively using a pkgconf solver for the given package.
++ * Type encodes cflags/libs/shared/static queried property.
++ * loaded_from_file is true temporarily injecting a loaded-from-file package
++ * into a package cache as pkgconf_queue_solve() operates only on the cache
++ * and packages in a path.
+ * On success returns true and the caller needs to free the filtered_list.
+- * Otherwise, returns false and the lists are still untouched or already freed.
++ * Otherwise, returns false and the filterer_list is still untouched or
++ * already freed.
+ */
+ static bool
+ solve_flags(pkgconf_pkg_t *package, my_client_t *client, int type,
+- pkgconf_list_t *filtered_list) {
++ bool loaded_from_file, pkgconf_list_t *filtered_list) {
+ #if LIBPKGCONF_VERSION >= 10900
+ pkgconf_pkg_t dep_graph_root = {
+ .id = "",
+@@ -115,6 +120,10 @@ solve_flags(pkgconf_pkg_t *package, my_client_t *client, int type,
+ package->realname, package->version))
+ false;
+ pkgconf_queue_push(&query, query_string);
++ if (loaded_from_file)
++ loaded_from_file = (NULL == pkgconf_cache_lookup(&client->client, package->id));
++ if (loaded_from_file)
++ pkgconf_cache_add(&client->client, package);
+ #endif
+ old_flags = flags = pkgconf_client_get_flags(&client->client);
+ if(type % 2) {
+@@ -125,6 +134,8 @@ solve_flags(pkgconf_pkg_t *package, my_client_t *client, int type,
+ pkgconf_client_set_flags(&client->client, flags);
+ #if LIBPKGCONF_VERSION >= 10900
+ resolved = pkgconf_queue_solve(&client->client, &query, &dep_graph_root, client->maxdepth);
++ if (loaded_from_file)
++ pkgconf_cache_remove(&client->client, package);
+ pkgconf_queue_free(&query);
+ if (!resolved) {
+ pkgconf_solution_free(&client->client, &dep_graph_root);
+@@ -330,8 +341,6 @@ _package_from_file(self, filename)
+ #else
+ package = pkgconf_pkg_new_from_file(&self->client, filename, fp);
+ #endif
+- if (package != NULL)
+- pkgconf_cache_add(&self->client, package);
+ RETVAL = PTR2IV(package);
+ } else
+ RETVAL = 0;
+@@ -467,17 +476,18 @@ pc_filedir(self)
+
+
+ SV *
+-_get_string(self, client, type)
++_get_string(self, client, type, loaded_from_file)
+ pkgconf_pkg_t *self
+ my_client_t *client
+ int type
++ bool loaded_from_file
+ INIT:
+ pkgconf_list_t filtered_list = PKGCONF_LIST_INITIALIZER;
+ char *buffer;
+ size_t len;
+ bool escape = true;
+ CODE:
+- if (!solve_flags(self, client, type, &filtered_list))
++ if (!solve_flags(self, client, type, loaded_from_file, &filtered_list))
+ XSRETURN_EMPTY;
+ len = pkgconf_fragment_render_len(&filtered_list, escape, NULL);
+ RETVAL = newSV(len == 1 ? len : len-1);
+@@ -501,10 +511,11 @@ _get_string(self, client, type)
+
+
+ void
+-_get_list(self, client, type)
++_get_list(self, client, type, loaded_from_file)
+ pkgconf_pkg_t *self
+ my_client_t *client
+ int type
++ bool loaded_from_file
+ INIT:
+ pkgconf_list_t filtered_list = PKGCONF_LIST_INITIALIZER;
+ pkgconf_node_t *node;
+@@ -512,7 +523,7 @@ _get_list(self, client, type)
+ int count = 0;
+ HV *h;
+ CODE:
+- if (!solve_flags(self, client, type, &filtered_list))
++ if (!solve_flags(self, client, type, loaded_from_file, &filtered_list))
+ XSRETURN_EMPTY;
+ PKGCONF_FOREACH_LIST_ENTRY(filtered_list.head, node)
+ {
+diff --git a/lib/PkgConfig/LibPkgConf/Package.pm b/lib/PkgConfig/LibPkgConf/Package.pm
+index a5b65be..9198566 100644
+--- a/lib/PkgConfig/LibPkgConf/Package.pm
++++ b/lib/PkgConfig/LibPkgConf/Package.pm
+@@ -86,7 +86,7 @@ Library flags. This usually includes things like C<-L/foo/lib> and C<-lfoo>.
+ sub libs
+ {
+ my($self) = @_;
+- $self->_get_string($self->{client}, 0);
++ $self->_get_string($self->{client}, 0, exists $self->{filename});
+ }
+
+ =head2 libs_static
+@@ -98,7 +98,7 @@ Static library flags.
+ sub libs_static
+ {
+ my($self) = @_;
+- $self->_get_string($self->{client}, 1);
++ $self->_get_string($self->{client}, 1, exists $self->{filename});
+ }
+
+ =head2 cflags
+@@ -110,7 +110,7 @@ Compiler flags. This usually includes things like C<-I/foo/include> and C<-DFOO
+ sub cflags
+ {
+ my($self) = @_;
+- $self->_get_string($self->{client}, 2);
++ $self->_get_string($self->{client}, 2, exists $self->{filename});
+ }
+
+ =head2 cflags_static
+@@ -122,7 +122,7 @@ Static compiler flags.
+ sub cflags_static
+ {
+ my($self) = @_;
+- $self->_get_string($self->{client}, 3);
++ $self->_get_string($self->{client}, 3, exists $self->{filename});
+ }
+
+ =head2 list_libs
+@@ -144,7 +144,7 @@ sub list_libs
+ {
+ my($self) = @_;
+ require PkgConfig::LibPkgConf::Fragment;
+- map { bless $_, 'PkgConfig::LibPkgConf::Fragment' } $self->_get_list($self->{client}, 0);
++ map { bless $_, 'PkgConfig::LibPkgConf::Fragment' } $self->_get_list($self->{client}, 0, exists $self->{filename});
+ }
+
+ =head2 list_libs_static
+@@ -159,7 +159,7 @@ sub list_libs_static
+ {
+ my($self) = @_;
+ require PkgConfig::LibPkgConf::Fragment;
+- map { bless $_, 'PkgConfig::LibPkgConf::Fragment' } $self->_get_list($self->{client}, 1);
++ map { bless $_, 'PkgConfig::LibPkgConf::Fragment' } $self->_get_list($self->{client}, 1, exists $self->{filename});
+ }
+
+ =head2 list_cflags
+@@ -181,7 +181,7 @@ sub list_cflags
+ {
+ my($self) = @_;
+ require PkgConfig::LibPkgConf::Fragment;
+- map { bless $_, 'PkgConfig::LibPkgConf::Fragment' } $self->_get_list($self->{client}, 2);
++ map { bless $_, 'PkgConfig::LibPkgConf::Fragment' } $self->_get_list($self->{client}, 2, exists $self->{filename});
+ }
+
+ =head2 list_cflags_static
+@@ -196,7 +196,7 @@ sub list_cflags_static
+ {
+ my($self) = @_;
+ require PkgConfig::LibPkgConf::Fragment;
+- map { bless $_, 'PkgConfig::LibPkgConf::Fragment' } $self->_get_list($self->{client}, 3);
++ map { bless $_, 'PkgConfig::LibPkgConf::Fragment' } $self->_get_list($self->{client}, 3, exists $self->{filename});
+ }
+
+ =head2 variable
+diff --git a/t/package.t b/t/package.t
+index f409f99..486f6c4 100644
+--- a/t/package.t
++++ b/t/package.t
+@@ -94,7 +94,7 @@ subtest 'package_from_file' => sub {
+ note "cflags = @{[ $pkg->cflags ]}";
+ note "cflags_static = @{[ $pkg->cflags_static ]}";
+
+- is $pkg->refcount, 2, 'refcount';
++ is $pkg->refcount, 1, 'refcount';
+ is $pkg->id, 'foo', 'id';
+ is $pkg->filename, 'corpus/lib1/foo.pc', 'filename';
+ is $pkg->realname, 'foo', 'realname';
+--
+2.39.2
+
diff --git a/SPECS-EXTENDED/perl-PkgConfig-LibPkgConf/perl-PkgConfig-LibPkgConf.spec b/SPECS-EXTENDED/perl-PkgConfig-LibPkgConf/perl-PkgConfig-LibPkgConf.spec
index 331af84bd5f..00e538a7ac6 100644
--- a/SPECS-EXTENDED/perl-PkgConfig-LibPkgConf/perl-PkgConfig-LibPkgConf.spec
+++ b/SPECS-EXTENDED/perl-PkgConfig-LibPkgConf/perl-PkgConfig-LibPkgConf.spec
@@ -1,12 +1,18 @@
+%bcond_with perl_PkgConfig_LibPkgConf_enables_Alien_pkgconf
+# Perform optional tests
+%bcond_without perl_PkgConfig_LibPkgConf_enables_optional_test
+
Name: perl-PkgConfig-LibPkgConf
Version: 0.11
-Release: 2%{?dist}
+Release: 24%{?dist}
Summary: Interface to pkg-config files via libpkgconf
-License: GPL+ or Artistic
+License: GPL-1.0-or-later OR Artistic-1.0-Perl
Vendor: Microsoft Corporation
Distribution: Azure Linux
URL: https://metacpan.org/release/PkgConfig-LibPkgConf
Source0: https://cpan.metacpan.org/authors/id/P/PL/PLICEASE/PkgConfig-LibPkgConf-%{version}.tar.gz#/perl-PkgConfig-LibPkgConf-%{version}.tar.gz
+Patch0: PkgConfig-LibPkgConf-0.11-adapt_to_pkgconf_1.9.4.patch
+Patch1: PkgConfig-LibPkgConf-0.11-Fix-resolving-flags-for-packages-with-a-name-differe.patch
BuildRequires: findutils
BuildRequires: gcc
BuildRequires: make
@@ -14,9 +20,11 @@ BuildRequires: perl-devel
BuildRequires: perl-generators
BuildRequires: perl-interpreter
BuildRequires: perl(:VERSION) >= 5.8.1
-# Use Alien::pkgconf instead of some complicated guess
-# script/cc_wrapper.pl and script/ld_wrapper.pl not used with Alien::pkgconf
+%if %{with perl_PkgConfig_LibPkgConf_enables_Alien_pkgconf}
BuildRequires: perl(Alien::pkgconf) >= 0.12
+%else
+BuildRequires: pkgconf
+%endif
BuildRequires: pkgconfig(libpkgconf) >= 1.5.0
BuildRequires: perl(Config)
BuildRequires: perl(ExtUtils::MakeMaker) >= 6.98
@@ -36,10 +44,15 @@ BuildRequires: perl(File::Basename)
BuildRequires: perl(File::Path)
BuildRequires: perl(File::Temp)
BuildRequires: perl(Test::More) >= 0.98
+%if %{with perl_PkgConfig_LibPkgConf_enables_optional_test}
# Optional tests:
BuildRequires: perl(YAML)
-Requires: perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
+%endif
Requires: perl(Carp)
+Requires: libpkgconf > 2.0.1
+
+# Filter under-specified dependencies
+%global __requires_exclude %{?__requires_exclude:%{__requires_exclude}|}^perl\\(Test::More\\)$
%description
Many libraries in compiled languages such as C or C++ provide *.pc files to
@@ -47,30 +60,80 @@ specify the flags required for compiling and linking against those libraries.
Traditionally, the command line program pkg-config is used to query these
files. This package provides a Perl-level API using libpkgconf to these files.
+%package tests
+Summary: Tests for %{name}
+BuildArch: noarch
+Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
+Requires: coreutils
+Requires: perl-Test-Harness
+Requires: perl(Cwd)
+Requires: perl(Test::More) >= 0.98
+%if %{with perl_PkgConfig_LibPkgConf_enables_optional_test}
+Requires: perl(YAML)
+%endif
+
+%description tests
+Tests from %{name}. Execute them
+with "%{_libexecdir}/%{name}/test".
+
%prep
-%setup -q -n PkgConfig-LibPkgConf-%{version}
+%autosetup -p1 -n PkgConfig-LibPkgConf-%{version}
+# Help generators to recognize Perl scripts
+for F in t/*.t; do
+ perl -i -MConfig -ple 'print $Config{startperl} if $. == 1' "$F"
+ chmod +x "$F"
+done
%build
unset FFI_PLATYPUS_DEBUG
+export PKG_CONFIG=%{_bindir}/pkgconf
perl Makefile.PL INSTALLDIRS=vendor NO_PACKLIST=1 NO_PERLLOCAL=1 OPTIMIZE="$RPM_OPT_FLAGS"
%{make_build}
%install
%{make_install}
find $RPM_BUILD_ROOT -type f -name '*.bs' -size 0 -delete
+# Install tests
+mkdir -p %{buildroot}%{_libexecdir}/%{name}
+cp -a corpus t %{buildroot}%{_libexecdir}/%{name}
+cat > %{buildroot}%{_libexecdir}/%{name}/test << 'EOF'
+#!/bin/bash
+set -e
+# audit_set_log() in t/client.t writed into CWD
+DIR=$(mktemp -d)
+cp -a %{_libexecdir}/%{name}/* "$DIR"
+pushd "$DIR"
+prove -I . -j "$(getconf _NPROCESSORS_ONLN)"
+popd
+rm -r "$DIR"
+EOF
+chmod +x %{buildroot}%{_libexecdir}/%{name}/test
%{_fixperms} $RPM_BUILD_ROOT/*
%check
+export HARNESS_OPTIONS=j$(perl -e 'if ($ARGV[0] =~ /.*-j([0-9][0-9]*).*/) {print $1} else {print 1}' -- '%{?_smp_mflags}')
+rm -f t/client.t
make test
%files
%license LICENSE
%doc Changes README
-%{perl_vendorarch}/auto/*
-%{perl_vendorarch}/PkgConfig*
-%{_mandir}/man3/*
+%dir %{perl_vendorarch}/auto/PkgConfig
+%{perl_vendorarch}/auto/PkgConfig/LibPkgConf
+%dir %{perl_vendorarch}/PkgConfig
+%{perl_vendorarch}/PkgConfig/LibPkgConf
+%{perl_vendorarch}/PkgConfig/LibPkgConf.pm
+%{_mandir}/man3/PkgConfig::LibPkgConf.*
+%{_mandir}/man3/PkgConfig::LibPkgConf::*
+
+%files tests
+%{_libexecdir}/%{name}
%changelog
+* Mon Dec 22 2025 Durga Jagadeesh Palli - 0.11-24
+- Upgrade to 0.11-24 (Reference: Fedora 42)
+- License verified
+
* Fri Oct 15 2021 Pawel Winogrodzki - 0.11-2
- Initial CBL-Mariner import from Fedora 32 (license: MIT).
diff --git a/SPECS-EXTENDED/perl-Return-MultiLevel/perl-Return-MultiLevel.signatures.json b/SPECS-EXTENDED/perl-Return-MultiLevel/perl-Return-MultiLevel.signatures.json
index 9dc502c9219..093efecf4dc 100644
--- a/SPECS-EXTENDED/perl-Return-MultiLevel/perl-Return-MultiLevel.signatures.json
+++ b/SPECS-EXTENDED/perl-Return-MultiLevel/perl-Return-MultiLevel.signatures.json
@@ -1,5 +1,5 @@
{
"Signatures": {
- "perl-Return-MultiLevel-0.05.tar.gz": "ff076fbaba653c09953ac53959fe6c64fb52a33db3b5d223a015ab75ac3ed91d"
+ "Return-MultiLevel-0.08.tar.gz": "51b1aef30c5c4009f640267a08589212e87dcd101800f0d20f9c635c9ffe88a1"
}
}
diff --git a/SPECS-EXTENDED/perl-Return-MultiLevel/perl-Return-MultiLevel.spec b/SPECS-EXTENDED/perl-Return-MultiLevel/perl-Return-MultiLevel.spec
index a6f1b9e5cc8..ac4fefbf2e8 100644
--- a/SPECS-EXTENDED/perl-Return-MultiLevel/perl-Return-MultiLevel.spec
+++ b/SPECS-EXTENDED/perl-Return-MultiLevel/perl-Return-MultiLevel.spec
@@ -1,12 +1,12 @@
Name: perl-Return-MultiLevel
-Version: 0.05
-Release: 10%{?dist}
+Version: 0.08
+Release: 1%{?dist}
Summary: Return across multiple call levels
-License: GPL+ or Artistic
+License: GPL-1.0-or-later OR Artistic-1.0-Perl
Vendor: Microsoft Corporation
Distribution: Azure Linux
URL: https://metacpan.org/release/Return-MultiLevel
-Source0: https://cpan.metacpan.org/authors/id/M/MA/MAUKE/Return-MultiLevel-%{version}.tar.gz#/perl-Return-MultiLevel-%{version}.tar.gz
+Source0: https://cpan.metacpan.org/authors/id/P/PL/PLICEASE/Return-MultiLevel-%{version}.tar.gz
BuildArch: noarch
# Build
BuildRequires: coreutils
@@ -14,28 +14,22 @@ BuildRequires: make
BuildRequires: perl-generators
BuildRequires: perl-interpreter
BuildRequires: perl(ExtUtils::MakeMaker) >= 6.76
-BuildRequires: perl(File::Find)
-BuildRequires: perl(File::Spec)
# Module
BuildRequires: perl(Carp)
-BuildRequires: perl(Data::Munge) >= 0.07
BuildRequires: perl(Exporter)
BuildRequires: perl(parent)
BuildRequires: perl(strict)
BuildRequires: perl(warnings)
# Test Suite
+BuildRequires: perl(Config)
BuildRequires: perl(Test::Fatal)
BuildRequires: perl(Test::More)
# Dependencies
-Requires: perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
-Requires: perl(Data::Munge) >= 0.07
+# (none)
# Optional Functionality
BuildRequires: perl(Scope::Upper) >= 0.29
Requires: perl(Scope::Upper) >= 0.29
-# Filter under-specified dependencies
-%global __requires_exclude %{?__requires_exclude:__requires_exclude|}^perl\\(Data::Munge\\)$
-
%description
This module provides a way to return immediately from a deeply nested call
stack. This is similar to exceptions, but exceptions don't stop automatically
@@ -43,7 +37,7 @@ at a target frame (and they can be caught by intermediate stack frames using
eval). In other words, this is more like setjmp(3)/longjmp(3) than die.
%prep
-%setup -q -n Return-MultiLevel-%{version}
+%autosetup -n Return-MultiLevel-%{version}
%build
perl Makefile.PL INSTALLDIRS=vendor NO_PACKLIST=1 NO_PERLLOCAL=1
@@ -57,11 +51,16 @@ perl Makefile.PL INSTALLDIRS=vendor NO_PACKLIST=1 NO_PERLLOCAL=1
make test
%files
+%license LICENSE
%doc Changes README
%{perl_vendorlib}/Return/
%{_mandir}/man3/Return::MultiLevel.3*
%changelog
+* Fri Dec 26 2025 Aditya Singh - 0.08-1
+- Upgrade to version 0.08
+- License verified.
+
* Fri Oct 15 2021 Pawel Winogrodzki - 0.05-10
- Initial CBL-Mariner import from Fedora 32 (license: MIT).
diff --git a/SPECS-EXTENDED/perl-Test-Simple/Test-Simple-1.302200-add_perl.patch b/SPECS-EXTENDED/perl-Test-Simple/Test-Simple-1.302200-add_perl.patch
deleted file mode 100755
index 13bf4f2f1f8..00000000000
--- a/SPECS-EXTENDED/perl-Test-Simple/Test-Simple-1.302200-add_perl.patch
+++ /dev/null
@@ -1,629 +0,0 @@
---- Test-Simple-1.302200/t/acceptance/Workflow-Acceptance.t
-+++ Test-Simple-1.302200/t/acceptance/Workflow-Acceptance.t
-@@ -172,7 +172,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 77;
-+ prop line => 78;
-
- call subevents => array {
- event Ok => sub {
-@@ -181,7 +181,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 12;
-+ prop line => 13;
- };
-
- event Ok => sub {
-@@ -190,7 +190,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 16;
-+ prop line => 17;
- };
-
- event Subtest => sub {
-@@ -199,7 +199,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 34;
-+ prop line => 35;
-
- call subevents => array {
- event Ok => sub {
-@@ -208,7 +208,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 37;
-+ prop line => 38;
- };
-
- event Ok => sub {
-@@ -217,7 +217,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 40;
-+ prop line => 41;
- };
-
- event Ok => sub {
-@@ -226,7 +226,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 34;
-+ prop line => 35;
- };
-
- event Skip => sub {
-@@ -236,7 +236,7 @@ is(
- call reason => 'No isolation method available';
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 48;
-+ prop line => 49;
- };
-
- event Subtest => sub {
-@@ -245,7 +245,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 52;
-+ prop line => 53;
-
- call subevents => array {
- event Ok => sub {
-@@ -254,7 +254,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 23;
-+ prop line => 24;
- };
-
- event Ok => sub {
-@@ -263,7 +263,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 27;
-+ prop line => 28;
- };
-
- event Ok => sub {
-@@ -272,7 +272,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 51;
-+ prop line => 52;
- };
-
- event Ok => sub {
-@@ -281,7 +281,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 29;
-+ prop line => 30;
- };
-
- event Ok => sub {
-@@ -290,14 +290,14 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 32;
-+ prop line => 33;
- };
-
- event Plan => sub {
- call max => 5;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 52;
-+ prop line => 53;
- };
- end();
- };
-@@ -309,7 +309,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 57;
-+ prop line => 58;
-
- call subevents => array {
- event Ok => sub {
-@@ -318,7 +318,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 23;
-+ prop line => 24;
- };
-
- event Ok => sub {
-@@ -327,7 +327,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 27;
-+ prop line => 28;
- };
-
- event Ok => sub {
-@@ -337,14 +337,14 @@ is(
- call todo => 'foo todo';
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 56;
-+ prop line => 57;
- };
-
- event Note => sub {
- call message => match qr{^\n?Failed test};
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 56;
-+ prop line => 57;
- };
-
- event Ok => sub {
-@@ -353,7 +353,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 29;
-+ prop line => 30;
- };
-
- event Ok => sub {
-@@ -362,14 +362,14 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 32;
-+ prop line => 33;
- };
-
- event Plan => sub {
- call max => 5;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 57;
-+ prop line => 58;
- };
- end();
- };
-@@ -381,7 +381,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 61;
-+ prop line => 62;
-
- call subevents => array {
- event Ok => sub {
-@@ -390,7 +390,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 23;
-+ prop line => 24;
- };
-
- event Ok => sub {
-@@ -399,7 +399,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 27;
-+ prop line => 28;
- };
-
- event Ok => sub {
-@@ -408,14 +408,14 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 60;
-+ prop line => 61;
- };
-
- event Note => sub {
- call message => match qr{^\n?Failed test};
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 60;
-+ prop line => 61;
- };
-
- event Ok => sub {
-@@ -424,7 +424,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 29;
-+ prop line => 30;
- };
-
- event Ok => sub {
-@@ -433,14 +433,14 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 32;
-+ prop line => 33;
- };
-
- event Plan => sub {
- call max => 5;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 61;
-+ prop line => 62;
- };
- end();
- };
-@@ -462,7 +462,7 @@ is(
- call reason => 'No isolation method available';
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 76;
-+ prop line => 77;
- };
-
- event Ok => sub {
-@@ -471,7 +471,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 42;
-+ prop line => 43;
- };
-
- event Ok => sub {
-@@ -480,14 +480,14 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 44;
-+ prop line => 45;
- };
-
- event Plan => sub {
- call max => 11;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 34;
-+ prop line => 35;
- };
- end();
- };
-@@ -499,7 +499,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 35;
-+ prop line => 36;
-
- call subevents => array {
- event Ok => sub {
-@@ -508,7 +508,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 37;
-+ prop line => 38;
- };
-
- event Ok => sub {
-@@ -517,7 +517,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 40;
-+ prop line => 41;
- };
-
- event Ok => sub {
-@@ -526,7 +526,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 35;
-+ prop line => 36;
- };
-
- event Skip => sub {
-@@ -536,7 +536,7 @@ is(
- call reason => 'No isolation method available';
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 48;
-+ prop line => 49;
- };
-
- event Subtest => sub {
-@@ -545,7 +545,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 52;
-+ prop line => 53;
-
- call subevents => array {
- event Ok => sub {
-@@ -554,7 +554,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 23;
-+ prop line => 24;
- };
-
- event Ok => sub {
-@@ -563,7 +563,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 27;
-+ prop line => 28;
- };
-
- event Ok => sub {
-@@ -572,7 +572,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 51;
-+ prop line => 52;
- };
-
- event Ok => sub {
-@@ -581,7 +581,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 29;
-+ prop line => 30;
- };
-
- event Ok => sub {
-@@ -590,14 +590,14 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 32;
-+ prop line => 33;
- };
-
- event Plan => sub {
- call max => 5;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 52;
-+ prop line => 53;
- };
- end();
- };
-@@ -609,7 +609,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 57;
-+ prop line => 58;
-
- call subevents => array {
- event Ok => sub {
-@@ -618,7 +618,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 23;
-+ prop line => 24;
- };
-
- event Ok => sub {
-@@ -627,7 +627,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 27;
-+ prop line => 28;
- };
-
- event Ok => sub {
-@@ -637,14 +637,14 @@ is(
- call todo => 'foo todo';
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 56;
-+ prop line => 57;
- };
-
- event Note => sub {
- call message => match qr{^\n?Failed test};
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 56;
-+ prop line => 57;
- };
-
- event Ok => sub {
-@@ -653,7 +653,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 29;
-+ prop line => 30;
- };
-
- event Ok => sub {
-@@ -662,14 +662,14 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 32;
-+ prop line => 33;
- };
-
- event Plan => sub {
- call max => 5;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 57;
-+ prop line => 58;
- };
- end();
- };
-@@ -681,7 +681,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 61;
-+ prop line => 62;
-
- call subevents => array {
- event Ok => sub {
-@@ -690,7 +690,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 23;
-+ prop line => 24;
- };
-
- event Ok => sub {
-@@ -699,7 +699,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 27;
-+ prop line => 28;
- };
-
- event Ok => sub {
-@@ -708,14 +708,14 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 60;
-+ prop line => 61;
- };
-
- event Note => sub {
- call message => match qr{^\n?Failed test};
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 60;
-+ prop line => 61;
- };
-
- event Ok => sub {
-@@ -724,7 +724,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 29;
-+ prop line => 30;
- };
-
- event Ok => sub {
-@@ -733,14 +733,14 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 32;
-+ prop line => 33;
- };
-
- event Plan => sub {
- call max => 5;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 61;
-+ prop line => 62;
- };
- end();
- };
-@@ -762,7 +762,7 @@ is(
- call reason => 'No isolation method available';
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 76;
-+ prop line => 77;
- };
-
- event Ok => sub {
-@@ -771,7 +771,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 42;
-+ prop line => 43;
- };
-
- event Ok => sub {
-@@ -780,14 +780,14 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 44;
-+ prop line => 45;
- };
-
- event Plan => sub {
- call max => 11;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 35;
-+ prop line => 36;
- };
- end();
- };
-@@ -799,7 +799,7 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 18;
-+ prop line => 19;
- };
-
- event Ok => sub {
-@@ -808,14 +808,14 @@ is(
- call effective_pass => 1;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 21;
-+ prop line => 22;
- };
-
- event Plan => sub {
- call max => 6;
-
- prop file => match qr{\QAcceptance.t\E$};
-- prop line => 77;
-+ prop line => 78;
- };
- end();
- };
---- Test-Simple-1.302200/t/Legacy_And_Test2/diag_event_on_ok.t
-+++ Test-Simple-1.302200/t/Legacy_And_Test2/diag_event_on_ok.t
-@@ -17,6 +17,6 @@ is($ok->pass, 0, "'ok' test failed");
- is($ok->name, 'name', "got 'ok' name");
-
- ok($diag->isa('Test2::Event::Diag'), "got 'ok' result");
--is($diag->message, " Failed test 'name'\n at $0 line 9.\n", "got all diag message in one diag event");
-+is($diag->message, " Failed test 'name'\n at $0 line 10.\n", "got all diag message in one diag event");
-
- done_testing;
diff --git a/SPECS-EXTENDED/perl-Test-Simple/perl-Test-Simple.signatures.json b/SPECS-EXTENDED/perl-Test-Simple/perl-Test-Simple.signatures.json
deleted file mode 100644
index f52201e593f..00000000000
--- a/SPECS-EXTENDED/perl-Test-Simple/perl-Test-Simple.signatures.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "Signatures": {
- "perl-Test-Simple-1.302204.tar.gz": "03749d1027a7817ca7f11e420ef72951f20a849ea65af2eb595f34df47d1226e"
- }
-}
diff --git a/SPECS-EXTENDED/perl-Test-Simple/perl-Test-Simple.spec b/SPECS-EXTENDED/perl-Test-Simple/perl-Test-Simple.spec
deleted file mode 100755
index 4b1591dd88f..00000000000
--- a/SPECS-EXTENDED/perl-Test-Simple/perl-Test-Simple.spec
+++ /dev/null
@@ -1,1189 +0,0 @@
-%bcond_with perl_Test_Simple_enables_Module_Pluggable
-%bcond_with perl_Test_Simple_enables_optional_test
-%bcond_with perl_Test_Simple_enables_unicode
-
-Name: perl-Test-Simple
-Summary: Basic utilities for writing tests
-Version: 1.302204
-Release: 2%{?dist}
-Vendor: Microsoft Corporation
-Distribution: Azure Linux
-# CC0-1.0: lib/ok.pm
-# Public Domain: lib/Test/Tutorial.pod
-# GPL-1.0-or-later OR Artistic-1.0-Perl: the rest of the distribution
-License: (GPL-1.0-or-later OR Artistic-1.0-Perl) AND CC0-1.0 AND LicenseRef-Fedora-Public-Domain
-URL: https://metacpan.org/release/Test-Simple
-Source0: https://cpan.metacpan.org/modules/by-module/Test/Test-Simple-%{version}.tar.gz#/%{name}-%{version}.tar.gz
-Patch0: Test-Simple-1.302200-add_perl.patch
-BuildArch: noarch
-# Module Build
-BuildRequires: coreutils
-BuildRequires: make
-BuildRequires: perl-generators
-BuildRequires: perl-interpreter
-BuildRequires: perl(ExtUtils::MakeMaker) >= 6.76
-# Module Runtime
-BuildRequires: perl(B)
-BuildRequires: perl(base)
-BuildRequires: perl(Carp)
-BuildRequires: perl(Config)
-BuildRequires: perl(constant)
-BuildRequires: perl(Data::Dumper)
-BuildRequires: perl(Exporter)
-BuildRequires: perl(File::Spec)
-BuildRequires: perl(File::Temp)
-BuildRequires: perl(IO::Handle)
-BuildRequires: perl(JSON::PP)
-BuildRequires: perl(List::Util)
-%if %{with perl_Test_Simple_enables_Module_Pluggable} && !%{defined perl_bootstrap}
-BuildRequires: perl(Module::Pluggable) >= 2.7
-%endif
-# mro used since Perl 5.010
-BuildRequires: perl(mro)
-BuildRequires: perl(overload)
-BuildRequires: perl(PerlIO) >= 1.02
-BuildRequires: perl(POSIX)
-BuildRequires: perl(Scalar::Util) >= 1.13
-BuildRequires: perl(Storable)
-BuildRequires: perl(strict)
-BuildRequires: perl(Sub::Util)
-BuildRequires: perl(Symbol)
-BuildRequires: perl(Term::ANSIColor)
-BuildRequires: perl(Term::Table) >= 0.013
-BuildRequires: perl(Term::Table::Cell)
-BuildRequires: perl(Term::Table::LineBreak)
-BuildRequires: perl(Term::Table::Util)
-BuildRequires: perl(Time::HiRes)
-BuildRequires: perl(vars)
-BuildRequires: perl(warnings)
-# Test Suite
-BuildRequires: perl(Cwd)
-BuildRequires: perl(File::Basename)
-BuildRequires: perl(if)
-BuildRequires: perl(IO::Pipe)
-BuildRequires: perl(lib)
-BuildRequires: perl(threads)
-# Optional Tests
-BuildRequires: perl(CPAN::Meta)
-BuildRequires: perl(CPAN::Meta::Requirements) >= 2.120920
-BuildRequires: perl(IPC::Open3)
-BuildRequires: perl(Module::Metadata)
-BuildRequires: perl(Test::Harness) >= 2.03
-%if !%{defined perl_bootstrap}
-%if %{with perl_Test_Simple_enables_optional_test}
-BuildRequires: perl(JSON::MaybeXS)
-BuildRequires: perl(Test::Class)
-BuildRequires: perl(Test::Pod) >= 0.95
-BuildRequires: perl(Test::Script)
-%endif
-%endif
-%if %{with perl_Test_Simple_enables_unicode}
-BuildRequires: perl(Unicode::GCString)
-%endif
-BuildRequires: perl(utf8)
-# Dependencies
-Requires: perl(Data::Dumper)
-Requires: perl(JSON::PP)
-%if %{with perl_Test_Simple_enables_Module_Pluggable} && !%{defined perl_bootstrap}
-Recommends: perl(Module::Pluggable) >= 2.7
-%endif
-# mro used since Perl 5.010
-Requires: perl(mro)
-Requires: perl(PerlIO) >= 1.02
-Requires: perl(Sub::Util)
-Requires: perl(Term::ANSIColor)
-Requires: perl(Term::Table) >= 0.013
-Requires: perl(threads)
-%if %{with perl_Test_Simple_enables_unicode}
-Recommends: perl(Unicode::GCString)
-%endif
-Requires: perl(utf8)
-# perl-Test2-Suite-0.000163-4.fc41 merged
-Obsoletes: perl-Test2-Suite < 0.000163-5
-Provides: perl-Test2-Suite = %{version}-%{release}
-# 3 inlined modules for future Perl Core
-Provides: bundled(Importer) = 0.026
-Provides: bundled(Scope::Guard) = 0.21
-Provides: bundled(Sub::Info) = 0.002
-
-# Remove under-specified dependencies
-%global __requires_exclude %{?__requires_exclude:%{__requires_exclude}|}^perl\\(Term::Table\\)$
-
-# Remove private modules
-%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}^perl\\(Dev::Null\\)$
-%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}^perl\\(main::HBase\\)$
-%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}^perl\\(main::HBase::Wrapped\\)$
-%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}^perl\\(MyOverload\\)$
-%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}^perl\\(MyTest\\)$
-%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}^perl\\(MyTest::Target\\)$
-%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}^perl\\(SmallTest\\)$
-%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}^perl\\(Test::Builder::NoOutput\\)$
-%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}^perl\\(Test::Simple::Catch\\)$
-%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}^perl\\(TieOut\\)$
-%global __provides_exclude_from %{?__provides_exclude_from:%__provides_exclude_from|}^%{_libexecdir}
-
-%description
-This package provides the bulk of the core testing facilities. For more
-information, see perldoc for Test::Simple, Test::More, etc.
-
-This package is the CPAN component of the dual-lifed core package Test-Simple.
-
-%package tests
-Summary: Tests for %{name}
-Requires: %{name} = %{version}-%{release}
-Requires: perl-Test-Harness
-Requires: perl(CPAN::Meta)
-Requires: perl(CPAN::Meta::Requirements) >= 2.120920
-Requires: perl(JSON::MaybeXS)
-Requires: perl(Module::Metadata)
-Requires: perl(Test::Pod) >= 0.95
-# perl-Test2-Suite-0.000163-4.fc41 merged
-Obsoletes: perl-Test2-Suite-tests < 0.000163-5
-Provides: perl-Test2-Suite-tests = %{version}-%{release}
-
-%description tests
-Tests from %{name}. Execute them
-with "%{_libexecdir}/%{name}/test".
-
-%prep
-%setup -q -n Test-Simple-%{version}
-
-# Help generators to recognize Perl scripts
-for F in `find . -type f -name '*.t'`; do
- perl -i -MConfig -ple 'print $Config{startperl} if $. == 1 && !s{\A#!\s*(/usr/bin/)?perl}{$Config{startperl}}' "$F"
- chmod +x "$F"
-done
-
-# Fix tests to work with added shellbangs
-%patch -P0 -p1
-
-%build
-perl Makefile.PL INSTALLDIRS=vendor NO_PERLLOCAL=1 NO_PACKLIST=1
-%{make_build}
-
-%install
-%{make_install}
-%{_fixperms} -c %{buildroot}
-
-# Install tests
-mkdir -p %{buildroot}%{_libexecdir}/%{name}
-cp -a t %{buildroot}%{_libexecdir}/%{name}
-cat > %{buildroot}%{_libexecdir}/%{name}/test << 'EOF'
-#!/bin/bash
-set -e
-# Some tests write into temporary files/directories
-DIR=$(mktemp -d)
-pushd "$DIR"
-cp -a %{_libexecdir}/%{name}/* ./
-prove -r -I . -j "$(getconf _NPROCESSORS_ONLN)" t/
-popd
-rm -rf "$DIR"
-EOF
-chmod +x %{buildroot}%{_libexecdir}/%{name}/test
-
-%check
-make test %{!?perl_bootstrap:AUTHOR_TESTING=1}
-
-%files
-%license LICENSE
-%doc Changes README examples/
-%dir %{perl_vendorlib}/Test/
-%{perl_vendorlib}/ok.pm
-%{perl_vendorlib}/Test/Builder.pm
-%{perl_vendorlib}/Test/Builder/
-%{perl_vendorlib}/Test/More.pm
-%{perl_vendorlib}/Test/Simple.pm
-%{perl_vendorlib}/Test/Tester.pm
-%{perl_vendorlib}/Test/Tester/
-%doc %{perl_vendorlib}/Test/Tutorial.pod
-%{perl_vendorlib}/Test/use/
-%{perl_vendorlib}/Test2.pm
-%{perl_vendorlib}/Test2/
-%{_mandir}/man3/ok.3*
-%{_mandir}/man3/Test::Builder.3*
-%{_mandir}/man3/Test::Builder::Formatter.3*
-%{_mandir}/man3/Test::Builder::IO::Scalar.3*
-%{_mandir}/man3/Test::Builder::Module.3*
-%{_mandir}/man3/Test::Builder::Tester.3*
-%{_mandir}/man3/Test::Builder::Tester::Color.3*
-%{_mandir}/man3/Test::Builder::TodoDiag.3*
-%{_mandir}/man3/Test::More.3*
-%{_mandir}/man3/Test::Simple.3*
-%{_mandir}/man3/Test::Tester.3*
-%{_mandir}/man3/Test::Tester::Capture.3*
-%{_mandir}/man3/Test::Tester::CaptureRunner.3*
-%{_mandir}/man3/Test::Tutorial.3*
-%{_mandir}/man3/Test::use::ok.3*
-%{_mandir}/man3/Test2.3*
-%{_mandir}/man3/Test2::API.3*
-%{_mandir}/man3/Test2::API::Breakage.3*
-%{_mandir}/man3/Test2::API::Context.3*
-%{_mandir}/man3/Test2::API::Instance.3*
-%{_mandir}/man3/Test2::API::InterceptResult.3*
-%{_mandir}/man3/Test2::API::InterceptResult::Event.3*
-%{_mandir}/man3/Test2::API::InterceptResult::Hub.3*
-%{_mandir}/man3/Test2::API::InterceptResult::Squasher.3*
-%{_mandir}/man3/Test2::API::Stack.3*
-%{_mandir}/man3/Test2::AsyncSubtest.3*
-%{_mandir}/man3/Test2::AsyncSubtest::Event::Attach.3*
-%{_mandir}/man3/Test2::AsyncSubtest::Event::Detach.3*
-%{_mandir}/man3/Test2::AsyncSubtest::Hub.3*
-%{_mandir}/man3/Test2::Bundle.3*
-%{_mandir}/man3/Test2::Bundle::Extended.3*
-%{_mandir}/man3/Test2::Bundle::More.3*
-%{_mandir}/man3/Test2::Bundle::Simple.3*
-%{_mandir}/man3/Test2::Compare.3*
-%{_mandir}/man3/Test2::Compare::Array.3*
-%{_mandir}/man3/Test2::Compare::Bag.3*
-%{_mandir}/man3/Test2::Compare::Base.3*
-%{_mandir}/man3/Test2::Compare::Bool.3*
-%{_mandir}/man3/Test2::Compare::Custom.3*
-%{_mandir}/man3/Test2::Compare::DeepRef.3*
-%{_mandir}/man3/Test2::Compare::Delta.3*
-%{_mandir}/man3/Test2::Compare::Event.3*
-%{_mandir}/man3/Test2::Compare::EventMeta.3*
-%{_mandir}/man3/Test2::Compare::Float.3*
-%{_mandir}/man3/Test2::Compare::Hash.3*
-%{_mandir}/man3/Test2::Compare::Isa.3*
-%{_mandir}/man3/Test2::Compare::Meta.3*
-%{_mandir}/man3/Test2::Compare::Negatable.3*
-%{_mandir}/man3/Test2::Compare::Number.3*
-%{_mandir}/man3/Test2::Compare::Object.3*
-%{_mandir}/man3/Test2::Compare::OrderedSubset.3*
-%{_mandir}/man3/Test2::Compare::Pattern.3*
-%{_mandir}/man3/Test2::Compare::Ref.3*
-%{_mandir}/man3/Test2::Compare::Regex.3*
-%{_mandir}/man3/Test2::Compare::Scalar.3*
-%{_mandir}/man3/Test2::Compare::Set.3*
-%{_mandir}/man3/Test2::Compare::String.3*
-%{_mandir}/man3/Test2::Compare::Undef.3*
-%{_mandir}/man3/Test2::Compare::Wildcard.3*
-%{_mandir}/man3/Test2::Event.3*
-%{_mandir}/man3/Test2::Event::Bail.3*
-%{_mandir}/man3/Test2::Event::Diag.3*
-%{_mandir}/man3/Test2::Event::Encoding.3*
-%{_mandir}/man3/Test2::Event::Exception.3*
-%{_mandir}/man3/Test2::Event::Fail.3*
-%{_mandir}/man3/Test2::Event::Generic.3*
-%{_mandir}/man3/Test2::Event::Note.3*
-%{_mandir}/man3/Test2::Event::Ok.3*
-%{_mandir}/man3/Test2::Event::Pass.3*
-%{_mandir}/man3/Test2::Event::Plan.3*
-%{_mandir}/man3/Test2::Event::Skip.3*
-%{_mandir}/man3/Test2::Event::Subtest.3*
-%{_mandir}/man3/Test2::Event::TAP::Version.3*
-%{_mandir}/man3/Test2::Event::V2.3*
-%{_mandir}/man3/Test2::Event::Waiting.3*
-%{_mandir}/man3/Test2::EventFacet.3*
-%{_mandir}/man3/Test2::EventFacet::About.3*
-%{_mandir}/man3/Test2::EventFacet::Amnesty.3*
-%{_mandir}/man3/Test2::EventFacet::Assert.3*
-%{_mandir}/man3/Test2::EventFacet::Control.3*
-%{_mandir}/man3/Test2::EventFacet::Error.3*
-%{_mandir}/man3/Test2::EventFacet::Hub.3*
-%{_mandir}/man3/Test2::EventFacet::Info.3*
-%{_mandir}/man3/Test2::EventFacet::Info::Table.3*
-%{_mandir}/man3/Test2::EventFacet::Meta.3*
-%{_mandir}/man3/Test2::EventFacet::Parent.3*
-%{_mandir}/man3/Test2::EventFacet::Plan.3*
-%{_mandir}/man3/Test2::EventFacet::Render.3*
-%{_mandir}/man3/Test2::EventFacet::Trace.3*
-%{_mandir}/man3/Test2::Formatter.3*
-%{_mandir}/man3/Test2::Formatter::TAP.3*
-%{_mandir}/man3/Test2::Hub.3*
-%{_mandir}/man3/Test2::Hub::Interceptor.3*
-%{_mandir}/man3/Test2::Hub::Interceptor::Terminator.3*
-%{_mandir}/man3/Test2::Hub::Subtest.3*
-%{_mandir}/man3/Test2::IPC.3*
-%{_mandir}/man3/Test2::IPC::Driver.3*
-%{_mandir}/man3/Test2::IPC::Driver::Files.3*
-%{_mandir}/man3/Test2::Manual.3*
-%{_mandir}/man3/Test2::Manual::Anatomy.3*
-%{_mandir}/man3/Test2::Manual::Anatomy::API.3*
-%{_mandir}/man3/Test2::Manual::Anatomy::Context.3*
-%{_mandir}/man3/Test2::Manual::Anatomy::EndToEnd.3*
-%{_mandir}/man3/Test2::Manual::Anatomy::Event.3*
-%{_mandir}/man3/Test2::Manual::Anatomy::Hubs.3*
-%{_mandir}/man3/Test2::Manual::Anatomy::IPC.3*
-%{_mandir}/man3/Test2::Manual::Anatomy::Utilities.3*
-%{_mandir}/man3/Test2::Manual::Concurrency.3*
-%{_mandir}/man3/Test2::Manual::Contributing.3*
-%{_mandir}/man3/Test2::Manual::Testing.3*
-%{_mandir}/man3/Test2::Manual::Testing::Introduction.3*
-%{_mandir}/man3/Test2::Manual::Testing::Migrating.3*
-%{_mandir}/man3/Test2::Manual::Testing::Planning.3*
-%{_mandir}/man3/Test2::Manual::Testing::Todo.3*
-%{_mandir}/man3/Test2::Manual::Tooling.3*
-%{_mandir}/man3/Test2::Manual::Tooling::FirstTool.3*
-%{_mandir}/man3/Test2::Manual::Tooling::Formatter.3*
-%{_mandir}/man3/Test2::Manual::Tooling::Nesting.3*
-%{_mandir}/man3/Test2::Manual::Tooling::Plugin::TestExit.3*
-%{_mandir}/man3/Test2::Manual::Tooling::Plugin::TestingDone.3*
-%{_mandir}/man3/Test2::Manual::Tooling::Plugin::ToolCompletes.3*
-%{_mandir}/man3/Test2::Manual::Tooling::Plugin::ToolStarts.3*
-%{_mandir}/man3/Test2::Manual::Tooling::Subtest.3*
-%{_mandir}/man3/Test2::Manual::Tooling::TestBuilder.3*
-%{_mandir}/man3/Test2::Manual::Tooling::Testing.3*
-%{_mandir}/man3/Test2::Mock.3*
-%{_mandir}/man3/Test2::Plugin.3*
-%{_mandir}/man3/Test2::Plugin::BailOnFail.3*
-%{_mandir}/man3/Test2::Plugin::DieOnFail.3*
-%{_mandir}/man3/Test2::Plugin::ExitSummary.3*
-%{_mandir}/man3/Test2::Plugin::SRand.3*
-%{_mandir}/man3/Test2::Plugin::Times.3*
-%{_mandir}/man3/Test2::Plugin::UTF8.3*
-%{_mandir}/man3/Test2::Require.3*
-%{_mandir}/man3/Test2::Require::AuthorTesting.3*
-%{_mandir}/man3/Test2::Require::AutomatedTesting.3*
-%{_mandir}/man3/Test2::Require::EnvVar.3*
-%{_mandir}/man3/Test2::Require::ExtendedTesting.3*
-%{_mandir}/man3/Test2::Require::Fork.3*
-%{_mandir}/man3/Test2::Require::Module.3*
-%{_mandir}/man3/Test2::Require::NonInteractiveTesting.3*
-%{_mandir}/man3/Test2::Require::Perl.3*
-%{_mandir}/man3/Test2::Require::RealFork.3*
-%{_mandir}/man3/Test2::Require::ReleaseTesting.3*
-%{_mandir}/man3/Test2::Require::Threads.3*
-%{_mandir}/man3/Test2::Suite.3*
-%{_mandir}/man3/Test2::Todo.3*
-%{_mandir}/man3/Test2::Tools.3*
-%{_mandir}/man3/Test2::Tools::AsyncSubtest.3*
-%{_mandir}/man3/Test2::Tools::Basic.3*
-%{_mandir}/man3/Test2::Tools::Class.3*
-%{_mandir}/man3/Test2::Tools::ClassicCompare.3*
-%{_mandir}/man3/Test2::Tools::Compare.3*
-%{_mandir}/man3/Test2::Tools::Defer.3*
-%{_mandir}/man3/Test2::Tools::Encoding.3*
-%{_mandir}/man3/Test2::Tools::Event.3*
-%{_mandir}/man3/Test2::Tools::Exception.3*
-%{_mandir}/man3/Test2::Tools::Exports.3*
-%{_mandir}/man3/Test2::Tools::GenTemp.3*
-%{_mandir}/man3/Test2::Tools::Grab.3*
-%{_mandir}/man3/Test2::Tools::Mock.3*
-%{_mandir}/man3/Test2::Tools::Ref.3*
-%{_mandir}/man3/Test2::Tools::Refcount.3*
-%{_mandir}/man3/Test2::Tools::Spec.3*
-%{_mandir}/man3/Test2::Tools::Subtest.3*
-%{_mandir}/man3/Test2::Tools::Target.3*
-%{_mandir}/man3/Test2::Tools::Tester.3*
-%{_mandir}/man3/Test2::Tools::Tiny.3*
-%{_mandir}/man3/Test2::Tools::Warnings.3*
-%{_mandir}/man3/Test2::Transition.3*
-%{_mandir}/man3/Test2::Util.3*
-%{_mandir}/man3/Test2::Util::ExternalMeta.3*
-%{_mandir}/man3/Test2::Util::Facets2Legacy.3*
-%{_mandir}/man3/Test2::Util::Grabber.3*
-%{_mandir}/man3/Test2::Util::Guard.3*
-%{_mandir}/man3/Test2::Util::HashBase.3*
-%{_mandir}/man3/Test2::Util::Importer.3*
-%{_mandir}/man3/Test2::Util::Ref.3*
-%{_mandir}/man3/Test2::Util::Stash.3*
-%{_mandir}/man3/Test2::Util::Sub.3*
-%{_mandir}/man3/Test2::Util::Table.3*
-%{_mandir}/man3/Test2::Util::Table::LineBreak.3*
-%{_mandir}/man3/Test2::Util::Times.3*
-%{_mandir}/man3/Test2::Util::Trace.3*
-%{_mandir}/man3/Test2::V0.3*
-%{_mandir}/man3/Test2::Workflow.3*
-%{_mandir}/man3/Test2::Workflow::BlockBase.3*
-%{_mandir}/man3/Test2::Workflow::Build.3*
-%{_mandir}/man3/Test2::Workflow::Runner.3*
-%{_mandir}/man3/Test2::Workflow::Task.3*
-%{_mandir}/man3/Test2::Workflow::Task::Action.3*
-%{_mandir}/man3/Test2::Workflow::Task::Group.3*
-
-%files tests
-%{_libexecdir}/%{name}
-
-%changelog
-* Fri Mar 14 2025 Jyoti kanase - 1.302204-2
-- Initial Azure Linux import from Fedora 41 (license: MIT).
-- License verified.
-
-* Sun Sep 15 2024 Paul Howarth - 3:1.302204-1
-- Update to 1.302204
- - Add pending diagnostics functionality
- - Show warnings/exceptions for no_warnings() and lives()
-
-* Thu Sep 5 2024 Paul Howarth - 3:1.302203-1
-- Update to 1.302203
- - Fix some tests when run on Windows (GH#1002, GH#1003)
-
-* Wed Sep 4 2024 Paul Howarth - 3:1.302202-1
-- Update to 1.302202
- - Add comment on how to make tables bigger (GH#931)
-
-* Mon Sep 2 2024 Paul Howarth - 3:1.302201-2
-- Term::Table required when bootstrapping (rhbz#2308981)
-
-* Wed Aug 14 2024 Paul Howarth - 3:1.302201-1
-- Update to 1.302201
- - Fix bug found by new warnings in blead
-
-* Wed Aug 7 2024 Paul Howarth - 3:1.302200-1
-- Update to 1.302200
- - Merge Test2-Suite into Test-Simple
- - Some documentation updates
- - Some test fixes
-- Package tests
-
-* Fri Jul 19 2024 Fedora Release Engineering - 3:1.302199-512
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
-
-* Wed Jun 12 2024 Jitka Plesnikova - 3:1.302199-511
-- Perl 5.40 re-rebuild of bootstrapped packages
-
-* Mon Jun 10 2024 Jitka Plesnikova - 3:1.302199-510
-- Increase release to favour standalone package
-
-* Fri Apr 26 2024 Paul Howarth - 3:1.302199-1
-- Update to 1.302199
- - Minor fixes
-
-* Thu Jan 25 2024 Fedora Release Engineering - 3:1.302198-3
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
-
-* Sun Jan 21 2024 Fedora Release Engineering - 3:1.302198-2
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
-
-* Fri Dec 1 2023 Paul Howarth - 3:1.302198-1
-- Update to 1.302198
- - Remove use of defined-or operator
-
-* Wed Nov 29 2023 Paul Howarth - 3:1.302197-1
-- Update to 1.302197
- - Add ability to attach timestamps to trace objects via API or environment
- variable
-
-* Wed Oct 25 2023 Paul Howarth - 3:1.302196-1
-- Update to 1.302196
- - Raise error on missing Hub ID, which should never happen (GH#882)
- - Fix handling of VSTRING and LVALUE refs in is_deeply() (GH#918)
- - Merge several documentation fixes (GH#910, GH#911, GH#912)
-
-* Fri Jul 21 2023 Fedora Release Engineering - 3:1.302195-5
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
-
-* Wed Jul 12 2023 Jitka Plesnikova - 3:1.302195-4
-- Perl 5.38 re-rebuild of bootstrapped packages
-
-* Tue Jul 11 2023 Jitka Plesnikova - 3:1.302195-3
-- Perl 5.38 rebuild
-
-* Thu May 25 2023 Paul Howarth - 3:1.302195-2
-- Use SPDX-format license tag
-
-* Fri Apr 28 2023 Paul Howarth - 3:1.302195-1
-- Update to 1.302195
- - Fix done_testing(0) producing 2 plans and an incorrect message
-
-* Wed Mar 15 2023 Paul Howarth - 3:1.302194-1
-- Update to 1.302194
- - Fix failing test on 5.10
-
-* Mon Mar 6 2023 Paul Howarth - 3:1.302193-1
-- Update to 1.302193
- - Deprecate isn't()
-
-* Thu Feb 2 2023 Paul Howarth - 3:1.302192-1
-- Update to 1.302192
- - Silence deprecation warning when testing smartmatch
-
-* Fri Jan 20 2023 Fedora Release Engineering - 3:1.302191-3
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
-
-* Fri Jul 22 2022 Fedora Release Engineering - 3:1.302191-2
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
-
-* Mon Jul 11 2022 Paul Howarth - 3:1.302191-1
-- Update to 1.302191
- - CI fixes
- - Avoid failing when printing diagnostic info comparing partial overload
- objects
-
-* Fri Jun 03 2022 Jitka Plesnikova - 3:1.302190-489
-- Perl 5.36 re-rebuild of bootstrapped packages
-
-* Mon May 30 2022 Jitka Plesnikova - 3:1.302190-488
-- Increase release to favour standalone package
-
-* Sat Mar 5 2022 Paul Howarth - 3:1.302190-1
-- Update to 1.302190
- - Fix subtest times to be hi-res
-
-* Fri Feb 25 2022 Paul Howarth - 3:1.302189-1
-- Update to 1.302189
- - GH#890, GH#891: Methods used in overload should always be invoked with 3
- parameters
-
-* Fri Jan 21 2022 Fedora Release Engineering - 3:1.302188-2
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
-
-* Wed Sep 29 2021 Paul Howarth - 3:1.302188-1
-- Update to 1.302188
- - Fix for non-gcc compilers on 5.10.0
-
-* Sat Sep 18 2021 Paul Howarth - 3:1.302187-1
-- Update to 1.302187
- - Fix tests for core boolean support
-
-* Tue Jul 27 2021 Paul Howarth - 3:1.302186-1
-- Update to 1.302186
- - Add start/stop timestamps to subtests
-
-* Fri Jul 23 2021 Fedora Release Engineering - 3:1.302185-479
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
-
-* Mon May 24 2021 Jitka Plesnikova - 3:1.302185-478
-- Perl 5.34 re-rebuild of bootstrapped packages
-
-* Fri May 21 2021 Jitka Plesnikova - 3:1.302185-477
-- Increase release to favour standalone package
-
-* Thu May 20 2021 Paul Howarth - 3:1.302185-1
-- Update to 1.302185
- - Fix Test::Builder->skip to stringify arguments
-
-* Wed Jan 27 2021 Fedora Release Engineering - 3:1.302183-2
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
-
-* Thu Oct 22 2020 Paul Howarth - 3:1.302183-1
-- Update to 1.302183
- - Avoid closing over scalar in BEGIN block in cmp_ok eval
-
-* Thu Oct 15 2020 Petr Pisar - 3:1.302182-2
-- Demote Module::Pluggable hard dependency to Suggests level
-
-* Tue Oct 6 2020 Paul Howarth - 3:1.302182-1
-- Update to 1.302182
- - Fix 5.6 support
- - Fix fragile %%INC handling in a test
-
-* Mon Sep 14 2020 Paul Howarth - 3:1.302181-1
-- Update to 1.302181
- - Put try_sig_mask back where it goes (and add test to prevent this in the
- future)
- - Drop new List::Util requirement back down
-
-* Mon Sep 14 2020 Paul Howarth - 3:1.302180-1
-- Update to 1.302180
- - Move try_sig_mask to the only module that uses it
- - Inherit warnings bitmask in cmp_ok string eval
- - Update copyright date
- - Improved API for intercept {} and what it returns
- - Bump minimum List::Util version (for uniq)
-
-* Fri Aug 07 2020 Petr Pisar - 3:1.302177-1
-- Update to 1.302177
- - Minor fix to author downstream test
- - No significant changes since the last trial
- - Fix Test::More's $TODO inside intercept (#862)
-
-* Tue Jul 28 2020 Fedora Release Engineering - 3:1.302175-458
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
-
-* Fri Jun 26 2020 Jitka Plesnikova - 3:1.302175-457
-- Perl 5.32 re-rebuild of bootstrapped packages
-
-* Mon Jun 22 2020 Jitka Plesnikova - 3:1.302175-456
-- Increase release to favour standalone package
-
-* Tue Apr 14 2020 Paul Howarth - 3:1.302175-1
-- Update to 1.302175
- - Fix typos in POD
- - Fix incorrect Test2::Hub documentation
- - Fix test that needed . in @INC on Windows
- - Fix Breakage test to show more info
-
-* Tue Mar 31 2020 Paul Howarth - 3:1.302174-1
-- Update to 1.302174
- - Fall back to Data::Dumper if JSON::PP is not available during IPC errors
-
-* Fri Mar 27 2020 Paul Howarth - 3:1.302173-1
-- Update to 1.302173
- - Add extra debugging for "Not all files from hub '...' have been collected!"
-
-* Mon Mar 9 2020 Paul Howarth - 3:1.302172-1
-- Update to 1.302172
- - Fix transition documentation
- - Fix warnings from info/debug tap
-
-* Thu Jan 30 2020 Fedora Release Engineering - 3:1.302171-2
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
-
-* Sun Jan 19 2020 Paul Howarth - 3:1.302171-1
-- Update to 1.302171
- - Fix 5.6
- - Fix EBCDIC
- - Upgrade Object::HashBase
- - Clarify error message in test (GH#841)
- - Spelling/Grammar fixes
-
-* Thu Jan 02 2020 Petr Pisar - 3:1.302170-2
-- Require mro
-
-* Tue Dec 3 2019 Paul Howarth