Add matrix-appservice-slack patch
Some checks failed
Cachix / build (marabethia) (push) Waiting to run
Cachix / build (elendel) (push) Successful in 6m27s
Cachix / build (kholinar) (push) Has been cancelled

This commit is contained in:
Charlotte Van Petegem 2025-04-23 09:25:53 +02:00
parent 4f905c0df6
commit bc0f1cf6ce
Signed by: chvp
SSH key fingerprint: SHA256:+xxExaZKfphaPBA/f79I53pATM1GM3mRUFmOl/ChUbM

260
patches/400952.patch Normal file
View file

@ -0,0 +1,260 @@
diff --git a/pkgs/by-name/ma/matrix-appservice-slack/package.json b/pkgs/by-name/ma/matrix-appservice-slack/package.json
deleted file mode 100644
index d4a27436aea1ea..00000000000000
--- a/pkgs/by-name/ma/matrix-appservice-slack/package.json
+++ /dev/null
@@ -1,96 +0,0 @@
-{
- "name": "matrix-appservice-slack",
- "version": "2.1.2",
- "description": "A Matrix <--> Slack bridge",
- "engines": {
- "node": ">=16 <=18"
- },
- "main": "app.js",
- "scripts": {
- "prepare": "yarn build",
- "start": "node ./lib/app.js",
- "build": "yarn build:app && yarn build:widget",
- "build:app": "tsc --build",
- "build:widget": "vite build --config widget/vite.config.ts",
- "test": "yarn test:unit && yarn test:integration",
- "test:unit": "mocha --require ts-node/register --recursive tests/unit/*.ts",
- "test:integration": "mocha --exit --reporter list --ui bdd --require ts-node/register --recursive tests/integration/*.ts",
- "test:postgres": "SLACKBRIDGE_TEST_ENABLEPG=yes mocha --reporter list --ui bdd --require ts-node/register --recursive tests/integration/PgDatastoreTest.ts",
- "lint": "eslint -c .eslintrc.js ./src && eslint -c ./widget/.eslintrc.js 'widget/src/**/*.{ts,tsx}'"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/matrix-org/matrix-appservice-slack.git"
- },
- "keywords": [
- "matrix-org",
- "slack"
- ],
- "author": "Matrix.org",
- "license": "Apache-2.0",
- "bugs": {
- "url": "https://github.com/matrix-org/matrix-appservice-slack/issues"
- },
- "homepage": "https://github.com/matrix-org/matrix-appservice-slack#readme",
- "dependencies": {
- "@alloc/quick-lru": "^5.2.0",
- "@slack/logger": "^3.0.0",
- "@slack/rtm-api": "^6.0.0",
- "@slack/web-api": "^6.7.2",
- "Slackdown": "git+https://Half-Shot@github.com/half-shot/slackdown.git",
- "ajv": "^8.12.0",
- "axios": "^0.27.2",
- "classnames": "^2.3.2",
- "escape-string-regexp": "^4.0.0",
- "https-proxy-agent": "^5.0.1",
- "matrix-appservice-bridge": "^8.1.2",
- "matrix-widget-api": "^1.1.1",
- "minimist": "^1.2.6",
- "nedb": "^1.8.0",
- "node-emoji": "^1.10.0",
- "nunjucks": "^3.2.4",
- "p-queue": "^6.0.0",
- "pg-promise": "^10.11.1",
- "randomstring": "^1.2.1",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "url-join": "^5.0.0",
- "uuid": "^8.3.2",
- "yargs": "17.5.1"
- },
- "devDependencies": {
- "@tailwindcss/forms": "^0.5.3",
- "@tsconfig/node16": "^1.0.3",
- "@types/chai": "^4.2.21",
- "@types/js-yaml": "^4.0.2",
- "@types/mocha": "^9.1.1",
- "@types/nedb": "^1.8.12",
- "@types/node": "^18.6.1",
- "@types/node-emoji": "^1.8.1",
- "@types/nunjucks": "^3.1.5",
- "@types/randomstring": "^1.1.7",
- "@types/react": "^18.0.27",
- "@types/react-dom": "^18.0.10",
- "@types/uuid": "^8.3.1",
- "@types/yargs": "17.0.10",
- "@typescript-eslint/eslint-plugin": "^5.0.0",
- "@typescript-eslint/parser": "^5.50.0",
- "@vitejs/plugin-react": "^3.1.0",
- "autoprefixer": "^10.4.13",
- "chai": "^4.3.4",
- "eslint": "^8.20.0",
- "eslint-plugin-jsdoc": "^39.3.3",
- "eslint-plugin-prefer-arrow": "^1.2.3",
- "eslint-plugin-react": "^7.32.2",
- "eslint-plugin-react-hooks": "^4.6.0",
- "js-yaml": "^4.1.0",
- "mocha": "^10.0.0",
- "postcss": "^8.4.21",
- "prom-client": "^14.0.1",
- "source-map-support": "^0.5.19",
- "tailwindcss": "^3.2.4",
- "ts-node": "^10.1.0",
- "typescript": "^4.4.3",
- "vite": "^4.1.1"
- }
-}
diff --git a/pkgs/by-name/ma/matrix-appservice-slack/package.nix b/pkgs/by-name/ma/matrix-appservice-slack/package.nix
index b37ebccbf2f275..480bd57ba3c8bb 100644
--- a/pkgs/by-name/ma/matrix-appservice-slack/package.nix
+++ b/pkgs/by-name/ma/matrix-appservice-slack/package.nix
@@ -1,55 +1,74 @@
{
lib,
+ stdenv,
fetchFromGitHub,
fetchYarnDeps,
+ yarnConfigHook,
+ yarnBuildHook,
+ nodejs_20,
makeWrapper,
- mkYarnPackage,
- nodejs_18,
callPackage,
}:
let
- data = lib.importJSON ./pin.json;
- nodejs = nodejs_18;
+ nodejs = nodejs_20;
matrix-sdk-crypto-nodejs = callPackage ./matrix-sdk-crypto-nodejs-0_1_0-beta_3/package.nix { };
in
-mkYarnPackage rec {
- inherit nodejs;
-
+stdenv.mkDerivation rec {
pname = "matrix-appservice-slack";
- version = data.version;
+ version = "2.1.2";
- packageJSON = ./package.json;
src = fetchFromGitHub {
owner = "matrix-org";
repo = "matrix-appservice-slack";
- rev = data.version;
- hash = data.srcHash;
+ rev = version;
+ hash = "sha256-e9k+5xvgHkVt/fKAr0XhYjbEzHYwdGRdqiPWWbT0T5M=";
};
- offlineCache = fetchYarnDeps {
+ nativeBuildInputs = [
+ makeWrapper
+ nodejs
+ yarnConfigHook
+ yarnBuildHook
+ ];
+
+ postPatch = ''
+ # upstream locks the supported node version range down, which we don't want
+ substituteInPlace package.json \
+ --replace-fail '"node": ">=16 <=18"' '"node": ">=16"'
+ '';
+
+ yarnOfflineCache = fetchYarnDeps {
yarnLock = src + "/yarn.lock";
- sha256 = data.yarnHash;
- };
- packageResolutions = {
- "@matrix-org/matrix-sdk-crypto-nodejs" =
- "${matrix-sdk-crypto-nodejs}/lib/node_modules/@matrix-org/matrix-sdk-crypto-nodejs";
+ hash = "sha256-fw4gXh4wfzHFgUYiEAvbhVrjno/E70iMhdk60F3Oxgg=";
};
- nativeBuildInputs = [ makeWrapper ];
+ preBuild = ''
+ # matrix-sdk-crypto-nodejs needs rust to be built from source, which we can achieve in a separate derivation
- buildPhase = ''
- runHook preBuild
- yarn run build
- runHook postBuild
+ # first, we ensure the separately built module's version is actually the same as the version in the lockfile
+ diff ${matrix-sdk-crypto-nodejs}/lib/node_modules/@matrix-org/matrix-sdk-crypto-nodejs/package.json node_modules/@matrix-org/matrix-sdk-crypto-nodejs/package.json
+
+ # then we copy it into node_modules
+ rm -r node_modules/@matrix-org/matrix-sdk-crypto-nodejs
+ ln -s ${matrix-sdk-crypto-nodejs}/lib/node_modules/@matrix-org/matrix-sdk-crypto-nodejs node_modules/@matrix-org/matrix-sdk-crypto-nodejs
'';
- postInstall = ''
- makeWrapper '${nodejs}/bin/node' "$out/bin/matrix-appservice-slack" --add-flags \
- "$out/libexec/matrix-appservice-slack/deps/matrix-appservice-slack/lib/app.js"
+ installPhase = ''
+ runHook preInstall
+
+ mkdir -p "$out"/libexec/matrix-appservice-slack
+ cp -r package.json lib node_modules "$out"/libexec/matrix-appservice-slack
+
+ makeWrapper '${lib.getExe nodejs}' "$out/bin/matrix-appservice-slack" --add-flags \
+ "$out/libexec/matrix-appservice-slack/lib/app.js"
+
+ runHook postInstall
'';
- doDist = false;
+ passthru = {
+ inherit matrix-sdk-crypto-nodejs;
+ };
meta = with lib; {
description = "Matrix <--> Slack bridge";
diff --git a/pkgs/by-name/ma/matrix-appservice-slack/pin.json b/pkgs/by-name/ma/matrix-appservice-slack/pin.json
deleted file mode 100644
index 3adfcbabae62b4..00000000000000
--- a/pkgs/by-name/ma/matrix-appservice-slack/pin.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "version": "2.1.2",
- "srcHash": "sha256-e9k+5xvgHkVt/fKAr0XhYjbEzHYwdGRdqiPWWbT0T5M=",
- "yarnHash": "0266rrfx0fnrhn64ivy4iygf6nl5vc5i08j6h72k2zrh3rg203kz"
-}
diff --git a/pkgs/by-name/ma/matrix-appservice-slack/update.sh b/pkgs/by-name/ma/matrix-appservice-slack/update.sh
deleted file mode 100755
index dc3bab3311f21c..00000000000000
--- a/pkgs/by-name/ma/matrix-appservice-slack/update.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env nix-shell
-#!nix-shell -I nixpkgs=../../../../ -i bash -p nix curl jq prefetch-yarn-deps nix-prefetch-github nix-prefetch-git
-
-if [ "$#" -gt 1 ] || [[ "$1" == -* ]]; then
- echo "Regenerates packaging data for matrix-appservice-slack."
- echo "Usage: $0 [git release tag]"
- exit 1
-fi
-
-version="$1"
-
-set -euo pipefail
-
-if [ -z "$version" ]; then
- version="$(curl "https://api.github.com/repos/matrix-org/matrix-appservice-slack/releases?per_page=1" | jq -r '.[0].tag_name')"
-fi
-
-src="https://raw.githubusercontent.com/matrix-org/matrix-appservice-slack/$version"
-src_hash=$(nix-prefetch-github matrix-org matrix-appservice-slack --rev ${version} | jq -r .hash)
-
-tmpdir=$(mktemp -d)
-trap 'rm -rf "$tmpdir"' EXIT
-
-pushd $tmpdir
-curl -O "$src/yarn.lock"
-yarn_hash=$(prefetch-yarn-deps yarn.lock)
-popd
-
-curl -O "$src/package.json"
-cat > pin.json << EOF
-{
- "version": "$version",
- "srcHash": "$src_hash",
- "yarnHash": "$yarn_hash"
-}
-EOF