diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 7bcad4f4a..b1cdfa70f 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -19,6 +19,9 @@ jobs:
- uses: actions/setup-node@v2
with:
node-version: '16'
+ - name: Prepare for debian package
+ run: |
+ sudo gem install fpm
- name: Build it
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -29,7 +32,9 @@ jobs:
with:
name: linux-binaries
path: |
- dist/jitsi-meet-amd64.deb
+ dist/*.deb
+ dist/*.changes
+ dist/*.buildinfo
dist/jitsi-meet-x86_64.AppImage
dist/latest-linux.yml
build-mac:
diff --git a/README.md b/README.md
index ccc7c9e8b..8494a94ae 100644
--- a/README.md
+++ b/README.md
@@ -70,10 +70,11 @@ npm install --global --production windows-build-tools
Extra dependencies for GNU/Linux
-X11, PNG and zlib development packages are necessary. On Debian-like systems then can be installed as follows:
+X11, PNG and zlib development packages are necessary. In addition fpm is required. On Debian-like systems then can be installed as follows:
```bash
sudo apt install libx11-dev zlib1g-dev libpng-dev libxtst-dev
+sudo gem install fpm
```
diff --git a/build-debian-meta.js b/build-debian-meta.js
new file mode 100644
index 000000000..272f8e0dc
--- /dev/null
+++ b/build-debian-meta.js
@@ -0,0 +1,48 @@
+/* global process */
+
+const { stat, readFile, writeFile, rename } = require('fs/promises');
+const { createHash } = require('crypto');
+const packageJson = require('./package.json');
+
+/**
+ *
+ * @param {BuildResult} context the build context.
+ * @returns Array additional output files.
+ */
+exports.default = async function(context) {
+ const dateFormat = await import('dateformat');
+
+ const { outDir } = context;
+
+ if (process.platform !== 'linux') {
+ return;
+ }
+
+ const triplet = `${packageJson.name}_${packageJson.version}_amd64`;
+ const debName = `${outDir}/${triplet}.deb`;
+ const buildInfo = `${outDir}/${triplet}.buildinfo`;
+ const changes = `${outDir}/${triplet}.changes`;
+ const sizeInBytes = (await stat(debName)).size;
+ const debfile = await readFile(debName);
+ const md5sum = createHash('md5').update(debfile)
+.digest('hex');
+ const sha1sum = createHash('sha1').update(debfile)
+.digest('hex');
+ const sha256sum = createHash('sha256').update(debfile)
+.digest('hex');
+ let template = (await readFile(`${outDir}/../debian/${packageJson.name}.buildinfo`)).toString();
+
+ template = template.replace(/__SIZE__/g, sizeInBytes);
+ template = template.replace(/__FILE__/g, debName);
+ template = template.replace(/__NAME__/g, packageJson.name);
+ template = template.replace('__VERSION__', packageJson.version);
+ template = template.replace('__DATE__', dateFormat.default(new Date(), 'ddd, dd mmm yyyy HH:MM:ss o'));
+ template = template.replace('__MD5__', md5sum);
+ template = template.replace('__SHA1__', sha1sum);
+ template = template.replace('__SHA256__', sha256sum);
+ await writeFile(buildInfo, template);
+
+ await rename(`${outDir}/../${triplet}.changes`, changes);
+
+ return [ buildInfo, changes ];
+}
diff --git a/debian/jitsi-meet-electron.buildinfo b/debian/jitsi-meet-electron.buildinfo
new file mode 100644
index 000000000..498a2f04e
--- /dev/null
+++ b/debian/jitsi-meet-electron.buildinfo
@@ -0,0 +1,163 @@
+Format: 1.0
+Source: __NAME__
+Binary: __NAME__
+Architecture: amd64
+Version: __VERSION__
+Checksums-Md5:
+ __MD5__ __SIZE__ __FILE__
+Checksums-Sha1:
+ __SHA1__ __SIZE__ __FILE__
+Checksums-Sha256:
+ __SHA256__ __SIZE__ __FILE__
+Build-Origin: Ubuntu
+Build-Architecture: amd64
+Build-Date: __DATE__
+Build-Tainted-By:
+ merged-usr-via-symlinks
+Installed-Build-Depends:
+ autoconf (= 2.69-11.1),
+ automake (= 1:1.16.1-4ubuntu6),
+ autopoint (= 0.19.8.1-10build1),
+ autotools-dev (= 20180224.1),
+ base-files (= 11ubuntu5.5),
+ base-passwd (= 3.5.47),
+ bash (= 5.0-6ubuntu1.1),
+ binutils (= 2.34-6ubuntu1.3),
+ binutils-common (= 2.34-6ubuntu1.3),
+ binutils-x86-64-linux-gnu (= 2.34-6ubuntu1.3),
+ bsdmainutils (= 11.1.2ubuntu3),
+ bsdutils (= 1:2.34-0.1ubuntu9.3),
+ build-essential (= 12.8ubuntu1.1),
+ bzip2 (= 1.0.8-2),
+ coreutils (= 8.30-3ubuntu2),
+ cpp (= 4:9.3.0-1ubuntu2),
+ cpp-9 (= 9.4.0-1ubuntu1~20.04),
+ dash (= 0.5.10.2-6),
+ debconf (= 1.5.73),
+ debhelper (= 12.10ubuntu1),
+ debianutils (= 4.9.1),
+ dh-autoreconf (= 19),
+ dh-strip-nondeterminism (= 1.7.0-1),
+ diffutils (= 1:3.7-3),
+ dpkg (= 1.19.7ubuntu3),
+ dpkg-dev (= 1.19.7ubuntu3),
+ dwz (= 0.13-5),
+ file (= 1:5.38-4),
+ findutils (= 4.7.0-1ubuntu1),
+ g++ (= 4:9.3.0-1ubuntu2),
+ g++-9 (= 9.4.0-1ubuntu1~20.04),
+ gcc (= 4:9.3.0-1ubuntu2),
+ gcc-10-base (= 10.3.0-1ubuntu1~20.04),
+ gcc-9 (= 9.4.0-1ubuntu1~20.04),
+ gcc-9-base (= 9.4.0-1ubuntu1~20.04),
+ gettext (= 0.19.8.1-10build1),
+ gettext-base (= 0.19.8.1-10build1),
+ grep (= 3.4-1),
+ groff-base (= 1.22.4-4build1),
+ gzip (= 1.10-0ubuntu4),
+ hostname (= 3.23),
+ init-system-helpers (= 1.57),
+ install-info (= 6.7.0.dfsg.2-5),
+ intltool-debian (= 0.35.0+20060710.5),
+ libacl1 (= 2.2.53-6),
+ libarchive-zip-perl (= 1.67-2),
+ libasan5 (= 9.4.0-1ubuntu1~20.04),
+ libatomic1 (= 10.3.0-1ubuntu1~20.04),
+ libattr1 (= 1:2.4.48-5),
+ libaudit-common (= 1:2.8.5-2ubuntu6),
+ libaudit1 (= 1:2.8.5-2ubuntu6),
+ libbinutils (= 2.34-6ubuntu1.3),
+ libblkid1 (= 2.34-0.1ubuntu9.3),
+ libbsd0 (= 0.10.0-1),
+ libbz2-1.0 (= 1.0.8-2),
+ libc-bin (= 2.31-0ubuntu9.7),
+ libc-dev-bin (= 2.31-0ubuntu9.7),
+ libc6 (= 2.31-0ubuntu9.7),
+ libc6-dev (= 2.31-0ubuntu9.7),
+ libcap-ng0 (= 0.7.9-2.1build1),
+ libcc1-0 (= 10.3.0-1ubuntu1~20.04),
+ libcroco3 (= 0.6.13-1),
+ libcrypt-dev (= 1:4.4.10-10ubuntu4),
+ libcrypt1 (= 1:4.4.10-10ubuntu4),
+ libctf-nobfd0 (= 2.34-6ubuntu1.3),
+ libctf0 (= 2.34-6ubuntu1.3),
+ libdb5.3 (= 5.3.28+dfsg1-0.6ubuntu2),
+ libdebconfclient0 (= 0.251ubuntu1),
+ libdebhelper-perl (= 12.10ubuntu1),
+ libdpkg-perl (= 1.19.7ubuntu3),
+ libelf1 (= 0.176-1.1build1),
+ libffi7 (= 3.3-4),
+ libfile-stripnondeterminism-perl (= 1.7.0-1),
+ libgcc-9-dev (= 9.4.0-1ubuntu1~20.04),
+ libgcc-s1 (= 10.3.0-1ubuntu1~20.04),
+ libgcrypt20 (= 1.8.5-5ubuntu1.1),
+ libgdbm-compat4 (= 1.18.1-5),
+ libgdbm6 (= 1.18.1-5),
+ libglib2.0-0 (= 2.64.6-1~ubuntu20.04.4),
+ libgmp10 (= 2:6.2.0+dfsg-4),
+ libgomp1 (= 10.3.0-1ubuntu1~20.04),
+ libgpg-error0 (= 1.37-1),
+ libicu66 (= 66.1-2ubuntu2.1),
+ libisl22 (= 0.22.1-1),
+ libitm1 (= 10.3.0-1ubuntu1~20.04),
+ liblsan0 (= 10.3.0-1ubuntu1~20.04),
+ liblz4-1 (= 1.9.2-2ubuntu0.20.04.1),
+ liblzma5 (= 5.2.4-1ubuntu1),
+ libmagic-mgc (= 1:5.38-4),
+ libmagic1 (= 1:5.38-4),
+ libmount1 (= 2.34-0.1ubuntu9.3),
+ libmpc3 (= 1.1.0-1),
+ libmpfr6 (= 4.0.2-1),
+ libpam-modules (= 1.3.1-5ubuntu4.3),
+ libpam-modules-bin (= 1.3.1-5ubuntu4.3),
+ libpam-runtime (= 1.3.1-5ubuntu4.3),
+ libpam0g (= 1.3.1-5ubuntu4.3),
+ libpcre2-8-0 (= 10.34-7),
+ libpcre3 (= 2:8.39-12build1),
+ libperl5.30 (= 5.30.0-9ubuntu0.2),
+ libpipeline1 (= 1.5.2-2build1),
+ libquadmath0 (= 10.3.0-1ubuntu1~20.04),
+ libseccomp2 (= 2.5.1-1ubuntu1~20.04.2),
+ libselinux1 (= 3.0-1build2),
+ libsigsegv2 (= 2.12-2),
+ libsmartcols1 (= 2.34-0.1ubuntu9.3),
+ libstdc++-9-dev (= 9.4.0-1ubuntu1~20.04),
+ libstdc++6 (= 10.3.0-1ubuntu1~20.04),
+ libsub-override-perl (= 0.09-2),
+ libsystemd0 (= 245.4-4ubuntu3.15),
+ libtinfo6 (= 6.2-0ubuntu2),
+ libtool (= 2.4.6-14),
+ libtsan0 (= 10.3.0-1ubuntu1~20.04),
+ libubsan1 (= 10.3.0-1ubuntu1~20.04),
+ libuchardet0 (= 0.0.6-3build1),
+ libudev1 (= 245.4-4ubuntu3.15),
+ libunistring2 (= 0.9.10-2),
+ libuuid1 (= 2.34-0.1ubuntu9.3),
+ libxml2 (= 2.9.10+dfsg-5ubuntu0.20.04.2),
+ libzstd1 (= 1.4.4+dfsg-3ubuntu0.1),
+ linux-libc-dev (= 5.4.0-105.119),
+ login (= 1:4.8.1-1ubuntu5.20.04.1),
+ lsb-base (= 11.1.0ubuntu2),
+ m4 (= 1.4.18-4),
+ make (= 4.2.1-1.2),
+ man-db (= 2.9.1-1),
+ mawk (= 1.3.4.20200120-2),
+ ncurses-base (= 6.2-0ubuntu2),
+ ncurses-bin (= 6.2-0ubuntu2),
+ patch (= 2.7.6-6),
+ perl (= 5.30.0-9ubuntu0.2),
+ perl-base (= 5.30.0-9ubuntu0.2),
+ perl-modules-5.30 (= 5.30.0-9ubuntu0.2),
+ po-debconf (= 1.0.21),
+ sed (= 4.7-1),
+ sensible-utils (= 0.0.12+nmu1),
+ sysvinit-utils (= 2.96-2.1ubuntu1),
+ tar (= 1.30+dfsg-7ubuntu0.20.04.2),
+ tzdata (= 2021e-0ubuntu0.20.04),
+ util-linux (= 2.34-0.1ubuntu9.3),
+ xz-utils (= 5.2.4-1ubuntu1),
+ zlib1g (= 1:1.2.11.dfsg-2ubuntu1.2)
+Environment:
+ DEB_BUILD_OPTIONS="parallel=4"
+ LANG="de_DE.UTF-8"
+ SOURCE_DATE_EPOCH="1647873000"
diff --git a/electron-builder.env b/electron-builder.env
new file mode 100644
index 000000000..2fec566d6
--- /dev/null
+++ b/electron-builder.env
@@ -0,0 +1 @@
+USE_SYSTEM_FPM=true
diff --git a/package-lock.json b/package-lock.json
index 0b1041ad6..2fce0527a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -39,7 +39,8 @@
"babel-loader": "8.1.0",
"concurrently": "5.1.0",
"css-loader": "3.5.0",
- "electron": "^17.1.2",
+ "dateformat": "^5.0.3",
+ "electron": "17.1.2",
"electron-builder": "22.11.11",
"electron-context-menu": "^2.5.0",
"electron-is-dev": "^1.2.0",
@@ -8552,6 +8553,15 @@
"integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
"dev": true
},
+ "node_modules/dateformat": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-5.0.3.tgz",
+ "integrity": "sha512-Kvr6HmPXUMerlLcLF+Pwq3K7apHpYmGDVqrxcDasBg86UcKeTSNWbEzU8bwdXnxnR44FtMhJAxI4Bov6Y/KUfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.20"
+ }
+ },
"node_modules/debug": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
@@ -26157,6 +26167,12 @@
"integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
"dev": true
},
+ "dateformat": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-5.0.3.tgz",
+ "integrity": "sha512-Kvr6HmPXUMerlLcLF+Pwq3K7apHpYmGDVqrxcDasBg86UcKeTSNWbEzU8bwdXnxnR44FtMhJAxI4Bov6Y/KUfA==",
+ "dev": true
+ },
"debug": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
diff --git a/package.json b/package.json
index 751e22846..696c8c136 100644
--- a/package.json
+++ b/package.json
@@ -11,6 +11,7 @@
"lint": "eslint . && flow",
"build": "webpack --config ./webpack.main.js --mode production && webpack --config ./webpack.renderer.js --mode production",
"dist": "npm run build && electron-builder",
+ "dist-debian": "./build-debian-meta.sh $npm_package_version",
"postinstall": "patch-package && electron-builder install-app-deps",
"watch": "webpack --config ./webpack.renderer.js --mode development --watch --watch-poll"
},
@@ -22,6 +23,7 @@
"productName": "Jitsi Meet",
"generateUpdatesFilesForAllChannels": true,
"afterSign": "./notarize.js",
+ "afterAllArtifactBuild": "./build-debian-meta.js",
"files": [
"build",
"resources",
@@ -77,6 +79,7 @@
]
},
"deb": {
+ "artifactName": "${name}_${version}_${arch}.${ext}",
"depends": [
"libgtk-3-0",
"libnss3",
@@ -84,6 +87,9 @@
"xdg-utils",
"libatspi2.0-0",
"libuuid1"
+ ],
+ "fpm": [
+ "--deb-generate-changes"
]
},
"win": {
@@ -158,6 +164,7 @@
"babel-loader": "8.1.0",
"concurrently": "5.1.0",
"css-loader": "3.5.0",
+ "dateformat": "^5.0.3",
"electron": "17.1.2",
"electron-builder": "22.11.11",
"electron-context-menu": "^2.5.0",