Commit b0835a66 authored by Igor Stegarescu's avatar Igor Stegarescu

packaging: rpm rhel8 one click install

Change-Id: Ifebc562291c87a78a597ad93323a4693d8d4127b
parent c716beab
#!/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
RING_REPO_BASE="https://dl.jami.net/ring-nightly"
# Jami release key.
RING_KEY_FINGERPRINT="A295D773307D25A33AE72F2F64CD5FA175348F84"
RING_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-main"
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
RING_REPO='
[jami]
name=Jami $releasever - $basearch - jami
baseurl='"${RING_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: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
$RING_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
$RING_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: pulseaudio-libs-devel
BuildRequires: libcanberra-devel
BuildRequires: libtool
BuildRequires: expat-devel
BuildRequires: pcre-devel
BuildRequires: boost-devel
BuildRequires: dbus-devel
BuildRequires: libXext-devel
BuildRequires: chrpath
BuildRequires: check
BuildRequires: gettext-devel
BuildRequires: gcc-c++
BuildRequires: which
BuildRequires: alsa-lib-devel
BuildRequires: systemd-devel
BuildRequires: libuuid-devel
BuildRequires: libXfixes-devel
BuildRequires: gnutls-devel
BuildRequires: nettle-devel
#BuildRequires: jsoncpp-devel
#BuildRequires: json-devel
BuildRequires: gcc-c++
BuildRequires: glib2-devel
BuildRequires: gtk3-devel
BuildRequires: libva-devel
BuildRequires: webkitgtk4-devel
BuildRequires: qt5-devel
BuildRequires: clutter
BuildRequires: clutter-devel
BuildRequires: clutter-gtk-devel
BuildRequires: qrencode-devel
BuildRequires: yasm
BuildRequires: opus
BuildRequires: opus-devel
BuildRequires: libvdpau-devel
BuildRequires: libvdpau
BuildRequires: speexdsp
BuildRequires: speexdsp-devel
BuildRequires: cppunit-devel
BuildRequires: cppunit
BuildRequires: dbus-c++
%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/rhel/%{postinst} %{buildroot}/%{_bindir}
chmod a+x %{buildroot}/%{_bindir}/%{postinst}
%files
%{_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
#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
%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 || :
%changelog
%define spec_install_pre %{___build_pre} ; mkdir -p `dirname "$RPM_BUILD_ROOT"`; mkdir "$RPM_BUILD_ROOT" %{nil}
%define name jami
%define version RELEASE_VERSION
%define release 0
......@@ -14,6 +15,7 @@ Requires: jami-daemon = %{version}
Obsoletes: ring ring-daemon
Provides: ring
Conflicts: ring ring-daemon
#ENVRA: 01
BuildRequires: make
......@@ -78,6 +80,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
......@@ -181,6 +192,7 @@ rm -rfv %{buildroot}/%{_libdir}/cmake
DESTDIR=%{buildroot} make -C client-gnome/build install
ln -sf %{_bindir}/jami %{buildroot}/%{_bindir}/ring.cx
%files
%defattr(-,root,root,-)
%{_bindir}/jami
......@@ -204,10 +216,35 @@ ln -sf %{_bindir}/jami %{buildroot}/%{_bindir}/ring.cx
%{_datadir}/dbus-1/services/*
%{_datadir}/dbus-1/interfaces/*
%files all
%{_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
......@@ -223,6 +260,23 @@ if [ $1 -eq 0 ] ; then
/usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
fi
%postun all
/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
%posttrans
#for < f24 we have to update the schema explicitly
%if 0%{?fedora} < 24
......@@ -231,4 +285,15 @@ fi
/usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%posttrans all
#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 || :
%changelog
......@@ -26,15 +26,20 @@ set -x
# import the spec file
mkdir -p /opt/ring-project
cd /opt/ring-project
cp /opt/ring-project-ro/packaging/rules/rhel/jami.spec .
cp /opt/ring-project-ro/packaging/rules/rhel/* .
#create tree for build
rpmdev-setuptree
# place the source
mkdir -p /root/rpmbuild/SOURCES
#mkdir -p /root/rpmbuild/SOURCES
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" *.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"
......@@ -46,3 +51,20 @@ 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
......@@ -163,12 +163,22 @@ EOF
#######################################
DISTRIBUTION_MANUAL_DOWNLOAD_FOLDER=$(realpath manual-download)/${DISTRIBUTION}
mkdir -p ${DISTRIBUTION_MANUAL_DOWNLOAD_FOLDER}
for package in packages/${DISTRIBUTION}*/*.rpm; do
cp ${package} ${DISTRIBUTION_MANUAL_DOWNLOAD_FOLDER}
package_name=$(rpm -qp --queryformat '%{NAME}' ${package})
package_arch=$(rpm -qp --queryformat '%{ARCH}' ${package})
cp ${package} ${DISTRIBUTION_MANUAL_DOWNLOAD_FOLDER}/${package_name}_${package_arch}.rpm
done
if [ -d "packages/${DISTRIBUTION}/one-click-install/" ];
then
for package in packages/${DISTRIBUTION}*/one-click-install/*.rpm; do
cp ${package} ${DISTRIBUTION_MANUAL_DOWNLOAD_FOLDER}
package_name=$(rpm -qp --queryformat '%{NAME}' ${package})
package_arch=$(rpm -qp --queryformat '%{ARCH}' ${package})
cp ${package} ${DISTRIBUTION_MANUAL_DOWNLOAD_FOLDER}/${package_name}_${package_arch}.rpm
done
else
for package in packages/${DISTRIBUTION}*/*.rpm; do
cp ${package} ${DISTRIBUTION_MANUAL_DOWNLOAD_FOLDER}
package_name=$(rpm -qp --queryformat '%{NAME}' ${package})
package_arch=$(rpm -qp --queryformat '%{ARCH}' ${package})
cp ${package} ${DISTRIBUTION_MANUAL_DOWNLOAD_FOLDER}/${package_name}_${package_arch}.rpm
done
fi
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment