From d5d5ea363fb2c697c876e5f86f677998531dde30 Mon Sep 17 00:00:00 2001 From: "Darryl L. Miles" Date: Mon, 20 Jul 2026 17:04:09 +0100 Subject: [PATCH] Item 6 + 7: add metainfo.xml, --updateinformation, validate target, Validate AppImage step Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> --- .github/workflows/appimage10.yml | 11 +++++++++- .github/workflows/appimage7.yml | 11 +++++++++- .github/workflows/appimage8.yml | 11 +++++++++- .github/workflows/appimage9.yml | 11 +++++++++- appimage/10/Makefile | 29 +++++++++++++++++++++++++- appimage/7/Makefile | 29 +++++++++++++++++++++++++- appimage/8/Makefile | 29 +++++++++++++++++++++++++- appimage/9/Makefile | 29 +++++++++++++++++++++++++- appimage/rsc/magic.metainfo.xml | 35 ++++++++++++++++++++++++++++++++ 9 files changed, 187 insertions(+), 8 deletions(-) create mode 100644 appimage/rsc/magic.metainfo.xml diff --git a/.github/workflows/appimage10.yml b/.github/workflows/appimage10.yml index 6258b948..153fb9e4 100644 --- a/.github/workflows/appimage10.yml +++ b/.github/workflows/appimage10.yml @@ -281,6 +281,8 @@ jobs: echo "| AppImageTool URL | ${APPIMAGETOOL_DOWNLOAD_URL} |" >> "$GITHUB_STEP_SUMMARY" - name: Build project + env: + UPDATEINFORMATION: gh-releases-zsync|${{ github.repository_owner }}|${{ github.event.repository.name }}|latest|Magic-*EL10.AppImage.zsync run: | cd appimage/10 make \ @@ -290,13 +292,20 @@ jobs: TCL_TARBALL_URL="${TCL_TARBALL_URL}" \ TK_TARBALL_URL="${TK_TARBALL_URL}" \ TCL_TARBALL_SHA256="${TCL_TARBALL_SHA256}" \ - TK_TARBALL_SHA256="${TK_TARBALL_SHA256}" + TK_TARBALL_SHA256="${TK_TARBALL_SHA256}" \ + UPDATEINFORMATION="${UPDATEINFORMATION}" ln -v Magic-x86_64.AppImage "${MAGIC_APPIMAGE_OUTPUT_FILENAME}" ls -l *.AppImage sha256sum *.AppImage pwd + - name: Validate AppImage + run: | + sudo apt-get install -y --no-install-recommends desktop-file-utils appstream + cd appimage/10 + make validate + - name: Create RELEASE-NOTES.txt run: | cd appimage/10 diff --git a/.github/workflows/appimage7.yml b/.github/workflows/appimage7.yml index a3035563..fdfa27f7 100644 --- a/.github/workflows/appimage7.yml +++ b/.github/workflows/appimage7.yml @@ -281,6 +281,8 @@ jobs: echo "| AppImageTool URL | ${APPIMAGETOOL_DOWNLOAD_URL} |" >> "$GITHUB_STEP_SUMMARY" - name: Build project + env: + UPDATEINFORMATION: gh-releases-zsync|${{ github.repository_owner }}|${{ github.event.repository.name }}|latest|Magic-*EL7.AppImage.zsync run: | cd appimage/7 make \ @@ -290,13 +292,20 @@ jobs: TCL_TARBALL_URL="${TCL_TARBALL_URL}" \ TK_TARBALL_URL="${TK_TARBALL_URL}" \ TCL_TARBALL_SHA256="${TCL_TARBALL_SHA256}" \ - TK_TARBALL_SHA256="${TK_TARBALL_SHA256}" + TK_TARBALL_SHA256="${TK_TARBALL_SHA256}" \ + UPDATEINFORMATION="${UPDATEINFORMATION}" ln -v Magic-x86_64.AppImage "${MAGIC_APPIMAGE_OUTPUT_FILENAME}" ls -l *.AppImage sha256sum *.AppImage pwd + - name: Validate AppImage + run: | + sudo apt-get install -y --no-install-recommends desktop-file-utils appstream + cd appimage/7 + make validate + - name: Create RELEASE-NOTES.txt run: | cd appimage/7 diff --git a/.github/workflows/appimage8.yml b/.github/workflows/appimage8.yml index 11208e1a..01f85723 100644 --- a/.github/workflows/appimage8.yml +++ b/.github/workflows/appimage8.yml @@ -281,6 +281,8 @@ jobs: echo "| AppImageTool URL | ${APPIMAGETOOL_DOWNLOAD_URL} |" >> "$GITHUB_STEP_SUMMARY" - name: Build project + env: + UPDATEINFORMATION: gh-releases-zsync|${{ github.repository_owner }}|${{ github.event.repository.name }}|latest|Magic-*EL8.AppImage.zsync run: | cd appimage/8 make \ @@ -290,13 +292,20 @@ jobs: TCL_TARBALL_URL="${TCL_TARBALL_URL}" \ TK_TARBALL_URL="${TK_TARBALL_URL}" \ TCL_TARBALL_SHA256="${TCL_TARBALL_SHA256}" \ - TK_TARBALL_SHA256="${TK_TARBALL_SHA256}" + TK_TARBALL_SHA256="${TK_TARBALL_SHA256}" \ + UPDATEINFORMATION="${UPDATEINFORMATION}" ln -v Magic-x86_64.AppImage "${MAGIC_APPIMAGE_OUTPUT_FILENAME}" ls -l *.AppImage sha256sum *.AppImage pwd + - name: Validate AppImage + run: | + sudo apt-get install -y --no-install-recommends desktop-file-utils appstream + cd appimage/8 + make validate + - name: Create RELEASE-NOTES.txt run: | cd appimage/8 diff --git a/.github/workflows/appimage9.yml b/.github/workflows/appimage9.yml index 052a9b70..6775c8eb 100644 --- a/.github/workflows/appimage9.yml +++ b/.github/workflows/appimage9.yml @@ -281,6 +281,8 @@ jobs: echo "| AppImageTool URL | ${APPIMAGETOOL_DOWNLOAD_URL} |" >> "$GITHUB_STEP_SUMMARY" - name: Build project + env: + UPDATEINFORMATION: gh-releases-zsync|${{ github.repository_owner }}|${{ github.event.repository.name }}|latest|Magic-*EL9.AppImage.zsync run: | cd appimage/9 make \ @@ -290,13 +292,20 @@ jobs: TCL_TARBALL_URL="${TCL_TARBALL_URL}" \ TK_TARBALL_URL="${TK_TARBALL_URL}" \ TCL_TARBALL_SHA256="${TCL_TARBALL_SHA256}" \ - TK_TARBALL_SHA256="${TK_TARBALL_SHA256}" + TK_TARBALL_SHA256="${TK_TARBALL_SHA256}" \ + UPDATEINFORMATION="${UPDATEINFORMATION}" ln -v Magic-x86_64.AppImage "${MAGIC_APPIMAGE_OUTPUT_FILENAME}" ls -l *.AppImage sha256sum *.AppImage pwd + - name: Validate AppImage + run: | + sudo apt-get install -y --no-install-recommends desktop-file-utils appstream + cd appimage/9 + make validate + - name: Create RELEASE-NOTES.txt run: | cd appimage/9 diff --git a/appimage/10/Makefile b/appimage/10/Makefile index 39a5e46b..daaaae4a 100644 --- a/appimage/10/Makefile +++ b/appimage/10/Makefile @@ -52,18 +52,45 @@ prefix/bin/magic: Dockerfile Makefile exit 1; \ fi +# Optional: embed AppImage update info (enables delta-update support via zsync). +# Set to e.g. gh-releases-zsync|owner|repo|latest|Magic-*EL10.AppImage.zsync +UPDATEINFORMATION ?= + appimagetool: curl -L "$(APPIMAGETOOL_DOWNLOAD_URL)" > ./appimagetool chmod +x ./appimagetool $(APPIMAGE): prefix/bin/magic appimagetool $(RESOURCES) cp $(RESOURCES) ./prefix/ - ./appimagetool prefix + mkdir -p prefix/usr/share/metainfo + cp ../rsc/magic.metainfo.xml prefix/usr/share/metainfo/org.opencircuitdesign.magic.metainfo.xml + if [ -n "$(UPDATEINFORMATION)" ]; then \ + ./appimagetool --updateinformation "$(UPDATEINFORMATION)" prefix; \ + if command -v zsyncmake >/dev/null 2>&1; then \ + zsyncmake $(APPIMAGE) -u "$(UPDATEINFORMATION)"; \ + fi; \ + else \ + ./appimagetool prefix; \ + fi PREFIX ?= /usr/local install: install $(APPIMAGE) $(PREFIX)/bin/magic +.PHONY: validate +validate: $(APPIMAGE) + @echo "Validating AppImage: $(APPIMAGE)" + @if command -v desktop-file-validate >/dev/null 2>&1; then \ + desktop-file-validate prefix/magic.desktop && echo "desktop-file-validate: OK"; \ + else \ + echo "desktop-file-validate: not installed, skipping"; \ + fi + @if command -v appstreamcli >/dev/null 2>&1; then \ + appstreamcli validate prefix/usr/share/metainfo/org.opencircuitdesign.magic.metainfo.xml && echo "appstreamcli: OK"; \ + else \ + echo "appstreamcli: not installed, skipping"; \ + fi + .PHONY: clean clean: rm -f *.AppImage diff --git a/appimage/7/Makefile b/appimage/7/Makefile index 893d63a8..34c5a624 100644 --- a/appimage/7/Makefile +++ b/appimage/7/Makefile @@ -52,18 +52,45 @@ prefix/bin/magic: Dockerfile Makefile exit 1; \ fi +# Optional: embed AppImage update info (enables delta-update support via zsync). +# Set to e.g. gh-releases-zsync|owner|repo|latest|Magic-*EL7.AppImage.zsync +UPDATEINFORMATION ?= + appimagetool: curl -L "$(APPIMAGETOOL_DOWNLOAD_URL)" > ./appimagetool chmod +x ./appimagetool $(APPIMAGE): prefix/bin/magic appimagetool $(RESOURCES) cp $(RESOURCES) ./prefix/ - ./appimagetool prefix + mkdir -p prefix/usr/share/metainfo + cp ../rsc/magic.metainfo.xml prefix/usr/share/metainfo/org.opencircuitdesign.magic.metainfo.xml + if [ -n "$(UPDATEINFORMATION)" ]; then \ + ./appimagetool --updateinformation "$(UPDATEINFORMATION)" prefix; \ + if command -v zsyncmake >/dev/null 2>&1; then \ + zsyncmake $(APPIMAGE) -u "$(UPDATEINFORMATION)"; \ + fi; \ + else \ + ./appimagetool prefix; \ + fi PREFIX ?= /usr/local install: install $(APPIMAGE) $(PREFIX)/bin/magic +.PHONY: validate +validate: $(APPIMAGE) + @echo "Validating AppImage: $(APPIMAGE)" + @if command -v desktop-file-validate >/dev/null 2>&1; then \ + desktop-file-validate prefix/magic.desktop && echo "desktop-file-validate: OK"; \ + else \ + echo "desktop-file-validate: not installed, skipping"; \ + fi + @if command -v appstreamcli >/dev/null 2>&1; then \ + appstreamcli validate prefix/usr/share/metainfo/org.opencircuitdesign.magic.metainfo.xml && echo "appstreamcli: OK"; \ + else \ + echo "appstreamcli: not installed, skipping"; \ + fi + .PHONY: clean clean: rm -f *.AppImage diff --git a/appimage/8/Makefile b/appimage/8/Makefile index 758b3756..88e0fb36 100644 --- a/appimage/8/Makefile +++ b/appimage/8/Makefile @@ -52,18 +52,45 @@ prefix/bin/magic: Dockerfile Makefile exit 1; \ fi +# Optional: embed AppImage update info (enables delta-update support via zsync). +# Set to e.g. gh-releases-zsync|owner|repo|latest|Magic-*EL8.AppImage.zsync +UPDATEINFORMATION ?= + appimagetool: curl -L "$(APPIMAGETOOL_DOWNLOAD_URL)" > ./appimagetool chmod +x ./appimagetool $(APPIMAGE): prefix/bin/magic appimagetool $(RESOURCES) cp $(RESOURCES) ./prefix/ - ./appimagetool prefix + mkdir -p prefix/usr/share/metainfo + cp ../rsc/magic.metainfo.xml prefix/usr/share/metainfo/org.opencircuitdesign.magic.metainfo.xml + if [ -n "$(UPDATEINFORMATION)" ]; then \ + ./appimagetool --updateinformation "$(UPDATEINFORMATION)" prefix; \ + if command -v zsyncmake >/dev/null 2>&1; then \ + zsyncmake $(APPIMAGE) -u "$(UPDATEINFORMATION)"; \ + fi; \ + else \ + ./appimagetool prefix; \ + fi PREFIX ?= /usr/local install: install $(APPIMAGE) $(PREFIX)/bin/magic +.PHONY: validate +validate: $(APPIMAGE) + @echo "Validating AppImage: $(APPIMAGE)" + @if command -v desktop-file-validate >/dev/null 2>&1; then \ + desktop-file-validate prefix/magic.desktop && echo "desktop-file-validate: OK"; \ + else \ + echo "desktop-file-validate: not installed, skipping"; \ + fi + @if command -v appstreamcli >/dev/null 2>&1; then \ + appstreamcli validate prefix/usr/share/metainfo/org.opencircuitdesign.magic.metainfo.xml && echo "appstreamcli: OK"; \ + else \ + echo "appstreamcli: not installed, skipping"; \ + fi + .PHONY: clean clean: rm -f *.AppImage diff --git a/appimage/9/Makefile b/appimage/9/Makefile index d4f0b181..060e59af 100644 --- a/appimage/9/Makefile +++ b/appimage/9/Makefile @@ -52,18 +52,45 @@ prefix/bin/magic: Dockerfile Makefile exit 1; \ fi +# Optional: embed AppImage update info (enables delta-update support via zsync). +# Set to e.g. gh-releases-zsync|owner|repo|latest|Magic-*EL9.AppImage.zsync +UPDATEINFORMATION ?= + appimagetool: curl -L "$(APPIMAGETOOL_DOWNLOAD_URL)" > ./appimagetool chmod +x ./appimagetool $(APPIMAGE): prefix/bin/magic appimagetool $(RESOURCES) cp $(RESOURCES) ./prefix/ - ./appimagetool prefix + mkdir -p prefix/usr/share/metainfo + cp ../rsc/magic.metainfo.xml prefix/usr/share/metainfo/org.opencircuitdesign.magic.metainfo.xml + if [ -n "$(UPDATEINFORMATION)" ]; then \ + ./appimagetool --updateinformation "$(UPDATEINFORMATION)" prefix; \ + if command -v zsyncmake >/dev/null 2>&1; then \ + zsyncmake $(APPIMAGE) -u "$(UPDATEINFORMATION)"; \ + fi; \ + else \ + ./appimagetool prefix; \ + fi PREFIX ?= /usr/local install: install $(APPIMAGE) $(PREFIX)/bin/magic +.PHONY: validate +validate: $(APPIMAGE) + @echo "Validating AppImage: $(APPIMAGE)" + @if command -v desktop-file-validate >/dev/null 2>&1; then \ + desktop-file-validate prefix/magic.desktop && echo "desktop-file-validate: OK"; \ + else \ + echo "desktop-file-validate: not installed, skipping"; \ + fi + @if command -v appstreamcli >/dev/null 2>&1; then \ + appstreamcli validate prefix/usr/share/metainfo/org.opencircuitdesign.magic.metainfo.xml && echo "appstreamcli: OK"; \ + else \ + echo "appstreamcli: not installed, skipping"; \ + fi + .PHONY: clean clean: rm -f *.AppImage diff --git a/appimage/rsc/magic.metainfo.xml b/appimage/rsc/magic.metainfo.xml new file mode 100644 index 00000000..6c824ebf --- /dev/null +++ b/appimage/rsc/magic.metainfo.xml @@ -0,0 +1,35 @@ + + + org.opencircuitdesign.magic + + Magic + A VLSI Layout System + + +

+ Magic is an open-source VLSI (Very Large Scale Integration) layout tool that + allows users to design and verify integrated circuit layouts. It supports + design rule checking (DRC), extraction of circuit netlists, and provides + interfaces to SPICE and other common EDA tools. +

+

+ Originally developed at UC Berkeley, Magic has been maintained and extended + by the open hardware community and is widely used in academic and hobbyist + chip design projects. +

+
+ + http://opencircuitdesign.com/magic/ + https://github.com/RTimothyEdwards/magic/issues + + + Development + Electronics + + + + magic + + + +