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>
This commit is contained in:
Darryl L. Miles 2026-07-20 17:04:09 +01:00 committed by R. Timothy Edwards
parent f5ff38ff2f
commit d5d5ea363f
9 changed files with 187 additions and 8 deletions

View File

@ -281,6 +281,8 @@ jobs:
echo "| AppImageTool URL | ${APPIMAGETOOL_DOWNLOAD_URL} |" >> "$GITHUB_STEP_SUMMARY" echo "| AppImageTool URL | ${APPIMAGETOOL_DOWNLOAD_URL} |" >> "$GITHUB_STEP_SUMMARY"
- name: Build project - name: Build project
env:
UPDATEINFORMATION: gh-releases-zsync|${{ github.repository_owner }}|${{ github.event.repository.name }}|latest|Magic-*EL10.AppImage.zsync
run: | run: |
cd appimage/10 cd appimage/10
make \ make \
@ -290,13 +292,20 @@ jobs:
TCL_TARBALL_URL="${TCL_TARBALL_URL}" \ TCL_TARBALL_URL="${TCL_TARBALL_URL}" \
TK_TARBALL_URL="${TK_TARBALL_URL}" \ TK_TARBALL_URL="${TK_TARBALL_URL}" \
TCL_TARBALL_SHA256="${TCL_TARBALL_SHA256}" \ 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}" ln -v Magic-x86_64.AppImage "${MAGIC_APPIMAGE_OUTPUT_FILENAME}"
ls -l *.AppImage ls -l *.AppImage
sha256sum *.AppImage sha256sum *.AppImage
pwd 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 - name: Create RELEASE-NOTES.txt
run: | run: |
cd appimage/10 cd appimage/10

View File

@ -281,6 +281,8 @@ jobs:
echo "| AppImageTool URL | ${APPIMAGETOOL_DOWNLOAD_URL} |" >> "$GITHUB_STEP_SUMMARY" echo "| AppImageTool URL | ${APPIMAGETOOL_DOWNLOAD_URL} |" >> "$GITHUB_STEP_SUMMARY"
- name: Build project - name: Build project
env:
UPDATEINFORMATION: gh-releases-zsync|${{ github.repository_owner }}|${{ github.event.repository.name }}|latest|Magic-*EL7.AppImage.zsync
run: | run: |
cd appimage/7 cd appimage/7
make \ make \
@ -290,13 +292,20 @@ jobs:
TCL_TARBALL_URL="${TCL_TARBALL_URL}" \ TCL_TARBALL_URL="${TCL_TARBALL_URL}" \
TK_TARBALL_URL="${TK_TARBALL_URL}" \ TK_TARBALL_URL="${TK_TARBALL_URL}" \
TCL_TARBALL_SHA256="${TCL_TARBALL_SHA256}" \ 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}" ln -v Magic-x86_64.AppImage "${MAGIC_APPIMAGE_OUTPUT_FILENAME}"
ls -l *.AppImage ls -l *.AppImage
sha256sum *.AppImage sha256sum *.AppImage
pwd 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 - name: Create RELEASE-NOTES.txt
run: | run: |
cd appimage/7 cd appimage/7

View File

@ -281,6 +281,8 @@ jobs:
echo "| AppImageTool URL | ${APPIMAGETOOL_DOWNLOAD_URL} |" >> "$GITHUB_STEP_SUMMARY" echo "| AppImageTool URL | ${APPIMAGETOOL_DOWNLOAD_URL} |" >> "$GITHUB_STEP_SUMMARY"
- name: Build project - name: Build project
env:
UPDATEINFORMATION: gh-releases-zsync|${{ github.repository_owner }}|${{ github.event.repository.name }}|latest|Magic-*EL8.AppImage.zsync
run: | run: |
cd appimage/8 cd appimage/8
make \ make \
@ -290,13 +292,20 @@ jobs:
TCL_TARBALL_URL="${TCL_TARBALL_URL}" \ TCL_TARBALL_URL="${TCL_TARBALL_URL}" \
TK_TARBALL_URL="${TK_TARBALL_URL}" \ TK_TARBALL_URL="${TK_TARBALL_URL}" \
TCL_TARBALL_SHA256="${TCL_TARBALL_SHA256}" \ 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}" ln -v Magic-x86_64.AppImage "${MAGIC_APPIMAGE_OUTPUT_FILENAME}"
ls -l *.AppImage ls -l *.AppImage
sha256sum *.AppImage sha256sum *.AppImage
pwd 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 - name: Create RELEASE-NOTES.txt
run: | run: |
cd appimage/8 cd appimage/8

View File

@ -281,6 +281,8 @@ jobs:
echo "| AppImageTool URL | ${APPIMAGETOOL_DOWNLOAD_URL} |" >> "$GITHUB_STEP_SUMMARY" echo "| AppImageTool URL | ${APPIMAGETOOL_DOWNLOAD_URL} |" >> "$GITHUB_STEP_SUMMARY"
- name: Build project - name: Build project
env:
UPDATEINFORMATION: gh-releases-zsync|${{ github.repository_owner }}|${{ github.event.repository.name }}|latest|Magic-*EL9.AppImage.zsync
run: | run: |
cd appimage/9 cd appimage/9
make \ make \
@ -290,13 +292,20 @@ jobs:
TCL_TARBALL_URL="${TCL_TARBALL_URL}" \ TCL_TARBALL_URL="${TCL_TARBALL_URL}" \
TK_TARBALL_URL="${TK_TARBALL_URL}" \ TK_TARBALL_URL="${TK_TARBALL_URL}" \
TCL_TARBALL_SHA256="${TCL_TARBALL_SHA256}" \ 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}" ln -v Magic-x86_64.AppImage "${MAGIC_APPIMAGE_OUTPUT_FILENAME}"
ls -l *.AppImage ls -l *.AppImage
sha256sum *.AppImage sha256sum *.AppImage
pwd 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 - name: Create RELEASE-NOTES.txt
run: | run: |
cd appimage/9 cd appimage/9

View File

@ -52,18 +52,45 @@ prefix/bin/magic: Dockerfile Makefile
exit 1; \ exit 1; \
fi 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: appimagetool:
curl -L "$(APPIMAGETOOL_DOWNLOAD_URL)" > ./appimagetool curl -L "$(APPIMAGETOOL_DOWNLOAD_URL)" > ./appimagetool
chmod +x ./appimagetool chmod +x ./appimagetool
$(APPIMAGE): prefix/bin/magic appimagetool $(RESOURCES) $(APPIMAGE): prefix/bin/magic appimagetool $(RESOURCES)
cp $(RESOURCES) ./prefix/ 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 PREFIX ?= /usr/local
install: install:
install $(APPIMAGE) $(PREFIX)/bin/magic 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 .PHONY: clean
clean: clean:
rm -f *.AppImage rm -f *.AppImage

View File

@ -52,18 +52,45 @@ prefix/bin/magic: Dockerfile Makefile
exit 1; \ exit 1; \
fi 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: appimagetool:
curl -L "$(APPIMAGETOOL_DOWNLOAD_URL)" > ./appimagetool curl -L "$(APPIMAGETOOL_DOWNLOAD_URL)" > ./appimagetool
chmod +x ./appimagetool chmod +x ./appimagetool
$(APPIMAGE): prefix/bin/magic appimagetool $(RESOURCES) $(APPIMAGE): prefix/bin/magic appimagetool $(RESOURCES)
cp $(RESOURCES) ./prefix/ 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 PREFIX ?= /usr/local
install: install:
install $(APPIMAGE) $(PREFIX)/bin/magic 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 .PHONY: clean
clean: clean:
rm -f *.AppImage rm -f *.AppImage

View File

@ -52,18 +52,45 @@ prefix/bin/magic: Dockerfile Makefile
exit 1; \ exit 1; \
fi 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: appimagetool:
curl -L "$(APPIMAGETOOL_DOWNLOAD_URL)" > ./appimagetool curl -L "$(APPIMAGETOOL_DOWNLOAD_URL)" > ./appimagetool
chmod +x ./appimagetool chmod +x ./appimagetool
$(APPIMAGE): prefix/bin/magic appimagetool $(RESOURCES) $(APPIMAGE): prefix/bin/magic appimagetool $(RESOURCES)
cp $(RESOURCES) ./prefix/ 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 PREFIX ?= /usr/local
install: install:
install $(APPIMAGE) $(PREFIX)/bin/magic 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 .PHONY: clean
clean: clean:
rm -f *.AppImage rm -f *.AppImage

View File

@ -52,18 +52,45 @@ prefix/bin/magic: Dockerfile Makefile
exit 1; \ exit 1; \
fi 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: appimagetool:
curl -L "$(APPIMAGETOOL_DOWNLOAD_URL)" > ./appimagetool curl -L "$(APPIMAGETOOL_DOWNLOAD_URL)" > ./appimagetool
chmod +x ./appimagetool chmod +x ./appimagetool
$(APPIMAGE): prefix/bin/magic appimagetool $(RESOURCES) $(APPIMAGE): prefix/bin/magic appimagetool $(RESOURCES)
cp $(RESOURCES) ./prefix/ 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 PREFIX ?= /usr/local
install: install:
install $(APPIMAGE) $(PREFIX)/bin/magic 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 .PHONY: clean
clean: clean:
rm -f *.AppImage rm -f *.AppImage

View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="console-application">
<id>org.opencircuitdesign.magic</id>
<name>Magic</name>
<summary>A VLSI Layout System</summary>
<description>
<p>
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.
</p>
<p>
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.
</p>
</description>
<url type="homepage">http://opencircuitdesign.com/magic/</url>
<url type="bugtracker">https://github.com/RTimothyEdwards/magic/issues</url>
<categories>
<category>Development</category>
<category>Electronics</category>
</categories>
<provides>
<binary>magic</binary>
</provides>
<content_rating type="oars-1.1"/>
</component>