Repository navigation
Conversation
nodehun is compiled on the machine that builds the packages and links against its glibc and libstdc++. The release builds on ubuntu-latest, now 24.04, so the AppImage and tar.gz of 0.0.123 ship a Nodehun.node that needs GLIBC_2.38 and GLIBCXX_3.4.32. The spell checker doesn't load on Ubuntu 22.04, the oldest supported LTS, and the one the AppImage catalog tests on. Build the Linux artifacts in an ubuntu:22.04 container, move the snap to its own job because snapcraft doesn't run in docker, and fail the build with utils/check-glibc.sh when a native binary needs more than Ubuntu 22.04 provides. Ship an AppStream metainfo file too, which the AppImage catalog reads for the listing. It is installed along the desktop file it launches, so that appstreamcli validate-tree and the catalog's appdir-lint.sh both pass. Refs #721 Signed-off-by: Marc Nuri <marc@marcnuri.com>
3 of 7 tasks
A review of #725 found the check passing when it shouldn't. It read the versions a library defines as versions it needs, missed the GLIBC_ABI_DT_RELR requirement that Ubuntu 24.04 links in by default, and reported success when find could not list a path. It now reads only the version needs section, checks GLIBC, GLIBCXX, CXXABI and GCC against what Ubuntu 22.04 provides, and takes several paths, so the release job can check dist and the AppImage runtime without running the artifact it is about to upload. The desktop entry installed next to the metainfo is a new one with a relative Exec and Icon. The RPM entry it reused points into /opt/electronim, which exists in neither the AppImage nor the tar.gz, and AppRun puts that directory first in XDG_DATA_DIRS. Also stamp the AppStream release at tag time, install the metainfo where Fedora scans for it, limit the release workflow to the permissions it needs, and describe the application with one sentence across every package. Refs #721 Signed-off-by: Marc Nuri <marc@marcnuri.com>
The release job exported GITHUB_TOKEN to every step, so the install scripts of every npm package ran with a token that can publish releases. Only the upload steps get it now. Also assert the spell checker is packed in the release job too, tie the Ubuntu release check-glibc.sh measures against to the containers both workflows build in, and stop readelf from flooding the log with a warning per missing split-debug file of libvulkan.so.1. Refs #721 Signed-off-by: Marc Nuri <marc@marcnuri.com>
publish-copr.yml builds older tags with the spec on main, and those tags have no metainfo. %install already skipped installing it, but %files listed it unconditionally, so rpmbuild failed with "File not found". %files now reads the metainfo from a list that %install only writes when the file exists. Refs #721 Signed-off-by: Marc Nuri <marc@marcnuri.com>
Software centers show the licence name, but nothing tells users the application is free/libre software, which is what most of them care about. Refs #721 Signed-off-by: Marc Nuri <marc@marcnuri.com>
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Prepares the AppImage for submission to the AppImage catalog
(#721) and fixes what checking it against their checklist turned up.
The spell checker doesn't load on Ubuntu 22.04
nodehunis compiled on the machine that builds the packages, so it links against itsglibc and libstdc++. The Linux release builds on
ubuntu-latest, now 24.04, so the0.0.123 AppImage and tar.gz need
GLIBC_2.38andGLIBCXX_3.4.32, which Ubuntu 22.04(glibc 2.35,
GLIBCXX_3.4.30) does not have. The application still starts, and onlyspell checking is gone, because the failure is handled.
Linux Buildjob now run in acontainer: ubuntu:22.04.publish-snap.ymlalready built it separately.
utils/check-glibc.shfails the build when a native binary in the AppImage needs morethan Ubuntu 22.04 provides, so this cannot regress unnoticed.
AppStream metainfo
build-config/com.marcnuri.electronim.appdata.xmlis installed inusr/share/metainfo,and
build-config/electronim.package.desktopinusr/share/applicationsalongside it,because
appstreamcli validate-tree(which the catalog'sappdir-lint.shruns) looksfor the launchable there while electron-builder only writes its desktop file to the root
of the AppImage. That entry is a new one with a relative
Exec=electronim %UandIcon=electronim, not the RPM's/opt/electronimone, because the tar.gz ships ausr/sharetree a user can install. Tests keep it in sync withbuild.linux. Themetainfo keeps the legacy
*.appdata.xmlname because the catalog only reads listingdata from files named that way. Its description says that ElectronIM is free/libre
software: software centers show the licence name, but nothing else tells users that.
It ships without
<screenshots>for now, and that is why this PR does not unblockthe catalog submission on its own: in the catalog's
worker.shthe appdata branch winsover the auto-screenshot branch, so a metainfo file without screenshots means the listing
shows no image at all. #721 tracks adding one, pinned to a commit, before the catalog PR.
Smaller things found while reviewing the above
utils/version-from-tag.jsstamps the AppStream<releases>at tag time, so softwarecenters show a version and a date. The version is only known then.
%{_metainfodir}, where Fedora's software centerscans for it, and no longer carries the stray copies under
/opt/electronim/usr. Itstill builds older tags, which Copr builds with the spec on
mainand which have nometainfo:
%filestakes it from a list%installonly writes when the file exists.permissions: contents: write, which is all the uploadsneed, hands
GITHUB_TOKENto the upload steps only rather than tonpm installand theinstall scripts it runs, and checks out without persisting git credentials. Nothing in
those jobs pushes.
package.json, the snapsummary, the linux synopsis, the RPM
Summary:and theCommentof both desktopentries, instead of four different ones.
squashfs-rootis ignored by git and excluded frombuild.files, so extracting anAppImage in the working tree can't end up inside the next
app.asar.docs/Setup.mdrantar xzwithout-f.Verification
Built in an
ubuntu:22.04container, the same way the new jobs do, and checked theresulting AppImage on Ubuntu 22.04:
utils/check-glibc.sh: every native binary loads with the versions Ubuntu 22.04provides. The same check on the released 0.0.123 AppImage fails and names
Nodehun.node. It reads only the version needs section, so bundling a library thatdefines newer versions is not mistaken for needing them; it also rejects the
GLIBC_ABI_DT_RELRrequirement that Ubuntu 24.04's default link flags add, and failswhen a path cannot be listed rather than reporting an empty scan as success.
appdir-lint.sh:Lint found no fatal issues, anddesktop-file-validatepasses.appstreamcli validate: clean on AppStream 0.15.2 (22.04) and 1.0.2 (24.04).--network=none) under Xvfb on 22.04: the settings dialog opens onfirst launch and nothing logs a
GLIBCerror, where the released AppImage logsversion `GLIBC_2.38' not found.npm run pretestandnpm test(62 suites, 1199 tests) pass.The snap has the same problem and is worse, since
core20provides onlyGLIBCXX_3.4.28.That is tracked separately in #724, to be done on a Linux machine.
Refs #721