diff --git a/Makefile b/Makefile index a35bc6fa6292bfac268e435ad9a334a2624c4ea8..ac0e3873d482fc86294684c178cf8823f5a9eb18 100644 --- a/Makefile +++ b/Makefile @@ -41,6 +41,15 @@ DEBIAN_OCI_VERSION:=$(RELEASE_VERSION)~dfsg1-0 DEBIAN_OCI_DSC_FILENAME:=jami_$(DEBIAN_OCI_VERSION).dsc DEBIAN_OCI_PKG_DIR:="packaging/rules/debian-one-click-install" +# Qt versions +QT_MAJOR:=5 +QT_MINOR:=15 +QT_PATCH:=2 +QT_TARBALL_CHECKSUM:="3a530d1b243b5dec00bc54937455471aaa3e56849d2593edb8ded07228202240" +DEBIAN_QT_VERSION:=$(QT_MAJOR).$(QT_MINOR).$(QT_PATCH)-1 +DEBIAN_QT_DSC_FILENAME:=libqt-jami_$(DEBIAN_QT_VERSION).dsc +QT_JAMI_PREFIX:="/usr/lib/libqt-jami" + ##################### ## Other variables ## ##################### diff --git a/docker/Dockerfile_debian_10_qt b/docker/Dockerfile_debian_10_qt new file mode 100644 index 0000000000000000000000000000000000000000..32459806d5baa8a914916857d623bf0dda4b42a9 --- /dev/null +++ b/docker/Dockerfile_debian_10_qt @@ -0,0 +1,31 @@ +FROM debian:buster + +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get clean +RUN apt-get update && \ + apt-get install -y -o Acquire::Retries=10 \ + devscripts \ + wget + +# add/enable src repos (needed for next step) +RUN sed -n '/^deb\s/s//deb-src /p' /etc/apt/sources.list > /etc/apt/sources.list.d/deb-src.list + +RUN apt-get clean && apt-get update +COPY packaging/rules/debian-qt/* ${OVERRIDE_PACKAGING_DIR} /tmp/builddeps/debian/ +RUN cd /tmp/builddeps/debian; \ + if [ -n "${OVERRIDE_PACKAGING_DIR}" ] && [ -d "$(basename ${OVERRIDE_PACKAGING_DIR})" ]; then \ + mv "$(basename ${OVERRIDE_PACKAGING_DIR})"/* .; \ + rm -r "$(basename ${OVERRIDE_PACKAGING_DIR})"; \ + fi; \ + cd ..; \ + apt-get update; \ + mk-build-deps \ + --remove --install \ + --tool "apt-get -y --no-install-recommends -o Acquire::Retries=10" \ + "debian/control"; \ + cd / && rm -rf /tmp/builddeps + +ADD scripts/build-package-debian-qt.sh /opt/build-package-debian-qt.sh + +CMD /opt/build-package-debian-qt.sh diff --git a/docker/Dockerfile_ubuntu_18.04_qt b/docker/Dockerfile_ubuntu_18.04_qt new file mode 100644 index 0000000000000000000000000000000000000000..222be506c1b40deadec434c73648f92003539514 --- /dev/null +++ b/docker/Dockerfile_ubuntu_18.04_qt @@ -0,0 +1,32 @@ +FROM ubuntu:18.04 + +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get clean +RUN apt-get update && \ + apt-get install -y -o Acquire::Retries=10 \ + devscripts \ + equivs \ + wget + +# add/enable src repos (needed for next step) +RUN sed -n '/^deb\s/s//deb-src /p' /etc/apt/sources.list > /etc/apt/sources.list.d/deb-src.list + +RUN apt-get clean && apt-get update +COPY packaging/rules/debian-qt/* ${OVERRIDE_PACKAGING_DIR} /tmp/builddeps/debian/ +RUN cd /tmp/builddeps/debian; \ + if [ -n "${OVERRIDE_PACKAGING_DIR}" ] && [ -d "$(basename ${OVERRIDE_PACKAGING_DIR})" ]; then \ + mv "$(basename ${OVERRIDE_PACKAGING_DIR})"/* .; \ + rm -r "$(basename ${OVERRIDE_PACKAGING_DIR})"; \ + fi; \ + cd ..; \ + apt-get update; \ + mk-build-deps \ + --remove --install \ + --tool "apt-get -y --no-install-recommends -o Acquire::Retries=10" \ + "debian/control"; \ + cd / && rm -rf /tmp/builddeps + +ADD scripts/build-package-debian-qt.sh /opt/build-package-debian-qt.sh + +CMD /opt/build-package-debian-qt.sh diff --git a/docker/Dockerfile_ubuntu_18.04_qt_i386 b/docker/Dockerfile_ubuntu_18.04_qt_i386 new file mode 100644 index 0000000000000000000000000000000000000000..271b8afda4cf8fe14e779f45974347af098159f7 --- /dev/null +++ b/docker/Dockerfile_ubuntu_18.04_qt_i386 @@ -0,0 +1,32 @@ +FROM i386/ubuntu:18.04 + +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get clean +RUN apt-get update && \ + apt-get install -y -o Acquire::Retries=10 \ + devscripts \ + equivs \ + wget + +# add/enable src repos (needed for next step) +RUN sed -n '/^deb\s/s//deb-src /p' /etc/apt/sources.list > /etc/apt/sources.list.d/deb-src.list + +RUN apt-get clean && apt-get update +COPY packaging/rules/debian-qt/* ${OVERRIDE_PACKAGING_DIR} /tmp/builddeps/debian/ +RUN cd /tmp/builddeps/debian; \ + if [ -n "${OVERRIDE_PACKAGING_DIR}" ] && [ -d "$(basename ${OVERRIDE_PACKAGING_DIR})" ]; then \ + mv "$(basename ${OVERRIDE_PACKAGING_DIR})"/* .; \ + rm -r "$(basename ${OVERRIDE_PACKAGING_DIR})"; \ + fi; \ + cd ..; \ + apt-get update; \ + mk-build-deps \ + --remove --install \ + --tool "apt-get -y --no-install-recommends -o Acquire::Retries=10" \ + "debian/control"; \ + cd / && rm -rf /tmp/builddeps + +ADD scripts/build-package-debian-qt.sh /opt/build-package-debian-qt.sh + +CMD /opt/build-package-debian-qt.sh diff --git a/docker/Dockerfile_ubuntu_20.04_qt b/docker/Dockerfile_ubuntu_20.04_qt new file mode 100644 index 0000000000000000000000000000000000000000..053bf6d20cad69e55d9d5d7afe3d50e2d34be092 --- /dev/null +++ b/docker/Dockerfile_ubuntu_20.04_qt @@ -0,0 +1,32 @@ +FROM ubuntu:20.04 + +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get clean +RUN apt-get update && \ + apt-get install -y -o Acquire::Retries=10 \ + devscripts \ + equivs \ + wget + +# add/enable src repos (needed for next step) +RUN sed -n '/^deb\s/s//deb-src /p' /etc/apt/sources.list > /etc/apt/sources.list.d/deb-src.list + +RUN apt-get clean && apt-get update +COPY packaging/rules/debian-qt/* ${OVERRIDE_PACKAGING_DIR} /tmp/builddeps/debian/ +RUN cd /tmp/builddeps/debian; \ + if [ -n "${OVERRIDE_PACKAGING_DIR}" ] && [ -d "$(basename ${OVERRIDE_PACKAGING_DIR})" ]; then \ + mv "$(basename ${OVERRIDE_PACKAGING_DIR})"/* .; \ + rm -r "$(basename ${OVERRIDE_PACKAGING_DIR})"; \ + fi; \ + cd ..; \ + apt-get update; \ + mk-build-deps \ + --remove --install \ + --tool "apt-get -y --no-install-recommends -o Acquire::Retries=10" \ + "debian/control"; \ + cd / && rm -rf /tmp/builddeps + +ADD scripts/build-package-debian-qt.sh /opt/build-package-debian-qt.sh + +CMD /opt/build-package-debian-qt.sh diff --git a/docker/Dockerfile_ubuntu_20.10_qt b/docker/Dockerfile_ubuntu_20.10_qt new file mode 100644 index 0000000000000000000000000000000000000000..6b1ed4cb241efbb5768f71f2348a7641769cea90 --- /dev/null +++ b/docker/Dockerfile_ubuntu_20.10_qt @@ -0,0 +1,32 @@ +FROM ubuntu:20.10 + +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get clean +RUN apt-get update && \ + apt-get install -y -o Acquire::Retries=10 \ + devscripts \ + equivs \ + wget + +# add/enable src repos (needed for next step) +RUN sed -n '/^deb\s/s//deb-src /p' /etc/apt/sources.list > /etc/apt/sources.list.d/deb-src.list + +RUN apt-get clean && apt-get update +COPY packaging/rules/debian-qt/* ${OVERRIDE_PACKAGING_DIR} /tmp/builddeps/debian/ +RUN cd /tmp/builddeps/debian; \ + if [ -n "${OVERRIDE_PACKAGING_DIR}" ] && [ -d "$(basename ${OVERRIDE_PACKAGING_DIR})" ]; then \ + mv "$(basename ${OVERRIDE_PACKAGING_DIR})"/* .; \ + rm -r "$(basename ${OVERRIDE_PACKAGING_DIR})"; \ + fi; \ + cd ..; \ + apt-get update; \ + mk-build-deps \ + --remove --install \ + --tool "apt-get -y --no-install-recommends -o Acquire::Retries=10" \ + "debian/control"; \ + cd / && rm -rf /tmp/builddeps + +ADD scripts/build-package-debian-qt.sh /opt/build-package-debian-qt.sh + +CMD /opt/build-package-debian-qt.sh diff --git a/packaging/rules/debian-qt/compat b/packaging/rules/debian-qt/compat new file mode 100644 index 0000000000000000000000000000000000000000..9a037142aa3c1b4c490e1a38251620f113465330 --- /dev/null +++ b/packaging/rules/debian-qt/compat @@ -0,0 +1 @@ +10 \ No newline at end of file diff --git a/packaging/rules/debian-qt/control b/packaging/rules/debian-qt/control new file mode 100644 index 0000000000000000000000000000000000000000..3e0f5f53695d208e1ae42fc142ad55b56e06bb53 --- /dev/null +++ b/packaging/rules/debian-qt/control @@ -0,0 +1,384 @@ +Source: libqt-jami +Section: libs +Priority: optional +Maintainer: The Jami project <jami@gnu.org> +Rules-Requires-Root: no +Standards-Version: 4.5.1 +Build-Depends: debhelper (>= 9), +# ===================================================== +# the following list of deps was gathered with help +# from https://salsa.debian.org/qt-kde-team/qt repos +# ===================================================== +# +# ====== +# qtbase +# ====== +# debhelper-compat (= 13), +# debhelper, + default-libmysqlclient-dev, + dh-exec, +# dpkg-dev (>= 1.17.14), + dpkg-dev, + firebird-dev [kfreebsd-any linux-any], + freetds-dev, + libasound2-dev [linux-any], + libatspi2.0-dev, + libcups2-dev, + libdbus-1-dev, + libdouble-conversion-dev, + libdrm-dev [linux-any], + libfontconfig1-dev, + libfreetype6-dev, + libgbm-dev [linux-any kfreebsd-any], + libgl-dev, +# libgles-dev, (not available in buster) + libglib2.0-dev, +# libglu1-mesa-dev | libglu-dev, + libgtk-3-dev, + libharfbuzz-dev (>= 1.6.0~), + libicu-dev, + libinput-dev [linux-any], + libjpeg-dev, + libkrb5-dev, +# libmd4c-dev, (not in buster) + libmtdev-dev [linux-any], + libpcre2-dev, + libpng-dev, + libpq-dev, + libproxy-dev, + libpulse-dev, + libsqlite3-dev, + libssl-dev, + libudev-dev [linux-any], + libvulkan-dev [linux-any], + libx11-dev, + libx11-xcb-dev, + libxcb-glx0-dev, + libxcb-icccm4-dev, + libxcb-image0-dev, + libxcb-keysyms1-dev, + libxcb-randr0-dev, + libxcb-render-util0-dev, + libxcb-render0-dev, + libxcb-shape0-dev, + libxcb-shm0-dev, + libxcb-sync-dev, + libxcb-util0-dev, + libxcb-xfixes0-dev, + libxcb-xinerama0-dev, + libxcb-xinput-dev, + libxcb-xkb-dev, + libxcb1-dev, + libxext-dev, + libxi-dev, + libxkbcommon-dev, + libxkbcommon-x11-dev, + libxrender-dev, + libzstd-dev, + pkg-config, +# pkg-kde-tools (>= 0.15.17~), + publicsuffix, +# qt5-qmake-bin <cross>, + unixodbc-dev, + zlib1g-dev, +# ============= +# qtdeclarative +# ============= +# debhelper-compat (= 13), +# dpkg-dev (>= 1.20.0), + libgl1-mesa-dri, +# pkg-kde-tools (>= 0.15.17~), + python3:any, +# qtbase5-private-dev (>= 5.15.2+dfsg~), + xauth <!nocheck>, + xvfb <!nocheck>, +# ================== +# qtgraphicaleffects +# ================== +# debhelper-compat (= 13), +# dpkg-dev (>= 1.16.1), +# pkg-kde-tools (>= 0.15.26~), +# qml-module-qtquick-window2 (>= 5.15.2+dfsg~), +# qml-module-qtquick2 (>= 5.15.2+dfsg~), +# qtbase5-dev (>= 5.15.2+dfsg~), +# qtbase5-private-dev (>= 5.15.2+dfsg~), +# qtdeclarative5-dev-tools (>= 5.15.2+dfsg~), +# qtdeclarative5-private-dev (>= 5.15.2+dfsg~), +# ============ +# qtmultimedia +# ============ +# debhelper-compat (= 13), +# libasound2-dev [linux-any], + libgstreamer-plugins-base1.0-dev, + libgstreamer1.0-dev, + libopenal-dev, +# libpulse-dev, +# libqt5opengl5-dev (>= 5.15.2+dfsg~), +# pkg-kde-tools, +# qml-module-qtquick2, +# qml-module-qttest, +# qtbase5-dev (>= 5.15.2+dfsg~), +# qtbase5-private-dev (>= 5.15.2+dfsg~), +# qtdeclarative5-dev (>= 5.15.2+dfsg~), +# xauth <!nocheck>, +# xvfb <!nocheck>, +# zlib1g-dev, +# ========================= +# qtlocation (for qtwebkit) +# ========================= +# debhelper-compat (= 13), + libboost-dev, +# libicu-dev, + libprotozero-dev (>= 1.5.2), +# libqt5opengl5-dev (>= 5.15.2+dfsg~), +# pkg-kde-tools, +# qml-module-qttest (>= 5.15.2+dfsg~), +# qtbase5-private-dev (>= 5.15.2+dfsg~), +# qtdeclarative5-private-dev (>= 5.15.2+dfsg~), + rapidjson-dev (>= 1.1.0), +# xauth <!nocheck>, +# xvfb <!nocheck>, +# zlib1g-dev, +# =============== +# qtquickcontrols +# =============== +# debhelper-compat (= 13), +# dpkg-dev (>= 1.17.14), +# pkg-kde-tools (>= 0.15.26~), +# qml-module-qt-labs-folderlistmodel (>= 5.15.2+dfsg~), +# qml-module-qt-labs-settings (>= 5.15.2+dfsg~), +# qml-module-qtgraphicaleffects (>= 5.15.2~), +# qml-module-qtqml (>= 5.15.2+dfsg~), +# qml-module-qtqml-models2 (>= 5.15.2+dfsg~), +# qml-module-qtquick-layouts (>= 5.15.2+dfsg~), +# qml-module-qtquick-window2 (>= 5.15.2+dfsg~), +# qml-module-qttest (>= 5.15.2+dfsg~), +# qtbase5-dev (>= 5.15.2+dfsg~), +# qtbase5-private-dev (>= 5.15.2+dfsg~), +# qtdeclarative5-dev-tools (>= 5.15.2+dfsg~), +# qtdeclarative5-private-dev (>= 5.15.2+dfsg~), +# xauth <!nocheck>, +# xvfb <!nocheck>, +# ======================== +# qtsensors (for qtwebkit) +# ======================== +# debhelper-compat (= 13), +# pkg-kde-tools, +# qtbase5-private-dev (>= 5.15.2+dfsg~), +# qtdeclarative5-dev (>= 5.15.2+dfsg~), +# xauth <!nocheck>, +# xvfb <!nocheck>, +# ================ +# qtquickcontrols2 +# ================ +# debhelper-compat (= 13), +# dpkg-dev (>= 1.16.1), +# pkg-kde-tools (>= 0.15.29~), +# qml-module-qtgraphicaleffects (>= 5.15.2~), +# qml-module-qtquick-layouts (>= 5.15.2+dfsg~), +# qml-module-qtquick-window2 (>= 5.15.2+dfsg~), +# qml-module-qttest (>= 5.15.2+dfsg~), +# qtbase5-dev (>= 5.15.2+dfsg~), +# qtbase5-private-dev (>= 5.15.2+dfsg~), +# qtdeclarative5-dev-tools (>= 5.15.2+dfsg~), +# qtdeclarative5-private-dev (>= 5.15.2+dfsg~), +# xauth <!nocheck>, +# xvfb <!nocheck>, +# ===== +# qtsvg +# ===== + dbus, +# debhelper-compat (= 13), +# dpkg-dev (>= 1.17.14), +# libqt5opengl5-dev (>= 5.15.2+dfsg~), +# pkg-kde-tools (>= 0.15.17), +# qtbase5-dev (>= 5.15.2+dfsg~), +# qtbase5-private-dev (>= 5.15.2+dfsg~), +# zlib1g-dev, +# ======= +# qttools +# ======= +# debhelper-compat (= 13), + libclang-dev (>= 1:3.9~) [amd64 arm64 armel armhf hurd-i386 i386 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsr6 mipsr6el powerpc ppc64 ppc64el riscv64 s390x sparc64], +# libqt5opengl5-dev (>= 5.15.2+dfsg~), +# libqt5sql5-sqlite (>= 5.15.2+dfsg~), +# libqt5webkit5-dev (>= 5.212.0~alpha4-8~) [alpha amd64 arm64 armel armhf i386 mips64el mipsel ppc64 ppc64el riscv64 s390x sh4 x32], + llvm-dev (>= 1:3.9~) [amd64 arm64 armel armhf hurd-i386 i386 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsr6 mipsr6el powerpc ppc64 ppc64el riscv64 s390x sparc64], +# pkg-kde-tools, +# qtbase5-private-dev (>= 5.15.2+dfsg~), +# qtdeclarative5-private-dev (>= 5.15.2+dfsg~), +# zlib1g-dev, +# ========= +# qtwayland +# ========= +# dbus <!nocheck>, +# debhelper-compat (= 13), +# dpkg-dev (>= 1.17.14), + libegl1-mesa-dev, + libfontconfig1-dev, +# libglib2.0-dev, +# libinput-dev, +# libmtdev-dev [linux-any], +# libudev-dev [linux-any], + libwayland-dev (>= 1.8.0), + libwayland-egl1-mesa | libwayland-egl1, + libxcomposite-dev, +# libxkbcommon-dev (>= 0.2.0), +# libxrender-dev, +# pkg-config, +# pkg-kde-tools, +# qtbase5-dev (>= 5.15.2+dfsg~), +# qtbase5-dev:native (>= 5.15.2+dfsg~), +# qtbase5-private-dev (>= 5.15.2+dfsg~), +# qtdeclarative5-private-dev (>= 5.15.2+dfsg~), +# xauth <!nocheck>, +# xvfb <!nocheck>, +# ============ +# qtwebchannel +# ============ +# debhelper-compat (= 13), +# libqt5websockets5-dev (>= 5.15.2~), +# pkg-kde-tools, +# qml-module-qttest (>= 5.15.2+dfsg~), +# qtbase5-dev (>= 5.15.2+dfsg~), +# qtbase5-private-dev (>= 5.15.2+dfsg~), +# qtdeclarative5-dev (>= 5.15.2+dfsg~), +# =========== +# qtwebengine +# =========== +# binutils (>= 2.32-8~), + binutils, + bison, + chrpath, + closure-compiler, +# debhelper-compat (= 13), + flex, + gperf, + khronos-api, +# libasound2-dev [linux-any], + libavcodec-dev (>= 7:3.4.8~), + libavformat-dev (>= 7:3.4.8~), + libavutil-dev (>= 7:3.4.8~), + libcap-dev [linux-any], +# libdbus-1-dev, +# libegl1-mesa-dev, + libevent-dev, + libflac-dev, +# libfontconfig1-dev, +# libgl-dev (>= 1.3) [!armel !armhf], +# libgl1-mesa-dri, +# libgles-dev [armel armhf], +# libglib2.0-dev, + libglu1-mesa-dev [!armel !armhf] | libglu-dev [!armel !armhf], +# libgstreamer-plugins-base1.0-dev, +# libgstreamer1.0-dev, +# libharfbuzz-dev, +# libicu-dev (>= 64~), +# libjpeg-dev, + libjsoncpp-dev, + liblcms2-dev, + libminizip-dev, + libnss3-dev, +# libopus-dev (>= 1.3.1), + libopus-dev, + libpci-dev, +# libpng-dev, + libprotobuf-dev, +# libpulse-dev, +# libqt5opengl5-dev (>= 5.15.2+dfsg~), +# libqt5svg5-dev (>= 5.15.2~), +# libqt5webchannel5-dev (>= 5.15.2~), + libre2-dev, + libsnappy-dev, +# libsqlite3-dev, + libusb-1.0-0-dev, +# libvpx-dev (>= 1.8), + libvpx-dev, + libwebp-dev, +# libx11-xcb-dev, + libxcb-dri3-dev, +# libxcomposite-dev, + libxcursor-dev, + libxdamage-dev, + libxml2-dev, + libxnvctrl-dev, + libxrandr-dev, +# libxrender-dev, + libxslt1-dev, + libxss-dev, + libxtst-dev, + mesa-common-dev, + ninja-build, +# pkg-config, +# pkg-kde-tools, + protobuf-compiler, + python2 | python, +# qtbase5-dev (>= 5.15.2+dfsg~), +# qtbase5-private-dev (>= 5.15.2+dfsg~), +# qtdeclarative5-private-dev (>= 5.15.2+dfsg~), +# qtpositioning5-dev (>= 5.15.2+dfsg~), +# qtquickcontrols2-5-dev (>= 5.15.2+dfsg~), +# qttools5-dev (>= 5.15.2~), + re2c, + ruby, +# xauth, +# xvfb, + yasm [amd64 i386], + yui-compressor, +# ======================================= +# qtwebkit (currently mainly for qttools) +# ======================================= +# bison, + cmake (>= 2.8.12), +# debhelper-compat (= 13), +# flex, +# gperf, +# libfontconfig1-dev, + libgl1-mesa-dev [!armel !armhf] | libgl-dev [!armel !armhf], + libgles2-mesa-dev [armel armhf] | libgles2-dev [armel armhf], +# libglib2.0-dev, +# libglu1-mesa-dev [!armel !armhf] | libglu-dev [!armel !armhf], +# libgstreamer-plugins-base1.0-dev, +# libgstreamer1.0-dev, + libhyphen-dev, +# libicu-dev, +# libjpeg-dev, +# libpng-dev, +# libqt5opengl5-dev (>= 5.15.2+dfsg~), +# libqt5sensors5-dev (>= 5.15.2~), +# libqt5webchannel5-dev (>= 5.15.2~), +# libsqlite3-dev, +# libwebp-dev, + libwoff-dev, +# libxcomposite-dev, +# libxml2-dev, +# libxrender-dev, +# libxslt1-dev, +# ninja-build, +# pkg-config, +# pkg-kde-tools (>= 0.6.4), +# python3:native, +# qtbase5-private-dev (>= 5.15.2+dfsg~), +# qtdeclarative5-private-dev (>= 5.15.2+dfsg~), +# qtpositioning5-dev (>= 5.15.2+dfsg~), +# ruby:native, +# xauth <!nocheck>, +# xvfb <!nocheck>, +# =============================== +# qtwebsockets (for qtwebchannel) +# =============================== +# debhelper-compat (= 13), +# pkg-kde-tools, +# qml-module-qtquick2 (>= 5.15.2+dfsg~), +# qml-module-qttest (>= 5.15.2+dfsg~), +# qtbase5-private-dev (>= 5.15.2+dfsg~), +# qtdeclarative5-dev (>= 5.15.2+dfsg~), +# qtdeclarative5-private-dev (>= 5.15.2+dfsg~), +# xauth, +# xvfb, + + +Package: libqt-jami +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Custom build of Qt framework used by the Jami Qt client. diff --git a/packaging/rules/debian-qt/libqt-jami-env.sh b/packaging/rules/debian-qt/libqt-jami-env.sh new file mode 100755 index 0000000000000000000000000000000000000000..6324f0fed16062061a00196d81bebedaf292b47f --- /dev/null +++ b/packaging/rules/debian-qt/libqt-jami-env.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +QT_JAMI_PREFIX=/usr/lib/libqt-jami + +export PATH="${QT_JAMI_PREFIX}/bin:${PATH}" +export LD_LIBRARY_PATH="${QT_JAMI_PREFIX}/lib:${LD_LIBRARY_PATH}" +export PKG_CONFIG_PATH="${QT_JAMI_PREFIX}/lib/pkgconfig:${PKG_CONFIG_PATH}" +export CMAKE_PREFIX_PATH="${QT_JAMI_PREFIX}/lib/cmake:${CMAKE_PREFIX_PATH}" diff --git a/packaging/rules/debian-qt/libqt-jami.install b/packaging/rules/debian-qt/libqt-jami.install new file mode 100644 index 0000000000000000000000000000000000000000..39543c60b630cc3244a0363d6f39f273e333abf6 --- /dev/null +++ b/packaging/rules/debian-qt/libqt-jami.install @@ -0,0 +1,2 @@ +usr/lib/libqt-jami +debian/libqt-jami-env.sh usr/lib/libqt-jami/bin/ diff --git a/packaging/rules/debian-qt/rules b/packaging/rules/debian-qt/rules new file mode 100755 index 0000000000000000000000000000000000000000..a84739102d4e85d6ddad5cee43490e0906257f87 --- /dev/null +++ b/packaging/rules/debian-qt/rules @@ -0,0 +1,18 @@ +#!/usr/bin/make -f +# -*- makefile -*- + +# export DH_VERBOSE = 1 + +%: + dh $@ + +override_dh_auto_configure: + ./configure \ + -opensource \ + -confirm-license \ + -nomake examples \ + -nomake tests \ + -prefix "${QT_JAMI_PREFIX}" + +override_dh_auto_install: + dh_auto_install -Smakefile -- INSTALL_ROOT=$(CURDIR)/debian/tmp/ diff --git a/packaging/rules/debian-qt/source/format b/packaging/rules/debian-qt/source/format new file mode 100644 index 0000000000000000000000000000000000000000..163aaf8d82b6c54f23c45f32895dbdfdcc27b047 --- /dev/null +++ b/packaging/rules/debian-qt/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/scripts/build-package-debian-qt.sh b/scripts/build-package-debian-qt.sh new file mode 100755 index 0000000000000000000000000000000000000000..bfbf46a5d18c2f759199042b931ce66859f88327 --- /dev/null +++ b/scripts/build-package-debian-qt.sh @@ -0,0 +1,86 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2021 Savoir-faire Linux Inc. +# +# 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 script is used in the packaging containers to build a snap +# package on an ubuntu base distro. + + +set -e + +PKG_DIR="packaging/rules/debian-qt" +if [ -n "${OVERRIDE_PACKAGING_DIR}" ]; then + echo "Using OVERRIDE_PACKAGING_DIR: $OVERRIDE_PACKAGING_DIR" + PKG_DIR="${OVERRIDE_PACKAGING_DIR}" +fi + +cache_dir=/opt/ring-contrib +temp_dir=$(mktemp -d) + +mkdir /opt/libqt-jami-build +cd /opt/libqt-jami-build + +qt_version=${QT_MAJOR}.${QT_MINOR}.${QT_PATCH} +tarball_name=qt-everywhere-src-${qt_version}.tar.xz +cached_tarball=$cache_dir/$tarball_name +qt_base_url=https://download.qt.io/archive/qt/${QT_MAJOR}.${QT_MINOR}/${qt_version}/single + +if ! [[ -d $cache_dir && -w $cache_dir ]]; then + echo "error: $cache_dir does not exist or is not writable" + exit 1 +fi + +if ! [ -f "$cached_tarball" ]; then + ( + cd "$temp_dir" + wget "$qt_base_url/$tarball_name" + echo -n "${QT_TARBALL_CHECKSUM} $tarball_name" | sha256sum -c - || \ + (echo "Qt tarball checksum mismatch; quitting" && exit 1) + flock "${cached_tarball}.lock" mv "$tarball_name" "$cached_tarball" + ) + rm -rf "$temp_dir" +fi + +cp "$cached_tarball" libqt-jami_${qt_version}.orig.tar.xz +tar xvf libqt-jami_${qt_version}.orig.tar.xz +mv qt-everywhere-src-${qt_version} libqt-jami-${qt_version} +cd libqt-jami-${qt_version} + +# import the debian folder +cp --verbose -r /opt/ring-project-ro/${PKG_DIR} debian + +# create changelog file +DEBEMAIL="The Jami project <jami@gnu.org>" dch --create --package libqt-jami --newversion ${DEBIAN_VERSION} "New libqt-jami release" +DEBEMAIL="The Jami project <jami@gnu.org>" dch --release --distribution "unstable" debian/changelog + +DPKG_BUILD_OPTIONS="" +# Set the host architecture as armhf and add some specific architecture +# options to the package builder. +if grep -q "raspbian_10_qt_armhf" <<< "${DISTRIBUTION}"; then + echo "Adding armhf as the host architecture." + export HOST_ARCH=arm-linux-gnueabihf + DPKG_BUILD_OPTIONS="${DPKG_BUILD_OPTIONS} -a armhf" +fi + +# build and package qt +dpkg-buildpackage -uc -us ${DPKG_BUILD_OPTIONS} + +# move the artifacts to output +cd .. +mv *.orig.tar* *.debian.tar* *deb *changes *dsc /opt/output +chown -R ${CURRENT_UID}:${CURRENT_GID} /opt/output/ diff --git a/scripts/deploy-packages.sh b/scripts/deploy-packages.sh index 98d0581fd0cb9a0352edecf4c7aaea22d3d19bbe..6262dda56c8041cba33e25dd3fde3ff3237897f0 100755 --- a/scripts/deploy-packages.sh +++ b/scripts/deploy-packages.sh @@ -31,8 +31,38 @@ set -e ## Debian / Ubuntu packaging ## ############################### +function fetch_qt_deb() +{ + if [ -f "${SSH_IDENTIY_FILE}" ]; + then + RSYNC_RSH="ssh -i ${SSH_IDENTIY_FILE}" + fi + + echo "#####################" + echo "## fetching qt deb ##" + echo "#####################" + echo "Using RSYNC_RSH='${RSYNC_RSH}'" + rsync --archive --verbose \ + ${REMOTE_REPOSITORY_LOCATION}/${DISTRIBUTION}_qt/pool/main/libq/libqt-jami/*.deb \ + ${DISTRIBUTION_REPOSITOIRY_FOLDER}_qt/ +} + function package_deb() { + DISTRIBUTION_REPOSITOIRY_FOLDER=$(realpath repositories)/${DISTRIBUTION} + mkdir -p ${DISTRIBUTION_REPOSITOIRY_FOLDER} + mkdir -p ${DISTRIBUTION_REPOSITOIRY_FOLDER}_qt + + ########################################################### + ## fetch qt deb (if not currently building a qt package) ## + ########################################################### + case "${DISTRIBUTION}" in + *_qt) ;; + *) + fetch_qt_deb + ;; + esac + ################################################## ## Create local repository for the given distro ## ################################################## @@ -40,8 +70,7 @@ function package_deb() echo "## Creating repository ##" echo "#########################" - DISTRIBUTION_REPOSITOIRY_FOLDER=$(realpath repositories)/${DISTRIBUTION} - mkdir -p ${DISTRIBUTION_REPOSITOIRY_FOLDER}/conf + mkdir ${DISTRIBUTION_REPOSITOIRY_FOLDER}/conf # Distributions file cat << EOF > ${DISTRIBUTION_REPOSITOIRY_FOLDER}/conf/distributions @@ -66,7 +95,14 @@ EOF #################################### ## Add packages to the repository ## #################################### - for package in packages/${DISTRIBUTION}*/*.deb; do + packages="packages/${DISTRIBUTION}*/*.deb" + case "${DISTRIBUTION}" in + *_qt) ;; + *) + packages="${packages} ${DISTRIBUTION_REPOSITOIRY_FOLDER}_qt/*.deb" + ;; + esac + for package in ${packages}; do # Sign the deb echo "## signing: ${package} ##" dpkg-sig -k ${KEYID} --sign builder ${package} diff --git a/scripts/make-packaging-target.py b/scripts/make-packaging-target.py index ef4021b6fc6342b8f89516527fa40ed88e2c1322..95743807b6e9062b184169e76d9546cb262057aa 100755 --- a/scripts/make-packaging-target.py +++ b/scripts/make-packaging-target.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 # -# Copyright (C) 2016-2017 Savoir-faire Linux Inc. +# Copyright (C) 2016-2021 Savoir-faire Linux Inc. # # Author: Alexandre Viau <alexandre.viau@savoirfairelinux.com> # @@ -91,7 +91,18 @@ RPM_BASED_SYSTEMS_DOCKER_RUN_OPTIONS = ( '--privileged') -def generate_target(distribution, debian_packaging_override, output_file, options='', docker_image='', version='', docker_build_args = ''): +DPKG_BASED_SYSTEMS_DOCKER_RUN_OPTIONS_QT = ( + '-e QT_JAMI_PREFIX=$(QT_JAMI_PREFIX) ' + '-e QT_MAJOR=$(QT_MAJOR) ' + '-e QT_MINOR=$(QT_MINOR) ' + '-e QT_PATCH=$(QT_PATCH) ' + '-e QT_TARBALL_CHECKSUM=$(QT_TARBALL_CHECKSUM) ' + '-v /opt/ring-contrib:/opt/ring-contrib ' + '--privileged --security-opt apparmor=docker-default') + + +def generate_target(distribution, output_file, options='', docker_image='', + version='', docker_build_args=''): if (docker_image == ''): docker_image = distribution if (version == ''): @@ -143,6 +154,13 @@ def run_generate_all(parsed_args): "output_file": "$(DEBIAN_DSC_FILENAME)", "options": "--privileged --security-opt apparmor=docker-default" }, + { + "distribution": "debian_10_qt", + "debian_packaging_override": "", + "output_file": "$(DEBIAN_QT_DSC_FILENAME)", + "options": DPKG_BASED_SYSTEMS_DOCKER_RUN_OPTIONS_QT, + "version": "$(DEBIAN_QT_VERSION)", + }, { "distribution": "debian_10_oci", "docker_image": "debian_10", @@ -201,6 +219,18 @@ def run_generate_all(parsed_args): "debian_packaging_override": "", "output_file": "$(DEBIAN_DSC_FILENAME)", }, + { + "distribution": "ubuntu_18.04_qt", + "output_file": "$(DEBIAN_QT_DSC_FILENAME)", + "options": DPKG_BASED_SYSTEMS_DOCKER_RUN_OPTIONS_QT, + "version": "$(DEBIAN_QT_VERSION)", + }, + { + "distribution": "ubuntu_18.04_qt_i386", + "output_file": "$(DEBIAN_QT_DSC_FILENAME)", + "options": DPKG_BASED_SYSTEMS_DOCKER_RUN_OPTIONS_QT, + "version": "$(DEBIAN_QT_VERSION)", + }, { "distribution": "ubuntu_18.04_oci", "docker_image": "ubuntu_18.04", @@ -223,6 +253,12 @@ def run_generate_all(parsed_args): "output_file": "$(DEBIAN_DSC_FILENAME)", "options": "--privileged --security-opt apparmor=docker-default", }, + { + "distribution": "ubuntu_20.04_qt", + "output_file": "$(DEBIAN_QT_DSC_FILENAME)", + "options": DPKG_BASED_SYSTEMS_DOCKER_RUN_OPTIONS_QT, + "version": "$(DEBIAN_QT_VERSION)", + }, { "distribution": "ubuntu_20.04_oci", "docker_image": "ubuntu_20.04", @@ -237,6 +273,12 @@ def run_generate_all(parsed_args): "output_file": "$(DEBIAN_DSC_FILENAME)", "options": "--privileged --security-opt apparmor=docker-default", }, + { + "distribution": "ubuntu_20.10_qt", + "output_file": "$(DEBIAN_QT_DSC_FILENAME)", + "options": DPKG_BASED_SYSTEMS_DOCKER_RUN_OPTIONS_QT, + "version": "$(DEBIAN_QT_VERSION)", + }, { "distribution": "ubuntu_20.10_oci", "docker_image": "ubuntu_20.10",