%define gir_major 0.6 %define gir_name %mklibname %{name}-gir %{gir_major} %define gir_core_name %mklibname %{name}core-gir %{gir_major} %define event_major 1 %define event_name %{name}-libevent %define lib_event_name %mklibname %{event_name} %{event_major} %define develnameevent %mklibname -d %event_name %define client_major 3 %define client_name %{name}-client %define lib_client_name %mklibname %{client_name} %{client_major} %define develnameclient %mklibname -d %client_name %define common_major 3 %define common_name %{name}-common %define lib_common_name %mklibname %{common_name} %{common_major} %define develnamecommon %mklibname -d %common_name # If avahi_core_major changes, make sure to update avahi-gir-fixup.patch %define core_major 7 %define core_name %{name}-core %define lib_core_name %mklibname %{core_name} %{core_major} %define develnamecore %mklibname -d %core_name %define dns_sd_major 1 %define dns_sd_name %{name}-compat-libdns_sd %define lib_dns_sd_name %mklibname %{dns_sd_name} %{dns_sd_major} %define develnamedns_sd %mklibname -d %dns_sd_name %define glib_major 1 %define glib_name %{name}-glib %define lib_glib_name %mklibname %{glib_name} %{glib_major} %define develnameglib %mklibname -d %glib_name %define gobject_major 0 %define gobject_name %{name}-gobject %define lib_gobject_name %mklibname %{gobject_name} %{gobject_major} %define develnamegobject %mklibname -d %gobject_name %define howl_major 0 %define howl_name %{name}-compat-howl %define lib_howl_name %mklibname %{howl_name} %{howl_major} %define develnamehowl %mklibname -d %howl_name %define qt5_major 1 %define qt5_name %{name}-qt5 %define lib_qt5_name %mklibname %{qt5_name}_ %{qt5_major} %define develnameqt5 %mklibname -d %qt5_name %define gtk3_major 0 %define gtk3_name %{name}-ui-gtk3 %define lib_gtk3_name %mklibname %{gtk3_name}_ %{gtk3_major} %define develnamegtk3 %mklibname -d %gtk3_name %define ui_major 0 %define ui_name %{name}-ui %define lib_ui_name %mklibname %{ui_name} %{ui_major} %define develnameui %mklibname -d %ui_name %bcond_with bootstrap %if %{without bootstrap} %ifarch %arm %mips %bcond_with mono %else %bcond_without mono %endif %bcond_without qt5 %bcond_without gtk3 %endif %bcond_with python2 Name: avahi Version: 0.8 Release: %mkrel 11 Summary: Avahi service discovery (mDNS/DNS-SD) suite License: LGPLv2+ Group: System/Servers Url: https://avahi.org/ Source0: https://github.com/lathiat/avahi/releases/download/v%{version}/%{name}-%{version}.tar.gz Source1: avahi-hostname.sh Patch0: avahi-0.6.31-automake-subdir-objects.patch ## upstream patches Patch6: 0006-avahi-dnsconfd.service-Drop-Also-avahi-daemon.socket.patch Patch7: 0007-man-add-missing-bshell.1-symlink.patch Patch8: 0008-Ship-avahi-discover-1-bssh-1-and-bvnc-1-also-for-GTK.patch Patch9: 0009-fix-requires-in-pc-file.patch Patch10: 0010-fix-bytestring-decoding-for-proper-display.patch Patch11: 0011-avahi_dns_packet_consume_uint32-fix-potential-undefi.patch Patch12: CVE-2021-3468.patch Patch13: CVE-2021-3502.patch Patch14: 0017-Emit-error-if-requested-service-is-not-found.patch Patch15: CVE-2023-38469-1.patch Patch16: CVE-2023-38469-2.patch Patch17: CVE-2023-38470-1.patch Patch18: CVE-2023-38470-2.patch Patch19: CVE-2023-38471-1.patch Patch20: CVE-2023-38471-2.patch Patch21: CVE-2023-38472.patch Patch22: CVE-2023-38473.patch BuildRequires: xmltoman BuildRequires: pkgconfig(libdaemon) BuildRequires: pkgconfig(dbus-1) BuildRequires: pkgconfig(libevent) BuildRequires: pkgconfig(expat) >= 2.0.1 BuildRequires: libgdbm-devel BuildRequires: pkgconfig(libglade-2.0) %if %{with python2} BuildRequires: pygtk2.0 BuildRequires: python2-dbus %endif BuildRequires: pkgconfig(libcap) #needed by autoreconf BuildRequires: intltool %if %{with qt5} BuildRequires: pkgconfig(Qt5Gui) BuildRequires: pkgconfig(Qt5Widgets) %endif %if %{with gtk3} BuildRequires: pkgconfig(gtk+-3.0) %endif BuildRequires: systemd-units BuildRequires: pkgconfig(libsystemd) BuildRequires: pkgconfig(gobject-introspection-1.0) Requires(post): rpm-helper >= 0.24.8-1 Requires(preun):rpm-helper >= 0.24.8-1 Requires(post): dbus Requires(preun):dbus Recommends: nss_mdns %if ! %{with python2} Obsoletes: avahi-python < %{version}-%{release} %endif %description Avahi is a system which facilitates service discovery on a local network -- this means that you can plug your laptop or computer into a network and instantly be able to view other people who you can chat with, find printers to print to or find files being shared. This kind of technology is already found in MacOS X (branded 'Rendezvous', 'Bonjour' and sometimes 'ZeroConf') and is very convenient. %package dnsconfd Group: System/Servers Summary: Avahi DNS configuration server Requires: %{name} = %{version} Requires(post): rpm-helper >= 0.24.8-1 Requires(preun): rpm-helper >= 0.24.8-1 Conflicts: avahi < 0.6.31-3 %description dnsconfd avahi-dnsconfd is a small daemon which may be used to configure conventional DNS servers using mDNS in a DHCP-like fashion. Especially useful on IPv6. %package x11 Group: System/Servers Summary: Graphical tools for Avahi Requires: %{name} = %{version} %description x11 Graphical tools for Avahi. It includes avahi-discover-standalone. %if %{with python2} %package python Group: System/Libraries Summary: Python bindings and utilities for Avahi BuildRequires: pkgconfig(pygobject-3.0) Requires: pygtk2.0-libglade Requires: python2-twisted-core Requires: python2-twisted-web Requires: python2-dbus Requires: avahi Requires: %{name}-x11 %description python Python bindings and utilities for Avahi. It includes avahi-bookmarks and avahi-discover. %endif %if %{with mono} %package sharp Group: System/Libraries Summary: Mono bindings for Avahi BuildRequires: pkgconfig(mono) BuildRequires: pkgconfig(monodoc) BuildRequires: mono-tools #gw this is needed by mono-find-requires: # BuildRequires: pkgconfig(avahi-ui) Requires: %lib_client_name = %version Requires: %lib_common_name = %version Requires: %lib_glib_name = %version %description sharp Mono bindings for Avahi. %package sharp-doc Summary: Development documentation for avahi-sharp Group: Development/Other Requires(post): mono-tools >= 1.1.9 Requires(postun): mono-tools >= 1.1.9 %description sharp-doc This package contains the API documentation for the avahi-sharp in Monodoc format. %endif %package -n %{lib_client_name} Group: System/Libraries Summary: Library for avahi-client # (eatdirt) see mga#13542 #Requires: #{name} >= #{version} %description -n %{lib_client_name} Library for avahi-client. %package -n %develnameclient Group: Development/C Summary: Devel library for avahi-client Provides: %{client_name}-devel = %{version}-%{release} Provides: lib%{client_name}-devel = %{version}-%{release} Requires: %{lib_client_name} = %{version} %description -n %develnameclient Devel library for avahi-client. %package -n %{lib_event_name} Group: System/Libraries Summary: Library for avahi-event # (eatdirt) see mga#13542 #Requires: #{name} >= #{version} %description -n %{lib_event_name} Library for avahi-event. %package -n %develnameevent Group: Development/C Summary: Devel library for avahi-event Provides: %{event_name}-devel = %{version}-%{release} Provides: lib%{event_name}-devel = %{version}-%{release} Requires: %{lib_event_name} = %{version} %description -n %develnameevent Devel library for avahi-event. %package -n %{lib_common_name} Group: System/Libraries Summary: Library for avahi-common %description -n %{lib_common_name} Library for avahi-common. %package -n %develnamecommon Group: Development/C Summary: Devel library for avahi-common Provides: %{common_name}-devel = %{version}-%{release} Provides: lib%{common_name}-devel = %{version}-%{release} Requires: %{lib_common_name} = %{version} %description -n %develnamecommon Devel library for avahi-common. %package -n %{lib_core_name} Group: System/Libraries Summary: Library for avahi-core %description -n %{lib_core_name} Library for avahi-core. %package -n %develnamecore Group: Development/C Summary: Devel library for avahi-core Provides: %{core_name}-devel = %{version}-%{release} Provides: lib%{core_name}-devel = %{version}-%{release} Requires: %{lib_core_name} = %{version} Requires: %{gir_core_name} = %{version} %description -n %develnamecore Devel library for avahi-core. %package -n %{lib_dns_sd_name} Group: System/Libraries Summary: Avahi compatibility library for libdns_sd %description -n %{lib_dns_sd_name} Avahi compatibility library for libdns_sd %package -n %develnamedns_sd Group: Development/C Summary: Avahi devel compatibility library for libdns_sd Provides: %{dns_sd_name}-devel = %{version}-%{release} Provides: lib%{dns_sd_name}-devel = %{version}-%{release} Requires: %{lib_dns_sd_name} = %{version} %description -n %develnamedns_sd Avahi devel compatibility library for libdns_sd. %package -n %{lib_glib_name} Group: System/Libraries Summary: Library for avahi-glib %description -n %{lib_glib_name} Library for avahi-glib. %package -n %develnameglib Group: Development/C Summary: Devel library for avahi-glib Provides: %{glib_name}-devel = %{version}-%{release} Provides: lib%{glib_name}-devel = %{version}-%{release} Requires: %{lib_glib_name} = %{version} %description -n %develnameglib Devel library for avahi-glib. %package -n %{lib_gobject_name} Group: System/Libraries Summary: Library for avahi-gobject %description -n %{lib_gobject_name} Library for avahi-gobject. %package -n %develnamegobject Group: Development/C Summary: Devel library for avahi-gobject Provides: %{gobject_name}-devel = %{version}-%{release} Provides: lib%{gobject_name}-devel = %{version}-%{release} Requires: %{lib_gobject_name} = %{version} Requires: %{gir_name} = %{version} %description -n %develnamegobject Devel library for avahi-gobject. %package -n %{lib_howl_name} Group: System/Libraries Summary: Avahi compatibility library for howl %description -n %{lib_howl_name} Avahi compatibility library for howl. %package -n %develnamehowl Group: Development/C Summary: Avahi devel compatibility library for libdns_sd for howl Provides: %{howl_name}-devel = %{version}-%{release} Provides: lib%{howl_name}-devel = %{version}-%{release} Provides: howl-devel = %{version}-%{release} Provides: libhowl-devel = %{version}-%{release} Requires: %{lib_howl_name} = %{version} %description -n %develnamehowl Avahi devel compatibility library for libdns_sd for howl. %if %{with qt5} %package -n %{lib_qt5_name} Group: System/Libraries Summary: Library for avahi-qt5 %description -n %{lib_qt5_name} Library for avahi-qt5. %package -n %develnameqt5 Group: Development/C Summary: Devel library for avahi-qt5 Provides: %{qt5_name}-devel = %{version}-%{release} Provides: lib%{qt5_name}-devel = %{version}-%{release} Requires: %{lib_qt5_name} = %{version} %description -n %develnameqt5 Devel library for avahi-qt5. %endif %if %{with gtk3} %package -n %{lib_gtk3_name} Group: System/Libraries Summary: Library for avahi-gtk3 %description -n %{lib_gtk3_name} Library for avahi-gtk3. %package -n %develnamegtk3 Group: Development/C Summary: Devel library for avahi-gtk3 Provides: %{gtk3_name}-devel = %{version}-%{release} Provides: lib%{gtk3_name}-devel = %{version}-%{release} Requires: %{lib_gtk3_name} = %{version} %description -n %develnamegtk3 Devel library for avahi-gtk3. %endif %package -n %{gir_core_name} Summary: GObject Introspection interface description for AvahiCore Group: System/Libraries Requires: %{lib_core_name} = %{version}-%{release} %description -n %{gir_core_name} GObject Introspection interface description for AvahiCore. %package -n %{gir_name} Summary: GObject Introspection interface description for Avahi Group: System/Libraries Requires: %{lib_gobject_name} = %{version}-%{release} %description -n %{gir_name} GObject Introspection interface description for Avahi. %prep %setup -q %autopatch -p1 cp %{SOURCE1} avahi-hostname.sh %build autoreconf -vfi export PKG_CONFIG_PATH=/usr/lib/qt5/%{_lib}/pkgconfig %configure \ --disable-static \ %if %{without mono} --disable-mono \ %endif %if %{without qt5} --disable-qt5 \ %endif %if ! %{with python2} --disable-python \ %endif --localstatedir=%{_var} \ --with-avahi-priv-access-group="avahi" \ --enable-compat-libdns_sd \ --enable-compat-howl \ --enable-introspection=yes \ %if %{without gtk3} --disable-gtk3 \ %endif --disable-qt3 %make_build %install %make_install ln -s avahi-compat-howl.pc %buildroot%_libdir/pkgconfig/howl.pc ln -s avahi-compat-libdns_sd.pc %buildroot%_libdir/pkgconfig/libdns_sd.pc %if "%_lib" != "lib" && 0%{?with_mono:1} mkdir -p %buildroot%_prefix/lib mv %buildroot%_libdir/mono %buildroot%_prefix/lib perl -pi -e "s/%_lib/lib/" %buildroot%_libdir/pkgconfig/avahi-{,ui-}sharp.pc %endif # install hostname.d hook mkdir -p %{buildroot}/%{_sysconfdir}/sysconfig/network-scripts/hostname.d/ install -m755 avahi-hostname.sh %{buildroot}/%{_sysconfdir}/sysconfig/network-scripts/hostname.d/avahi %find_lang avahi #we don't want these find %{buildroot} -name "*.la" -delete # remove example # see : https://bugs.mageia.org/show_bug.cgi?id=3419 rm -f %{buildroot}%{_sysconfdir}/avahi/services/sftp-ssh.service mkdir -p %{buildroot}%{_localstatedir}/avahi rm -f %{buildroot}%{_initrddir}/%{name}-daemon rm -f %{buildroot}%{_initrddir}/%{name}-dnsconfd %pre %_pre_useradd %{name} %{_var}/run/%{name}-daemon /bin/false %_pre_useradd %{name}-autoipd %{_var}/lib/%{name}-autoipd /bin/false # Correct home directories if users already exists (mga#10004) if [ "`grep -E '^%{name}:' < /etc/passwd | cut -f6 -d:`" = %{_var}/avahi ]; then %{_sbindir}/usermod -d %{_var}/run/%{name}-daemon %{name} fi if [ "`grep -E '^%{name}-autoipd:' < /etc/passwd | cut -f6 -d:`" = %{_var}/avahi ]; then %{_sbindir}/usermod -d %{_var}/lib/%{name}-autoipd %{name}-autoipd fi %postun # Note postun_userdel is a dummy script. It does not do anything! %_postun_userdel %{name} %_postun_userdel %{name}-autoipd %post %_post_service %{name}-daemon %preun %_preun_service %{name}-daemon %post dnsconfd %_post_service %{name}-dnsconfd %preun dnsconfd %_preun_service %{name}-dnsconfd %if %{with mono} %post sharp-doc %_bindir/monodoc --make-index > /dev/null %postun sharp-doc if [ "$1" = "0" -a -x %_bindir/monodoc ]; then %_bindir/monodoc --make-index > /dev/null fi %endif %files -f avahi.lang %dir %{_sysconfdir}/%{name}/ %dir %{_sysconfdir}/%{name}/services/ %config(noreplace) %{_sysconfdir}/%{name}/hosts %config(noreplace) %{_sysconfdir}/%{name}/%{name}-daemon.conf %config(noreplace) %{_sysconfdir}/%{name}/avahi-autoipd.action %config(noreplace) %{_sysconfdir}/dbus-1/system.d/%{name}-dbus.conf %config(noreplace) %{_sysconfdir}/%{name}/services/ssh.service %attr(0755,avahi,avahi) %dir %{_localstatedir}/avahi %{_sysconfdir}/sysconfig/network-scripts/hostname.d/avahi %{_bindir}/%{name}-browse %{_bindir}/%{name}-browse-domains %{_bindir}/%{name}-publish %{_bindir}/%{name}-publish-address %{_bindir}/%{name}-publish-service %{_bindir}/%{name}-resolve %{_bindir}/%{name}-resolve-address %{_bindir}/%{name}-resolve-host-name %{_bindir}/%{name}-set-host-name %{_sbindir}/%{name}-daemon %{_sbindir}/avahi-autoipd %{_datadir}/%{name}/%{name}-service.dtd %{_datadir}/dbus-1/interfaces/*.xml #%%{_datadir}/%%{name}/introspection/AddressResolver.introspect #%%{_datadir}/%%{name}/introspection/DomainBrowser.introspect #%%{_datadir}/%%{name}/introspection/EntryGroup.introspect #%%{_datadir}/%%{name}/introspection/HostNameResolver.introspect #%%{_datadir}/%%{name}/introspection/RecordBrowser.introspect #%%{_datadir}/%%{name}/introspection/Server.introspect #%%{_datadir}/%%{name}/introspection/ServiceBrowser.introspect #%%{_datadir}/%%{name}/introspection/ServiceResolver.introspect #%%{_datadir}/%%{name}/introspection/ServiceTypeBrowser.introspect #%%{_datadir}/%%{name}/service-types %{_mandir}/man1/%{name}-browse-domains.1* %{_mandir}/man1/%{name}-browse.1* %{_mandir}/man1/%{name}-publish.1* %{_mandir}/man1/%{name}-publish-address.1* %{_mandir}/man1/%{name}-publish-service.1* %{_mandir}/man1/%{name}-resolve.1* %{_mandir}/man1/%{name}-resolve-address.1* %{_mandir}/man1/%{name}-resolve-host-name.1* %{_mandir}/man1/%{name}-set-host-name.1* %{_mandir}/man5/%{name}-daemon.conf.5* %{_mandir}/man5/%{name}.hosts.5* %{_mandir}/man5/%{name}.service.5* %{_mandir}/man8/%{name}-daemon.8* %{_mandir}/man8/avahi-autoipd* %dir %{_datadir}/%{name} %{_unitdir}/avahi-daemon.service %{_unitdir}/avahi-daemon.socket %{_datadir}/dbus-1/system-services/org.freedesktop.Avahi.service %if %{with python2} %{_libdir}/avahi/service-types.db %endif %files dnsconfd %{_sysconfdir}/%{name}/%{name}-dnsconfd.action %{_sbindir}/%{name}-dnsconfd %{_mandir}/man8/%{name}-dnsconfd.8* %{_mandir}/man8/%{name}-dnsconfd.action.8* %{_unitdir}/avahi-dnsconfd.service %files x11 %{_bindir}/%{name}-discover-standalone %{_bindir}/bshell %{_bindir}/bssh %{_bindir}/bvnc %{_datadir}/applications/bssh.desktop %{_datadir}/applications/bvnc.desktop %{_datadir}/%{name}/interfaces/%{name}-discover.ui %{_mandir}/man1/bshell.1* %{_mandir}/man1/bssh.1* %{_mandir}/man1/bvnc.1* %if %{with python2} %files python %{_bindir}/%{name}-bookmarks %{_bindir}/%{name}-discover %{_datadir}/applications/%{name}-discover.desktop %{python2_sitelib}/%{name}/ %{python2_sitelib}/avahi_discover/ %{_mandir}/man1/%{name}-discover.1* %{_mandir}/man1/%{name}-bookmarks.1* %endif %if %{with mono} %files sharp %{_prefix}/lib/mono/%{name}-sharp/%{name}-sharp.dll %{_prefix}/lib/mono/gac/%{name}-sharp/ %{_libdir}/pkgconfig/%{name}-sharp.pc %{_libdir}/pkgconfig/%{name}-ui-sharp.pc %files sharp-doc %{_usr}/lib/monodoc/sources/%{name}-sharp-docs.source %{_usr}/lib/monodoc/sources/%{name}-sharp-docs.tree %{_usr}/lib/monodoc/sources/%{name}-sharp-docs.zip %endif %files -n %{lib_client_name} %{_libdir}/lib%{name}-client.so.%{client_major}{,.*} %files -n %{lib_event_name} %{_libdir}/lib%{name}-libevent.so.%{event_major}{,.*} %files -n %{lib_common_name} %{_libdir}/lib%{name}-common.so.%{common_major}{,.*} %files -n %{lib_core_name} %{_libdir}/lib%{name}-core.so.%{core_major}{,.*} %files -n %{lib_dns_sd_name} %{_libdir}/libdns_sd.so.%{dns_sd_major}{,.*} %files -n %{lib_glib_name} %{_libdir}/lib%{name}-glib.so.%{glib_major}{,.*} %files -n %{lib_gobject_name} %{_libdir}/lib%{name}-gobject.so.%{gobject_major}{,.*} %files -n %{lib_howl_name} %{_libdir}/libhowl.so.%{howl_major}{,.*} %if %{with qt5} %files -n %{lib_qt5_name} %{_libdir}/lib%{name}-qt5.so.%{qt5_major}{,.*} %endif %if %{with gtk3} %files -n %{lib_gtk3_name} %{_libdir}/lib%{name}-ui-gtk3.so.%{gtk3_major}{,.*} %endif %files -n %develnameclient %{_includedir}/%{name}-client %{_libdir}/lib%{name}-client.so %{_libdir}/pkgconfig/%{name}-client.pc %files -n %develnameevent %{_includedir}/%{name}-libevent %{_libdir}/lib%{name}-libevent.so %{_libdir}/pkgconfig/%{name}-libevent.pc %files -n %develnamecommon %{_includedir}/%{name}-common %{_libdir}/lib%{name}-common.so %files -n %develnamecore %{_includedir}/%{name}-core %{_libdir}/lib%{name}-core.so %{_libdir}/pkgconfig/%{name}-core.pc %{_datadir}/gir-1.0/AvahiCore-%{gir_major}.gir %files -n %develnamedns_sd %{_includedir}/%{name}-compat-libdns_sd %{_libdir}/libdns_sd.so %{_libdir}/pkgconfig/%{name}-compat-libdns_sd.pc %{_libdir}/pkgconfig/libdns_sd.pc %files -n %develnameglib %{_includedir}/%{name}-glib %{_libdir}/lib%{name}-glib.so %{_libdir}/pkgconfig/%{name}-glib.pc %files -n %develnamegobject %{_includedir}/%{name}-gobject %{_libdir}/lib%{name}-gobject.so %{_libdir}/pkgconfig/%{name}-gobject.pc %{_datadir}/gir-1.0/Avahi-%{gir_major}.gir %files -n %develnamehowl %{_includedir}/%{name}-compat-howl %{_libdir}/libhowl.so %{_libdir}/pkgconfig/%{name}-compat-howl.pc %{_libdir}/pkgconfig/howl.pc %if %{with qt5} %files -n %develnameqt5 %{_includedir}/%{name}-qt5 %{_libdir}/lib%{name}-qt5.so %{_libdir}/pkgconfig/%{name}-qt5.pc %endif %if %{with gtk3} %files -n %develnamegtk3 %{_includedir}/%{name}-ui/ %{_libdir}/libavahi-ui-gtk3.so %{_libdir}/pkgconfig/avahi-ui-gtk3.pc %endif %files -n %gir_name %{_libdir}/girepository-1.0/Avahi-%{gir_major}.typelib %files -n %gir_core_name %{_libdir}/girepository-1.0/AvahiCore-%{gir_major}.typelib