Skip to content
Snippets Groups Projects
Commit 0d5117e2 authored by Igor Stegarescu's avatar Igor Stegarescu Committed by Sébastien Blin
Browse files

packaging: rpm OpenSuse one click install

Change-Id: I37e40102fab0ae42199b0550039a235266faefe9
parent feca0e91
Branches
Tags
No related merge requests found
#!/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 toopensuse-leap modify these variables.
# WARNING: When modifying the paths, keep in mind that the corresponding
# postrm paths should be modified as well
REPO_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"
elif [ "${PLATFORM_ID}" = "opensuse-leap:15.1" ] || [ "${ID}_${VERSION_ID}" = "opensuse-leap_15.1" ]; then
ENDTAG="opensuse-leap_15.1"
REPO_FILE="/etc/zypp/repos.d/jami-main.repo"
GPG_FILE="/tmp/RPM-GPG-KEY-JAMI"
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
if [ "${ENDTAG}" = "opensuse-leap_15.1" ]; then
rm -f $GPG_FILE
fi
# 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 > $REPO_FILE <<EOF
$JAMI_REPO
EOF
fi
exit 0
%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: libcanberra-devel
BuildRequires: libtool
BuildRequires: pcre-devel
BuildRequires: yaml-cpp-devel
BuildRequires: boost-devel
BuildRequires: libXext-devel
BuildRequires: yasm
BuildRequires: speex-devel
BuildRequires: chrpath
BuildRequires: check
BuildRequires: astyle
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: jsoncpp-devel
BuildRequires: gcc-c++
BuildRequires: gnome-icon-theme-symbolic
BuildRequires: clutter-gtk-devel
BuildRequires: clutter-devel
BuildRequires: glib2-devel
BuildRequires: gtk3-devel
BuildRequires: libnma-devel
BuildRequires: libva-devel
BuildRequires: libvdpau-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 ##
##########################
cp %{_builddir}/ring-project/packaging/rules/opensuse-leap/%{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
...@@ -50,7 +50,7 @@ BuildRequires: libvdpau-devel ...@@ -50,7 +50,7 @@ BuildRequires: libvdpau-devel
%description %description
Jami is free software for universal communication which respects freedoms Jami is free software for universal communication which respects freedoms
and privacy of its users. and privacy of its users.
.
This package contains the desktop client: jami-gnome. This package contains the desktop client: jami-gnome.
%package daemon %package daemon
...@@ -59,9 +59,19 @@ Summary: Free software for distributed and secured communication - daemon ...@@ -59,9 +59,19 @@ Summary: Free software for distributed and secured communication - daemon
%description daemon %description daemon
Jami is free software for universal communication which respects freedoms Jami is free software for universal communication which respects freedoms
and privacy of its users. and privacy of its users.
.
This package contains the Jami daemon: dring.
%package all
Summary: Free software for distributed and secured communication
%description all
Jami is free software for universal communication which respects freedoms
and privacy of its users.
This package contains the Jami daemon: dring. This package contains the Jami daemon: dring.
%prep %prep
%setup -n ring-project %setup -n ring-project
...@@ -84,7 +94,8 @@ cd %{_builddir}/ring-project/daemon/contrib/native && \ ...@@ -84,7 +94,8 @@ cd %{_builddir}/ring-project/daemon/contrib/native && \
--disable-natpmp && \ --disable-natpmp && \
make list && \ make list && \
make fetch && \ make fetch && \
make -j4 V=1 make -j4 V=1 && \
make -j4 V=1 .ffmpeg
cd %{_builddir}/ring-project/daemon && \ cd %{_builddir}/ring-project/daemon && \
./autogen.sh && \ ./autogen.sh && \
...@@ -187,10 +198,37 @@ ln -sf %{_bindir}/jami %{buildroot}/%{_bindir}/ring.cx ...@@ -187,10 +198,37 @@ ln -sf %{_bindir}/jami %{buildroot}/%{_bindir}/ring.cx
%{_datadir}/dbus-1/services/* %{_datadir}/dbus-1/services/*
%{_datadir}/dbus-1/interfaces/* %{_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 %post
/sbin/ldconfig /sbin/ldconfig
/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || : /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
%post all
/sbin/ldconfig
/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
%postun %postun
/sbin/ldconfig /sbin/ldconfig
...@@ -199,8 +237,21 @@ if [ $1 -eq 0 ] ; then ...@@ -199,8 +237,21 @@ if [ $1 -eq 0 ] ; then
/usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
fi 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 %posttrans
/usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : /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 %changelog
...@@ -26,16 +26,21 @@ set -e ...@@ -26,16 +26,21 @@ set -e
# import the spec file # import the spec file
mkdir -p /opt/ring-project mkdir -p /opt/ring-project
cd /opt/ring-project cd /opt/ring-project
cp /opt/ring-project-ro/packaging/rules/opensuse-leap/jami.spec . cp /opt/ring-project-ro/packaging/rules/opensuse-leap/* .
#create tree for build
rpmdev-setuptree
# place the source # place the source
mkdir -p /root/rpmbuild/SOURCES cp /opt/ring-project-ro/jami_*.tar.gz /root/rpmbuild/SOURCES
cp /opt/ring-project-ro/jami_*.tar.gz /usr/src/packages/SOURCES
# Set the version # Set the version
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.spec
rpmdev-bumpspec --comment="Automatic nightly release" --userstring="Jenkins <ring@lists.savoirfairelinux.net>" jami-one-click.spec
# install build deps # install build deps
dnf builddep -y jami.spec || echo "ignoring dnf builddep failure" dnf builddep -y jami.spec || echo "ignoring dnf builddep failure"
...@@ -45,7 +50,21 @@ dnf builddep -y jami.spec || echo "ignoring dnf builddep failure" ...@@ -45,7 +50,21 @@ dnf builddep -y jami.spec || echo "ignoring dnf builddep failure"
rpmbuild -ba jami.spec rpmbuild -ba jami.spec
# move to output # move to output
mv /usr/src/packages/RPMS/*/* /opt/output mv /root/rpmbuild/RPMS/*/* /opt/output
touch /opt/output/.packages-built touch /opt/output/.packages-built
chown -R ${CURRENT_UID}:${CURRENT_UID} /opt/output 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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment