# FIXME: Currently requires internet and npm during build due to massively # outdated nodejs-rollup package and missing rollup plugins in Fedora %bcond_with ffmpeg %bcond_with bundled_duktape Name: janus Version: 0.14.2 Release: 1%{?dist} Summary: General purpose WebRTC server License: GPLv3 URL: https://janus.conf.meetecho.com Source0: https://github.com/meetecho/janus-gateway/archive/v%{version}.tar.gz#/%{name}-gateway-%{version}.tar.gz Source1: %{name}.service Patch0: %{name}-fedora-crypto-policy.patch Patch1: 1001_try_enable_docs_by_default.patch Patch2: 1002_fix_rollup.patch Patch4: 2004_avoid_stun_privacy_breach.patch BuildRequires: autoconf BuildRequires: automake BuildRequires: doxygen BuildRequires: duktape-devel BuildRequires: gengetopt BuildRequires: glib2-devel BuildRequires: jansson-devel BuildRequires: libconfig-devel BuildRequires: libcurl-devel BuildRequires: libmicrohttpd-devel BuildRequires: libnice-devel BuildRequires: libogg-devel BuildRequires: librabbitmq-devel BuildRequires: libsrtp-devel BuildRequires: libtool BuildRequires: libwebsockets-devel BuildRequires: lua-devel BuildRequires: nanomsg-devel BuildRequires: npm BuildRequires: openssl-devel BuildRequires: opus-devel BuildRequires: paho-c-devel BuildRequires: pkgconfig BuildRequires: sofia-sip-devel BuildRequires: systemd BuildRequires: usrsctp-devel %{?with_ffmpeg:BuildRequires: ffmpeg-devel} %description Janus is an open source, general purpose, WebRTC server designed and developed by Meetecho. %package modules-all Summary: Meta package to install all %{name} modules BuildArch: noarch Requires: %{name}-eventhandler-gelf = %{version}-%{release} Requires: %{name}-eventhandler-mqtt = %{version}-%{release} Requires: %{name}-eventhandler-nanomsg = %{version}-%{release} Requires: %{name}-eventhandler-rabbitmq = %{version}-%{release} Requires: %{name}-eventhandler-sample = %{version}-%{release} Requires: %{name}-eventhandler-websockets = %{version}-%{release} Requires: %{name}-logger-json = %{version}-%{release} Requires: %{name}-plugin-audiobridge = %{version}-%{release} %{?bundled_duktape:Requires: %{name}-plugin-duktape = %{version}-%{release} } Requires: %{name}-plugin-echotest = %{version}-%{release} Requires: %{name}-plugin-lua = %{version}-%{release} Requires: %{name}-plugin-nosip = %{version}-%{release} Requires: %{name}-plugin-recordplay = %{version}-%{release} Requires: %{name}-plugin-sip = %{version}-%{release} Requires: %{name}-plugin-streaming = %{version}-%{release} Requires: %{name}-plugin-textroom = %{version}-%{release} Requires: %{name}-plugin-videocall = %{version}-%{release} Requires: %{name}-plugin-videoroom = %{version}-%{release} Requires: %{name}-plugin-voicemail = %{version}-%{release} Requires: %{name}-transport-http = %{version}-%{release} Requires: %{name}-transport-mqtt = %{version}-%{release} Requires: %{name}-transport-nanomsg = %{version}-%{release} Requires: %{name}-transport-pfunix = %{version}-%{release} Requires: %{name}-transport-rabbitmq = %{version}-%{release} Requires: %{name}-transport-websockets = %{version}-%{release} %description modules-all This meta package pulls in all available modules for %{name}. %package docs Summary: Documentation and demo files for %{name} BuildArch: noarch Requires: %{name}-modules-all = %{version}-%{release} %description docs The %{name}-docs package contains documentation and demonstration files for the Janus WebRTC server. %package devel Summary: Development files for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} %description devel The %{name}-devel package contains libraries and header files for developing applications that use %{name}. %package eventhandler-gelf Summary: GELF event handler for the Janus WebRTC server Requires: %{name}%{?_isa} = %{version}-%{release} %description eventhandler-gelf The GELF eventhandler for the Janus WebRTC server. %package eventhandler-mqtt Summary: MQTT event handler for the Janus WebRTC server Requires: %{name}%{?_isa} = %{version}-%{release} %description eventhandler-mqtt The MQTT eventhandler for the Janus WebRTC server. %package eventhandler-nanomsg Summary: Nanomsg event handler for the Janus WebRTC server Requires: %{name}%{?_isa} = %{version}-%{release} %description eventhandler-nanomsg The Nanomsg eventhandler for the Janus WebRTC server. %package eventhandler-rabbitmq Summary: RabbitMQ event handler for the Janus WebRTC server Requires: %{name}%{?_isa} = %{version}-%{release} %description eventhandler-rabbitmq The rabbitmq eventhandler for the Janus WebRTC server. %package eventhandler-sample Summary: Sample event handler for the Janus WebRTC server Requires: %{name}%{?_isa} = %{version}-%{release} %description eventhandler-sample The Sample eventhandler for the Janus WebRTC server. %package eventhandler-websockets Summary: WebSockets event handler for the Janus WebRTC server Requires: %{name}%{?_isa} = %{version}-%{release} %description eventhandler-websockets The WebSockets eventhandler for the Janus WebRTC server. %package logger-json Summary: JSON logger for the Janus WebRTC server Requires: %{name}%{?_isa} = %{version}-%{release} %description logger-json The JSON logger for the Janus WebRTC server. %package plugin-audiobridge Summary: Audiobridge plugin for the Janus WebRTC server Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-audiobridge The audiobridge plugin for the Janus WebRTC server. %{?bundled_duktape: %package plugin-duktape Summary: Duktape JavaScript interpreter plugin for the Janus WebRTC server Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-duktape The Duktape JavaScript interpreter plugin for the Janus WebRTC server. } %package plugin-echotest Summary: Echo test plugin for the Janus WebRTC server Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-echotest The echotest plugin for the Janus WebRTC server. %package plugin-lua Summary: Lua plugin for the Janus WebRTC server Requires: %{name}%{?_isa} = %{version}-%{release} Requires: lua Requires: lua-json Requires: lua-term %description plugin-lua The Lua plugin for the Janus WebRTC server. %package plugin-nosip Summary: Nosip plugin for the Janus WebRTC server Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-nosip The nosip plugin for the Janus WebRTC server. %package plugin-recordplay Summary: Recordplay plugin for the Janus WebRTC server Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-recordplay The recordplay plugin for the Janus WebRTC server. %package plugin-sip Summary: SIP plugin for the Janus WebRTC server Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-sip The SIP plugin for the Janus WebRTC server. %package plugin-streaming Summary: Streaming plugin for the Janus WebRTC server Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-streaming The Streaming plugin for the Janus WebRTC server. %package plugin-textroom Summary: Textroom plugin for the Janus WebRTC server Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-textroom The Textroom plugin for the Janus WebRTC server. %package plugin-videocall Summary: videocall plugin for the Janus WebRTC server Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-videocall The Videocall plugin for the Janus WebRTC server. %package plugin-videoroom Summary: Videoroom plugin for the Janus WebRTC server Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-videoroom The Videoroom plugin for the Janus WebRTC server. %package plugin-voicemail Summary: Voicemail plugin for the Janus WebRTC server Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-voicemail The Voicemail plugin for the Janus WebRTC server. %package transport-http Summary: HTTP transport for the Janus WebRTC server Requires: %{name}%{?_isa} = %{version}-%{release} %description transport-http The HTTP transport for the Janus WebRTC server. %package transport-mqtt Summary: MQTT transport for the Janus WebRTC server Requires: %{name}%{?_isa} = %{version}-%{release} %description transport-mqtt The MQTT transport for the Janus WebRTC server. %package transport-nanomsg Summary: Nanomsg transport for the Janus WebRTC server Requires: %{name}%{?_isa} = %{version}-%{release} %description transport-nanomsg The Nanomsg transport for the Janus WebRTC server. %package transport-pfunix Summary: PF_UNIX transport for the Janus WebRTC server Requires: %{name}%{?_isa} = %{version}-%{release} %description transport-pfunix The PF_UNIX transport for the Janus WebRTC server. %package transport-rabbitmq Summary: RabbitMQ transport for the Janus WebRTC server Requires: %{name}%{?_isa} = %{version}-%{release} %description transport-rabbitmq The RabbitMQ transport for the Janus WebRTC server. %package transport-websockets Summary: WebSockets transport for the Janus WebRTC server Requires: %{name}%{?_isa} = %{version}-%{release} %description transport-websockets The WebSockets transport for the Janus WebRTC server. %prep %autosetup -p1 -n %{name}-gateway-%{version} %build ./autogen.sh %configure \ %{?bundled_duktape: --enable-plugin-duktape }\ %{?with_ffmpeg: --enable-post-processing } \ --enable-all-js-modules \ --enable-json-logger \ --enable-plugin-lua %make_build %install rm -rf $RPM_BUILD_ROOT %make_install doxygendir=%{_docdir}/%{name} find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';' make configs DESTDIR=$RPM_BUILD_ROOT # Remove sample configs, they are identical to their non-sample counterparts rm -f $RPM_BUILD_ROOT/%{_sysconfdir}/%{name}/*.sample install -Dpm 0644 %{SOURCE1} $RPM_BUILD_ROOT%{_unitdir}/%{name}.service # make installs README.md here, but we have this in %%doc already rm -rf $RPM_BUILD_ROOT%{_docdir}/%{name}-gateway # make installs an index.html here to remind us to build the docs # we did build the docs though, so we link them in. rm -rf $RPM_BUILD_ROOT%{_datadir}/%{name}/demos/docs ln -s ../../doc/%{name}/html/ $RPM_BUILD_ROOT%{_datadir}/%{name}/demos/docs # Fix non-executable-script error in rpmlint output chmod +x $RPM_BUILD_ROOT%{_datadir}/%{name}/streams/test_gstreamer.sh chmod +x $RPM_BUILD_ROOT%{_datadir}/%{name}/streams/test_gstreamer_1.sh %files %license COPYING %doc CHANGELOG.md README.md %dir %{_sysconfdir}/%{name} %config(noreplace) %{_sysconfdir}/%{name}/%{name}.jcfg %{_bindir}/%{name} %{_bindir}/%{name}-cfgconv %{_mandir}/man1/%{name}-cfgconv.1.gz %{_mandir}/man1/%{name}.1.gz %dir %{_datadir}/%{name} %{_datadir}/%{name}/javascript %{_unitdir}/%{name}.service %{?with_ffmpeg: %{_bindir}/%{name}-pp-rec %{_bindir}/mjr2pcap %{_mandir}/man1/%{name}-pp-rec.1.gz %{_mandir}/man1/mjr2pcap.1.gz } %files devel %{_includedir}/%{name} %files docs %{_docdir}/%{name} %{_datadir}/%{name}/demos # Packages are not built if empty, so just add the license file here %files modules-all %license COPYING # For these we need to include the *.so files here and not in -devel # as this is how janus loads it's plugins %files eventhandler-gelf %config(noreplace) %{_sysconfdir}/%{name}/%{name}.eventhandler.gelfevh.jcfg %{_libdir}/%{name}/events/libjanus_gelfevh.so* %files eventhandler-mqtt %config(noreplace) %{_sysconfdir}/%{name}/%{name}.eventhandler.mqttevh.jcfg %{_libdir}/%{name}/events/libjanus_mqttevh.so* %files eventhandler-nanomsg %config(noreplace) %{_sysconfdir}/%{name}/%{name}.eventhandler.nanomsgevh.jcfg %{_libdir}/%{name}/events/libjanus_nanomsgevh.so* %files eventhandler-rabbitmq %config(noreplace) %{_sysconfdir}/%{name}/%{name}.eventhandler.rabbitmqevh.jcfg %{_libdir}/%{name}/events/libjanus_rabbitmqevh.so* %files eventhandler-sample %config(noreplace) %{_sysconfdir}/%{name}/%{name}.eventhandler.sampleevh.jcfg %{_libdir}/%{name}/events/libjanus_sampleevh.so* %files eventhandler-websockets %config(noreplace) %{_sysconfdir}/%{name}/%{name}.eventhandler.wsevh.jcfg %{_libdir}/%{name}/events/libjanus_wsevh.so* %files logger-json %config(noreplace) %{_sysconfdir}/%{name}/%{name}.logger.jsonlog.jcfg %{_libdir}/%{name}/loggers/libjanus_jsonlog.so* %files plugin-audiobridge %config(noreplace) %{_sysconfdir}/%{name}/%{name}.plugin.audiobridge.jcfg %{_libdir}/%{name}/plugins/libjanus_audiobridge.so* %{?bundled_duktape: %files plugin-duktape %config(noreplace) %{_sysconfdir}/%{name}/%{name}.plugin.duktape.jcfg %{_libdir}/%{name}/plugins/libjanus_duktape.so* %{_datadir}/%{name}/duktape } %files plugin-echotest %config(noreplace) %{_sysconfdir}/%{name}/%{name}.plugin.echotest.jcfg %{_libdir}/%{name}/plugins/libjanus_echotest.so* %files plugin-lua %config(noreplace) %{_sysconfdir}/%{name}/%{name}.plugin.lua.jcfg %{_libdir}/%{name}/plugins/libjanus_lua.so* %{_datadir}/%{name}/lua %files plugin-nosip %config(noreplace) %{_sysconfdir}/%{name}/%{name}.plugin.nosip.jcfg %{_libdir}/%{name}/plugins/libjanus_nosip.so* %files plugin-recordplay %config(noreplace) %{_sysconfdir}/%{name}/%{name}.plugin.recordplay.jcfg %{_libdir}/%{name}/plugins/libjanus_recordplay.so* %{_datadir}/%{name}/recordings %files plugin-sip %config(noreplace) %{_sysconfdir}/%{name}/%{name}.plugin.sip.jcfg %{_libdir}/%{name}/plugins/libjanus_sip.so* %files plugin-streaming %config(noreplace) %{_sysconfdir}/%{name}/%{name}.plugin.streaming.jcfg %{_libdir}/%{name}/plugins/libjanus_streaming.so* %{_datadir}/%{name}/streams %files plugin-textroom %config(noreplace) %{_sysconfdir}/%{name}/%{name}.plugin.textroom.jcfg %{_libdir}/%{name}/plugins/libjanus_textroom.so* %files plugin-videocall %config(noreplace) %{_sysconfdir}/%{name}/%{name}.plugin.videocall.jcfg %{_libdir}/%{name}/plugins/libjanus_videocall.so* %files plugin-videoroom %config(noreplace) %{_sysconfdir}/%{name}/%{name}.plugin.videoroom.jcfg %{_libdir}/%{name}/plugins/libjanus_videoroom.so* %files plugin-voicemail %config(noreplace) %{_sysconfdir}/%{name}/%{name}.plugin.voicemail.jcfg %{_libdir}/%{name}/plugins/libjanus_voicemail.so* %files transport-http %config(noreplace) %{_sysconfdir}/%{name}/%{name}.transport.http.jcfg %{_libdir}/%{name}/transports/libjanus_http.so* %files transport-mqtt %config(noreplace) %{_sysconfdir}/%{name}/%{name}.transport.mqtt.jcfg %{_libdir}/%{name}/transports/libjanus_mqtt.so* %files transport-nanomsg %config(noreplace) %{_sysconfdir}/%{name}/%{name}.transport.nanomsg.jcfg %{_libdir}/%{name}/transports/libjanus_nanomsg.so* %files transport-pfunix %config(noreplace) %{_sysconfdir}/%{name}/%{name}.transport.pfunix.jcfg %{_libdir}/%{name}/transports/libjanus_pfunix.so* %files transport-rabbitmq %config(noreplace) %{_sysconfdir}/%{name}/%{name}.transport.rabbitmq.jcfg %{_libdir}/%{name}/transports/libjanus_rabbitmq.so* %files transport-websockets %config(noreplace) %{_sysconfdir}/%{name}/%{name}.transport.websockets.jcfg %{_libdir}/%{name}/transports/libjanus_websockets.so* %changelog * Mon Apr 29 2024 Felix Kaechele - 0.14.2-1 - update to 0.14.2 * Fri Mar 10 2023 Felix Kaechele - 0.13.3-1 - update to 0.13.3 * Mon Aug 22 2022 Felix Kaechele - 0.12.4-1 - update to 0.12.4 * Wed Jun 29 2022 Felix Kaechele - 0.12.3-1 - update to 0.12.3 * Sun Feb 20 2022 Felix Kaechele - 0.11.8-1 - update to 0.11.8 * Fri Feb 04 2022 Felix Kaechele - 0.11.7-1 - update to 0.11.7 * Sun Jan 09 2022 Felix Kaechele - 0.11.6-1 - update to 0.11.6 * Tue Nov 09 2021 Felix Kaechele - 0.11.5-1 - update to 0.11.5 * Mon Sep 06 2021 Felix Kaechele - 0.11.4-1 - update to 0.11.4 * Thu May 06 2021 Felix Kaechele - 0.11.2-1 - update to 0.11.2 * Sun Apr 25 2021 Felix Kaechele - 0.11.1-2 - update systemd unit to wait for network-online.target (fixes startup fail when config needs DNS) * Thu Apr 08 2021 Felix Kaechele - 0.11.1-1 - update to 0.11.1 * Fri Feb 12 2021 Felix Kaechele - 0.10.10-1 - update to 0.10.10 * Mon Jan 4 2021 Felix Kaechele - 0.10.9-1 - update to 0.10.9 * Mon Dec 7 2020 Felix Kaechele - 0.10.8-1 - update to 0.10.8 * Thu Oct 29 2020 Felix Kaechele - 0.10.6-1 - update to 0.10.6 * Fri Sep 25 2020 Felix Kaechele - 0.10.5-1 - update to 0.10.5 * Sun Sep 06 2020 Felix Kaechele - 0.10.4-1 - update to 0.10.4 * Mon Jun 22 2020 Felix Kaechele - 0.10.2-1 - update to 0.10.2 * Thu Jun 04 2020 Felix Kaechele - 0.10.0-1 - update to 0.10.0 * Mon Apr 20 2020 Felix Kaechele - 0.9.2-2 - add systemd unit * Fri Apr 17 2020 Felix Kaechele - 0.9.2-1 - Initial spec file