diff --git a/packaging/rules/fedora/jami-all.postinst b/packaging/rules/fedora/jami-all.postinst new file mode 100755 index 0000000000000000000000000000000000000000..71cb922ae1ba25db2f3756d571020b388c988710 --- /dev/null +++ b/packaging/rules/fedora/jami-all.postinst @@ -0,0 +1,141 @@ +#!/bin/sh -e + + +############################################################################### +# JAMI PACKAGE POSTINST # +# # +# Install Jami's package repository to the trusted sources and add Jami's # +# release key to trusted keyring. # +# # +############################################################################### + + +############################################################################### +# [1] Configuration # +############################################################################### + +# All package repo urls are expected to start with this string, regardless +# of the distribution or version. The end tag is automatically appended, +# depending on the system the postinst script is run on. +# +# To update the appended end tags, modify the switch in [2]. +# FIXME As soon as the repo get renamed to /nightly fix this url +JAMI_REPO_BASE="https://dl.jami.net/ring-nightly" + +# Jami release key. +JAMI_KEY_FINGERPRINT="A295D773307D25A33AE72F2F64CD5FA175348F84" +JAMI_KEY="\ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v2 + +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 +4sRdAfS333T4Uifq4uOu +=s2aQ +-----END PGP PUBLIC KEY BLOCK-----" + +# System paths and generated variables +# In general: you will not need to modify these variables. +# WARNING: When modifying the paths, keep in mind that the corresponding +# postrm paths should be modified as well +YUM_FILE="/etc/yum.repos.d/jami-main.repo" +GPG_FILE="/etc/pki/rpm-gpg/RPM-GPG-KEY-JAMI" +RING_UPDATE_MANAGER_ID="jami" +RING_UPDATE_MANAGER_CFG="${RING_UPDATE_MANAGER_ID}.cfg" + +############################################################################### +# [2] Set package repo url depending on distribution and version # +############################################################################### + +CAN_ADD_YUM_SOURCE=true + +# Detect currently running system using /etc/os-release +# Redhat-based systems are supposed to provide /etc/os-release so if it's not +# the case then we simply don't want to provide automatic updates +if [ -f /etc/os-release ]; then + . /etc/os-release + +JAMI_REPO=' +[jami] +name='"${NAME}"' $releasever - $basearch - Jami +baseurl='"${JAMI_REPO_BASE}"/"${ID}"'_$releasever +gpgcheck=1 +gpgkey=https://dl.jami.net/ring.pub.key +enabled=1' + + # Set-up Jami repository end tag + if [ "${PLATFORM_ID}" = "platform:el8" ] || [ "${ID}_${VERSION_ID%.*}" = "rhel_8" ]; then + ENDTAG="rhel_8" + elif [ "${PLATFORM_ID}" = "platform:f27" ] || [ "${ID}_${VERSION_ID}" = "fedora_27" ]; then + ENDTAG="fedora_27" + elif [ "${PLATFORM_ID}" = "platform:f28" ] || [ "${ID}_${VERSION_ID}" = "fedora_28" ]; then + ENDTAG="fedora_28" + elif [ "${PLATFORM_ID}" = "platform:f29" ] || [ "${ID}_${VERSION_ID}" = "fedora_29" ]; then + ENDTAG="fedora_29" + elif [ "${PLATFORM_ID}" = "platform:f30" ] || [ "${ID}_${VERSION_ID}" = "fedora_30" ]; then + ENDTAG="fedora_30" + elif [ "${PLATFORM_ID}" = "platform:f31" ] || [ "${ID}_${VERSION_ID}" = "fedora_31" ]; then + ENDTAG="fedora_31" + else + # Distribution is not supported. Don't provide automatic updates. + CAN_ADD_YUM_SOURCE=false + fi +else + CAN_ADD_YUM_SOURCE=false +fi + + +############################################################################### +# [3] Maintainer script main switch # +############################################################################### + + if [ "`command -v rpm`" = "" ]; then + # we can only add key if rpm is present + CAN_ADD_YUM_SOURCE=false + fi + + if [ "${CAN_ADD_YUM_SOURCE}" = "true" ]; then +# # We first add the key to the trusted keyring. + cat > $GPG_FILE <<EOF + +$JAMI_KEY +EOF + /usr/bin/rm -f /var/lib/rpm/.rpm.lock > /dev/null 2>&1 + /usr/bin/rpm --import $GPG_FILE > /dev/null 2>&1 + + # Add an entry for the package repository to the trusted package + # FIXME As soon as we rename the repo use ring instead of jami + cat > $YUM_FILE <<EOF +$JAMI_REPO +EOF + fi +exit 0 diff --git a/packaging/rules/fedora/jami-one-click.spec b/packaging/rules/fedora/jami-one-click.spec new file mode 100644 index 0000000000000000000000000000000000000000..c29286b01f64958809f64864d9e98cc6037f09bd --- /dev/null +++ b/packaging/rules/fedora/jami-one-click.spec @@ -0,0 +1,229 @@ +%define name jami-all +%define version RELEASE_VERSION +%define release 0 +%define postinst jami-all.postinst + +Name: %{name} +Version: %{version} +Release: %{release}%{?dist} +Summary: Free software for distributed and secured communication. +Group: Applications/Internet +License: GPLv3+ +URL: https://jami.net/ +Source: jami_%{version}.tar.gz +#Requires: jami-daemon = %{version} +Obsoletes: ring ring-daemon +Provides: ring +Conflicts: ring ring-daemon + +BuildRequires: make +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: cmake +BuildRequires: pulseaudio-libs-devel +BuildRequires: libcanberra-devel +BuildRequires: libtool +BuildRequires: dbus-devel +BuildRequires: expat-devel +BuildRequires: pcre-devel +BuildRequires: yaml-cpp-devel +BuildRequires: boost-devel +BuildRequires: dbus-c++-devel +BuildRequires: dbus-devel +BuildRequires: libXext-devel +BuildRequires: yasm +BuildRequires: speex-devel +BuildRequires: chrpath +BuildRequires: check +BuildRequires: astyle +BuildRequires: uuid-c++-devel +BuildRequires: gettext-devel +BuildRequires: gcc-c++ +BuildRequires: which +BuildRequires: alsa-lib-devel +BuildRequires: systemd-devel +BuildRequires: libuuid-devel +BuildRequires: libXfixes-devel +BuildRequires: uuid-devel +BuildRequires: gnutls-devel +BuildRequires: nettle-devel +BuildRequires: opus-devel +BuildRequires: jsoncpp-devel +BuildRequires: libnatpmp-devel +BuildRequires: gsm-devel +BuildRequires: libupnp-devel +BuildRequires: gcc-c++ +BuildRequires: qt5-qtbase-devel +BuildRequires: gnome-icon-theme-symbolic +BuildRequires: clutter-gtk-devel +BuildRequires: clutter-devel +BuildRequires: glib2-devel +BuildRequires: gtk3-devel +BuildRequires: libnotify-devel +BuildRequires: qt5-qttools-devel +BuildRequires: qrencode-devel +BuildRequires: libappindicator-gtk3-devel +BuildRequires: NetworkManager-libnm-devel +BuildRequires: libva-devel +BuildRequires: webkitgtk4-devel +BuildRequires: cryptopp-devel + + +%description +Jami is free software for universal communication which respects freedoms +and privacy of its users. +. +This package contains the desktop client: jami-gnome. + +%prep +%setup -n ring-project + +%build +########################### +## Ring Daemon configure ## +########################### +mkdir -p daemon/contrib/native +cd %{_builddir}/ring-project/daemon/contrib/native && \ + ../bootstrap \ + --no-checksums \ + --disable-ogg \ + --disable-flac \ + --disable-vorbis \ + --disable-vorbisenc \ + --disable-speex \ + --disable-sndfile \ + --disable-gsm \ + --disable-speexdsp \ + --disable-natpmp && \ + make list && \ + make fetch && \ + make -j4 V=1 && \ + make -j4 V=1 .ffmpeg + +cd %{_builddir}/ring-project/daemon && \ + ./autogen.sh && \ + ./configure \ + --prefix=%{_prefix} \ + --libdir=%{_libdir} \ + --disable-shared + +############################# +## libringclient configure ## +############################# +cd %{_builddir}/ring-project/lrc && \ + mkdir build && \ + cd build && \ + cmake \ + -DRING_BUILD_DIR=%{_builddir}/ring-project/daemon/src \ + -DCMAKE_INSTALL_PREFIX=%{_prefix} \ + -DCMAKE_INSTALL_LIBDIR=%{_libdir} \ + -DCMAKE_BUILD_TYPE=Debug \ + .. + +############################ +## gnome client configure ## +############################ +cd %{_builddir}/ring-project/client-gnome && \ + mkdir build && \ + cd build && \ + cmake \ + -DCMAKE_INSTALL_PREFIX=%{_prefix} \ + -DCMAKE_INSTALL_LIBDIR=%{_libdir} \ + -DLibRingClient_PROJECT_DIR=%{_builddir}/ring-project/lrc \ + -DGSETTINGS_LOCALCOMPILE=OFF \ + .. + +####################### +## Ring Daemon build ## +####################### +make -C %{_builddir}/ring-project/daemon -j4 V=1 +pod2man %{_builddir}/ring-project/daemon/man/dring.pod > %{_builddir}/ring-project/daemon/dring.1 + +######################### +## libringclient build ## +######################### +make -C %{_builddir}/ring-project/lrc/build -j4 V=1 + +######################## +## gnome client build ## +######################## +make -C %{_builddir}/ring-project/client-gnome/build LDFLAGS="-lpthread" -j4 V=1 + + +%install +######################### +## Ring Daemon install ## +######################### +DESTDIR=%{buildroot} make -C daemon install +cp %{_builddir}/ring-project/daemon/dring.1 %{buildroot}/%{_mandir}/man1/dring.1 +rm -rfv %{buildroot}/%{_prefix}/include +rm -rfv %{buildroot}/%{_libdir}/*.a +rm -rfv %{buildroot}/%{_libdir}/*.la + +########################### +## libringclient install ## +########################### +DESTDIR=%{buildroot} make -C lrc/build install +rm -rfv %{buildroot}/%{_prefix}/include + +# This is a symlink, should be in -dev package +rm -v %{buildroot}/%{_libdir}/libringclient.so + +# cmake files +rm -rfv %{buildroot}/%{_libdir}/cmake + +########################## +## gnome client install ## +########################## +DESTDIR=%{buildroot} make -C client-gnome/build install +ln -sf %{_bindir}/jami %{buildroot}/%{_bindir}/ring.cx + +########################## +## post install script ## +########################## +#mkdir -p %{buildroot}/opt/repo-package/ +cp %{_builddir}/ring-project/packaging/rules/fedora/%{postinst} %{buildroot}/%{_bindir} +chmod a+x %{buildroot}/%{_bindir}/%{postinst} + +%files +%defattr(-,root,root,-) +%{_bindir}/jami +%{_bindir}/ring.cx +%{_bindir}/jami-gnome +%{_libdir}/libringclient*.so* +%{_datadir}/glib-2.0/schemas/net.jami.Jami.gschema.xml +%{_datadir}/applications/jami-gnome.desktop +%{_datadir}/jami-gnome/jami-gnome.desktop +%{_datadir}/icons/hicolor/scalable/apps/jami.svg +%{_datadir}/metainfo/jami-gnome.appdata.xml +%{_datadir}/libringclient/* +%{_datadir}/locale/* +%{_datadir}/sounds/jami-gnome/* +%doc %{_mandir}/man1/dring* +%{_libdir}/ring/dring +%{_datadir}/ring/ringtones +%{_datadir}/dbus-1/services/* +%{_datadir}/dbus-1/interfaces/ +%{_bindir}/%{postinst} + + +%post +/sbin/ldconfig +/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || : +if [ $1 == 1 ];then + %{_bindir}/%{postinst} +fi + +%postun +/sbin/ldconfig + +if [ $1 -eq 0 ] ; then + /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null + /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : +fi + +%posttrans + +/usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : + +%changelog diff --git a/packaging/rules/fedora/jami.spec b/packaging/rules/fedora/jami.spec index 0de9130c6ce5ebc761fa361f9257d11ca600b1e9..2a35dcf9e10a0e3b4d72b72ac33465ae51a7bdb1 100644 --- a/packaging/rules/fedora/jami.spec +++ b/packaging/rules/fedora/jami.spec @@ -83,6 +83,15 @@ and privacy of its users. . This package contains the Jami daemon: dring. + +%package all +Summary: Free software for distributed and secured communication - daemon + +%description all +Jami is free software for universal communication which respects freedoms +and privacy of its users. + + %prep %setup -n ring-project @@ -209,31 +218,63 @@ ln -sf %{_bindir}/jami %{buildroot}/%{_bindir}/ring.cx %{_datadir}/dbus-1/services/* %{_datadir}/dbus-1/interfaces/* +%files all +%defattr(-,root,root,-) +%{_bindir}/jami +%{_bindir}/ring.cx +%{_bindir}/jami-gnome +%{_libdir}/libringclient*.so* +%{_datadir}/glib-2.0/schemas/net.jami.Jami.gschema.xml +%{_datadir}/applications/jami-gnome.desktop +%{_datadir}/jami-gnome/jami-gnome.desktop +%{_datadir}/icons/hicolor/scalable/apps/jami.svg +%{_datadir}/metainfo/jami-gnome.appdata.xml +%{_datadir}/libringclient/* +%{_datadir}/locale/* +%{_datadir}/sounds/jami-gnome/* +%doc %{_mandir}/man1/dring* +%{_libdir}/ring/dring +%{_datadir}/ring/ringtones +%{_datadir}/dbus-1/services/* +%{_datadir}/dbus-1/interfaces/* + + %post /sbin/ldconfig /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || : + +%post all +/sbin/ldconfig +/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || : + + %postun /sbin/ldconfig -#for < f24 we have to update the schema explicitly -%if 0%{?fedora} < 24 - if [ $1 -eq 0 ] ; then - /usr/bin/glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || : - fi -%endif +if [ $1 -eq 0 ] ; then + /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null + /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : +fi + +%postun all + +/sbin/ldconfig if [ $1 -eq 0 ] ; then /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : fi + %posttrans -#for < f24 we have to update the schema explicitly -%if 0%{?fedora} < 24 - /usr/bin/glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || : -%endif /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : + +%posttrans all + +/usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : + + %changelog diff --git a/scripts/build-package-fedora.sh b/scripts/build-package-fedora.sh index 0784f5c92f323355f85d677fb9c61e7fb9ff89a5..64581083ee50187ee7df6a99e567977ef9b396f5 100755 --- a/scripts/build-package-fedora.sh +++ b/scripts/build-package-fedora.sh @@ -26,19 +26,25 @@ set -e # import the spec file mkdir -p /opt/ring-project cd /opt/ring-project -cp /opt/ring-project-ro/packaging/rules/fedora/jami.spec . +cp /opt/ring-project-ro/packaging/rules/fedora/* . + +#create tree for build +rpmdev-setuptree + +# place the source +cp /opt/ring-project-ro/jami_*.tar.gz /root/rpmbuild/SOURCES # Set the version -sed -i "s/RELEASE_VERSION/${RELEASE_VERSION}/g" jami.spec +#sed -i "s/RELEASE_VERSION/${RELEASE_VERSION}/g" jami.spec +sed -i "s/RELEASE_VERSION/${RELEASE_VERSION}/g" *.spec + rpmdev-bumpspec --comment="Automatic nightly release" --userstring="Jenkins <ring@lists.savoirfairelinux.net>" jami.spec +rpmdev-bumpspec --comment="Automatic nightly release" --userstring="Jenkins <ring@lists.savoirfairelinux.net>" jami-one-click.spec + # install build deps dnf builddep -y jami.spec || echo "ignoring dnf builddep failure" -# place the source -mkdir -p /root/rpmbuild/SOURCES -cp /opt/ring-project-ro/jami_*.tar.gz /root/rpmbuild/SOURCES - # build the package rpmbuild -ba jami.spec @@ -46,3 +52,19 @@ rpmbuild -ba jami.spec mv /root/rpmbuild/RPMS/*/* /opt/output touch /opt/output/.packages-built chown -R ${CURRENT_UID}:${CURRENT_UID} /opt/output + +## JAMI ONE CLICK INSTALL RPM + +#copy script jami-all.postinst which add repo +mkdir -p /root/rpmbuild/BUILD/ring-project/packaging/rules/one-click-install/ +cp jami-all.postinst /root/rpmbuild/BUILD/ring-project/packaging/rules/one-click-install/ + +# build the package +rpmbuild -ba jami-one-click.spec + +# move to output +mkdir -p /opt/output/one-click-install +mv /root/rpmbuild/RPMS/*/* /opt/output/one-click-install +touch /opt/output/one-click-install/.packages-built +chown -R ${CURRENT_UID}:${CURRENT_UID} /opt/output/one-click-install +