<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>obs &amp;mdash; Jerry of the Week</title>
    <link>https://write.in0rdr.ch/tag:obs</link>
    <description>ˈdʒɛri - Individual who sends life against the grain no matter the consequences</description>
    <pubDate>Thu, 16 Apr 2026 12:06:02 +0000</pubDate>
    <item>
      <title>AppImages with Open Build Service (OBS)</title>
      <link>https://write.in0rdr.ch/appimages-with-open-build-service-obs</link>
      <description>&lt;![CDATA[How I built an AppImage for my hobby project using the Open Build Service (OBS).&#xA;&#xA;#linux #obs #appimage&#xA;!--more--&#xA;&#xA;Project setup from Template&#xA;&#xA;Start from the button &#34;New Image&#34; in the UI.&#xA;&#xA;obs-new-image.png&#xA;&#xA;This creates an entry in the &#34;Meta&#34; Settings of the Project. I first tried to follow the instructions by only referencing project=&#34;OBS:AppImage&#34;, but this will not work. The specific OpenSuse build version (project=&#34;OBS:AppImage:Templates:Leap:15.2&#34;) is required. The button &#34;New Image&#34; in the UI will produce a new &#34;Project&#34; with the proper &#34;Meta&#34; specification which you can copy/paste to the desired project (in my case &#34;home&#34;).&#xA;&#xA;Adjust the Meta of the project to use the Template for x8664 and aarch64 AppImages:&#xA;&#xA;  repository name=&#34;AppImage&#34;&#xA;    path project=&#34;OBS:AppImage:Templates:Leap:15.2&#34; repository=&#34;AppImage&#34;/&#xA;    archx8664/arch&#xA;    archaarch64/arch&#xA;  /repository&#xA;&#xA;appimage.yml&#xA;&#xA;Start crafting the appimage.yml file. The &#34;most simple example&#34; was useful as template.&#xA;&#xA;Builds from source can fetch from Git or from archives (e.g., .tar.gz). Because I publish the application in 2 flavors (&#34;nightly&#34; build and stable release), I built the &#34;nightly&#34; build from the latest commit from Git (master branch) and the &#34;stable&#34; release from the tar.gz sources.&#xA;&#xA;I needed to make install the application to DESTDIR $BUILDAPPDIR for it to be available in the resulting AppImage (see difference between source and build dir).&#xA;&#xA;.desktop file&#xA;&#xA;.desktop file and app icon are required in the build directory of the AppDir specification. I did not know that the .desktop file Exec directive does not work with absolute paths 😲.&#xA;&#xA;Also something I learned about .desktop files: &#34;The Icon= entry SHOULD NOT contain the file extension, the actual filename of the file, however, SHOULD carry the extension.&#34; (see AppDir specs).&#xA;&#xA;During few rebuilds, I noticed that newer versions of my .desktop file are not copied to the resulting AppImage. There was some sort of caching going on in the runner, which always included an earlier version of the file. Triggering a rebuild did not replace the file, only pruning the $BUILDSOURCEDIR with an extra build reset the runner and the next build had the updated version of the .desktop file included.&#xA;&#xA;  script:&#xA;  rm -rf $BUILDSOURCE_DIR/*&#xA;&#xA;Distributing as AppImage&#xA;&#xA;Also, I was wondering why the download page for the package does not show icons/buttons to download the AppImage. Because this options was missing, I followed the advice to include an extra link on the website of the project.&#xA;&#xA;div style=&#34;text-align:center; font-size: 0.8em&#34;&#xD;&#xA;a href=&#34;https://write.in0rdr.ch/feed&#34;&amp;#128732; RSS/a | a href=&#34;https://m.in0rdr.ch/in0rdr&#34;&amp;#128024; Fediverse/a | a href=&#34;https://chat.in0rdr.ch/#/guest?join=p0c@conference.in0rdr.ch&#34;&amp;#128172; XMPP/a&#xD;&#xA;/div]]&gt;</description>
      <content:encoded><![CDATA[<p>How I built an AppImage for my hobby project using the Open Build Service (OBS).</p>

<p><a href="https://write.in0rdr.ch/tag:linux" class="hashtag"><span>#</span><span class="p-category">linux</span></a> <a href="https://write.in0rdr.ch/tag:obs" class="hashtag"><span>#</span><span class="p-category">obs</span></a> <a href="https://write.in0rdr.ch/tag:appimage" class="hashtag"><span>#</span><span class="p-category">appimage</span></a>
</p>

<h2 id="project-setup-from-template">Project setup from Template</h2>

<p>Start from the button “New Image” in the UI.</p>

<p><img src="https://code.in0rdr.ch/pub/blog/obs-new-image.png" alt="obs-new-image.png"></p>

<p>This creates an entry in the “Meta” Settings of the Project. I first tried to follow the <a href="https://docs.appimage.org/packaging-guide/hosted-services/opensuse-build-service.html">instructions</a> by only referencing <code>project=&#34;OBS:AppImage&#34;</code>, but this will not work. The specific OpenSuse build version (<code>project=&#34;OBS:AppImage:Templates:Leap:15.2&#34;</code>) is required. The button “New Image” in the UI will produce a new “Project” with the proper “Meta” specification which you can copy/paste to the desired project (in my case “home”).</p>

<p>Adjust the Meta of the project to use the Template for <code>x86_64</code> and <code>aarch64</code> AppImages:</p>

<pre><code class="language-xml">  &lt;repository name=&#34;AppImage&#34;&gt;
    &lt;path project=&#34;OBS:AppImage:Templates:Leap:15.2&#34; repository=&#34;AppImage&#34;/&gt;
    &lt;arch&gt;x86_64&lt;/arch&gt;
    &lt;arch&gt;aarch64&lt;/arch&gt;
  &lt;/repository&gt;
</code></pre>

<h2 id="appimage-yml"><code>appimage.yml</code></h2>

<p>Start crafting the <a href="https://build.opensuse.org/projects/home:in0rdr/packages/diary/files/appimage.yml"><code>appimage.yml</code></a> file. The <a href="https://docs.appimage.org/packaging-guide/hosted-services/opensuse-build-service.html#most-simple-example">“most simple example”</a> was useful as template.</p>

<p>Builds from source can fetch from Git or from archives (e.g., <code>.tar.gz</code>). Because I publish the application in 2 flavors (“nightly” build and stable release), I built the “nightly” <a href="https://docs.appimage.org/packaging-guide/hosted-services/opensuse-build-service.html#simple-example-building-from-source">build from the latest commit from Git</a> (master branch) and the “stable” release from the <code>tar.gz</code> sources.</p>

<p>I needed to <code>make install</code> the application to <a href="https://www.chiark.greenend.org.uk/doc/make-doc/make.html/Makefile-Conventions.html#DESTDIR"><code>DESTDIR</code></a> <code>$BUILD_APPDIR</code> for it to be available in the resulting AppImage (see <a href="https://docs.appimage.org/packaging-guide/hosted-services/opensuse-build-service.html#appimage-yml-file">difference between source and build dir</a>).</p>

<h2 id="desktop-file"><code>.desktop</code> file</h2>

<p><a href="https://build.opensuse.org/projects/home:in0rdr/packages/diary/files/diary.desktop"><code>.desktop</code> file</a> and app icon are <a href="https://docs.appimage.org/reference/appdir.html#general-description">required</a> in the build directory of the AppDir specification. I did not know that the <code>.desktop</code> file <code>Exec</code> directive does not work with absolute paths 😲.</p>

<p>Also something I learned about <code>.desktop</code> files: “The <code>Icon=</code> entry SHOULD NOT contain the file extension, the actual filename of the file, however, SHOULD carry the extension.” (see <a href="https://docs.appimage.org/reference/appdir.html#general-description">AppDir specs</a>).</p>

<p>During few rebuilds, I noticed that newer versions of my <code>.desktop</code> file are not copied to the resulting AppImage. There was some sort of caching going on in the runner, which always included an earlier version of the file. Triggering a rebuild did not replace the file, only pruning the <code>$BUILD_SOURCE_DIR</code> with an extra build reset the runner and the next build had the updated version of the <code>.desktop</code> file included.</p>

<pre><code class="language-yaml">  script:
  - rm -rf $BUILD_SOURCE_DIR/*
</code></pre>

<h2 id="distributing-as-appimage">Distributing as AppImage</h2>

<p>Also, I was wondering why the <a href="https://software.opensuse.org/download.html?project=home%3Ain0rdr&amp;package=diary-nightly">download page</a> for the package does not show icons/buttons to download the AppImage. Because this options was missing, I followed the <a href="https://docs.appimage.org/packaging-guide/distribution.html#making-your-appimages-discoverable">advice</a> to include an extra link on the <a href="https://diary.p0c.ch">website of the project</a>.</p>

<div style="text-align:center; font-size: 0.8em">
<a href="https://write.in0rdr.ch/feed">🛜 RSS</a> | <a href="https://m.in0rdr.ch/in0rdr">🐘 Fediverse</a> | <a href="https://chat.in0rdr.ch/#/guest?join=p0c@conference.in0rdr.ch">💬 XMPP</a>
</div>
]]></content:encoded>
      <guid>https://write.in0rdr.ch/appimages-with-open-build-service-obs</guid>
      <pubDate>Tue, 10 Feb 2026 17:39:41 +0000</pubDate>
    </item>
  </channel>
</rss>