From 8b88a7ec24862e7db1dccfead130258cf305879e Mon Sep 17 00:00:00 2001 From: TomaSajt <62384384+TomaSajt@users.noreply.github.com> Date: Tue, 29 Oct 2024 12:15:53 +0100 Subject: [PATCH] gancio: remove mkYarnPackage usage --- pkgs/by-name/ga/gancio/package.json | 145 ---------------------------- pkgs/by-name/ga/gancio/package.nix | 100 ++++++++----------- pkgs/by-name/ga/gancio/update.sh | 19 ---- 3 files changed, 41 insertions(+), 223 deletions(-) delete mode 100644 pkgs/by-name/ga/gancio/package.json delete mode 100755 pkgs/by-name/ga/gancio/update.sh diff --git a/pkgs/by-name/ga/gancio/package.json b/pkgs/by-name/ga/gancio/package.json deleted file mode 100644 index fcc48351ed9e2..0000000000000 --- a/pkgs/by-name/ga/gancio/package.json +++ /dev/null @@ -1,145 +0,0 @@ -{ - "name": "gancio", - "version": "1.19.4", - "description": "A shared agenda for local communities", - "author": "lesion", - "scripts": { - "build": "nuxt build --modern", - "start:inspect": "NODE_ENV=production node --inspect node_modules/.bin/nuxt start --modern", - "dev": "nuxt dev", - "dev:inspect": "node --inspect node_modules/.bin/nuxt dev", - "test-sqlite": "export NODE_ENV=test; export DB=sqlite; jest --forceExit --runInBand --bail=1 --testTimeout=10000", - "test-mariadb": "export NODE_ENV=test; export DB=mariadb; jest --runInBand --bail=1", - "test-postgresql": "export NODE_ENV=test; export DB=postgresql; jest --runInBand --bail=1", - "start": "nuxt start --modern", - "doc": "cd docs && bundle exec jekyll b", - "doc:dev": "cd docs && bundle exec jekyll s --drafts", - "migrate": "NODE_ENV=production sequelize db:migrate", - "migrate:dev": "sequelize db:migrate", - "analyze": "nuxt build --analyze", - "build:wc": "cd webcomponents; yarn build:lib; cp dist/gancio-events.js ../wp-plugin/js/gancio-events.es.js; cp dist/gancio-events.js ../assets/gancio-events.es.js; cp dist/gancio-events.js ../docs/assets/js/gancio-events.es.js; cp dist/gancio-events.js ../static/gancio-events.es.js;" - }, - "files": [ - "server/", - "assets/", - "modules/", - "nuxt.config.js", - "static/", - "views/", - "locales/email/", - "locales/", - "store/", - ".nuxt/", - "gancio_plugins", - "yarn.lock" - ], - "engines": { - "node": ">=14 <=22" - }, - "dependencies": { - "@mdi/js": "^7.4.47", - "@nuxtjs/auth": "^4.9.1", - "@nuxtjs/axios": "^5.13.6", - "@nuxtjs/i18n": "^7.3.1", - "@nuxtjs/sitemap": "^2.4.0", - "@peertube/http-signature": "^1.7.0", - "accept-language": "^3.0.18", - "bcryptjs": "^2.4.3", - "body-parser": "^2.0.0-beta.2", - "cookie-parser": "^1.4.6", - "cookie-session": "^2.1.0", - "cookie-universal-nuxt": "^2.2.2", - "cors": "^2.8.5", - "dayjs": "^1.11.11", - "dompurify": "^3.1.5", - "email-templates": "^11.1.1", - "express": "^4.19.2", - "express-async-errors": "^3.1.1", - "express-rate-limit": "^7.3.1", - "https-proxy-agent": "^7.0.4", - "ical.js": "^2.0.1", - "ics": "^3.7.6", - "jsdom": "^24.1.0", - "leaflet": "^1.9.4", - "linkify-html": "^4.1.3", - "linkifyjs": "4.1.3", - "lodash": "^4.17.21", - "luxon": "^3.4.4", - "mariadb": "^2.5.6", - "memory-cache": "^0.2.0", - "microformat-node": "^2.0.4", - "minify-css-string": "^1.0.0", - "mkdirp": "^3.0.1", - "multer": "^1.4.5-lts.1", - "nuxt-edge": "2.17.2-28258581.6132947", - "oauth2orize": "^1.12.0", - "passport": "^0.7.0", - "passport-anonymous": "^1.0.1", - "passport-custom": "^1.1.1", - "passport-http": "^0.3.0", - "passport-http-bearer": "^1.0.1", - "passport-oauth2-client-password": "^0.1.2", - "passport-oauth2-client-public": "^0.0.1", - "pg": "^8.12.0", - "semver": "^7.6.2", - "sequelize": "^6.37.3", - "sequelize-slugify": "^1.6.2", - "sharp": "^0.27.2", - "sqlite3": "^5.1.7", - "telegraf": "^4.16.3", - "tiptap": "^1.32.2", - "tiptap-extensions": "^1.35.2", - "umzug": "^2.3.0", - "v-calendar": "^2.4.2", - "vue2-leaflet": "^2.7.1", - "vuetify": "2.6.14", - "winston": "^3.13.0", - "winston-daily-rotate-file": "^5.0.0", - "yargs": "^17.7.2" - }, - "devDependencies": { - "@nuxtjs/vuetify": "^1.12.3", - "@vue/language-plugin-pug": "^1.8.27", - "jest": "^29.7.0", - "jest-environment-node": "^29.7.0", - "prettier": "^2.8.8", - "pug": "^3.0.3", - "pug-plain-loader": "^1.1.0", - "sass": "^1.77.6", - "sequelize-cli": "^6.6.2", - "supertest": "^6.3.4", - "webpack": "^4.47.0", - "webpack-cli": "^4.10.0" - }, - "resolutions": { - "vue": "2.7.16", - "vue-template-compiler": "2.7.16", - "vue-server-renderer": "2.7.16" - }, - "bin": { - "gancio": "server/cli.js" - }, - "bugs": { - "email": "lesion@autistici.org", - "url": "https://framagit.org/les/gancio/issues" - }, - "homepage": "https://gancio.org", - "keywords": [ - "AP", - "gancio", - "events", - "federation", - "activitypub", - "event", - "server", - "self-host", - "app" - ], - "license": "AGPL-3.0", - "repository": { - "type": "git", - "url": "https://framagit.org/les/gancio" - }, - "snyk": true, - "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" -} diff --git a/pkgs/by-name/ga/gancio/package.nix b/pkgs/by-name/ga/gancio/package.nix index d0b4dfff9f19f..be6523319ee2c 100644 --- a/pkgs/by-name/ga/gancio/package.nix +++ b/pkgs/by-name/ga/gancio/package.nix @@ -1,89 +1,71 @@ { - mkYarnPackage, + lib, + stdenv, fetchFromGitLab, fetchYarnDeps, - python3, + + yarnConfigHook, + yarnBuildHook, + yarnInstallHook, + nodejs, pkg-config, - nodePackages, - node-gyp, + vips, - lib, + sqlite, + nixosTests, }: -mkYarnPackage rec { - inherit (nodePackages) nodejs; + +stdenv.mkDerivation (finalAttrs: { + pname = "gancio"; version = "1.19.4"; src = fetchFromGitLab { domain = "framagit.org"; owner = "les"; repo = "gancio"; - rev = "v${version}"; + rev = "v${finalAttrs.version}"; hash = "sha256-x8s7eBVmHCY3kAjHjACotCncvZq6OBiLPJGF6hvfawE="; }; offlineCache = fetchYarnDeps { - yarnLock = src + "/yarn.lock"; + yarnLock = finalAttrs.src + "/yarn.lock"; hash = "sha256-LXeAyxZSZOm6GxRuJb5rlHTlQpYa1fdKSENVjwLY4tU="; }; - packageJSON = ./package.json; + nativeBuildInputs = [ + yarnConfigHook + yarnBuildHook + yarnInstallHook + nodejs + (nodejs.python.withPackages (ps: [ ps.setuptools ])) + pkg-config + ]; - # for pkg-config dependencies: - yarnPreBuild = '' - export npm_config_nodedir=${nodePackages.nodejs} - ''; - # So that sqlite can be found: - pkgConfig.sqlite3 = { - nativeBuildInputs = [ - pkg-config - nodePackages.prebuild-install - node-gyp - python3 - ]; - postInstall = '' - yarn --offline run install - ''; - }; - # Sharp need to find a vips library - pkgConfig.sharp = { - nativeBuildInputs = [ - pkg-config - python3 - node-gyp - nodePackages.semver - ]; - buildInputs = [ vips ]; - postInstall = '' - yarn --offline run install - ''; - }; - - # build need a writeable node_modules - configurePhase = '' - runHook preConfigure + buildInputs = [ + vips + sqlite + ]; - cp -r $node_modules node_modules - chmod -R +w node_modules - - runHook postConfigure + # generate .node binaries + preBuild = '' + npm rebuild --verbose --nodedir=${nodejs} --sqlite=${lib.getDev sqlite} ''; - buildPhase = '' - runHook preBuild - - export HOME=$(mktemp -d) - yarn --offline build - yarn --offline pack --filename gancio.tgz - mkdir -p deps/gancio - tar -C deps/gancio/ --strip-components=1 -xf gancio.tgz - rm gancio.tgz + # the node_modules directory will be regenerated by yarnInstallHook, so we save our .node binaries + preInstall = '' + cp node_modules/sharp/build/Release/sharp.node . + cp node_modules/sqlite3/build/Release/node_sqlite3.node . + ''; - runHook postBuild + # and then place them where they belong + postInstall = '' + install -Dm755 sharp.node -t $out/lib/node_modules/gancio/node_modules/sharp/build/Release + install -Dm755 node_sqlite3.node -t $out/lib/node_modules/gancio/node_modules/sqlite3/build/Release ''; passthru = { - updateScript = ./update.sh; + inherit nodejs; tests = { inherit (nixosTests) gancio; }; @@ -98,4 +80,4 @@ mkYarnPackage rec { mainProgram = "gancio"; maintainers = with lib.maintainers; [ jbgi ]; }; -} +}) diff --git a/pkgs/by-name/ga/gancio/update.sh b/pkgs/by-name/ga/gancio/update.sh deleted file mode 100755 index 732f39f3ca36f..0000000000000 --- a/pkgs/by-name/ga/gancio/update.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env nix-shell -#!nix-shell -i bash -p curl common-updater-scripts jq nix prefetch-yarn-deps - -set -eux -o pipefail - -latest_version=$(curl -s https://framagit.org/api/v4/projects/48668/repository/tags | jq --raw-output '.[0].name' | sed 's/^v//') - -nixFile=$(nix-instantiate --eval --strict -A "gancio.meta.position" | sed -re 's/^"(.*):[0-9]+"$/\1/') -nixFolder=$(dirname "$nixFile") - -curl -o "$nixFolder/package.json" -s "https://framagit.org/les/gancio/-/raw/v$latest_version/package.json" -curl -o "$nixFolder/yarn.lock" -s "https://framagit.org/les/gancio/-/raw/v$latest_version/yarn.lock" - -old_yarn_hash=$(nix-instantiate --eval --strict -A "gancio.offlineCache.outputHash" | tr -d '"' | sed -re 's|[+]|\\&|g') -new_yarn_hash=$(nix hash to-sri --type sha256 $(prefetch-yarn-deps "$nixFolder/yarn.lock")) -sed -i "$nixFile" -re "s|\"$old_yarn_hash\"|\"$new_yarn_hash\"|" -rm "$nixFolder/yarn.lock" - -update-source-version gancio "$latest_version"