Skip to content
Snippets Groups Projects
Unverified Commit fd10998d authored by Amin Bandali's avatar Amin Bandali
Browse files

build: add separate lrc-gnome submodule for client-gnome

After the recent merge of the video renderer changes into lrc and
client-qt, the build for client-gnome is currently broken because it
has not yet been updated to follow the new API, a non-trivial task.
Thus, we add a separate lrc-gnome submodule for use by client-gnome,
as a temporary measure until the future vendoring of lrc into the two
clients.

With this change, the users of the Qt client ('jami' package) would
continue using 'jami-libclient' as a dependency, whereas for users of
the GNOME client ('jami-gnome') they would install and use the new
'jami-libclient-gnome' package.

Change-Id: I6aacb6c495c9a2953c328f2e9bfe6acd2b8cc645
parent cc05a388
Branches
Tags
No related merge requests found
...@@ -25,3 +25,6 @@ ...@@ -25,3 +25,6 @@
[submodule "plugins"] [submodule "plugins"]
path = plugins path = plugins
url = https://review.jami.net/jami-plugins url = https://review.jami.net/jami-plugins
[submodule "lrc-gnome"]
path = lrc-gnome
url = https://review.jami.net/jami-libclient
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
// - Allow publishing from any node, to avoid relying on a single machine. // - Allow publishing from any node, to avoid relying on a single machine.
// Configuration globals. // Configuration globals.
def SUBMODULES = ['daemon', 'lrc', 'client-gnome', 'client-qt'] def SUBMODULES = ['daemon', 'lrc', 'lrc-gnome', 'client-gnome', 'client-qt']
def TARGETS = [:] def TARGETS = [:]
def REMOTE_HOST = env.SSH_HOST_DL_RING_CX def REMOTE_HOST = env.SSH_HOST_DL_RING_CX
def REMOTE_BASE_DIR = '/srv/repository/ring' def REMOTE_BASE_DIR = '/srv/repository/ring'
......
...@@ -125,7 +125,7 @@ $(RELEASE_TARBALL_FILENAME): tarballs.manifest ...@@ -125,7 +125,7 @@ $(RELEASE_TARBALL_FILENAME): tarballs.manifest
rm -f "$@" rm -f "$@"
mkdir $(TMPDIR)/jami-project mkdir $(TMPDIR)/jami-project
git archive HEAD | tar xf - -C $(TMPDIR)/jami-project git archive HEAD | tar xf - -C $(TMPDIR)/jami-project
for m in daemon lrc client-gnome client-qt; do \ for m in daemon lrc lrc-gnome client-gnome client-qt; do \
(cd "$$m" && git archive --prefix "$$m/" HEAD \ (cd "$$m" && git archive --prefix "$$m/" HEAD \
| tar xf - -C $(TMPDIR)/jami-project); \ | tar xf - -C $(TMPDIR)/jami-project); \
done done
......
lrc-gnome @ 74fcb074
Subproject commit 74fcb074357421dad30181ee5b46cebd79166ca9
...@@ -80,6 +80,7 @@ Replaces: jami, ...@@ -80,6 +80,7 @@ Replaces: jami,
libqt-jami (>= 6.2.3), libqt-jami (>= 6.2.3),
Conflicts: jami, Conflicts: jami,
jami-libclient, jami-libclient,
jami-libclient-gnome,
jami-daemon, jami-daemon,
jami-gnome, jami-gnome,
libqt-jami libqt-jami
...@@ -108,7 +109,7 @@ Package: jami-gnome ...@@ -108,7 +109,7 @@ Package: jami-gnome
Architecture: any Architecture: any
Depends: ${shlibs:Depends}, Depends: ${shlibs:Depends},
${misc:Depends}, ${misc:Depends},
jami-libclient (=${binary:Version}) jami-libclient-gnome (=${binary:Version})
Description: Secure and distributed voice, video and chat platform - desktop client Description: Secure and distributed voice, video and chat platform - desktop client
Jami (jami.net) is a secure and distributed voice, video and chat communication Jami (jami.net) is a secure and distributed voice, video and chat communication
platform that requires no centralized server and leaves the power of privacy platform that requires no centralized server and leaves the power of privacy
...@@ -122,12 +123,27 @@ Depends: ${shlibs:Depends}, ...@@ -122,12 +123,27 @@ Depends: ${shlibs:Depends},
${misc:Depends}, ${misc:Depends},
jami-daemon (=${binary:Version}), jami-daemon (=${binary:Version}),
libqt-jami (>= 6.2.3) libqt-jami (>= 6.2.3)
Conflicts: jami-libclient-gnome
Description: Secure and distributed voice, video and chat platform - daemon Description: Secure and distributed voice, video and chat platform - daemon
Jami (jami.net) is a secure and distributed voice, video and chat communication Jami (jami.net) is a secure and distributed voice, video and chat communication
platform that requires no centralized server and leaves the power of privacy platform that requires no centralized server and leaves the power of privacy
in the hands of the user. in the hands of the user.
. .
This package contains the Jami client library: lrc. This package contains the Jami client library, lrc, for the Qt client.
Package: jami-libclient-gnome
Architecture: any
Depends: ${shlibs:Depends},
${misc:Depends},
jami-daemon (=${binary:Version}),
libqt-jami (>= 6.2.3)
Conflicts: jami-libclient
Description: Secure and distributed voice, video and chat platform - daemon
Jami (jami.net) is a secure and distributed voice, video and chat communication
platform that requires no centralized server and leaves the power of privacy
in the hands of the user.
.
This package contains the Jami client library, lrc, for the GNOME client.
Package: jami-daemon Package: jami-daemon
Architecture: any Architecture: any
......
...@@ -26,6 +26,7 @@ JAMI_ALL_IN_ONE_PKG_NAME="jami-all" ...@@ -26,6 +26,7 @@ JAMI_ALL_IN_ONE_PKG_NAME="jami-all"
JAMI_CLIENT_PKG_NAME="jami" JAMI_CLIENT_PKG_NAME="jami"
JAMI_CLIENT_GNOME_PKG_NAME="jami-gnome" JAMI_CLIENT_GNOME_PKG_NAME="jami-gnome"
JAMI_LIB_CLIENT_PKG_NAME="jami-libclient" JAMI_LIB_CLIENT_PKG_NAME="jami-libclient"
JAMI_LIB_CLIENT_GNOME_PKG_NAME="jami-libclient-gnome"
JAMI_DAEMON_PKG_NAME="jami-daemon" JAMI_DAEMON_PKG_NAME="jami-daemon"
# Bundled packages from contrib # Bundled packages from contrib
...@@ -100,20 +101,36 @@ override_dh_auto_build: ...@@ -100,20 +101,36 @@ override_dh_auto_build:
-DCMAKE_INSTALL_LIBDIR=lib \ -DCMAKE_INSTALL_LIBDIR=lib \
$(CMAKE_OPTIONS) .. $(CMAKE_OPTIONS) ..
# Libringclient configure (for GNOME client)
cd lrc-gnome && \
mkdir build && \
cd build && \
cmake \
-DRING_BUILD_DIR=$(CURDIR)/daemon/src \
-DENABLE_LIBWRAP=true \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
$(CMAKE_OPTIONS) ..
# libringclient build # libringclient build
make -C lrc/build -j$(NO_CPUS) V=1 make -C lrc/build -j$(NO_CPUS) V=1
# libringclient build (for GNOME client)
make -C lrc-gnome/build -j$(NO_CPUS) V=1
# GNOME client configure # GNOME client configure
cd client-gnome && \ cd client-gnome && \
mkdir build && \ mkdir build && \
cd build && \ cd build && \
cmake -DCMAKE_INSTALL_PREFIX=/usr \ cmake -DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \ -DCMAKE_INSTALL_LIBDIR=lib \
-DLibRingClient_PROJECT_DIR=/$(CURDIR)/lrc \ -DLibRingClient_PROJECT_DIR=/$(CURDIR)/lrc-gnome \
-DGSETTINGS_LOCALCOMPILE=OFF \ -DGSETTINGS_LOCALCOMPILE=OFF \
$(CMAKE_OPTIONS) .. $(CMAKE_OPTIONS) ..
# GNOME client build # GNOME client build
cd client-gnome/web && \
for f in ../../lrc-gnome/src/web-chatview/*.*; do ln -sf "$$f" .; done
make -C client-gnome/build LDFLAGS="-lpthread" -j$(NO_CPUS) V=1 make -C client-gnome/build LDFLAGS="-lpthread" -j$(NO_CPUS) V=1
# Qt client configure and build # Qt client configure and build
...@@ -141,6 +158,8 @@ override_dh_auto_clean: ...@@ -141,6 +158,8 @@ override_dh_auto_clean:
# CMake build system has no distclean target, so use clean. # CMake build system has no distclean target, so use clean.
[ -f lrc/build/Makefile ] && make -C lrc/build clean || true [ -f lrc/build/Makefile ] && make -C lrc/build clean || true
rm -rfv lrc/build rm -rfv lrc/build
[ -f lrc-gnome/build/Makefile ] && make -C lrc-gnome/build clean || true
rm -rfv lrc-gnome/build
########################### ###########################
##### gnome client clean ## ##### gnome client clean ##
...@@ -172,9 +191,13 @@ override_dh_auto_install: ...@@ -172,9 +191,13 @@ override_dh_auto_install:
## LibRingClient ## LibRingClient
cd lrc/build && make DESTDIR=$(CURDIR)/debian/$(JAMI_LIB_CLIENT_PKG_NAME) install cd lrc/build && make DESTDIR=$(CURDIR)/debian/$(JAMI_LIB_CLIENT_PKG_NAME) install
rm -rfv $(CURDIR)/debian/$(JAMI_LIB_CLIENT_PKG_NAME)/usr/include rm -rfv $(CURDIR)/debian/$(JAMI_LIB_CLIENT_PKG_NAME)/usr/include
## LibRingClient (for GNOME client)
cd lrc-gnome/build && make DESTDIR=$(CURDIR)/debian/$(JAMI_LIB_CLIENT_GNOME_PKG_NAME) install
rm -rfv $(CURDIR)/debian/$(JAMI_LIB_CLIENT_GNOME_PKG_NAME)/usr/include
# This is a symlink, should be in -dev package # This is a symlink, should be in -dev package
rm -v $(CURDIR)/debian/$(JAMI_LIB_CLIENT_PKG_NAME)/usr/lib/libringclient.so rm -v $(CURDIR)/debian/$(JAMI_LIB_CLIENT_PKG_NAME)/usr/lib/libringclient.so
rm -v $(CURDIR)/debian/$(JAMI_LIB_CLIENT_GNOME_PKG_NAME)/usr/lib/libringclient.so
# cmake files # cmake files
rm -rfv $(CURDIR)/debian/$(JAMI_CLIENT_PKG_NAME)/usr/lib/cmake rm -rfv $(CURDIR)/debian/$(JAMI_CLIENT_PKG_NAME)/usr/lib/cmake
......
...@@ -11,7 +11,7 @@ License: GPLv3+ ...@@ -11,7 +11,7 @@ License: GPLv3+
Vendor: Savoir-faire Linux Vendor: Savoir-faire Linux
URL: https://jami.net/ URL: https://jami.net/
Source: jami_%{version}.tar.gz Source: jami_%{version}.tar.gz
Requires: jami-libclient = %{version} Requires: jami-libclient-gnome = %{version}
# Build dependencies. # Build dependencies.
BuildRequires: make BuildRequires: make
......
%define name jami-libclient-gnome
%define version RELEASE_VERSION
%define release 0
Name: %{name}
Version: %{version}
Release: %{release}%{?dist}
Summary: Client library for Jami GNOME
Group: Applications/Internet
License: GPLv3+
Vendor: Savoir-faire Linux
URL: https://jami.net/
Source: jami_%{version}.tar.gz
Requires: jami-daemon = %{version}
# Build dependencies
BuildRequires: jami-daemon-devel = %{version}
Requires: jami-libqt
BuildRequires: make
%if 0%{?fedora} >= 32
BuildRequires: NetworkManager-libnm-devel
BuildRequires: cmake
BuildRequires: gcc-c++
%endif
%description
This package contains the client library of Jami GNOME, a free
software for universal communication which respects freedoms and
privacy of its users.
%prep
%setup -n jami-project
%build
# Qt-related variables
cd %{_builddir}/jami-project/lrc-gnome && \
mkdir build && cd build && \
cmake -DRING_BUILD_DIR=%{_builddir}/jami-project/daemon/src \
-DENABLE_LIBWRAP=true \
-DCMAKE_INSTALL_PREFIX=%{_prefix} \
-DCMAKE_INSTALL_LIBDIR=%{_libdir} \
-DCMAKE_BUILD_TYPE=Release \
..
make -C %{_builddir}/jami-project/lrc-gnome/build %{_smp_mflags} V=1
%install
DESTDIR=%{buildroot} make -C lrc-gnome/build install
%files
%defattr(-,root,root,-)
%{_libdir}/libringclient.so.1.0.0
%{_datadir}/libringclient
%package devel
Summary: Development files of the Jami GNOME client library
%description devel
This package contains the header files and the unversioned shared
library for developing with the Jami client library.
%files devel
%{_includedir}/libringclient
%{_libdir}/cmake/LibRingClient
# The following is a symbolic link.
%{_libdir}/libringclient.so
%post
/sbin/ldconfig
%postun
/sbin/ldconfig
...@@ -127,12 +127,16 @@ rpmdev-bumpspec --comment="Automatic nightly release" \ ...@@ -127,12 +127,16 @@ rpmdev-bumpspec --comment="Automatic nightly release" \
rpmbuild --define "debug_package %{nil}" -ba jami-daemon.spec rpmbuild --define "debug_package %{nil}" -ba jami-daemon.spec
rpm --install /root/rpmbuild/RPMS/x86_64/jami-daemon-* rpm --install /root/rpmbuild/RPMS/x86_64/jami-daemon-*
# Build the client library and install it. # Build the client library, install it, and build the Qt client.
rpmbuild --define "debug_package %{nil}" -ba jami-libclient.spec rpmbuild --define "debug_package %{nil}" -ba jami-libclient.spec
rpm --install /root/rpmbuild/RPMS/x86_64/jami-libclient-* rpm --install /root/rpmbuild/RPMS/x86_64/jami-libclient-*
# Build the GNOME and Qt clients.
rpmbuild --define "debug_package %{nil}" -ba jami-qt.spec rpmbuild --define "debug_package %{nil}" -ba jami-qt.spec
# Uninstall the client library, build and install the client library
# version specific to the GNOME client, and build the GNOME client.
rpm --erase $(rpm --query --all 'jami-libclient*')
rpmbuild --define "debug_package %{nil}" -ba jami-libclient-gnome.spec
rpm --install /root/rpmbuild/RPMS/x86_64/jami-libclient-gnome-*
rpmbuild --define "debug_package %{nil}" -ba jami-gnome.spec rpmbuild --define "debug_package %{nil}" -ba jami-gnome.spec
# Move the built packages to the output directory. # Move the built packages to the output directory.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment