-Summary: LIVE.COM libraries for streaming media
-Summary(pl): Biblioteki LIVE.COM do strumieni multimedialnych
+# TODO:
+# - mediaServer should have init-scripts, user, etc, etc...
+# - package test apps (?)
+#
+# Conditional build:
+%bcond_without static_libs # static libraries
+%bcond_without atomic_flag # C++20 std::atomic_flag functionality
+
+Summary: LIVE555 streaming media server
+Summary(pl.UTF-8): LIVE555 - serwer strumieni multimedialnych
Name: live
-Version: 2005.01.07
+Version: 2024.02.28
Release: 1
Epoch: 2
-License: LGPL
-Group: Libraries
-Source0: http://www.live.com/liveMedia/public/%{name}.%{version}.tar.gz
-# Source0-md5: 141bb0a395320c7041c2f81ec5004190
-URL: http://live.sourceforge.net/
+License: LGPL v2.1+
+Group: Applications/Multimedia
+Source0: http://www.live555.com/liveMedia/public/%{name}.%{version}.tar.gz
+# Source0-md5: 8c4a142349abbdf6e5e24813c7a15501
+Source1: http://www.live555.com/liveMedia/public/changelog.txt
+# Source1-md5: 000f6435ea418b0365f68d83edd7a361
+Patch0: %{name}-link.patch
+# from debian
+Patch1: %{name}-pkgconfig.patch
+URL: http://www.live555.com/liveMedia/
+%if %{with atomic_flag}
+BuildRequires: libstdc++-devel >= 6:11
+%else
BuildRequires: libstdc++-devel
+%endif
+BuildRequires: openssl-devel
BuildRequires: sed >= 4.0
+Requires: %{name}-libs = %{epoch}:%{version}-%{release}
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+%define specflags -fno-strict-aliasing
+# circular symbol dependencies with libBasicUsageEnvironment
+%define skip_post_check_so .*%{_libdir}/libUsageEnvironment\.so.*
+
%description
-LIVE.COM libraries for streaming media.
+LIVE555 streaming media server.
+
+%description -l pl.UTF-8
+LIVE555 - serwer strumieni multimedialnych.
+
+%package libs
+Summary: Shared LIVE555 libraries for streaming media
+Summary(pl.UTF-8): Biblioteki współdzielone LIVE555 do strumieni multimedialnych
+Group: Libraries
+
+%description libs
+Shared LIVE555 libraries for streaming media.
+
+%description libs -l pl.UTF-8
+Biblioteki współdzielone LIVE555 do strumieni multimedialnych.
-%description -l pl
-Biblioteki LIVE.COM do strumieni multimedialnych.
+%package devel
+Summary: Header files for developing programs using LIVE555
+Summary(pl.UTF-8): Pliki nagłówkowe do biblioteki LIVE555
+Group: Development/Libraries
+Requires: %{name}-libs = %{epoch}:%{version}-%{release}
+Requires: libstdc++-devel
+Obsoletes: live < 2:2009.07.09-2.5
+
+%description devel
+Header files for developing programs using LIVE555.
+
+%description devel -l pl.UTF-8
+Pliki nagłówkowe do biblioteki LIVE555
+
+%package static
+Summary: Static LIVE555 libraries for streaming media
+Summary(pl.UTF-8): Biblioteki statyczne LIVE555 do strumieni multimedialnych
+Group: Development/Libraries
+Requires: %{name}-devel = %{epoch}:%{version}-%{release}
+
+%description static
+Static LIVE555 libraries for streaming media.
+
+%description static -l pl.UTF-8
+Biblioteki statyczne LIVE555 do strumieni multimedialnych.
%prep
-%setup -q -n live
+%setup -q -c
+%patch0 -p1
+%patch1 -p1
+
+# disable building test programs
+%{__sed} -i -e '/cd \$(TESTPROGS_DIR)/d' live/Makefile.tail
+
+# out-of-source builds not supported, so clone sources for shared and static build
+%if %{with static_libs}
+cp -pPR live live-static
+%endif
+%{__mv} live live-shared
-# no <strstream.h> in gcc 3.3 - but... this API is not used anyway
-echo > groupsock/strstream.h
+cp -af %{SOURCE1} ChangeLog.txt
%build
+%if %{with static_libs}
+cd live-static
./genMakefiles linux
-sed -i -e 's#$(TESTPROGS_APP)##g' Makefile Makefile.tail
%{__make} \
C_COMPILER="%{__cc}" \
CPLUSPLUS_COMPILER="%{__cxx}" \
- COMPILE_OPTS="\$(INCLUDES) -I. %{rpmcflags} -DSOCKLEN_T=socklen_t"
+ CPPFLAGS="%{rpmcppflags} %{!?with_atomic_flag:-DNO_STD_LIB}" \
+ CFLAGS="%{rpmcflags} -fPIC" \
+ CXXFLAGS="%{rpmcxxflags} -fPIC"
+cd ..
+%endif
+
+cd live-shared
+./genMakefiles linux-with-shared-libraries
+%{__make} \
+ C_COMPILER="%{__cc}" \
+ CPLUSPLUS_COMPILER="%{__cxx}" \
+ CPPFLAGS="%{rpmcppflags} %{!?with_atomic_flag:-DNO_STD_LIB}" \
+ CFLAGS="%{rpmcflags}" \
+ CXXFLAGS="%{rpmcxxflags}" \
+ LIBRARY_LINK="%{__cxx} -o"
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT%{_libdir}/liveMedia/liveMedia
-install -d $RPM_BUILD_ROOT%{_libdir}/liveMedia/groupsock
-install -d $RPM_BUILD_ROOT%{_libdir}/liveMedia/UsageEnvironment
-install -d $RPM_BUILD_ROOT%{_libdir}/liveMedia/BasicUsageEnvironment
-
-install liveMedia/libliveMedia.a $RPM_BUILD_ROOT%{_libdir}/liveMedia/liveMedia
-install groupsock/libgroupsock.a $RPM_BUILD_ROOT%{_libdir}/liveMedia/groupsock
-install UsageEnvironment/libUsageEnvironment.a $RPM_BUILD_ROOT%{_libdir}/liveMedia/UsageEnvironment
-install BasicUsageEnvironment/libBasicUsageEnvironment.a $RPM_BUILD_ROOT%{_libdir}/liveMedia/BasicUsageEnvironment
-
-install -d $RPM_BUILD_ROOT%{_includedir}/liveMedia
-
-install liveMedia/include/* $RPM_BUILD_ROOT%{_includedir}/liveMedia
-install UsageEnvironment/include/* $RPM_BUILD_ROOT%{_includedir}/liveMedia
-install BasicUsageEnvironment/include/* $RPM_BUILD_ROOT%{_includedir}/liveMedia
-install groupsock/include/* $RPM_BUILD_ROOT%{_includedir}/liveMedia
+%if %{with static_libs}
+# static first so that binaries will be overwritten by shared version
+%{__make} -C live-static install \
+ PREFIX=%{_prefix} \
+ LIBDIR=%{_libdir} \
+ DESTDIR=$RPM_BUILD_ROOT
+%endif
+
+%{__make} -C live-shared install \
+ PREFIX=%{_prefix} \
+ LIBDIR=%{_libdir} \
+ DESTDIR=$RPM_BUILD_ROOT
+
%clean
rm -rf $RPM_BUILD_ROOT
+%post libs -p /sbin/ldconfig
+%postun libs -p /sbin/ldconfig
+
%files
%defattr(644,root,root,755)
-%{_libdir}/liveMedia
+%attr(755,root,root) %{_bindir}/live555HLSProxy
+%attr(755,root,root) %{_bindir}/live555MediaServer
+%attr(755,root,root) %{_bindir}/live555ProxyServer
+
+%files libs
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libBasicUsageEnvironment.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libBasicUsageEnvironment.so.2
+%attr(755,root,root) %{_libdir}/libUsageEnvironment.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libUsageEnvironment.so.3
+%attr(755,root,root) %{_libdir}/libgroupsock.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libgroupsock.so.30
+%attr(755,root,root) %{_libdir}/libliveMedia.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libliveMedia.so.112
+
+%files devel
+%defattr(644,root,root,755)
+%doc ChangeLog.txt
+%attr(755,root,root) %{_libdir}/libBasicUsageEnvironment.so
+%attr(755,root,root) %{_libdir}/libUsageEnvironment.so
+%attr(755,root,root) %{_libdir}/libgroupsock.so
+%attr(755,root,root) %{_libdir}/libliveMedia.so
+%{_includedir}/BasicUsageEnvironment
+%{_includedir}/UsageEnvironment
+%{_includedir}/groupsock
%{_includedir}/liveMedia
+%{_pkgconfigdir}/live555.pc
+
+%if %{with static_libs}
+%files static
+%defattr(644,root,root,755)
+%{_libdir}/libBasicUsageEnvironment.a
+%{_libdir}/libUsageEnvironment.a
+%{_libdir}/libgroupsock.a
+%{_libdir}/libliveMedia.a
+%endif