diff --git a/client-gnome b/client-gnome index 85f1eada83083cc8532652e0854b039750fc994e..885f8de7952118be4a0a0a1c4843bbb11b4f6d16 160000 --- a/client-gnome +++ b/client-gnome @@ -1 +1 @@ -Subproject commit 85f1eada83083cc8532652e0854b039750fc994e +Subproject commit 885f8de7952118be4a0a0a1c4843bbb11b4f6d16 diff --git a/client-qt b/client-qt index 8caf659bb8a4c0a052da30e0c424af42e75af676..af14a4a8240b591b9a681186b7220b7f84720364 160000 --- a/client-qt +++ b/client-qt @@ -1 +1 @@ -Subproject commit 8caf659bb8a4c0a052da30e0c424af42e75af676 +Subproject commit af14a4a8240b591b9a681186b7220b7f84720364 diff --git a/daemon b/daemon index 1689ace9c2f39b640cb4930231e0ab36f4bcb935..cafc155db39abceee190a5c0bc72217e0acdd9af 160000 --- a/daemon +++ b/daemon @@ -1 +1 @@ -Subproject commit 1689ace9c2f39b640cb4930231e0ab36f4bcb935 +Subproject commit cafc155db39abceee190a5c0bc72217e0acdd9af diff --git a/lrc b/lrc index 3880b1e5b393c0098bed052f0fe11f574c362d1f..461e0fcff1e5aa1fff3ca4aaa498b407e80d4841 160000 --- a/lrc +++ b/lrc @@ -1 +1 @@ -Subproject commit 3880b1e5b393c0098bed052f0fe11f574c362d1f +Subproject commit 461e0fcff1e5aa1fff3ca4aaa498b407e80d4841 diff --git a/packaging/rules/snap/icons/jami.svg b/packaging/rules/snap/common/icons/jami.svg similarity index 100% rename from packaging/rules/snap/icons/jami.svg rename to packaging/rules/snap/common/icons/jami.svg diff --git a/packaging/rules/snap/common/scripts/jami-qt-wrapper b/packaging/rules/snap/common/scripts/jami-qt-wrapper new file mode 100755 index 0000000000000000000000000000000000000000..9d793872221bcb14d737fbe780a9349d00fb70b4 --- /dev/null +++ b/packaging/rules/snap/common/scripts/jami-qt-wrapper @@ -0,0 +1,5 @@ +#!/bin/sh + +export QTWEBENGINEPROCESS_PATH="$SNAP/opt/qt515/libexec/QtWebEngineProcess" + +exec "$@" diff --git a/packaging/rules/snap/snapcraft.yaml b/packaging/rules/snap/jami-gnome/snapcraft.yaml similarity index 97% rename from packaging/rules/snap/snapcraft.yaml rename to packaging/rules/snap/jami-gnome/snapcraft.yaml index 13c01b71b4eb8605fdfa71399ea2e4f1108698d1..0b8e422f6ca624f9cd63c938da1f343ece652e2d 100644 --- a/packaging/rules/snap/snapcraft.yaml +++ b/packaging/rules/snap/jami-gnome/snapcraft.yaml @@ -1,4 +1,4 @@ -# Copyright (C) 2019-2020 Savoir-faire Linux Inc. +# Copyright (C) 2019-2021 Savoir-faire Linux Inc. # # Author: Sébastien Blin <sebastien.blin@savoirfairelinux.com> # Author: Amin Bandali <amin.bandali@savoirfairelinux.com> @@ -47,7 +47,7 @@ name: jami version: "RELEASE_VERSION" adopt-info: jami -icon: icons/jami.svg +icon: ../common/icons/jami.svg summary: 'Jami: secure, distributed communication software & SIP client' description: > Jami is free software which allows its users to communicate in multiple ways. @@ -101,8 +101,6 @@ layout: bind: $SNAP/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/alsa-lib /usr/share/alsa: bind: $SNAP/usr/share/alsa - /usr/local/share/jami-gnome: - bind: $SNAP/usr/share/jami-gnome environment: DISABLE_WAYLAND: 'true' @@ -114,7 +112,6 @@ apps: command-chain: - bin/desktop-launch - snap/command-chain/alsa-launch - # - bin/jami-gnome-wrapper common-id: net.jami.Jami desktop: usr/share/applications/jami-gnome.desktop slots: @@ -190,12 +187,6 @@ parts: mkdir -pv $SNAPCRAFT_PART_INSTALL/gnome-platform - scripts: - plugin: dump - source: scripts - organize: - jami-gnome-wrapper: bin/jami-gnome-wrapper - alsa-mixin: plugin: dump source: https://github.com/diddlesnaps/snapcraft-alsa.git @@ -209,7 +200,7 @@ parts: jami: after: [alsa-mixin] - source: ../../.. + source: ../../../.. source-type: local plugin: nil parse-info: [usr/share/metainfo/jami-gnome.appdata.xml] diff --git a/packaging/rules/snap/jami/snapcraft.yaml b/packaging/rules/snap/jami/snapcraft.yaml new file mode 100644 index 0000000000000000000000000000000000000000..eec32c1045328f9b77a97e863d8f51372df9ab2f --- /dev/null +++ b/packaging/rules/snap/jami/snapcraft.yaml @@ -0,0 +1,378 @@ +# Copyright (C) 2019-2021 Savoir-faire Linux Inc. +# +# Author: Sébastien Blin <sebastien.blin@savoirfairelinux.com> +# Author: Amin Bandali <amin.bandali@savoirfairelinux.com> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + + +# This file is based on earlier work by Daniel Llewellyn, under the +# Expat License (also referred to as "the MIT License"), per the +# following notice: + +# Copyright (C) 2017-2020 Daniel Llewellyn <daniel@bowlhat.net> +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation files +# (the "Software"), to deal in the Software without restriction, +# including without limitation the rights to use, copy, modify, merge, +# publish, distribute, sublicense, and/or sell copies of the Software, +# and to permit persons to whom the Software is furnished to do so, +# subject to the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + + +name: jami +version: "RELEASE_VERSION" +adopt-info: jami +icon: ../common/icons/jami.svg +summary: 'Jami: secure, distributed communication software & SIP client' +description: > + Jami is free software which allows its users to communicate in multiple ways. + + * A telephone: a simple tool to connect, communicate and share. + * A teleconferencing tool: easily join calls to create conferences with multiple participants. + * A media sharing tool: Jami supports a variety of video input options, including mutliple cameras and image and video files, and the selection of audio inputs and outputs; all this is supported by multiple high quality audio and video codecs. + * A messenger: send text messeges during calls or out of calls (as long as your peer is connected). + * A building block for your IoT project: re-use the universal communications technology of Jami with its portable library on your system of choice. + +confinement: strict +grade: stable +base: core18 + +plugs: + gnome-3-28-1804: + interface: content + target: $SNAP/gnome-platform + default-provider: gnome-3-28-1804:gnome-3-28-1804 + gtk-3-themes: + interface: content + target: $SNAP/data-dir/themes + default-provider: gtk-common-themes:gtk-3-themes + icon-themes: + interface: content + target: $SNAP/data-dir/icons + default-provider: gtk-common-themes:icon-themes + sound-themes: + interface: content + target: $SNAP/data-dir/sounds + default-provider: gtk-common-themes:sounds-themes + +slots: + dbus-jami: + interface: dbus + bus: session + name: net.jami.Jami + dbus-ring: + interface: dbus + bus: session + name: cx.ring.Ring + +layout: + /usr/lib/$SNAPCRAFT_ARCH_TRIPLET/alsa-lib: + bind: $SNAP/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/alsa-lib + /usr/share/alsa: + bind: $SNAP/usr/share/alsa + +environment: + XDG_CURRENT_DESKTOP: Unity + +apps: + jami: + command: usr/bin/jami-qt + command-chain: + - bin/desktop-launch + - snap/command-chain/alsa-launch + - bin/jami-qt-wrapper + autostart: jami-qt.desktop + common-id: net.jami.Jami + desktop: usr/share/applications/jami-qt.desktop + slots: + - dbus-jami + - dbus-ring + plugs: + - alsa + - audio-playback + - audio-record + - browser-support + - camera + - desktop + - desktop-legacy + - gsettings + - hardware-observe + - home + - network + - network-bind + - network-manager + - opengl + - removable-media + - system-observe + - unity7 + - wayland + - x11 + +package-repositories: + - type: apt + ppa: beineri/opt-qt-5.15.2-bionic + # qt515base consists of: + # Qt5Concurrent, Qt5Core, Qt5DBus, Qt5EglFSDeviceIntegration, + # Qt5EglFsKmsSupport, Qt5Gui, Qt5Network, Qt5OpenGL, + # Qt5PrintSupport, Qt5Sql, Qt5Test, Qt5Widgets, Qt5XcbQpa, + # Qt5Xml + +parts: + desktop-launch: + source: https://github.com/ubuntu/snapcraft-desktop-helpers.git + plugin: nil + build-packages: + - dpkg-dev + - gcc-8 + - qt515base + stage-packages: + - qt515base + - qt515svg # for loading icon themes which are svg + - try: [appmenu-qt5] # not available on core18 + override-pull: | + snapcraftctl pull + sed -i -E 's|\. \$SNAP/flavor-select|USE_gtk3=true|' gtk/launcher-specific + sed -i -E 's|\. \$SNAP/flavor-select|USE_qt5=true|' qt/launcher-specific + sed -i -E 's|(append_dir GTK_PATH \$RUNTIME/usr/lib/\$ARCH/gtk-2.0)|#\1|' qt/launcher-specific + sed -i -E 's|\$RUNTIME|$SNAP|g' qt/launcher-specific + sed -i -E 's|\$WITH_RUNTIME|no|g' qt/launcher-specific + override-build: | + snapcraftctl build + gcc -Wall -O2 -o bindtextdomain.so -fPIC -shared src/bindtextdomain.c -ldl + + echo "#!/bin/bash" > desktop-launch + cat common/init >> desktop-launch + + cat qt/runtime-exports >> desktop-launch + cat gtk/runtime-exports >> desktop-launch + + cat common/desktop-exports >> desktop-launch + + cat qt/launcher-specific >> desktop-launch + cat gtk/launcher-specific >> desktop-launch + + cat common/mark-and-exec >> desktop-launch + + install -D -m755 desktop-launch $SNAPCRAFT_PART_INSTALL/bin/desktop-launch + install -D -m644 bindtextdomain.so $SNAPCRAFT_PART_INSTALL/lib/bindtextdomain.so + + mkdir -pv $SNAPCRAFT_PART_INSTALL/gnome-platform + + scripts: + plugin: dump + source: ../common/scripts + organize: + jami-qt-wrapper: bin/jami-qt-wrapper + + alsa-mixin: + plugin: dump + source: https://github.com/diddlesnaps/snapcraft-alsa.git + source-subdir: snapcraft-assets + stage: + - -usr/lib/x86_64-linux-gnu/libp11-kit.so* + - -usr/lib/x86_64-linux-gnu/libproxy.so* + - -usr/share/doc/libp11-kit0/changelog.Debian.gz + - -usr/share/doc/libproxy1v5/changelog.Debian.gz + build-packages: + - libasound2-dev + stage-packages: + - libasound2 + - libasound2-plugins + - yad + + jami: + after: [alsa-mixin] + source: ../../../.. + source-type: local + plugin: nil + parse-info: [usr/share/metainfo/jami-qt.appdata.xml] + stage: + - -usr/lib/x86_64-linux-gnu/liblber-2.4.so* + - -usr/lib/x86_64-linux-gnu/libldap_r-2.4.so* + - -usr/share/doc/libldap-2.4-2/changelog.Debian.gz + - -usr/share/doc/libldap-common/changelog.Debian.gz + build-environment: + - QT_BASE_DIR: "/opt/qt515" + - QTDIR: "$QT_BASE_DIR" + - QTVER: "5.15.2" + - PATH: "$QT_BASE_DIR/bin:$PATH" + - LD_LIBRARY_PATH: "$QT_BASE_DIR/lib:$LD_LIBRARY_PATH" + - PKG_CONFIG_PATH: "$QT_BASE_DIR/lib/pkgconfig:$PKG_CONFIG_PATH" + override-pull: | + snapcraftctl pull + sed -i -E 's|(tmpName) << (PACKAGE_NAME << "_shm_")|\1 << "snap.jami." << \2|' daemon/src/media/video/sinkclient.cpp + for file in jami-qt.desktop jami-qt.desktop.autostart; do + sed -i -E 's|^Icon=.*|Icon=${SNAP}/usr/share/icons/hicolor/scalable/apps/jami.svg|' client-qt/$file + done + override-build: | + update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 10 + update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 20 + update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 10 + update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 20 + + cd $SNAPCRAFT_PART_BUILD/daemon/contrib + mkdir -p native + cd native + ../bootstrap + make .ffmpeg + make + + cd $SNAPCRAFT_PART_BUILD/daemon + ./autogen.sh + ./configure --prefix=/usr + make -j$SNAPCRAFT_PARALLEL_BUILD_COUNT + DESTDIR=$SNAPCRAFT_PART_INSTALL make install + + cd $SNAPCRAFT_PART_BUILD/lrc + mkdir build + cd build + cmake .. -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_PREFIX_PATH=$SNAPCRAFT_PART_INSTALL/usr \ + -DENABLE_STATIC=true -DENABLE_LIBWRAP=true \ + -DRING_BUILD_DIR=$SNAPCRAFT_PART_BUILD/daemon/src \ + -DQT5_VER=$QTVER -DQT5_PATH=$QTDIR + make -j$SNAPCRAFT_PARALLEL_BUILD_COUNT + DESTDIR=$SNAPCRAFT_PART_INSTALL make install + + sed -i "s|/usr|$SNAPCRAFT_PART_INSTALL/usr|g" $SNAPCRAFT_PART_INSTALL/usr/lib/cmake/LibRingClient/LibRingClientConfig.cmake + + cd $SNAPCRAFT_PART_BUILD/client-qt + mkdir build + cd build + cmake .. -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_PREFIX_PATH=$SNAPCRAFT_PART_INSTALL/usr \ + -DENABLE_STATIC=true \ + -DLRC=$SNAPCRAFT_PART_BUILD/lrc \ + -DLRCLIB=$SNAPCRAFT_PART_INSTALL/usr/lib \ + -DQT5_VER=$QTVER -DQT5_PATH=$QTDIR + make -j$SNAPCRAFT_PARALLEL_BUILD_COUNT + DESTDIR=$SNAPCRAFT_PART_INSTALL make install + build-packages: + - autoconf + - autoconf-archive + - automake + - autopoint + - bzip2 + - cmake + - curl + - g++-8 + - gettext + - gzip + - libasound2-dev + - libavcodec-dev + - libavdevice-dev + - libavformat-dev + - libboost-dev + - libdbus-1-dev + - libdbus-c++-dev + - libexpat1-dev + - libglu1-mesa-dev + - libgnutls28-dev + - libjack-jackd2-dev + - libjsoncpp-dev + - libnm-dev + - libnotify-dev + - libopus-dev + - libpcre3-dev + - libpulse-dev + - libqrencode-dev + - libsamplerate0-dev + - libsndfile1-dev + - libspeex-dev + - libspeexdsp-dev + - libsrtp0-dev + - libssl-dev + - libswscale-dev + - libtool + - libudev-dev + - libupnp-dev + - libva-dev + - libvdpau-dev + - libyaml-cpp-dev + - nasm # seems to be needed for building libvpx on an 18.04 base + - qt515base + - qt515declarative + - qt515graphicaleffects + - qt515multimedia + - qt515quickcontrols + - qt515quickcontrols2 + - qt515svg + - qt515tools + - qt515webchannel + - qt515webengine + - uuid-dev + - yasm + stage-packages: + - libavcodec-extra + - libavcodec57 + - libavdevice57 + - libavformat57 + - libdbus-1-3 + - libdbus-c++-1-0v5 + - libexpat1 + - libglu1-mesa + - libgnutls30 + - libjack-jackd2-0 + - libjsoncpp1 + - libnm-dev + - libopus0 + - libpcre3 + - libqrencode3 + - libsamplerate0 + - libslang2 + - libsndfile1 + - libspeex1 + - libspeexdsp1 + - libswscale4 + - libudev1 + - libupnp6 + - libuuid1 + - libva-drm2 + - libva-glx2 + - libva-wayland2 + - libva2 + - libvdpau-va-gl1 + - libvdpau1 + - qt515base + - qt515declarative + - qt515graphicaleffects + - qt515multimedia + - qt515quickcontrols + - qt515quickcontrols2 + - qt515svg + - qt515tools + - qt515webchannel + - qt515webengine + - va-driver-all + prime: + - -opt/qt515/bin/ + - -opt/qt515/docs/ + - -opt/qt515/examples/ + - -usr/lib/$SNAPCRAFT_ARCH_TRIPLET/libLLVM-*.so* + - -usr/lib/$SNAPCRAFT_ARCH_TRIPLET/libclang-*.so* + - -usr/lib/$SNAPCRAFT_ARCH_TRIPLET/libflite*.so* diff --git a/packaging/rules/snap/scripts/jami-gnome-wrapper b/packaging/rules/snap/scripts/jami-gnome-wrapper deleted file mode 100755 index bb1dd0432a3943fef7bd9bd108fac55616a77e3d..0000000000000000000000000000000000000000 --- a/packaging/rules/snap/scripts/jami-gnome-wrapper +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh - -$SNAP/usr/lib/ring/dring -cd & -exec "$@" diff --git a/scripts/build-package-snap.sh b/scripts/build-package-snap.sh index 8855f840bf3c3333357a8b72657d4fc966266a38..9112bf94acffaf097c8b1b397e7d2a8c4fcc27f5 100755 --- a/scripts/build-package-snap.sh +++ b/scripts/build-package-snap.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (C) 2020 Savoir-faire Linux Inc. +# Copyright (C) 2020-2021 Savoir-faire Linux Inc. # # Author: Amin Bandali <amin.bandali@savoirfairelinux.com> # @@ -24,7 +24,7 @@ set -e cp -rp /opt/ring-project-ro /opt/ring-project -cd /opt/ring-project/packaging/rules/snap/ +cd /opt/ring-project/packaging/rules/snap/jami/ # set the version and tarball filename sed -i "s/RELEASE_VERSION/${RELEASE_VERSION}/g" snapcraft.yaml