diff --git a/net-im/signal-desktop/Makefile b/net-im/signal-desktop/Makefile index 191f1a475f88..8c111fca9730 100644 --- a/net-im/signal-desktop/Makefile +++ b/net-im/signal-desktop/Makefile @@ -1,206 +1,175 @@ PORTNAME= signal-desktop DISTVERSIONPREFIX= v -DISTVERSION= 7.44.0 -PORTREVISION= 1 +DISTVERSION= 7.46.0 CATEGORIES= net-im MASTER_SITES= LOCAL/mikael/signal-desktop/:npm \ https://build-artifacts.signal.org/desktop/:sqlcipher DISTFILES= signal-desktop-${DISTVERSION}-npm-cache.tar.gz:npm \ ${SQLCIPHER}.tar.gz:sqlcipher # for online build #DISTFILES= ${SQLCIPHER}.tar.gz:sqlcipher MAINTAINER= mikael@FreeBSD.org COMMENT= Cross-platform centralized encrypted messaging service WWW= https://signal.org/ LICENSE= AGPLv3 LICENSE_FILE= ${WRKSRC}/LICENSE ONLY_FOR_ARCHS= aarch64 amd64 -EXTRACT_DEPENDS=jq:textproc/jq \ - npm:www/npm-node20 BUILD_DEPENDS= ${LOCALBASE}/lib/libringrtc.so:multimedia/ringrtc \ ${LOCALBASE}/lib/libsignal_node.so:net-im/libsignal-node \ ${LOCALBASE}/lib/libsignal_sqlcipher_extension.a:devel/signal-sqlcipher-extension \ app-builder>0:devel/app-builder \ electron${ELECTRON_VER_MAJOR}:devel/electron${ELECTRON_VER_MAJOR} \ - esbuild:devel/esbuild \ - jq:textproc/jq \ npm:www/npm-node20 LIB_DEPENDS= libasound.so:audio/alsa-lib \ libatk-bridge-2.0.so:accessibility/at-spi2-core \ libatspi.so:accessibility/at-spi2-core \ libcups.so:print/cups \ libdbus-1.so:devel/dbus \ libdrm.so:graphics/libdrm \ libepoll-shim.so:devel/libepoll-shim \ libevent.so:devel/libevent \ libexpat.so:textproc/expat2 \ libFLAC.so:audio/flac \ libffi.so:devel/libffi \ libfontconfig.so:x11-fonts/fontconfig \ libfreetype.so:print/freetype2 \ libharfbuzz.so:print/harfbuzz \ libicuuc.so:devel/icu \ libnspr4.so:devel/nspr \ libnss3.so:security/nss \ libopenh264.so:multimedia/openh264 \ libopus.so:audio/opus \ libpci.so:devel/libpci \ libpng16.so:graphics/png \ libsnappy.so:archivers/snappy \ libsndio.so:audio/sndio \ libwayland-client.so:graphics/wayland \ libwebp.so:graphics/webp \ libxkbcommon.so:x11/libxkbcommon \ libxshmfence.so:x11/libxshmfence USES= desktop-file-utils gettext-runtime gl gnome jpeg ssl xorg USE_GITHUB= yes GH_ACCOUNT= signalapp GH_PROJECT= Signal-Desktop USE_GL= gbm gl USE_GNOME= atk cairo gdkpixbuf glib20 gtk30 libxml2 libxslt pango USE_XORG= x11 xcb xcomposite xdamage xext xfixes xi xrandr xrender xtst PACKAGE_ENV= SIGNAL_ENV=production \ npm_config_runtime=electron \ npm_config_target=${ELECTRON_VER_MAJOR} \ npm_config_nodedir=${LOCALBASE}/share/electron${ELECTRON_VER_MAJOR}/node_headers MAKE_ENV+= ELECTRON_OVERRIDE_DIST_PATH=${LOCALBASE}/share/electron${ELECTRON_VER_MAJOR} \ HOME=${WRKDIR} \ USE_SYSTEM_APP_BUILDER=true \ SOURCE_DATE_EPOCH=${_BUILD_DATE} \ PATH=${WRKSRC}/node_modules/.bin:${LOCALBASE}/bin:${PATH} # Don't download electron binary distribution on electron node_modules installation MAKE_ENV+= ELECTRON_SKIP_BINARY_DOWNLOAD=1 # Don't create __pycache__ directory when executing node-gyp # This is a workaround to avoid filesystem violations during poudriere build MAKE_ENV+= PYTHONDONTWRITEBYTECODE=1 -MAKE_ENV+= ESBUILD_BINARY_PATH=${LOCALBASE}/bin/esbuild - _BUILD_DATE= $$(date +'%s') ELECTRON_VER_MAJOR= 32 -ESBUILD_VERSION= 0.24.0 SQLCIPHER= sqlcipher-v2-4.6.1-signal-patch2--0.2.1-asm2-6253f886c40e49bf892d5cdc92b2eb200b12cd8d80c48ce5b05967cfd01ee8c7 NODE_ARCH= ${ARCH:S/aarch64/arm64/:S/amd64/x64/} APP_OUT_DIR= linux-${ARCH:S/aarch64/arm64-/:S/amd64//}unpacked PLIST_SUB= NODE_ARCH=${NODE_ARCH} \ SHARP_ARCH=${ARCH:S/aarch64/arm64v8/:S/amd64/x64/} -NPM_TIMESTAMP= 1661146515 - .include .if ${ARCH} == aarch64 PLIST_SUB+= NOT_AARCH64="@comment " .elif ${ARCH} == amd64 PLIST_SUB+= NOT_AARCH64="" .endif -post-extract: - # Update node engine - ${PREFIX}/bin/jq '.engines.node = ""' ${WRKSRC}/package.json > ${WRKSRC}/package.json.tmp.1 - ${PREFIX}/bin/jq '.devDependencies.esbuild = "${ESBUILD_VERSION}"' ${WRKSRC}/package.json.tmp.1 > ${WRKSRC}/package.json.tmp.2 - ${PREFIX}/bin/jq '.devDependencies."electron-builder"= "24.13.3"' ${WRKSRC}/package.json.tmp.2 > ${WRKSRC}/package.json.tmp.3 - ${MV} ${WRKSRC}/package.json.tmp.3 ${WRKSRC}/package.json - # remove mock-server as it doesn't build and is useless - ${PREFIX}/bin/jq 'del(.devDependencies."@signalapp/mock-server")' ${WRKSRC}/package.json > ${WRKSRC}/package.json.tmp - ${MV} ${WRKSRC}/package.json.tmp ${WRKSRC}/package.json - ${RM} ${WRKSRC}/patches/app-builder-lib* ${WRKSRC}/patches/dmg-builder* - ${CP} ${FILESDIR}/app-builder-lib+24.13.3.patch ${WRKSRC}/patches - ${CP} ${FILESDIR}/dmg-builder+24.13.3.patch ${WRKSRC}/patches - -# # for online build -# cd ${WRKSRC} && \ -# ${SETENV} ${MAKE_ENV} npm install --ignore-optional --ignore-scripts || ${TRUE} - - # for offline build - cd ${WRKSRC} && \ - ${SETENV} ${MAKE_ENV} npm install --ignore-optional --ignore-scripts --offline || ${TRUE} - do-build: # electron-builder is stupid and tries to open ${LOCALBASE}/share/electron32/electron with WRITE priv # copy ${LOCALBASE}/share/electron32 in WRKDIR # it's needed for the do-install phase, it's here because of this issue # https://github.com/MikaelUrankar/signal-desktop/issues/6 (I don't know why it fails though) @${RM} -r ${WRKDIR}/electron${ELECTRON_VER_MAJOR} @${CP} -pR ${LOCALBASE}/share/electron${ELECTRON_VER_MAJOR} ${WRKDIR}/electron${ELECTRON_VER_MAJOR} ${CHMOD} -R a+w ${WRKDIR}/electron${ELECTRON_VER_MAJOR} + ${ECHO_CMD} offline=true >> ${WRKSRC}/.npmrc + ${ECHO_CMD} store-dir=true >> ${WRKSRC}/pnpm-store + + ${CP} ${FILESDIR}/package-lock.json ${WRKSRC} + ${CP} ${FILESDIR}/pnpm-lock.yaml ${WRKSRC} + + cd ${WRKSRC} && \ + ${SETENV} ${MAKE_ENV} npm install --ignore-scripts pnpm@10.6.3 + cd ${WRKSRC} && \ + ${SETENV} ${MAKE_ENV} npm_config_nodedir=${LOCALBASE}/share/electron${ELECTRON_VER_MAJOR}/node_headers pnpm install --ignore-scripts || ${TRUE} + # Install libsignal_node.so and libringrtc.so binaries in node_modules ${MKDIR} ${WRKSRC}/node_modules/@signalapp/libsignal-client/prebuilds/freebsd-${NODE_ARCH} \ ${WRKSRC}/node_modules/@signalapp/ringrtc/build/freebsd ${CP} ${LOCALBASE}/lib/libsignal_node.so \ ${WRKSRC}/node_modules/@signalapp/libsignal-client/prebuilds/freebsd-${NODE_ARCH}/@signalapp+libsignal-client.node ${CP} ${LOCALBASE}/lib/libringrtc.so \ ${WRKSRC}/node_modules/@signalapp/ringrtc/build/freebsd/libringrtc-${NODE_ARCH}.node ${CP} ${DISTDIR}/${SQLCIPHER}.tar.gz \ ${WRKSRC}/node_modules/@signalapp/better-sqlite3/deps/sqlcipher.tar.gz - cd ${WRKSRC} && ${PATCH} -s -N -i ${FILESDIR}/sqlite3.gyp.diff - - @${RM} -r ${WRKSRC}/node_modules/fs-xattr - -# # online build -# cd ${WRKSRC} && \ -# ${SETENV} ${MAKE_ENV} npm_config_nodedir=${LOCALBASE}/share/electron${ELECTRON_VER_MAJOR}/node_headers npm install --ignore-optional -# cd ${WRKSRC} && \ -# ${SETENV} ${MAKE_ENV} npm run generate - - # offline build - ${ECHO_CMD} offline=true >> ${WRKSRC}/.npmrc cd ${WRKSRC} && \ - ${SETENV} ${MAKE_ENV} npm_config_nodedir=${LOCALBASE}/share/electron${ELECTRON_VER_MAJOR}/node_headers npm install --ignore-optional --offline + ${SETENV} ${MAKE_ENV} npm_config_nodedir=${LOCALBASE}/share/electron${ELECTRON_VER_MAJOR}/node_headers pnpm install cd ${WRKSRC} && \ - ${SETENV} ${MAKE_ENV} npm run generate --offline + ${SETENV} ${MAKE_ENV} pnpm run generate do-install: # taken from https://github.com/tagattie/FreeBSD-Electron/blob/master/Mk/Uses/electron.mk#L387 # and editors/vscode cd ${WRKSRC} && \ ${SETENV} ${MAKE_ENV} ${PACKAGE_ENV} npm run build:electron -- \ --linux --dir --config.npmRebuild=false \ --config.electronDist=${WRKDIR}/electron${ELECTRON_VER_MAJOR} ${MKDIR} ${STAGEDIR}${DATADIR} cd ${BUILD_WRKSRC}/dist/${APP_OUT_DIR} && \ ${COPYTREE_SHARE} . ${STAGEDIR}${DATADIR} ${MKDIR} ${STAGEDIR}${PREFIX}/share/pixmaps ${INSTALL_DATA} ${WRKSRC}/images/signal-logo-desktop-linux.png \ ${STAGEDIR}${PREFIX}/share/pixmaps/signal-desktop.png ${INSTALL_DATA} ${FILESDIR}/${PORTNAME}.desktop \ ${STAGEDIR}${PREFIX}/share/applications .for f in chromedriver mksnapshot v8_context_snapshot_generator ${RM} ${STAGEDIR}${DATADIR}/${f} .endfor ${RM} -r ${STAGEDIR}${DATADIR}/gen ${RM} -r ${STAGEDIR}${DATADIR}/node_headers ${RM} -r ${STAGEDIR}${DATADIR}/resources/completions ${RLN} ${STAGEDIR}${DATADIR}/signal-desktop ${STAGEDIR}${PREFIX}/bin # This seems to be only required for Windows: ${RM} -r ${STAGEDIR}${DATADIR}/resources/app.asar.unpacked/node_modules/@nodert-win10-rs4 ${RM} -r ${STAGEDIR}${DATADIR}/resources/app.asar.unpacked/node_modules/@signalapp/windows-dummy-keystroke + ${RM} -r ${STAGEDIR}${DATADIR}/resources/app.asar.unpacked/node_modules/pnpm create-caches-tarball: # do some cleanup first ${RM} -r ${WRKDIR}/.npm/_logs ${WRKDIR}/.npm/_update-notifier-last-checked cd ${WRKDIR} && \ - ${TAR} czf signal-desktop-${DISTVERSION}-npm-cache.tar.gz .npm + ${TAR} czf signal-desktop-${DISTVERSION}-npm-cache.tar.gz .npm pnpm .include diff --git a/net-im/signal-desktop/distinfo b/net-im/signal-desktop/distinfo index d1352a076c2e..4fa91bb22cab 100644 --- a/net-im/signal-desktop/distinfo +++ b/net-im/signal-desktop/distinfo @@ -1,7 +1,7 @@ -TIMESTAMP = 1741012489 -SHA256 (signal-desktop-7.44.0-npm-cache.tar.gz) = 2a32bd421f506da430a68231e99a136ce13c6c829c37cd90d7151774af274850 -SIZE (signal-desktop-7.44.0-npm-cache.tar.gz) = 323260531 +TIMESTAMP = 1742144226 +SHA256 (signal-desktop-7.46.0-npm-cache.tar.gz) = 49adeee3f6507d64e86a9b10efa0ed8ac4a700f7b74b07aa6e72e02b85f1b9c7 +SIZE (signal-desktop-7.46.0-npm-cache.tar.gz) = 1249545638 SHA256 (sqlcipher-v2-4.6.1-signal-patch2--0.2.1-asm2-6253f886c40e49bf892d5cdc92b2eb200b12cd8d80c48ce5b05967cfd01ee8c7.tar.gz) = 6253f886c40e49bf892d5cdc92b2eb200b12cd8d80c48ce5b05967cfd01ee8c7 SIZE (sqlcipher-v2-4.6.1-signal-patch2--0.2.1-asm2-6253f886c40e49bf892d5cdc92b2eb200b12cd8d80c48ce5b05967cfd01ee8c7.tar.gz) = 10849572 -SHA256 (signalapp-Signal-Desktop-v7.44.0_GH0.tar.gz) = 4dcf9b3b9c7d480c960b01f53e216f2ebea4fc0a49b23ab04cba35a663847795 -SIZE (signalapp-Signal-Desktop-v7.44.0_GH0.tar.gz) = 43189910 +SHA256 (signalapp-Signal-Desktop-v7.46.0_GH0.tar.gz) = f1a7fd15c8d3520920501b5065e95ac5c0b552c8b9d3c666ae4de7c8e64c896f +SIZE (signalapp-Signal-Desktop-v7.46.0_GH0.tar.gz) = 45209482 diff --git a/net-im/signal-desktop/files/app-builder-lib+24.13.3.patch b/net-im/signal-desktop/files/app-builder-lib+24.13.3.patch deleted file mode 100644 index 43a058815712..000000000000 --- a/net-im/signal-desktop/files/app-builder-lib+24.13.3.patch +++ /dev/null @@ -1,260 +0,0 @@ -diff --git a/node_modules/app-builder-lib/out/asar/asarUtil.js b/node_modules/app-builder-lib/out/asar/asarUtil.js -index 7f37444..1a85145 100644 ---- a/node_modules/app-builder-lib/out/asar/asarUtil.js -+++ b/node_modules/app-builder-lib/out/asar/asarUtil.js -@@ -31,10 +31,16 @@ class AsarPackager { - } - await (0, promises_1.mkdir)(path.dirname(this.outFile), { recursive: true }); - const unpackedFileIndexMap = new Map(); -- for (const fileSet of fileSets) { -+ const orderedFileSets = [ -+ // Write dependencies first to minimize offset changes to asar header -+ ...fileSets.slice(1), -+ // Finish with the app files that change most often -+ fileSets[0] -+ ].map(orderFileSet); -+ for (const fileSet of orderedFileSets) { - unpackedFileIndexMap.set(fileSet, await this.createPackageFromFiles(fileSet, packager.info)); - } -- await this.writeAsarFile(fileSets, unpackedFileIndexMap); -+ await this.writeAsarFile(orderedFileSets, unpackedFileIndexMap); - } - async createPackageFromFiles(fileSet, packager) { - const metadata = fileSet.metadata; -@@ -238,4 +244,47 @@ function copyFileOrData(fileCopier, data, source, destination, stats) { - return (0, promises_1.writeFile)(destination, data); - } - } -+function orderFileSet(fileSet) { -+ const filesAndIndices = Array.from(fileSet.files.entries()); -+ filesAndIndices.sort(([, a], [, b]) => { -+ if (a === b) { -+ return 0; -+ } -+ // Place addons last because their signature change -+ const isAAddon = a.endsWith('.node'); -+ const isBAddon = b.endsWith('.node'); -+ if (isAAddon && !isBAddon) { -+ return 1; -+ } -+ if (isBAddon && !isAAddon) { -+ return -1; -+ } -+ // Otherwise order by name -+ return a < b ? -1 : 1; -+ }); -+ let transformedFiles; -+ if (fileSet.transformedFiles) { -+ transformedFiles = new Map(); -+ const indexMap = new Map(); -+ for (const [newIndex, [oldIndex,]] of filesAndIndices.entries()) { -+ indexMap.set(oldIndex, newIndex); -+ } -+ for (const [oldIndex, value] of fileSet.transformedFiles) { -+ const newIndex = indexMap.get(oldIndex); -+ if (newIndex === undefined) { -+ const file = fileSet.files[oldIndex]; -+ throw new Error(`Internal error: ${file} was lost while ordering asar`); -+ } -+ transformedFiles.set(newIndex, value); -+ } -+ } -+ const { src, destination, metadata, } = fileSet; -+ return { -+ src, -+ destination, -+ metadata, -+ files: filesAndIndices.map(([, file]) => file), -+ transformedFiles, -+ }; -+} - //# sourceMappingURL=asarUtil.js.map -\ No newline at end of file -diff --git a/node_modules/app-builder-lib/out/electron/ElectronFramework.js b/node_modules/app-builder-lib/out/electron/ElectronFramework.js -index 2b09620..739e296 100644 ---- a/node_modules/app-builder-lib/out/electron/ElectronFramework.js -+++ b/node_modules/app-builder-lib/out/electron/ElectronFramework.js -@@ -9,6 +9,7 @@ const path = require("path"); - const index_1 = require("../index"); - const pathManager_1 = require("../util/pathManager"); - const electronMac_1 = require("./electronMac"); -+const electronWin_1 = require("./electronWin"); - const electronVersion_1 = require("./electronVersion"); - const fs = require("fs/promises"); - const injectFFMPEG_1 = require("./injectFFMPEG"); -@@ -39,6 +40,9 @@ async function beforeCopyExtraFiles(options) { - else if (packager.platform === index_1.Platform.WINDOWS) { - const executable = path.join(appOutDir, `${packager.appInfo.productFilename}.exe`); - await (0, fs_extra_1.rename)(path.join(appOutDir, `${electronBranding.projectName}.exe`), executable); -+ if (options.asarIntegrity) { -+ await (0, electronWin_1.addWinAsarIntegrity)(executable, options.asarIntegrity); -+ } - } - else { - await (0, electronMac_1.createMacApp)(packager, appOutDir, options.asarIntegrity, options.platformName === "mas"); -diff --git a/node_modules/app-builder-lib/out/electron/electronWin.js b/node_modules/app-builder-lib/out/electron/electronWin.js -new file mode 100644 -index 0000000..f198807 ---- /dev/null -+++ b/node_modules/app-builder-lib/out/electron/electronWin.js -@@ -0,0 +1,39 @@ -+"use strict"; -+Object.defineProperty(exports, "__esModule", { value: true }); -+exports.addWinAsarIntegrity = void 0; -+const promises_1 = require("fs/promises"); -+const cjs_1 = require("resedit/cjs"); -+const builder_util_1 = require("builder-util"); -+/** @internal */ -+async function addWinAsarIntegrity(executablePath, asarIntegrity) { -+ const resedit = await (0, cjs_1.load)(); -+ const buffer = await (0, promises_1.readFile)(executablePath); -+ const executable = resedit.NtExecutable.from(buffer); -+ const resource = resedit.NtExecutableResource.from(executable); -+ const versionInfo = resedit.Resource.VersionInfo.fromEntries(resource.entries); -+ if (versionInfo.length !== 1) { -+ throw new Error(`Failed to parse version info in ${executablePath}`); -+ } -+ const languages = versionInfo[0].getAllLanguagesForStringValues(); -+ if (languages.length !== 1) { -+ throw new Error(`Failed to locate languages in ${executablePath}`); -+ } -+ // See: https://github.com/electron/packager/blob/00d20b99cf4aa4621103dbbd09ff7de7d2f7f539/src/resedit.ts#L124 -+ const integrityList = Array.from(Object.entries(asarIntegrity)).map(([file, { algorithm: alg, hash: value }]) => ({ -+ file, -+ alg, -+ value, -+ })); -+ resource.entries.push({ -+ type: "INTEGRITY", -+ id: "ELECTRONASAR", -+ bin: Buffer.from(JSON.stringify(integrityList)), -+ lang: languages[0].lang, -+ codepage: languages[0].codepage, -+ }); -+ resource.outputResource(executable); -+ await (0, promises_1.writeFile)(executablePath, Buffer.from(executable.generate())); -+ builder_util_1.log.info({ executablePath }, "updating asar integrity executable resource"); -+} -+exports.addWinAsarIntegrity = addWinAsarIntegrity; -+//# sourceMappingURL=electronWin.js.map -diff --git a/node_modules/app-builder-lib/out/targets/LinuxTargetHelper.js b/node_modules/app-builder-lib/out/targets/LinuxTargetHelper.js -index c3f1000..62bd27c 100644 ---- a/node_modules/app-builder-lib/out/targets/LinuxTargetHelper.js -+++ b/node_modules/app-builder-lib/out/targets/LinuxTargetHelper.js -@@ -100,7 +100,7 @@ class LinuxTargetHelper { - // https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html#exec-variables - const execCodes = ["%f", "%u", "%F", "%U"]; - if (executableArgs == null || executableArgs.findIndex(arg => execCodes.includes(arg)) === -1) { -- exec += " %U"; -+ exec += " --no-sandbox %U"; - } - } - const desktopMeta = { -diff --git a/node_modules/app-builder-lib/templates/linux/after-install.tpl b/node_modules/app-builder-lib/templates/linux/after-install.tpl -index 65e7326..29a8c44 100644 ---- a/node_modules/app-builder-lib/templates/linux/after-install.tpl -+++ b/node_modules/app-builder-lib/templates/linux/after-install.tpl -@@ -10,9 +10,6 @@ else - ln -sf '/opt/${sanitizedProductName}/${executable}' '/usr/bin/${executable}' - fi - --# SUID chrome-sandbox for Electron 5+ --chmod 4755 '/opt/${sanitizedProductName}/chrome-sandbox' || true -- - if hash update-mime-database 2>/dev/null; then - update-mime-database /usr/share/mime || true - fi -diff --git a/node_modules/app-builder-lib/templates/nsis/include/allowOnlyOneInstallerInstance.nsh b/node_modules/app-builder-lib/templates/nsis/include/allowOnlyOneInstallerInstance.nsh -index fe5d45c..8bb2bf4 100644 ---- a/node_modules/app-builder-lib/templates/nsis/include/allowOnlyOneInstallerInstance.nsh -+++ b/node_modules/app-builder-lib/templates/nsis/include/allowOnlyOneInstallerInstance.nsh -@@ -43,6 +43,7 @@ - !else - # find process owned by current user - nsExec::Exec `%SYSTEMROOT%\System32\cmd.exe /c tasklist /FI "USERNAME eq %USERNAME%" /FI "IMAGENAME eq ${_FILE}" /FO csv | %SYSTEMROOT%\System32\find.exe "${_FILE}"` -+ nsExec::Exec `"$SYSDIR\cmd.exe" /c tasklist /FI "USERNAME eq %USERNAME%" /FI "IMAGENAME eq ${_FILE}" /FO csv | "$SYSDIR\find.exe" "${_FILE}"` - Pop ${_ERR} - !endif - !macroend -@@ -73,7 +74,7 @@ - !ifdef INSTALL_MODE_PER_ALL_USERS - nsExec::Exec `taskkill /im "${APP_EXECUTABLE_FILENAME}" /fi "PID ne $pid"` - !else -- nsExec::Exec `%SYSTEMROOT%\System32\cmd.exe /c taskkill /im "${APP_EXECUTABLE_FILENAME}" /fi "PID ne $pid" /fi "USERNAME eq %USERNAME%"` -+ nsExec::Exec `"$SYSDIR\cmd.exe" /c taskkill /im "${APP_EXECUTABLE_FILENAME}" /fi "PID ne $pid" /fi "USERNAME eq %USERNAME%"` - !endif - # to ensure that files are not "in-use" - Sleep 300 -@@ -91,7 +92,7 @@ - !ifdef INSTALL_MODE_PER_ALL_USERS - nsExec::Exec `taskkill /f /im "${APP_EXECUTABLE_FILENAME}" /fi "PID ne $pid"` - !else -- nsExec::Exec `%SYSTEMROOT%\System32\cmd.exe /c taskkill /f /im "${APP_EXECUTABLE_FILENAME}" /fi "PID ne $pid" /fi "USERNAME eq %USERNAME%"` -+ nsExec::Exec `"$SYSDIR\cmd.exe" /c taskkill /f /im "${APP_EXECUTABLE_FILENAME}" /fi "PID ne $pid" /fi "USERNAME eq %USERNAME%"` - !endif - !insertmacro FIND_PROCESS "${APP_EXECUTABLE_FILENAME}" $R0 - ${If} $R0 == 0 -diff --git a/node_modules/app-builder-lib/templates/nsis/include/installer.nsh b/node_modules/app-builder-lib/templates/nsis/include/installer.nsh -index 34e91df..73bfffc 100644 ---- a/node_modules/app-builder-lib/templates/nsis/include/installer.nsh -+++ b/node_modules/app-builder-lib/templates/nsis/include/installer.nsh -@@ -90,7 +90,13 @@ - ${if} $installMode == "all" - SetShellVarContext current - ${endif} -- !insertmacro copyFile "$EXEPATH" "$LOCALAPPDATA\${APP_INSTALLER_STORE_FILE}" -+ # SIGNAL CHANGE START -+ # This file is needed for electron-builder's native incremental updates, -+ # but we have our own system so no need to place it. Clean it up instead. -+ # -+ # !insertmacro copyFile "$EXEPATH" "$LOCALAPPDATA\${APP_INSTALLER_STORE_FILE}" -+ RMDir /r /REBOOTOK "$LOCALAPPDATA\signal-desktop-updater" -+ # SIGNAL CHANGE END - ${if} $installMode == "all" - SetShellVarContext all - ${endif} -diff --git a/node_modules/app-builder-lib/templates/nsis/installSection.nsh b/node_modules/app-builder-lib/templates/nsis/installSection.nsh -index 053772f..7981a4e 100644 ---- a/node_modules/app-builder-lib/templates/nsis/installSection.nsh -+++ b/node_modules/app-builder-lib/templates/nsis/installSection.nsh -@@ -22,11 +22,38 @@ StrCpy $appExe "$INSTDIR\${APP_EXECUTABLE_FILENAME}" - SpiderBanner::Show /MODERN - !endif - -+ # Set text (1000 is the id of text element of SpiderBanner) - FindWindow $0 "#32770" "" $hwndparent - FindWindow $0 "#32770" "" $hwndparent $0 -- GetDlgItem $0 $0 1000 -- SendMessage $0 ${WM_SETTEXT} 0 "STR:$(installing)" - -+ GetDlgItem $1 $0 1000 -+ SendMessage $1 ${WM_SETTEXT} 0 "STR:$(installing)" -+ -+ # Set header image compatible with "ManifestDPIAware" mode. -+ !ifdef HEADER_ICO -+ # Convert 24 Dialog Units to pixels: -+ # See https://github.com/mozilla/gecko-dev/blob/8de0e699002872d969aebf1bc8407e5c839a4472/toolkit/mozapps/installer/windows/nsis/common.nsh#L8801 -+ -+ # rect = LPRect { .left = 0, .top = 0, .right = 24, .bottom = 0 } -+ # See https://nsis.sourceforge.io/Docs/System/System.html#faq -+ System::Call "*(i 0, i 0, i 24, i 0) p.r1" -+ -+ # Call `MapDialogRect(window, &rect)` -+ System::Call `user32::MapDialogRect(p $0, p r1)` -+ -+ # rect.right now contains the converted value (24du => ?px). -+ # Place `rect.right` into `r2` -+ System::Call "*$1(i, i, i.r2, i)" -+ System::Free $1 -+ -+ # Load image and pass `r2` as both width and height, get the image handle -+ # back to `r2` register. -+ System::Call `user32::LoadImage(i 0, t "$PLUGINSDIR\installerHeaderico.ico", i ${IMAGE_ICON}, i r2, i r2, i ${LR_LOADFROMFILE}) i.r2` -+ -+ # 1025 is the id of the icon of SpiderBanner. -+ GetDlgItem $1 $0 1025 -+ SendMessage $1 ${STM_SETIMAGE} ${IMAGE_ICON} $2 -+ !endif - StrCpy $1 $hwndparent - System::Call 'user32::ShutdownBlockReasonCreate(${SYSTYPE_PTR}r1, w "$(installing)")' - ${endif} diff --git a/net-im/signal-desktop/files/dmg-builder+24.13.3.patch b/net-im/signal-desktop/files/dmg-builder+24.13.3.patch deleted file mode 100644 index b97312ce4c76..000000000000 --- a/net-im/signal-desktop/files/dmg-builder+24.13.3.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/node_modules/dmg-builder/out/dmgLicense.js b/node_modules/dmg-builder/out/dmgLicense.js -index b91be7d..dad9ceb 100644 ---- a/node_modules/dmg-builder/out/dmgLicense.js -+++ b/node_modules/dmg-builder/out/dmgLicense.js -@@ -6,7 +6,7 @@ const js_yaml_1 = require("js-yaml"); - const license_1 = require("app-builder-lib/out/util/license"); - const fs_extra_1 = require("fs-extra"); - const licenseButtons_1 = require("./licenseButtons"); --const dmg_license_1 = require("dmg-license"); -+// SIGNAL: const dmg_license_1 = require("dmg-license"); - async function addLicenseToDmg(packager, dmgPath) { - const licenseFiles = await (0, license_1.getLicenseFiles)(packager); - if (licenseFiles.length === 0) { diff --git a/net-im/signal-desktop/files/patch-patches_electron-builder+24.13.3.patch b/net-im/signal-desktop/files/patch-patches_electron-builder+24.13.3.patch deleted file mode 100644 index e3e62c8c7ec9..000000000000 --- a/net-im/signal-desktop/files/patch-patches_electron-builder+24.13.3.patch +++ /dev/null @@ -1,16 +0,0 @@ ---- patches/electron-builder+24.13.3.patch.orig 2022-02-24 13:03:47 UTC -+++ patches/electron-builder+24.13.3.patch -@@ -0,0 +1,13 @@ -+diff --git a/node_modules/electron-builder/out/cli/install-app-deps.js b/node_modules/electron-builder/out/cli/install-app-deps.js -+index 0c58564..2b6f9a5 100644 -+--- a/node_modules/electron-builder/out/cli/install-app-deps.js -++++ b/node_modules/electron-builder/out/cli/install-app-deps.js -+@@ -23,7 +23,7 @@ function configureInstallAppDepsCommand(yargs) { -+ "camel-case-expansion": false, -+ }) -+ .option("platform", { -+- choices: ["linux", "darwin", "win32"], -++ choices: ["freebsd", "linux", "darwin", "win32"], -+ default: process.platform, -+ description: "The target platform", -+ }) diff --git a/net-im/signal-desktop/files/sqlite3.gyp.diff b/net-im/signal-desktop/files/sqlite3.gyp.diff deleted file mode 100644 index d7bcecede93b..000000000000 --- a/net-im/signal-desktop/files/sqlite3.gyp.diff +++ /dev/null @@ -1,16 +0,0 @@ ---- node_modules/@signalapp/better-sqlite3/deps/sqlite3.gyp.orig 2022-07-02 14:34:04 UTC -+++ node_modules/@signalapp/better-sqlite3/deps/sqlite3.gyp -@@ -90,6 +90,13 @@ - ] - } - }, -+ 'OS == "freebsd"', { -+ 'link_settings': { -+ 'libraries': [ -+ '/usr/local/lib/libsignal_sqlcipher_extension.a', -+ ] -+ } -+ }, - { # Linux - 'link_settings': { - 'libraries': [ diff --git a/net-im/signal-desktop/get_deps.sh b/net-im/signal-desktop/get_deps.sh index c0639ff00b59..9760e71290e5 100644 --- a/net-im/signal-desktop/get_deps.sh +++ b/net-im/signal-desktop/get_deps.sh @@ -1,30 +1,30 @@ #!/bin/sh -SIGNAL_VERS=v7.44.0 +SIGNAL_VERS=v7.46.0 fetch -qo /tmp/package.json https://raw.githubusercontent.com/signalapp/Signal-Desktop/${SIGNAL_VERS}/package.json node_version=$(awk /'"node":'/'{print $2}' /tmp/package.json | sed 's/"//g') echo "NODE_VERSION= ${node_version}" ringrtc_version=$(grep '@signalapp/ringrtc"' /tmp/package.json | awk -F ":" '{print $2}' | sed -E 's#("|,| )##g') echo "RINGRTC_VERSION= ${ringrtc_version}" webrtc_version=$(fetch -qo - https://raw.githubusercontent.com/signalapp/ringrtc/v${ringrtc_version}/config/version.properties | grep 'webrtc.version' | awk -F '=' '{print $2}') echo "WEBRTC_REV= ${webrtc_version}" libsignalclient_version=$(grep '@signalapp/libsignal-client' /tmp/package.json | awk -F ":" '{print $2}' | sed -E 's#("|,| )##g') echo "LIBSIGNAL_VERSION= ${libsignalclient_version}" electron_version=$(grep '"electron":' /tmp/package.json | awk -F ":" '{print $2}' | sed -E 's#("|,| )##g') echo "ELECTRON_VERSION= ${electron_version}" bsqlite3_version=$(grep '@signalapp/better-sqlite3' /tmp/package.json | awk -F ":" '{print $2}' | sed -E 's#("|,| )##g') fetch -qo /tmp/download.js https://raw.githubusercontent.com/signalapp/better-sqlite3/v${bsqlite3_version}/deps/download.js BASE_URI=https://build-artifacts.signal.org/desktop HASH=$(awk /"HASH ="/'{print $4}' /tmp/download.js | sed -e 's#;##g' -e "s#'##g") SQLCIPHER_VERSION=$(awk /"SQLCIPHER_VERSION ="/'{print $4}' /tmp/download.js | sed -e 's#;##g' -e "s#'##g") SQLCIPHER_VERSION=$(awk /"SQLCIPHER_VERSION ="/'{print $4}' /tmp/download.js | sed -e 's#;##g' -e "s#'##g") EXTENSION_VERSION=$(awk /"EXTENSION_VERSION ="/'{print $4}' /tmp/download.js | sed -e 's#;##g' -e "s#'##g") TAG="${SQLCIPHER_VERSION}--${EXTENSION_VERSION}" echo "SQLCIPHER=sqlcipher-v2-${TAG}-${HASH}" | portedit merge -i Makefile echo "SQLCIPHER=sqlcipher-v2-${TAG}-${HASH}" | portedit merge -i Makefile.online