From 376fba433223f76ed2b483c47c36efb5fb966ed2 Mon Sep 17 00:00:00 2001 From: Matt McHenry Date: Mon, 31 Mar 2025 14:52:57 -0400 Subject: [PATCH] eclipses: extract eclipses.json this lays the groundwork for a fully-automatic update script --- pkgs/applications/editors/eclipse/default.nix | 207 ++++-------------- .../editors/eclipse/eclipses.json | 90 ++++++++ 2 files changed, 132 insertions(+), 165 deletions(-) create mode 100644 pkgs/applications/editors/eclipse/eclipses.json diff --git a/pkgs/applications/editors/eclipse/default.nix b/pkgs/applications/editors/eclipse/default.nix index 2db9b320b63f..db85c9ccfb4c 100644 --- a/pkgs/applications/editors/eclipse/default.nix +++ b/pkgs/applications/editors/eclipse/default.nix @@ -28,12 +28,18 @@ # for e in cpp dsl embedcpp modeling platform sdk java jee committers rcp; do for s in pkgs pkgsCross.aarch64-multiplatform; do echo; echo $s $e; nix-build -A ${s}.eclipses.eclipse-${e} -o eclipse-${s}-${e}; done; done let - platform_major = "4"; - platform_minor = "34"; - year = "2024"; - month = "12"; # release month - buildmonth = "11"; # sometimes differs from release month - timestamp = "${year}${buildmonth}201800"; + eclipses = lib.trivial.importJSON ./eclipses.json; + inherit (eclipses) + platform_major + platform_minor + year + # release month sometimes differs from build month + month + buildmonth + dayHourMinute + ; + timestamp = "${year}${buildmonth}${dayHourMinute}"; + gtk = gtk3; arch = if stdenv.hostPlatform.isx86_64 then @@ -42,8 +48,6 @@ let "aarch64" else throw "don't know what platform suffix for ${stdenv.hostPlatform.system} will be"; -in -rec { # work around https://bugs.eclipse.org/bugs/show_bug.cgi?id=476075#c3 buildEclipseUnversioned = callPackage ./build-eclipse.nix { @@ -70,165 +74,38 @@ rec { eclipseData // { productVersion = "${platform_major}.${platform_minor}"; } ); - ### Eclipse CPP + generateEclipse = + id: + { + description, + hashes, + dropUrl, + }: + builtins.listToAttrs [ + { + name = "eclipse-${lib.strings.toLower id}"; + value = buildEclipse { + name = "eclipse-${lib.strings.toLower id}-${platform_major}.${platform_minor}"; + inherit description; + src = fetchurl { + url = + if dropUrl then + "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops${platform_major}/R-${platform_major}.${platform_minor}-${timestamp}/eclipse-${id}-${platform_major}.${platform_minor}-linux-gtk-${arch}.tar.gz" + else + "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-${id}-${year}-${month}-R-linux-gtk-${arch}.tar.gz"; + hash = hashes.${arch}; + }; + }; + } + ]; - eclipse-cpp = buildEclipse { - name = "eclipse-cpp-${platform_major}.${platform_minor}"; - description = "Eclipse IDE for C/C++ Developers"; - src = fetchurl { - url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-cpp-${year}-${month}-R-linux-gtk-${arch}.tar.gz"; - hash = - { - x86_64 = "sha256-d3MVeci4jF9adqvgepmZtzoPul+DTMtJlf7v92PMyq0="; - aarch64 = "sha256-gsOmF3bGthd7CEG+HxEQJqACfb+ErWU+fVO2MVR2cz8="; - } - .${arch}; - }; - }; + generatedEclipses = lib.attrsets.concatMapAttrs generateEclipse eclipses.eclipses; - ### Eclipse DSL - - eclipse-dsl = buildEclipse { - name = "eclipse-dsl-${platform_major}.${platform_minor}"; - description = "Eclipse IDE for Java and DSL Developers"; - src = fetchurl { - url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-dsl-${year}-${month}-R-linux-gtk-${arch}.tar.gz"; - hash = - { - x86_64 = "sha256-bJvODmesfkED5yHnaJGLZSeFctfVCQDA3lvH00S/zbk="; - aarch64 = "sha256-e0rWjD19tUyVJMMbb5THVj28o0HnBFssP0yCAQ5wKnA="; - } - .${arch}; - }; - }; - - ### Eclipse IDE for Embedded C/C++ Developers - - eclipse-embedcpp = buildEclipse { - name = "eclipse-embedcpp-${platform_major}.${platform_minor}"; - description = "Eclipse IDE for Embedded C/C++ Developers"; - src = fetchurl { - url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-embedcpp-${year}-${month}-R-linux-gtk-${arch}.tar.gz"; - hash = - { - x86_64 = "sha256-+DfoJ+QAlI9Ioz4Wbj2LvtpV3vAXjl0wtZBNS9osOYw="; - aarch64 = "sha256-XCpIKoLhrodOJkLPY6uICpuYu5PBUp96MFQCeuOyOUA="; - } - .${arch}; - }; - }; - - ### Eclipse Modeling - - eclipse-modeling = buildEclipse { - name = "eclipse-modeling-${platform_major}.${platform_minor}"; - description = "Eclipse Modeling Tools"; - src = fetchurl { - url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-modeling-${year}-${month}-R-linux-gtk-${arch}.tar.gz"; - hash = - { - x86_64 = "sha256-MUe5DU+3/4lzG1hykpgOX/46Pgp9qtoN9MOYk6EFK6o="; - aarch64 = "sha256-/tv7+RsRAFfV5zfU+uFNNlE1rrJavRFOhLYhSkIX0Ec="; - } - .${arch}; - }; - }; - - ### Eclipse Platform - - eclipse-platform = buildEclipse { - name = "eclipse-platform-${platform_major}.${platform_minor}"; - description = "Eclipse Platform ${year}-${month}"; - src = fetchurl { - url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops${platform_major}/R-${platform_major}.${platform_minor}-${timestamp}/eclipse-platform-${platform_major}.${platform_minor}-linux-gtk-${arch}.tar.gz"; - hash = - { - x86_64 = "sha256-ZHJkIOAaz87z6Dz/6X62E7ckQIFDtzqgE5ODZeb/Rss="; - aarch64 = "sha256-dLLwLFTeUXoL9Pri4EB48nZGUH/zF2mCt6anv519aP4="; - } - .${arch}; - }; - }; - - ### Eclipse SDK - - eclipse-sdk = buildEclipse { - name = "eclipse-sdk-${platform_major}.${platform_minor}"; - description = "Eclipse ${year}-${month} Classic"; - src = fetchurl { - url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops${platform_major}/R-${platform_major}.${platform_minor}-${timestamp}/eclipse-SDK-${platform_major}.${platform_minor}-linux-gtk-${arch}.tar.gz"; - hash = - { - x86_64 = "sha256-DhrNe9nx4RYAaq+NIHCBLX+bOn+dE13yF07hjuRzHZI="; - aarch64 = "sha256-OHE0vxjV9kp43Os2LCLuZFCMLWy3vnCChMC54TyXO9I="; - } - .${arch}; - }; - }; - - ### Eclipse Java - - eclipse-java = buildEclipse { - name = "eclipse-java-${platform_major}.${platform_minor}"; - description = "Eclipse IDE for Java Developers"; - src = fetchurl { - url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-java-${year}-${month}-R-linux-gtk-${arch}.tar.gz"; - hash = - { - x86_64 = "sha256-z0hLFqdDSqhUmCiOp0fkTkiybOmCIA118JMBb90yEiY="; - aarch64 = "sha256-JzUgyfPEi9vq497gJhHuobb0TR113hC2suFvNKix7So="; - } - .${arch}; - }; - }; - - ### Eclipse Java EE - - eclipse-jee = buildEclipse { - name = "eclipse-jee-${platform_major}.${platform_minor}"; - description = "Eclipse IDE for Enterprise Java and Web Developers"; - src = fetchurl { - url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-jee-${year}-${month}-R-linux-gtk-${arch}.tar.gz"; - hash = - { - x86_64 = "sha256-PxQ+jGTEs917IeWuTCgyyx7vAodZr4ju/aa4WQmoGQ0="; - aarch64 = "sha256-g4EHYFjoPONiGwreAmENcXWVinPkDAIE6KyVmZokQAo="; - } - .${arch}; - }; - }; - - ### Eclipse Committers - - eclipse-committers = buildEclipse { - name = "eclipse-committers-${platform_major}.${platform_minor}"; - description = "Eclipse IDE for Eclipse Committers and Eclipse Platform Plugin Developers"; - src = fetchurl { - url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-committers-${year}-${month}-R-linux-gtk-${arch}.tar.gz"; - hash = - { - x86_64 = "sha256-g8ILZ9esbXbm+4bImFJkEwE/UNJT2HHCXx/8i+Lvb00="; - aarch64 = "sha256-arV2VgQypj8fSEpqGd8CbJ/FyKE6k+e4x7kXqShDKrw="; - } - .${arch}; - }; - }; - - ### Eclipse IDE for RCP and RAP Developers - - eclipse-rcp = buildEclipse { - name = "eclipse-rcp-${platform_major}.${platform_minor}"; - description = "Eclipse IDE for RCP and RAP Developers"; - src = fetchurl { - url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-rcp-${year}-${month}-R-linux-gtk-${arch}.tar.gz"; - hash = - { - x86_64 = "sha256-qqOdASLe11FT4Eot7j/Yf02acHgblV77W3fqTOCrNSQ="; - aarch64 = "sha256-9yA2OLOcp3uKJ88OKqz7vCXMzS52om6ohUJkGZpkjE4="; - } - .${arch}; - }; - }; +in +generatedEclipses +// { + # expose this function so users can build their own eclipses if needed + inherit buildEclipse; ### Environments diff --git a/pkgs/applications/editors/eclipse/eclipses.json b/pkgs/applications/editors/eclipse/eclipses.json new file mode 100644 index 000000000000..b1bec5fa677f --- /dev/null +++ b/pkgs/applications/editors/eclipse/eclipses.json @@ -0,0 +1,90 @@ +{ + "platform_major": "4", + "platform_minor": "34", + "year": "2024", + "month": "12", + "buildmonth": "11", + "dayHourMinute": "201800", + "eclipses": { + "cpp": { + "description": "Eclipse IDE for C/C++ Developers", + "dropUrl": false, + "hashes": { + "x86_64": "sha256-d3MVeci4jF9adqvgepmZtzoPul+DTMtJlf7v92PMyq0=", + "aarch64": "sha256-gsOmF3bGthd7CEG+HxEQJqACfb+ErWU+fVO2MVR2cz8=" + } + }, + "dsl": { + "description": "Eclipse IDE for Java and DSL Developers", + "dropUrl": false, + "hashes": { + "x86_64": "sha256-bJvODmesfkED5yHnaJGLZSeFctfVCQDA3lvH00S/zbk=", + "aarch64": "sha256-e0rWjD19tUyVJMMbb5THVj28o0HnBFssP0yCAQ5wKnA=" + } + }, + "embedcpp": { + "description": "Eclipse IDE for Embedded C/C++ Developers", + "dropUrl": false, + "hashes": { + "x86_64": "sha256-+DfoJ+QAlI9Ioz4Wbj2LvtpV3vAXjl0wtZBNS9osOYw=", + "aarch64": "sha256-XCpIKoLhrodOJkLPY6uICpuYu5PBUp96MFQCeuOyOUA=" + } + }, + "modeling": { + "description": "Eclipse Modeling Tools", + "dropUrl": false, + "hashes": { + "x86_64": "sha256-MUe5DU+3/4lzG1hykpgOX/46Pgp9qtoN9MOYk6EFK6o=", + "aarch64": "sha256-/tv7+RsRAFfV5zfU+uFNNlE1rrJavRFOhLYhSkIX0Ec=" + } + }, + "platform": { + "description": "Eclipse Platform ${year}-${month}", + "dropUrl": true, + "hashes": { + "x86_64": "sha256-ZHJkIOAaz87z6Dz/6X62E7ckQIFDtzqgE5ODZeb/Rss=", + "aarch64": "sha256-dLLwLFTeUXoL9Pri4EB48nZGUH/zF2mCt6anv519aP4=" + } + }, + "SDK": { + "description": "Eclipse ${year}-${month} Classic", + "dropUrl": true, + "hashes": { + "x86_64": "sha256-DhrNe9nx4RYAaq+NIHCBLX+bOn+dE13yF07hjuRzHZI=", + "aarch64": "sha256-OHE0vxjV9kp43Os2LCLuZFCMLWy3vnCChMC54TyXO9I=" + } + }, + "java": { + "description": "Eclipse IDE for Java Developers", + "dropUrl": false, + "hashes": { + "x86_64": "sha256-z0hLFqdDSqhUmCiOp0fkTkiybOmCIA118JMBb90yEiY=", + "aarch64": "sha256-JzUgyfPEi9vq497gJhHuobb0TR113hC2suFvNKix7So=" + } + }, + "jee": { + "description": "Eclipse IDE for Enterprise Java and Web Developers", + "dropUrl": false, + "hashes": { + "x86_64": "sha256-PxQ+jGTEs917IeWuTCgyyx7vAodZr4ju/aa4WQmoGQ0=", + "aarch64": "sha256-g4EHYFjoPONiGwreAmENcXWVinPkDAIE6KyVmZokQAo=" + } + }, + "committers": { + "description": "Eclipse IDE for Eclipse Committers and Eclipse Platform Plugin Developers", + "dropUrl": false, + "hashes": { + "x86_64": "sha256-g8ILZ9esbXbm+4bImFJkEwE/UNJT2HHCXx/8i+Lvb00=", + "aarch64": "sha256-arV2VgQypj8fSEpqGd8CbJ/FyKE6k+e4x7kXqShDKrw=" + } + }, + "rcp": { + "description": "Eclipse IDE for RCP and RAP Developers", + "dropUrl": false, + "hashes": { + "x86_64": "sha256-qqOdASLe11FT4Eot7j/Yf02acHgblV77W3fqTOCrNSQ=", + "aarch64": "sha256-9yA2OLOcp3uKJ88OKqz7vCXMzS52om6ohUJkGZpkjE4=" + } + } + } +}