From 73e34e74c1e7493f05523da7c0021f18e648a298 Mon Sep 17 00:00:00 2001 From: mailaenderli Date: Wed, 3 Sep 2025 15:25:04 +0000 Subject: [PATCH] feat(eclipse-deps): add eclipse-deps feature --- .github/workflows/ci.yml | 1 + README.md | 1 + build/build.go | 12 ++++++++++ features/src/eclipse-deps/NOTES.md | 5 +++++ features/src/eclipse-deps/README.md | 18 +++++++++++++++ .../eclipse-deps/devcontainer-feature.json | 6 +++++ features/src/eclipse-deps/install.sh | 3 +++ features/src/eclipse-deps/installer.go | 22 +++++++++++++++++++ .../test/eclipse-deps/packages_installed.sh | 8 +++++++ features/test/eclipse-deps/scenarios.json | 13 +++++++++++ features/test/eclipse-deps/test-images.json | 5 +++++ 11 files changed, 94 insertions(+) create mode 100644 features/src/eclipse-deps/NOTES.md create mode 100755 features/src/eclipse-deps/README.md create mode 100644 features/src/eclipse-deps/devcontainer-feature.json create mode 100644 features/src/eclipse-deps/install.sh create mode 100644 features/src/eclipse-deps/installer.go create mode 100644 features/test/eclipse-deps/packages_installed.sh create mode 100644 features/test/eclipse-deps/scenarios.json create mode 100644 features/test/eclipse-deps/test-images.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b8961ea..ac30571 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,6 +17,7 @@ jobs: feature: [ "browsers", "docker-out", + "eclipse-deps", "git-lfs", "go", "node", diff --git a/README.md b/README.md index 4cc3f2b..e512d07 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ Below is a list with included features, click on the link for more details. | --- | --- | | [browsers](./features/src/browsers/README.md) | A package which installs various browsers. | | [docker-out](./features/src/docker-out/README.md) | A feature which installs the Docker client and re-uses the host socket. | +| [eclipse-deps](./features/src/eclipse-deps/README.md) | Installs all system dependencies required for running Eclipse IDE in a dev container. | | [git-lfs](./features/src/git-lfs/README.md) | A feature which installs Git LFS. | | [go](./features/src/go/README.md) | A feature which installs Go. | | [node](./features/src/node/README.md) | A package which installs Node.js. | diff --git a/build/build.go b/build/build.go index 99f40e6..7288a19 100644 --- a/build/build.go +++ b/build/build.go @@ -22,6 +22,7 @@ import ( var featureList = []string{ "browsers", "docker-out", + "eclipse-deps", "git-lfs", "go", "node", @@ -73,6 +74,17 @@ func init() { return publishFeature("docker-out") }) + ////////// eclipse-deps + gotaskr.Task("Feature:eclipse-deps:Package", func() error { + return packageFeature("eclipse-deps") + }) + gotaskr.Task("Feature:eclipse-deps:Test", func() error { + return testFeature("eclipse-deps") + }) + gotaskr.Task("Feature:eclipse-deps:Publish", func() error { + return publishFeature("eclipse-deps") + }) + ////////// git-lfs gotaskr.Task("Feature:git-lfs:Package", func() error { return packageFeature("git-lfs") diff --git a/features/src/eclipse-deps/NOTES.md b/features/src/eclipse-deps/NOTES.md new file mode 100644 index 0000000..c620081 --- /dev/null +++ b/features/src/eclipse-deps/NOTES.md @@ -0,0 +1,5 @@ +## Notes + +### System Compatibility + +Debian, Ubuntu diff --git a/features/src/eclipse-deps/README.md b/features/src/eclipse-deps/README.md new file mode 100755 index 0000000..620db12 --- /dev/null +++ b/features/src/eclipse-deps/README.md @@ -0,0 +1,18 @@ +# Eclipse Dependencies (eclipse-deps) + +Installs all system dependencies required for running Eclipse IDE in a dev container. + +## Example Usage + +```json +"features": { + "ghcr.io/postfinance/devcontainer-features/eclipse-deps:0.1.0": { + } +} +``` + +## Notes + +### System Compatibility + +Debian, Ubuntu diff --git a/features/src/eclipse-deps/devcontainer-feature.json b/features/src/eclipse-deps/devcontainer-feature.json new file mode 100644 index 0000000..3fea665 --- /dev/null +++ b/features/src/eclipse-deps/devcontainer-feature.json @@ -0,0 +1,6 @@ +{ + "id": "eclipse-deps", + "version": "0.1.0", + "name": "Eclipse Dependencies", + "description": "Installs all system dependencies required for running Eclipse IDE in a dev container." +} \ No newline at end of file diff --git a/features/src/eclipse-deps/install.sh b/features/src/eclipse-deps/install.sh new file mode 100644 index 0000000..2f80cc8 --- /dev/null +++ b/features/src/eclipse-deps/install.sh @@ -0,0 +1,3 @@ +. ./functions.sh + +"./installer_$(detect_arch)" \ No newline at end of file diff --git a/features/src/eclipse-deps/installer.go b/features/src/eclipse-deps/installer.go new file mode 100644 index 0000000..1b01999 --- /dev/null +++ b/features/src/eclipse-deps/installer.go @@ -0,0 +1,22 @@ +package main + +import ( + "builder/installer" + "fmt" + "os" +) + +func main() { + if err := runMain(); err != nil { + fmt.Printf("Error: %v\n", err) + os.Exit(1) + } +} + +func runMain() error { + fmt.Println("Installing Eclipse Dependencies") + return installer.Tools.Apt.InstallDependencies( + "libswt-gtk-4-jni", + "libwebkit2gtk-4.0-37", + ) +} diff --git a/features/test/eclipse-deps/packages_installed.sh b/features/test/eclipse-deps/packages_installed.sh new file mode 100644 index 0000000..946e506 --- /dev/null +++ b/features/test/eclipse-deps/packages_installed.sh @@ -0,0 +1,8 @@ +#!/bin/bash +set -e + +[[ -f "$(dirname "$0")/../functions.sh" ]] && source "$(dirname "$0")/../functions.sh" +[[ -f "$(dirname "$0")/functions.sh" ]] && source "$(dirname "$0")/functions.sh" + +check_package_installed "libswt-gtk-4-jni" +check_package_installed "libwebkit2gtk-4.0-37" diff --git a/features/test/eclipse-deps/scenarios.json b/features/test/eclipse-deps/scenarios.json new file mode 100644 index 0000000..ee6f015 --- /dev/null +++ b/features/test/eclipse-deps/scenarios.json @@ -0,0 +1,13 @@ +{ + "packages_installed": { + "build": { + "dockerfile": "Dockerfile", + "options": [ + "--add-host=host.docker.internal:host-gateway" + ] + }, + "features": { + "./eclipse-deps": {} + } + } +} \ No newline at end of file diff --git a/features/test/eclipse-deps/test-images.json b/features/test/eclipse-deps/test-images.json new file mode 100644 index 0000000..4db9a33 --- /dev/null +++ b/features/test/eclipse-deps/test-images.json @@ -0,0 +1,5 @@ +[ + "mcr.microsoft.com/devcontainers/base:debian-11", + "mcr.microsoft.com/devcontainers/base:debian-12", + "mcr.microsoft.com/devcontainers/base:ubuntu-22.04" +] \ No newline at end of file