<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Knowledge Base (Posts about dpkg)</title><link>https://bgstack15.ddns.net/blog/</link><description></description><atom:link href="https://bgstack15.ddns.net/blog/categories/dpkg.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2026 &lt;a href="mailto:bgstack15@gmail.com"&gt;bgstack15&lt;/a&gt; 
&lt;a rel="license" href="https://www.gnu.org/licenses/gpl-3.0.html"&gt;
&lt;img alt="GNU General Public License v3.0"
style="border-width:0; margin-bottom:12px;"
src="https://bgstack15.ddns.net/.images/gplv3-127x51.png"&gt;&lt;/a&gt;</copyright><lastBuildDate>Mon, 26 Jan 2026 13:45:46 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Initialize a dpkg for building</title><link>https://bgstack15.ddns.net/blog/posts/2026/01/26/initialize-a-dpkg-for-building/</link><dc:creator>bgstack15</dc:creator><description>&lt;p&gt;I talk about &lt;a href="https://bgstack15.ddns.net/blog/categories/debuild/"&gt;debuild&lt;/a&gt; a lot. Sometimes I build a new package that has no dpkg recipe yet, but I have to start somewhere.&lt;/p&gt;
&lt;p&gt;To build a suitable tarball without &lt;code&gt;git archive&lt;/code&gt; stuff (no scm in today's case), you can run this.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;debmake -p paint -u 0.0.1 -r '1+stackrpms' -z=tar.gz -t
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Customize the build recipe. For quite a while now, I've been putting the install process in file &lt;a href="https://bgstack15.ddns.net/blog/cgit/gmm/tree/src/Makefile"&gt;src/Makefile&lt;/a&gt;, and my &lt;a href="https://bgstack15.ddns.net/blog/cgit/gmm/tree/debian/rules"&gt;debian/rules&lt;/a&gt; points to that source directory. It's nice and simple, with minimal effort needed on the dpkg instructions level. I want to be flexible in case I get around to building rpms again, or change package formats. I don't see that happening, but you never know. Make is probably the lowest common denominator: Pretty much any package manager will be able to use one.&lt;/p&gt;
&lt;p&gt;And then a nice short &lt;a href="https://bgstack15.ddns.net/blog/posts/2025/01/07/customize-lintian-warnings-and-errors/"&gt;&lt;code&gt;debuild&lt;/code&gt;&lt;/a&gt; to build the package.&lt;/p&gt;</description><category>build</category><category>debuild</category><category>dpkg</category><guid>https://bgstack15.ddns.net/blog/posts/2026/01/26/initialize-a-dpkg-for-building/</guid><pubDate>Mon, 26 Jan 2026 13:38:00 GMT</pubDate></item><item><title>sorting all package releases in my dev directory</title><link>https://bgstack15.ddns.net/blog/posts/2025/11/23/sorting-all-package-releases-in-my-dev-directory/</link><dc:creator>bgstack15</dc:creator><description>&lt;p&gt;I needed to build a custom release of &lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/pkginfo.devuan.org/systemctl-service-shim"&gt;systemctl-service-shim&lt;/a&gt;, which is my package in &lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/www.devuan.org/"&gt;Devuan GNU+Linux&lt;/a&gt;, which provides a script that translates &lt;code&gt;systemctl&lt;/code&gt; commands into the real commands (service and update-rc.d primarily).&lt;/p&gt;
&lt;p&gt;The reason for this package is not directly related to the nifty main contents, but I was attempting to &lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/github.com/linux-surface/linux-surface/wiki/Installation-and-Setup#debian--ubuntu"&gt;install&lt;/a&gt; a kernel specifically Surface 3 tablet computer in the Devuan installation, and some of the packages list a dependency on systemd.&lt;/p&gt;
&lt;p&gt;I wanted to make a package for myself on the internal repository, because I needed to &lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/git.devuan.org/devuan/systemctl-service-shim/src/branch/suites/unstable/"&gt;build&lt;/a&gt; a copy of the package that &lt;code&gt;Provides: systemd&lt;/code&gt;. And I wanted to use a different version suffix orand suite value. You know, the &lt;strong&gt;unstable&lt;/strong&gt; from this line of a &lt;code&gt;debian/changelog&lt;/code&gt; file.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;systemctl-service-shim (0.0.9) unstable; urgency=medium
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;And I wasn't sure what I tend to use internally, so I whipped up this interesting oneliner.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;grep&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;o&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="k"&gt;include&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'changelog*'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;riIP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'\w+(?=; urgency)'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;awk&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'{a[$0]++} END{for(i in a){print i":"a[i]}}'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sort&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="s1"&gt;':'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;k2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;rn&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="nl"&gt;unstable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;3390&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="nl"&gt;obs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1069&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="nl"&gt;experimental&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;813&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="nl"&gt;UNRELEASED&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;276&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="nl"&gt;internal3&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;84&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="nl"&gt;manual&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;70&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="nl"&gt;mx&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;34&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="nl"&gt;vivid&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;28&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="nl"&gt;bionic&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="nl"&gt;mepis&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="nl"&gt;stable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="nl"&gt;trusty&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="nl"&gt;lucid&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="nl"&gt;saucy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="nl"&gt;raring&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="nl"&gt;precise&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="nl"&gt;xenial&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="nl"&gt;maverick&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="nl"&gt;jammy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="nl"&gt;intrepid&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="nl"&gt;updates&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="nl"&gt;OBS&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="nl"&gt;groovy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;So I used &lt;code&gt;internal3&lt;/code&gt; for my custom package of systemctl-service-shim.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="n"&gt;systemctl&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;service&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;shim&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.0.9&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;stackrpms&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;internal3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;urgency&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;medium&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;

&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt; B. Stack &lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Custom&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;build&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;that&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;says&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;it&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;Provides&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;systemd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;

&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- B. Stack &amp;lt;bgstack15@gmail.com&amp;gt;  Tue, 04 Nov 2025 08:36:51 -0500&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;</description><category>debuild</category><category>dpkg</category><category>narrative</category><category>oneliner</category><guid>https://bgstack15.ddns.net/blog/posts/2025/11/23/sorting-all-package-releases-in-my-dev-directory/</guid><pubDate>Sun, 23 Nov 2025 13:54:00 GMT</pubDate></item><item><title>Package for Devuan: mineclonia</title><link>https://bgstack15.ddns.net/blog/posts/2025/09/28/package-for-devuan-mineclonia/</link><dc:creator>bgstack15</dc:creator><description>&lt;p&gt;Just like &lt;a href="https://bgstack15.ddns.net/blog/posts/2025/09/24/flatpak-for-mineclonia-client/"&gt;last time&lt;/a&gt; where I wanted to package the Halon Luanti fork customized for Mineclonia, now I've done it in a dpkg! You can go get the package from my &lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/build.opensuse.org/package/show/home:bgstack15/mineclonia"&gt;OBS repo&lt;/a&gt;, and my &lt;a href="https://bgstack15.ddns.net/blog/cgit/luanti/mineclonia-dpkg/"&gt;build recipe&lt;/a&gt; is a hard fork of the &lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/salsa.debian.org/games-team/luanti"&gt;Salsa luanti recipe&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So now I can just &lt;code&gt;apt-get install mineclonia&lt;/code&gt; and not depend on Flatpak anymore!&lt;/p&gt;
&lt;p&gt;Just to reiterate for anyone who won't click through to the previous post, this dpkg recipe uses the custom &lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/codeberg.org/halon/Minetest"&gt;fork of the game engine&lt;/a&gt; with its &lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/codeberg.org/halon/mcl_localplayer"&gt;client side mod&lt;/a&gt; that provides better player physics than base Luanti can.&lt;/p&gt;</description><category>dpkg</category><category>luanti</category><category>mineclonia</category><category>packaging</category><guid>https://bgstack15.ddns.net/blog/posts/2025/09/28/package-for-devuan-mineclonia/</guid><pubDate>Sun, 28 Sep 2025 12:54:00 GMT</pubDate></item><item><title>OBS and build dpkgs note</title><link>https://bgstack15.ddns.net/blog/posts/2024/09/26/obs-and-build-dpkgs-note/</link><dc:creator>bgstack15</dc:creator><description>&lt;p&gt;The &lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/build.opensuse.org/project/show/home:bgstack15"&gt;Open Build Service&lt;/a&gt; is fantastic. I need to figure how to donate a little money to the SuSE team that offers this to free software admins like me.&lt;/p&gt;
&lt;p&gt;Their documentation is &lt;a href="https://bgstack15.ddns.net/blog/posts/2020/02/24/found-obs-service-documentation/"&gt;really hard to find&lt;/a&gt;, so when I had a new configuration for a &lt;code&gt;_service&lt;/code&gt; file (seen below), I ran into a problem.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="nt"&gt;&amp;lt;services&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;service&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"tar_scm"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"scm"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;git&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"url"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;https://bgstack15.ddns.net/cgit/stackrpms&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"subdir"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;debian&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"filename"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;for-dsc-only&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"revision"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;master&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"version"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;_none_&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;/service&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;service&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"recompress"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"file"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;*.tar&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"compression"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;xz&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;/service&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;service&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"tar_scm"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"scm"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;git&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"url"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;https://bgstack15.ddns.net/cgit/fprintd-tk&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"subdir"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;debian&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"filename"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;debian&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"revision"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;master&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"version"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;_none_&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;/service&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;service&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"recompress"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"file"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;*.tar&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"compression"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;xz&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;/service&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;service&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"tar_scm"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"scm"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;git&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"url"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;https://bgstack15.ddns.net/cgit/fprintd-tk&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"revision"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;master&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"version"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;_none_&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;/service&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;service&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"recompress"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"file"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;*.tar&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"compression"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;gz&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;/service&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;service&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"extract_file"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"archive"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;for-dsc-only.tar.xz&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"files"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;*/*.dsc&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;/service&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/services&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The above is almost my standard method for pulling down the &lt;code&gt;*.dsc&lt;/code&gt; file that tells OBS we are building a dpkg, and the source tarball. This time, we are pulling down the .dsc file in an archive separately from even the rest of the debian/ build recipe. And this method fails with an error:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt; &lt;span class="nv"&gt;Too&lt;/span&gt; &lt;span class="nv"&gt;many&lt;/span&gt; &lt;span class="nv"&gt;files&lt;/span&gt; &lt;span class="nv"&gt;looking&lt;/span&gt; &lt;span class="nv"&gt;like&lt;/span&gt; &lt;span class="nv"&gt;a&lt;/span&gt; &lt;span class="nv"&gt;usable&lt;/span&gt; &lt;span class="nv"&gt;source&lt;/span&gt; &lt;span class="nv"&gt;tarball&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;would&lt;/span&gt; &lt;span class="nv"&gt;not&lt;/span&gt; &lt;span class="nv"&gt;know&lt;/span&gt; &lt;span class="nv"&gt;which&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;pick&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;: &lt;span class="nv"&gt;fprintd&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;tk&lt;/span&gt;.&lt;span class="nv"&gt;tar&lt;/span&gt;.&lt;span class="nv"&gt;xz&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;dsc&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;only&lt;/span&gt;.&lt;span class="nv"&gt;tar&lt;/span&gt;.&lt;span class="nv"&gt;xz&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The solution, which was available after searching the Internet, should have been to add a &lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/en.opensuse.org/openSUSE:Build_Service_Debian_builds"&gt;debtransform&lt;/a&gt; command &lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/github.com/openSUSE/obs-build/issues/240#issuecomment-181571632"&gt;in the .dsc file&lt;/a&gt;:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;DEBTRANSFORM-TAR: fprintd-tk.tar.xz
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;And that accepts things like &lt;code&gt;@VERSION@&lt;/code&gt; but I haven't bothered with that. I took the quicker, dirtier method in a &lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/github.com/openSUSE/obs-build/issues/240#issuecomment-367815667"&gt;later comment&lt;/a&gt;, which is to modify the &lt;code&gt;_service&lt;/code&gt; definition.&lt;/p&gt;
&lt;p&gt;The snippet that matters:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;   &lt;span class="nt"&gt;&amp;lt;service&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"tar_scm"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      ...
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"extension"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;tar_&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"extract"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;*.dsc&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;/service&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;And man, I never knew about the extract parameter before. Remember how those &lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/en.opensuse.org/openSUSE:Build_Service_Concept_SourceService#All_OBS_services_available"&gt;docs&lt;/a&gt; are hard to find? (And actually, in the documentation I could find nothing described parameter "extract" for service "tar_scm".&lt;/p&gt;
&lt;p&gt;The full service definition is below.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="nt"&gt;&amp;lt;services&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;service&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"tar_scm"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"scm"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;git&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"url"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;https://bgstack15.ddns.net/cgit/stackrpms&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"subdir"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;fprintd_tk/debian&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"filename"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;for-dsc-only&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"extension"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;tar_&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"revision"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;master&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"version"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;_none_&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"extract"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;*.dsc&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;/service&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;service&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"tar_scm"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"scm"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;git&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"url"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;https://bgstack15.ddns.net/cgit/fprintd-tk&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"subdir"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;debian&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"filename"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;debian&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"revision"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;master&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"version"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;_none_&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;/service&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;service&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"recompress"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"file"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;*.tar&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"compression"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;xz&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;/service&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;service&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"tar_scm"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"scm"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;git&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"url"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;https://bgstack15.ddns.net/cgit/fprintd-tk&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"revision"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;master&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"version"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;_none_&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;/service&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;service&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"recompress"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"file"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;*.tar&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;param&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"compression"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;gz&lt;span class="nt"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;/service&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/services&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;</description><category>debuild</category><category>dpkg</category><category>obs</category><category>packaging</category><guid>https://bgstack15.ddns.net/blog/posts/2024/09/26/obs-and-build-dpkgs-note/</guid><pubDate>Thu, 26 Sep 2024 12:31:00 GMT</pubDate></item><item><title>updating set-my-repos.sh for deb822 format</title><link>https://bgstack15.ddns.net/blog/posts/2024/09/14/updating-set-my-repos-sh-for-deb822-format/</link><dc:creator>bgstack15</dc:creator><description>&lt;p&gt;I've previously described set-my-repos.sh in a multitude of posts:&lt;/p&gt;
&lt;!--
generated with [bgstack15@desktop1|/mnt/public/Support/Programs/nikola/kb2/posts]$ grep -l -riIE 'set-my-repos.sh' | sed -r -e 's@^(.*).md@[\1](link://slug/\1)@g;' | sort
--&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://bgstack15.ddns.net/blog/2020/03/26/use-virt-install-to-fully-automate-the-install-for-devuan-ceres-with-preseed-march-2020-edition"&gt;2020/03/26/use-virt-install-to-fully-automate-the-install-for-devuan-ceres-with-preseed-march-2020-edition&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bgstack15.ddns.net/blog/2020/11/05/building-an-apt-repo-on-centos-that-supports-apt-file-operations"&gt;2020/11/05/building-an-apt-repo-on-centos-that-supports-apt-file-operations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bgstack15.ddns.net/blog/2021/05/23/use-virt-install-to-fully-automate-the-install-for-devuan-ceres-with-preseed-may-2021-edition"&gt;2021/05/23/use-virt-install-to-fully-automate-the-install-for-devuan-ceres-with-preseed-may-2021-edition&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bgstack15.ddns.net/blog/2022/03/22/install-almalinux-8-with-kickstart-and-virt-install"&gt;2022/03/22/install-almalinux-8-with-kickstart-and-virt-install&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bgstack15.ddns.net/blog/2022/04/03/my-kickstart-for-fedora-35-vms"&gt;2022/04/03/my-kickstart-for-fedora-35-vms&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bgstack15.ddns.net/blog/2022/12/11/my-kickstart-for-fedora-37-vms"&gt;2022/12/11/my-kickstart-for-fedora-37-vms&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bgstack15.ddns.net/blog/2023/07/30/devuan-preseed-july-2023-edition"&gt;2023/07/30/devuan-preseed-july-2023-edition&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bgstack15.ddns.net/blog/2023/08/03/my-kickstart-for-rocky-linux-9-vms"&gt;2023/08/03/my-kickstart-for-rocky-linux-9-vms&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bgstack15.ddns.net/blog/2024/01/10/devuan-ceres-and-zenity-that-uses-gtk3"&gt;2024/01/10/devuan-ceres-and-zenity-that-uses-gtk3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bgstack15.ddns.net/blog/2024/05/05/devuan-preseed-may-2024-edition"&gt;2024/05/05/devuan-preseed-may-2024-edition&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I've updated my process to work with &lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/repolib.readthedocs.io/en/latest/deb822-format.html"&gt;deb822 format&lt;/a&gt;, which ironically is not fully documented there, and you have to read &lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/manpages.debian.org/stretch/apt/sources.list.5.en.html"&gt;manpages.debian.org&lt;/a&gt; to understand all the fields.&lt;/p&gt;
&lt;p&gt;A major improvement to this whole process is that I no longer need a custom &lt;code&gt;/etc/apt/apt.conf.d/52apt-file-stackrpms.conf&lt;/code&gt; file at all. Because you can specify Components, or just omit that, apt will then figure out the Contents sections correctly!&lt;/p&gt;
&lt;p&gt;The downside is that because I'm not storing the original upstream url for the &lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/build.opensuse.org/"&gt;OBS&lt;/a&gt; &lt;a href="https://bgstack15.ddns.net/blog/outbound/http:/download.opensuse.org/repositories/home:/bgstack15/Debian_Unstable/"&gt;repositories&lt;/a&gt; in, for example, a separate file, and because I resign the repository (so I can include the older versions of dpkgs in the repo), the gpg keys won't match even if I use the upstream url. I should probably bother to set up a "Enabled: no" version of "OBS bgstack15-upstream" repo files, but I haven't bothered to do that yet.&lt;/p&gt;
&lt;p&gt;I don't think one-line-style format is going away anytime soon, but I liked the idea of using the newer option, and it had that awesome bonus of not needing the custom apt-file config (which was flaky).&lt;/p&gt;
&lt;p&gt;You can see the old version (from my 2024-05-05 post linked earlier) &lt;a href="https://bgstack15.ddns.net/blog/files/2024/listings/set-my-repos.sh.html"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://bgstack15.ddns.net/blog/files/2024/listings/set-my-repos-2024-09.sh.html"&gt;files/2024/listings/set-my-repos-2024-09.sh&lt;/a&gt;  &lt;a href="https://bgstack15.ddns.net/blog/files/2024/listings/set-my-repos-2024-09.sh"&gt;(Source)&lt;/a&gt;&lt;/p&gt;&lt;div class="highlight"&gt;&lt;table class="highlighttable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt;&lt;span class="normal"&gt;  1&lt;/span&gt;
&lt;span class="normal"&gt;  2&lt;/span&gt;
&lt;span class="normal"&gt;  3&lt;/span&gt;
&lt;span class="normal"&gt;  4&lt;/span&gt;
&lt;span class="normal"&gt;  5&lt;/span&gt;
&lt;span class="normal"&gt;  6&lt;/span&gt;
&lt;span class="normal"&gt;  7&lt;/span&gt;
&lt;span class="normal"&gt;  8&lt;/span&gt;
&lt;span class="normal"&gt;  9&lt;/span&gt;
&lt;span class="normal"&gt; 10&lt;/span&gt;
&lt;span class="normal"&gt; 11&lt;/span&gt;
&lt;span class="normal"&gt; 12&lt;/span&gt;
&lt;span class="normal"&gt; 13&lt;/span&gt;
&lt;span class="normal"&gt; 14&lt;/span&gt;
&lt;span class="normal"&gt; 15&lt;/span&gt;
&lt;span class="normal"&gt; 16&lt;/span&gt;
&lt;span class="normal"&gt; 17&lt;/span&gt;
&lt;span class="normal"&gt; 18&lt;/span&gt;
&lt;span class="normal"&gt; 19&lt;/span&gt;
&lt;span class="normal"&gt; 20&lt;/span&gt;
&lt;span class="normal"&gt; 21&lt;/span&gt;
&lt;span class="normal"&gt; 22&lt;/span&gt;
&lt;span class="normal"&gt; 23&lt;/span&gt;
&lt;span class="normal"&gt; 24&lt;/span&gt;
&lt;span class="normal"&gt; 25&lt;/span&gt;
&lt;span class="normal"&gt; 26&lt;/span&gt;
&lt;span class="normal"&gt; 27&lt;/span&gt;
&lt;span class="normal"&gt; 28&lt;/span&gt;
&lt;span class="normal"&gt; 29&lt;/span&gt;
&lt;span class="normal"&gt; 30&lt;/span&gt;
&lt;span class="normal"&gt; 31&lt;/span&gt;
&lt;span class="normal"&gt; 32&lt;/span&gt;
&lt;span class="normal"&gt; 33&lt;/span&gt;
&lt;span class="normal"&gt; 34&lt;/span&gt;
&lt;span class="normal"&gt; 35&lt;/span&gt;
&lt;span class="normal"&gt; 36&lt;/span&gt;
&lt;span class="normal"&gt; 37&lt;/span&gt;
&lt;span class="normal"&gt; 38&lt;/span&gt;
&lt;span class="normal"&gt; 39&lt;/span&gt;
&lt;span class="normal"&gt; 40&lt;/span&gt;
&lt;span class="normal"&gt; 41&lt;/span&gt;
&lt;span class="normal"&gt; 42&lt;/span&gt;
&lt;span class="normal"&gt; 43&lt;/span&gt;
&lt;span class="normal"&gt; 44&lt;/span&gt;
&lt;span class="normal"&gt; 45&lt;/span&gt;
&lt;span class="normal"&gt; 46&lt;/span&gt;
&lt;span class="normal"&gt; 47&lt;/span&gt;
&lt;span class="normal"&gt; 48&lt;/span&gt;
&lt;span class="normal"&gt; 49&lt;/span&gt;
&lt;span class="normal"&gt; 50&lt;/span&gt;
&lt;span class="normal"&gt; 51&lt;/span&gt;
&lt;span class="normal"&gt; 52&lt;/span&gt;
&lt;span class="normal"&gt; 53&lt;/span&gt;
&lt;span class="normal"&gt; 54&lt;/span&gt;
&lt;span class="normal"&gt; 55&lt;/span&gt;
&lt;span class="normal"&gt; 56&lt;/span&gt;
&lt;span class="normal"&gt; 57&lt;/span&gt;
&lt;span class="normal"&gt; 58&lt;/span&gt;
&lt;span class="normal"&gt; 59&lt;/span&gt;
&lt;span class="normal"&gt; 60&lt;/span&gt;
&lt;span class="normal"&gt; 61&lt;/span&gt;
&lt;span class="normal"&gt; 62&lt;/span&gt;
&lt;span class="normal"&gt; 63&lt;/span&gt;
&lt;span class="normal"&gt; 64&lt;/span&gt;
&lt;span class="normal"&gt; 65&lt;/span&gt;
&lt;span class="normal"&gt; 66&lt;/span&gt;
&lt;span class="normal"&gt; 67&lt;/span&gt;
&lt;span class="normal"&gt; 68&lt;/span&gt;
&lt;span class="normal"&gt; 69&lt;/span&gt;
&lt;span class="normal"&gt; 70&lt;/span&gt;
&lt;span class="normal"&gt; 71&lt;/span&gt;
&lt;span class="normal"&gt; 72&lt;/span&gt;
&lt;span class="normal"&gt; 73&lt;/span&gt;
&lt;span class="normal"&gt; 74&lt;/span&gt;
&lt;span class="normal"&gt; 75&lt;/span&gt;
&lt;span class="normal"&gt; 76&lt;/span&gt;
&lt;span class="normal"&gt; 77&lt;/span&gt;
&lt;span class="normal"&gt; 78&lt;/span&gt;
&lt;span class="normal"&gt; 79&lt;/span&gt;
&lt;span class="normal"&gt; 80&lt;/span&gt;
&lt;span class="normal"&gt; 81&lt;/span&gt;
&lt;span class="normal"&gt; 82&lt;/span&gt;
&lt;span class="normal"&gt; 83&lt;/span&gt;
&lt;span class="normal"&gt; 84&lt;/span&gt;
&lt;span class="normal"&gt; 85&lt;/span&gt;
&lt;span class="normal"&gt; 86&lt;/span&gt;
&lt;span class="normal"&gt; 87&lt;/span&gt;
&lt;span class="normal"&gt; 88&lt;/span&gt;
&lt;span class="normal"&gt; 89&lt;/span&gt;
&lt;span class="normal"&gt; 90&lt;/span&gt;
&lt;span class="normal"&gt; 91&lt;/span&gt;
&lt;span class="normal"&gt; 92&lt;/span&gt;
&lt;span class="normal"&gt; 93&lt;/span&gt;
&lt;span class="normal"&gt; 94&lt;/span&gt;
&lt;span class="normal"&gt; 95&lt;/span&gt;
&lt;span class="normal"&gt; 96&lt;/span&gt;
&lt;span class="normal"&gt; 97&lt;/span&gt;
&lt;span class="normal"&gt; 98&lt;/span&gt;
&lt;span class="normal"&gt; 99&lt;/span&gt;
&lt;span class="normal"&gt;100&lt;/span&gt;
&lt;span class="normal"&gt;101&lt;/span&gt;
&lt;span class="normal"&gt;102&lt;/span&gt;
&lt;span class="normal"&gt;103&lt;/span&gt;
&lt;span class="normal"&gt;104&lt;/span&gt;
&lt;span class="normal"&gt;105&lt;/span&gt;
&lt;span class="normal"&gt;106&lt;/span&gt;
&lt;span class="normal"&gt;107&lt;/span&gt;
&lt;span class="normal"&gt;108&lt;/span&gt;
&lt;span class="normal"&gt;109&lt;/span&gt;
&lt;span class="normal"&gt;110&lt;/span&gt;
&lt;span class="normal"&gt;111&lt;/span&gt;
&lt;span class="normal"&gt;112&lt;/span&gt;
&lt;span class="normal"&gt;113&lt;/span&gt;
&lt;span class="normal"&gt;114&lt;/span&gt;
&lt;span class="normal"&gt;115&lt;/span&gt;
&lt;span class="normal"&gt;116&lt;/span&gt;
&lt;span class="normal"&gt;117&lt;/span&gt;
&lt;span class="normal"&gt;118&lt;/span&gt;
&lt;span class="normal"&gt;119&lt;/span&gt;
&lt;span class="normal"&gt;120&lt;/span&gt;
&lt;span class="normal"&gt;121&lt;/span&gt;
&lt;span class="normal"&gt;122&lt;/span&gt;
&lt;span class="normal"&gt;123&lt;/span&gt;
&lt;span class="normal"&gt;124&lt;/span&gt;
&lt;span class="normal"&gt;125&lt;/span&gt;
&lt;span class="normal"&gt;126&lt;/span&gt;
&lt;span class="normal"&gt;127&lt;/span&gt;
&lt;span class="normal"&gt;128&lt;/span&gt;
&lt;span class="normal"&gt;129&lt;/span&gt;
&lt;span class="normal"&gt;130&lt;/span&gt;
&lt;span class="normal"&gt;131&lt;/span&gt;
&lt;span class="normal"&gt;132&lt;/span&gt;
&lt;span class="normal"&gt;133&lt;/span&gt;
&lt;span class="normal"&gt;134&lt;/span&gt;
&lt;span class="normal"&gt;135&lt;/span&gt;
&lt;span class="normal"&gt;136&lt;/span&gt;
&lt;span class="normal"&gt;137&lt;/span&gt;
&lt;span class="normal"&gt;138&lt;/span&gt;
&lt;span class="normal"&gt;139&lt;/span&gt;
&lt;span class="normal"&gt;140&lt;/span&gt;
&lt;span class="normal"&gt;141&lt;/span&gt;
&lt;span class="normal"&gt;142&lt;/span&gt;
&lt;span class="normal"&gt;143&lt;/span&gt;
&lt;span class="normal"&gt;144&lt;/span&gt;
&lt;span class="normal"&gt;145&lt;/span&gt;
&lt;span class="normal"&gt;146&lt;/span&gt;
&lt;span class="normal"&gt;147&lt;/span&gt;
&lt;span class="normal"&gt;148&lt;/span&gt;
&lt;span class="normal"&gt;149&lt;/span&gt;
&lt;span class="normal"&gt;150&lt;/span&gt;
&lt;span class="normal"&gt;151&lt;/span&gt;
&lt;span class="normal"&gt;152&lt;/span&gt;
&lt;span class="normal"&gt;153&lt;/span&gt;
&lt;span class="normal"&gt;154&lt;/span&gt;
&lt;span class="normal"&gt;155&lt;/span&gt;
&lt;span class="normal"&gt;156&lt;/span&gt;
&lt;span class="normal"&gt;157&lt;/span&gt;
&lt;span class="normal"&gt;158&lt;/span&gt;
&lt;span class="normal"&gt;159&lt;/span&gt;
&lt;span class="normal"&gt;160&lt;/span&gt;
&lt;span class="normal"&gt;161&lt;/span&gt;
&lt;span class="normal"&gt;162&lt;/span&gt;
&lt;span class="normal"&gt;163&lt;/span&gt;
&lt;span class="normal"&gt;164&lt;/span&gt;
&lt;span class="normal"&gt;165&lt;/span&gt;
&lt;span class="normal"&gt;166&lt;/span&gt;
&lt;span class="normal"&gt;167&lt;/span&gt;
&lt;span class="normal"&gt;168&lt;/span&gt;
&lt;span class="normal"&gt;169&lt;/span&gt;
&lt;span class="normal"&gt;170&lt;/span&gt;
&lt;span class="normal"&gt;171&lt;/span&gt;
&lt;span class="normal"&gt;172&lt;/span&gt;
&lt;span class="normal"&gt;173&lt;/span&gt;
&lt;span class="normal"&gt;174&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="ch"&gt;#!/bin/sh&lt;/span&gt;
&lt;span class="c1"&gt;# File: /mnt/public/Support/Platforms/devuan/set-my-repos.sh&lt;/span&gt;
&lt;span class="c1"&gt;# Location:&lt;/span&gt;
&lt;span class="c1"&gt;# Author: bgstack15&lt;/span&gt;
&lt;span class="c1"&gt;# Startdate: 2019-08-10 16:02&lt;/span&gt;
&lt;span class="c1"&gt;# Title: Script that Establishes the repos needed for Devuan&lt;/span&gt;
&lt;span class="c1"&gt;# Purpose: Set up the 3 repos I always need on devuan clients&lt;/span&gt;
&lt;span class="c1"&gt;# History:&lt;/span&gt;
&lt;span class="c1"&gt;#    2020-02-01 customize clients for devuan-archive&lt;/span&gt;
&lt;span class="c1"&gt;#    2020-10-23 add apt-file compatibility&lt;/span&gt;
&lt;span class="c1"&gt;#    2021-01-27 disable devuan-archive&lt;/span&gt;
&lt;span class="c1"&gt;#    2024-01-03-4 14:53 add pref for zenity with gtk3&lt;/span&gt;
&lt;span class="c1"&gt;#    2024-09-12-5 13:52 use deb822 format sources now&lt;/span&gt;
&lt;span class="c1"&gt;# Usage:&lt;/span&gt;
&lt;span class="c1"&gt;#    sudo set-my-repos.sh&lt;/span&gt;
&lt;span class="c1"&gt;# Reference:&lt;/span&gt;
&lt;span class="c1"&gt;#    /mnt/public/Support/Platforms/devuan/devuan.txt&lt;/span&gt;
&lt;span class="c1"&gt;# Improve:&lt;/span&gt;
&lt;span class="c1"&gt;#    need to control the sources.list file itself to have the main, contrib, etc., for ceres.&lt;/span&gt;
&lt;span class="c1"&gt;# Documentation:&lt;/span&gt;

&lt;span class="nb"&gt;test&lt;/span&gt; -z &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;ALLREPOSGLOB&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nv"&gt;ALLREPOSGLOB&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"/etc/apt/sources.list /etc/apt/sources.list.d/*"&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt; -z &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;REPOSBASE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nv"&gt;REPOSBASE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"/etc/apt/sources.list.d"&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt; -z &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;PREFSBASE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nv"&gt;PREFSBASE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"/etc/apt/preferences.d"&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt; -z &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;ADDLCONFBASE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nv"&gt;ADDLCONFBASE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"/etc/apt/apt.conf.d"&lt;/span&gt;

&lt;span class="c1"&gt;# confirm key&lt;/span&gt;
confirm_key&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
   &lt;span class="c1"&gt;# call: confirm_key "${PRETTYNAME}" "${SEARCHPHRASE}" "${URL_OF_KEY}"&lt;/span&gt;
   &lt;span class="nv"&gt;___ck_repo&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;1&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="nv"&gt;___ck_sp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;2&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="nv"&gt;___ck_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;3&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="k"&gt;if&lt;/span&gt; apt-key list &lt;span class="m"&gt;2&lt;/span&gt;&amp;gt;/dev/null &lt;span class="p"&gt;|&lt;/span&gt; grep -qe &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;___ck_sp&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt;
   &lt;span class="k"&gt;then&lt;/span&gt;
      :
   &lt;span class="k"&gt;else&lt;/span&gt;
      &lt;span class="c1"&gt;# not found so please add it&lt;/span&gt;
      &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Adding key for &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;___ck_repo&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&amp;gt;&lt;span class="p"&gt;&amp;amp;&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;
      &lt;span class="c1"&gt;#wget -O- "${___ck_url}" | sudo apt-key add -&lt;/span&gt;
      &lt;span class="nv"&gt;___ck_keyfile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"/etc/apt/trusted.gpg.d/&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;___ck_repo&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; tr &lt;span class="s1"&gt;'[: ]'&lt;/span&gt; &lt;span class="s1"&gt;'_'&lt;/span&gt; &lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;.gpg"&lt;/span&gt;
      wget -O- --quiet &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;___ck_url&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; gpg --dearmor &lt;span class="p"&gt;|&lt;/span&gt; sudo tee &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;___ck_keyfile&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&amp;gt;/dev/null
   &lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;# confirm repo&lt;/span&gt;
confirm_repo&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
   &lt;span class="c1"&gt;# call: confirm_repo "${PRETTYNAME}" "${SEARCHPHRASE}" "${SEARCHGLOB}" "${FULLSTRING}" "${PREFERRED_FILENAME}" "${OVERWRITE}"&lt;/span&gt;
   &lt;span class="nv"&gt;___cr_repo&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;1&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="nv"&gt;___cr_sp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;2&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="nv"&gt;___cr_sf&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;3&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="nv"&gt;___cr_full&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;4&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="nv"&gt;___cr_pref&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;5&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="nv"&gt;___cr_overwrite&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;6&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="k"&gt;if&lt;/span&gt; ! grep -E -qe &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;___cr_sp&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;___cr_sf&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt;
   &lt;span class="k"&gt;then&lt;/span&gt;
      &lt;span class="c1"&gt;# not found so please add it to preferred file&lt;/span&gt;
      &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Adding repo &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;___cr_repo&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&amp;gt;&lt;span class="p"&gt;&amp;amp;&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;
      &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nb"&gt;test&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;___cr_overwrite&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"true"&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="k"&gt;then&lt;/span&gt;
         &lt;span class="c1"&gt;# overwrite, instead of append&lt;/span&gt;
         &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;___cr_full&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &amp;gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;REPOSBASE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;___cr_pref&lt;/span&gt;&lt;span class="k"&gt;:-&lt;/span&gt;&lt;span class="nv"&gt;99_misc&lt;/span&gt;&lt;span class="p"&gt;.list&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
      &lt;span class="k"&gt;else&lt;/span&gt;
         &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;___cr_full&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &amp;gt;&amp;gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;REPOSBASE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;___cr_pref&lt;/span&gt;&lt;span class="k"&gt;:-&lt;/span&gt;&lt;span class="nv"&gt;99_misc&lt;/span&gt;&lt;span class="p"&gt;.list&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
      &lt;span class="k"&gt;fi&lt;/span&gt;
   &lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

confirm_sources&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
   &lt;span class="c1"&gt;# call: confirm_sources "${PRETTYNAME}" "${URIS}" "${SUITES}" "${SIGNEDBY}" "${FILENAME}" "${OVERWRITE}" "${REMOVE_LISTFILE}"&lt;/span&gt;
   &lt;span class="nv"&gt;__cs_prettyname&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;1&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="nv"&gt;__cs_uris&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;2&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="nv"&gt;__cs_suites&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;3&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="c1"&gt;# probably will be "/" for my kind of repos&lt;/span&gt;
   &lt;span class="nv"&gt;__cs_signedby&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;4&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="nv"&gt;__cs_filename&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;5&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="nv"&gt;__cs_overwrite&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;6&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="nv"&gt;__cs_remove_listfile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;7&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="c1"&gt;# determine if cs_filename is short, if so, prepend /etc/apt/sources.list.d&lt;/span&gt;
   &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nb"&gt;test&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;__cs_filename&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt; basename &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;__cs_filename&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt;
   &lt;span class="k"&gt;then&lt;/span&gt;
      &lt;span class="nv"&gt;__cs_filename&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"/etc/apt/sources.list.d/&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;__cs_filename&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="k"&gt;fi&lt;/span&gt;
   &lt;span class="nv"&gt;__cs_listfile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;__cs_filename&lt;/span&gt;&lt;span class="p"&gt;%%.sources&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.list"&lt;/span&gt;
   &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nb"&gt;test&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;__cs_listfile&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt; basename &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;__cs_listfile&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt;
   &lt;span class="k"&gt;then&lt;/span&gt;
      &lt;span class="nv"&gt;__cs_listfile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"/etc/apt/sources.list.d/&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;__cs_listfile&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="k"&gt;fi&lt;/span&gt;
   &lt;span class="c1"&gt;# determine of cs_signedby gpg key is short, if so, prepend /etc/apt/trusted.gpg.d&lt;/span&gt;
   &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nb"&gt;test&lt;/span&gt; -n &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;__cs_signedby&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;test&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;__cs_signedby&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt; basename &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;__cs_signedby&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt;
   &lt;span class="k"&gt;then&lt;/span&gt;
      &lt;span class="nv"&gt;__cs_signedby&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"/etc/apt/trusted.gpg.d/&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;__cs_signedby&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="k"&gt;fi&lt;/span&gt;
   &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nb"&gt;test&lt;/span&gt; ! -r &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;__cs_filename&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;test&lt;/span&gt; &lt;span class="s2"&gt;"{__cs_overwrite}"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"true"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
   &lt;span class="k"&gt;then&lt;/span&gt;
      &lt;span class="o"&gt;{&lt;/span&gt;
         &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Enabled: yes"&lt;/span&gt;
         &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Types: deb"&lt;/span&gt;
         &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"URIs: &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;__cs_uris&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
         &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Suites: &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;__cs_suites&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
         &lt;span class="nb"&gt;test&lt;/span&gt; -n &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;__cs_prettyname&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"X-Repolib-Name: &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;__cs_prettyname&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; :
         &lt;span class="nb"&gt;test&lt;/span&gt; -n &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;__cs_signedby&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Signed-By: &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;__cs_signedby&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
      &lt;span class="o"&gt;}&lt;/span&gt; &amp;gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;__cs_filename&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="k"&gt;fi&lt;/span&gt;
   &lt;span class="nb"&gt;test&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;__cs_remove_listfile&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"true"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;test&lt;/span&gt; -f &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;__cs_listfile&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;__cs_listfile&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; grep -qE &lt;span class="s2"&gt;"\/etc\/apt\/sources\.list\.d\/.+\.list&lt;/span&gt;$&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&amp;gt;/dev/null &lt;span class="m"&gt;2&lt;/span&gt;&amp;gt;&lt;span class="p"&gt;&amp;amp;&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; rm -f &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;__cs_listfile&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

confirm_preferences&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
   &lt;span class="c1"&gt;# call: confirm_preferences "${PRETTYNAME}" "${FILENAME}" "{PACKAGE}" "${PIN_EXPRESSION}" "{PRIORITY}"&lt;/span&gt;
   &lt;span class="nv"&gt;___cp_prettyname&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;1&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="nv"&gt;___cp_pref&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;2&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="nv"&gt;___cp_package&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;3&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="nv"&gt;___cp_pin_expression&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;4&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="nv"&gt;___cp_priority&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;5&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="nv"&gt;___cp_version&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;6&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

   &lt;span class="nv"&gt;___cp_tempfile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt; mktemp &lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="o"&gt;{&lt;/span&gt;
      &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Package: &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;___cp_package&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
      &lt;span class="nb"&gt;test&lt;/span&gt; -n &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;___cp_version&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Version: &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;___cp_version&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
      &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Pin: &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;___cp_pin_expression&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
      &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Pin-Priority: &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;___cp_priority&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="o"&gt;}&lt;/span&gt; &amp;gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;___cp_tempfile&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

   diff &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;PREFSBASE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;___cp_pref&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;___cp_tempfile&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&amp;gt;/dev/null &lt;span class="m"&gt;2&lt;/span&gt;&amp;gt;&lt;span class="p"&gt;&amp;amp;&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
      &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Setting preferences for &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;___cp_prettyname&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
      touch &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;PREFSBASE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;___cp_pref&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt; chmod &lt;span class="m"&gt;0644&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;PREFSBASE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;___cp_pref&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
      cat &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;___cp_tempfile&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &amp;gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;PREFSBASE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;___cp_pref&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="o"&gt;}&lt;/span&gt;

   rm -f &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;___cp_tempfile&lt;/span&gt;&lt;span class="k"&gt;:-&lt;/span&gt;&lt;span class="nv"&gt;NOTHINGTODEL&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&amp;gt;/dev/null &lt;span class="m"&gt;2&lt;/span&gt;&amp;gt;&lt;span class="p"&gt;&amp;amp;&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;# REPO 1: local internaldeb&lt;/span&gt;
confirm_key &lt;span class="s2"&gt;"internaldeb"&lt;/span&gt; &lt;span class="s2"&gt;"bgstack15.*www\.no-ip\.biz"&lt;/span&gt; &lt;span class="s2"&gt;"http://server3/internal/repo/deb/internaldeb.gpg"&lt;/span&gt;
confirm_sources &lt;span class="s2"&gt;"Internal Dpkg repo"&lt;/span&gt; &lt;span class="s2"&gt;"http://server3/internal/repo/deb"&lt;/span&gt; &lt;span class="s2"&gt;"/"&lt;/span&gt; &lt;span class="s2"&gt;"internaldeb.gpg"&lt;/span&gt; &lt;span class="s2"&gt;"internaldeb.sources"&lt;/span&gt; &lt;span class="s2"&gt;"true"&lt;/span&gt; &lt;span class="s2"&gt;"true"&lt;/span&gt;

&lt;span class="c1"&gt;# REPO 2: local devuan-deb&lt;/span&gt;
confirm_key &lt;span class="s2"&gt;"devuan-deb"&lt;/span&gt; &lt;span class="s2"&gt;"bgstack15.*www\.no-ip\.biz"&lt;/span&gt; &lt;span class="s2"&gt;"http://server3/internal/repo/deb/internaldeb.gpg"&lt;/span&gt;
confirm_sources &lt;span class="s2"&gt;"Internal Devuan dpkgs"&lt;/span&gt; &lt;span class="s2"&gt;"http://server3/internal/repo/devuan-deb"&lt;/span&gt; &lt;span class="s2"&gt;"/"&lt;/span&gt; &lt;span class="s2"&gt;"internaldeb.gpg"&lt;/span&gt; &lt;span class="s2"&gt;"devuan-deb.sources"&lt;/span&gt; &lt;span class="s2"&gt;"true"&lt;/span&gt; &lt;span class="s2"&gt;"true"&lt;/span&gt;

&lt;span class="c1"&gt;# REPO 3: local obs&lt;/span&gt;
&lt;span class="c1"&gt;# Thankfully I re-sign this with my own key.&lt;/span&gt;
&lt;span class="c1"&gt;#confirm_key "OBS bgstack15" "bgstack15@build\.opensuse\.org" "https://download.opensuse.org/repositories/home:bgstack15/Debian_Unstable/Release.key"&lt;/span&gt;
confirm_key &lt;span class="s2"&gt;"OBS bgstack15"&lt;/span&gt; &lt;span class="s2"&gt;"bgstack15.*www\.no-ip\.biz"&lt;/span&gt; &lt;span class="s2"&gt;"http://server3/mirror/obs/Release.key"&lt;/span&gt;
confirm_sources &lt;span class="s2"&gt;"OBS bgstack15"&lt;/span&gt; &lt;span class="s2"&gt;"http://server3/mirror/obs"&lt;/span&gt; &lt;span class="s2"&gt;"/"&lt;/span&gt; &lt;span class="s2"&gt;"OBS_bgstack15.gpg"&lt;/span&gt; &lt;span class="s2"&gt;"home:bgstack15.sources"&lt;/span&gt; &lt;span class="s2"&gt;"true"&lt;/span&gt; &lt;span class="s2"&gt;"true"&lt;/span&gt;

&lt;span class="c1"&gt;# REPO 4: local devuan-archive&lt;/span&gt;
&lt;span class="c1"&gt;# deprecated circa 2021-05&lt;/span&gt;
&lt;span class="c1"&gt;# enabled again 2023-08-22 for discord/gconf&lt;/span&gt;
confirm_key &lt;span class="s2"&gt;"devuan-archive"&lt;/span&gt; &lt;span class="s2"&gt;"bgstack15.*www\.no-ip\.biz"&lt;/span&gt; &lt;span class="s2"&gt;"http://server3/internal/repo/deb/internaldeb.gpg"&lt;/span&gt;
confirm_sources &lt;span class="s2"&gt;"Internal Devuan archive"&lt;/span&gt; &lt;span class="s2"&gt;"http://server3.ipa.internal.com/internal/repo/devuan-archive"&lt;/span&gt; &lt;span class="s2"&gt;"/"&lt;/span&gt; &lt;span class="s2"&gt;"internaldeb.gpg"&lt;/span&gt; &lt;span class="s2"&gt;"devuan-archive.sources"&lt;/span&gt; &lt;span class="s2"&gt;"true"&lt;/span&gt; &lt;span class="s2"&gt;"true"&lt;/span&gt;
confirm_preferences &lt;span class="s2"&gt;"devuan-archive"&lt;/span&gt; &lt;span class="s2"&gt;"puddletag"&lt;/span&gt; &lt;span class="s2"&gt;"*"&lt;/span&gt; &lt;span class="s2"&gt;"origin server3.ipa.internal.com"&lt;/span&gt; &lt;span class="s2"&gt;"700"&lt;/span&gt;

&lt;span class="c1"&gt;# REPO 5: local obs-aftermozilla key for non-local aftermozilla repo&lt;/span&gt;
&lt;span class="c1"&gt;# just the key&lt;/span&gt;
&lt;span class="c1"&gt;#confirm_key "OBS bgstack15 aftermozilla" "bgstack15@build\.opensuse\.org" "https://download.opensuse.org/repositories/home:bgstack15:aftermozilla/Debian_Unstable/Release.key"&lt;/span&gt;

&lt;span class="c1"&gt;# REPO 5: local obs-AfterMozilla&lt;/span&gt;
&lt;span class="c1"&gt;#confirm_key "OBS bgstack15" "bgstack15@build\.opensuse\.org" "http://server3/mirror/obs/Release.key"&lt;/span&gt;
confirm_key &lt;span class="s2"&gt;"OBS bgstack15"&lt;/span&gt; &lt;span class="s2"&gt;"bgstack15.*www\.no-ip\.biz"&lt;/span&gt; &lt;span class="s2"&gt;"http://server3/mirror/obs/Release.key"&lt;/span&gt;
confirm_sources &lt;span class="s2"&gt;"OBS AfterMozilla"&lt;/span&gt; &lt;span class="s2"&gt;"http://server3/mirror/obs-AfterMozilla"&lt;/span&gt; &lt;span class="s2"&gt;"/"&lt;/span&gt; &lt;span class="s2"&gt;"OBS_bgstack15.gpg"&lt;/span&gt; &lt;span class="s2"&gt;"home:bgstack15:AfterMozilla.sources"&lt;/span&gt; &lt;span class="s2"&gt;"true"&lt;/span&gt; &lt;span class="s2"&gt;"true"&lt;/span&gt;

&lt;span class="c1"&gt;# REPO 6: local obs-gtk3-classic&lt;/span&gt;
confirm_key &lt;span class="s2"&gt;"OBS bgstack15"&lt;/span&gt; &lt;span class="s2"&gt;"bgstack15.*www\.no-ip\.biz"&lt;/span&gt; &lt;span class="s2"&gt;"http://server3/mirror/obs/Release.key"&lt;/span&gt;
confirm_sources &lt;span class="s2"&gt;"OBS gtk3-classic"&lt;/span&gt; &lt;span class="s2"&gt;"http://server3/mirror/obs-gtk3-classic"&lt;/span&gt; &lt;span class="s2"&gt;"/"&lt;/span&gt; &lt;span class="s2"&gt;"OBS_bgstack15.gpg"&lt;/span&gt; &lt;span class="s2"&gt;"home:bgstack15:gtk3-classic.sources"&lt;/span&gt; &lt;span class="s2"&gt;"true"&lt;/span&gt; &lt;span class="s2"&gt;"true"&lt;/span&gt;

&lt;span class="c1"&gt;# ADDITIONAL APT PREFS&lt;/span&gt;
&lt;span class="c1"&gt;# important for the [target] stuff to work on repos so apt-file can work&lt;/span&gt;
&lt;span class="c1"&gt;#cp -p "$( dirname "$( readlink -f "${0}" )")/input/52apt-file-stackrpms.conf" "${ADDLCONFBASE}/"&lt;/span&gt;
rm -f &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;ADDLCONFBASE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/52apt-file-stackrpms.conf"&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; :
&lt;span class="c1"&gt;# 2023-10-27-6 08:47 use apt-preferences to hold this exact app version because newer versions remove the system tray icon.&lt;/span&gt;
confirm_preferences &lt;span class="s2"&gt;"all"&lt;/span&gt; &lt;span class="s2"&gt;"krb5-auth-dialog"&lt;/span&gt; &lt;span class="s2"&gt;"krb5-auth-dialog"&lt;/span&gt; &lt;span class="s2"&gt;"release"&lt;/span&gt; &lt;span class="s2"&gt;"1000"&lt;/span&gt; &lt;span class="s2"&gt;"3.26.1-4"&lt;/span&gt;
&lt;span class="c1"&gt;# zenity with gtk3 is stored in devuan-deb&lt;/span&gt;
confirm_preferences &lt;span class="s2"&gt;"all"&lt;/span&gt; &lt;span class="s2"&gt;"zenity"&lt;/span&gt; &lt;span class="s2"&gt;"zenity"&lt;/span&gt; &lt;span class="s2"&gt;"release"&lt;/span&gt; &lt;span class="s2"&gt;"600"&lt;/span&gt; &lt;span class="s2"&gt;"3.44.2-1"&lt;/span&gt;
confirm_preferences &lt;span class="s2"&gt;"all"&lt;/span&gt; &lt;span class="s2"&gt;"zenity-common"&lt;/span&gt; &lt;span class="s2"&gt;"zenity-common"&lt;/span&gt; &lt;span class="s2"&gt;"release"&lt;/span&gt; &lt;span class="s2"&gt;"600"&lt;/span&gt; &lt;span class="s2"&gt;"3.44.2-1"&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Basically, a new style repo looks like:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="n"&gt;Enabled&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;yes&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;Types&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;deb&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;URIs&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="o"&gt;://&lt;/span&gt;&lt;span class="n"&gt;server3&lt;/span&gt;&lt;span class="sr"&gt;/internal/repo/&lt;/span&gt;&lt;span class="n"&gt;deb&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;Suites&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;X&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Repolib&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Name&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Internal&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Dpkg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;repo&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;Signed&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;By&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sr"&gt;/etc/apt/trusted.gpg.d/i&lt;/span&gt;&lt;span class="n"&gt;nternaldeb&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;gpg&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Which is easier for some parsing compared to:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="k"&gt;deb&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sx"&gt;[target-=Contents-deb target+=Contents-stackrpms]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kp"&gt;http://server3/internal/repo/deb/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kp"&gt;/&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Which is believable.&lt;/p&gt;</description><category>apt</category><category>dpkg</category><category>repo</category><guid>https://bgstack15.ddns.net/blog/posts/2024/09/14/updating-set-my-repos-sh-for-deb822-format/</guid><pubDate>Sat, 14 Sep 2024 12:33:00 GMT</pubDate></item><item><title>How I use quilt</title><link>https://bgstack15.ddns.net/blog/posts/2022/12/27/how-i-use-quilt/</link><dc:creator>bgstack15</dc:creator><description>&lt;p&gt;To summarize my notes from a conversation about building dpkgs:&lt;/p&gt;
&lt;p&gt;In a &lt;code&gt;debuild&lt;/code&gt; (which calls dpkg-buildpackage) operation, it will run &lt;code&gt;quilt push -a&lt;/code&gt; to apply all patches listed in debian/patches/series. This process is not tolerant of any fuzz. It's not clear from a debuild operation if it's fuzz or if it actually failed. I always have to manually quilt push iteratively (or quilt push -a to go through them until it stops). When you manually run quilt push it will tolerate fuzz but not errors. If a patch indicates that it has fuzz, before pushing the next patch, you run quilt refresh to refresh the current top-most patch. That's how I make the de-fuzzed patch files nowadays.
If a patch has actual errors, you have to run &lt;code&gt;quilt push -f&lt;/code&gt; (and notably there are not long-option equivalent parameters) to force the patch, and then you have to manually fix the errors and then run quilt refresh. It gets messy and it's not my favorite tool, but I've finally started understanding it just a little bit better.&lt;/p&gt;
&lt;p&gt;One should read &lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/wiki.debian.org/UsingQuilt"&gt;Using Quilt&lt;/a&gt; which is the official documentation for it.&lt;/p&gt;
&lt;h6&gt;edited 2023-07-24&lt;/h6&gt;
&lt;p&gt;My quiltrc is:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;where&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;./&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;../&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;../../&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;../../../&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;../../../../&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;../../../../../&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;do&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;where&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="n"&gt;debian&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;rules&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;where&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="n"&gt;debian&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;patches&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;then&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="k"&gt;export&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;QUILT_PATCHES&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;debian&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;patches&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;fi&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;done&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;QUILT_PUSH_ARGS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"--color=auto"&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;QUILT_DIFF_ARGS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"--no-timestamps --no-index -p ab --color=auto"&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;QUILT_REFRESH_ARGS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"--no-timestamps --no-index -p ab"&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;QUILT_DIFF_OPTS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'-p'&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;</description><category>debuild</category><category>dpkg</category><category>packaging</category><category>quilt</category><guid>https://bgstack15.ddns.net/blog/posts/2022/12/27/how-i-use-quilt/</guid><pubDate>Tue, 27 Dec 2022 13:46:21 GMT</pubDate></item><item><title>Dpkg recipe for NotepadNext</title><link>https://bgstack15.ddns.net/blog/posts/2022/04/19/dpkg-recipe-for-notepadnext/</link><dc:creator>bgstack15</dc:creator><description>&lt;p&gt;I saw an article on Hacker News about NotepadNext, a project that is a QT-based, cross-platform reimplementation of my beloved &lt;a href="https://notepad-plus-plus.org/"&gt;Notepad++&lt;/a&gt;. I couldn't find any dpkg implementations of NotepadNext, so I decided to take that mantle up for myself. Upstream wasn't interested in housing the debian directory because they want to use Flatpak or AppImage or some other short-term trendy package format.&lt;/p&gt;
&lt;p&gt;Here is my &lt;a href="https://bgstack15.ddns.net/blog/cgit/stackrpms/tree/notepadnext/debian"&gt;debian/&lt;/a&gt; for you.&lt;/p&gt;
&lt;p&gt;The only noteworthy parts are in d/rules:&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c1"&gt;# Omit -Werror=format-security with -format here, because of LuaExtension.cpp weirdness, 2022-04-14&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;DEB_BUILD_MAINT_OPTIONS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;hardening&lt;/span&gt;&lt;span class="o"&gt;=+&lt;/span&gt;&lt;span class="n"&gt;all&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;format&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;

&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;dh&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;buildsystem&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;qmake&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;sourcedirectory&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;src&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;NotepadNext&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;

&lt;span class="n"&gt;override_dh_auto_build&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;mkdir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;build&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;||&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;build&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pwd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;qmake6&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;../&lt;/span&gt;&lt;span class="n"&gt;src&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;NotepadNext&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pro&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;make&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;

&lt;span class="n"&gt;override_dh_auto_clean&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;dh_auto_clean&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;rm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;rf&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;build&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;||&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Thanks to the AUR &lt;a href="https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=notepadnext-git"&gt;PKGBUILD&lt;/a&gt; for the guidance on the build steps!&lt;/p&gt;</description><category>dpkg</category><category>notepadnext</category><category>packaging</category><guid>https://bgstack15.ddns.net/blog/posts/2022/04/19/dpkg-recipe-for-notepadnext/</guid><pubDate>Tue, 19 Apr 2022 12:45:45 GMT</pubDate></item><item><title>Just build the dpkg and ignore supposed changes to the source</title><link>https://bgstack15.ddns.net/blog/posts/2022/01/01/just-build-the-dpkg-and-ignore-supposed-changes-to-the-source/</link><dc:creator>bgstack15</dc:creator><description>&lt;h5&gt;Extra note&lt;/h5&gt;
&lt;p&gt;Happy new year!&lt;/p&gt;
&lt;h2&gt;Main content&lt;/h2&gt;
&lt;p&gt;My normal, local dpkg build process includes &lt;code&gt;debuild -us -uc&lt;/code&gt;. I push my finished work up to the &lt;a href="https://jenkins.devuan.dev"&gt;Devuan build server&lt;/a&gt; through a gitea issue on the relevant project repository.&lt;/p&gt;
&lt;p&gt;Sometimes, when I'm still in the process of preparing the software (in this case, &lt;a href="https://www.freeipa.org/page/Releases/4.9.8"&gt;freeipa 4.9.8&lt;/a&gt;), I will do a local build to make sure it still compiles. And sometimes I get a ridiculous error from debuild:&lt;/p&gt;
&lt;p&gt;The solution is to skip &lt;code&gt;debuild&lt;/code&gt; and use the lower-level command:&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;dpkg-buildpackage -b -us -uc
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The answerer on Ask Ubuntu described this step as "avoid[ing] the Debian bureaucracy," which is an incredibly apt phrase.&lt;/p&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://askubuntu.com/questions/226495/how-to-solve-dpkg-source-source-problem-when-building-a-package/251892#251892"&gt;compiling - How to solve dpkg-source source problem when building a package? - Ask Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description><category>apt</category><category>compile</category><category>debuild</category><category>dpkg</category><guid>https://bgstack15.ddns.net/blog/posts/2022/01/01/just-build-the-dpkg-and-ignore-supposed-changes-to-the-source/</guid><pubDate>Sat, 01 Jan 2022 14:15:58 GMT</pubDate></item><item><title>Package for Devuan: dragon-drag-and-drop</title><link>https://bgstack15.ddns.net/blog/posts/2021/01/29/package-for-devuan-dragon-drag-and-drop/</link><dc:creator>bgstack15</dc:creator><description>&lt;p&gt;I recently came across a great little project,
&lt;a href="https://github.com/mwh/dragon"&gt;dragon&lt;/a&gt;, which is a simple drag-and-drop
source/sink for X11. This project follows the Unix concept of do one thing and
do it well. The program was designed for users who do not use a graphical file
manager, but want to be able to drag and drop files (into a web browser, for
example). It has minimal dependencies, and is a breeze to compile and install
and use. My contributions to the project include the packaging recipes for
dpkg and rpm. You can go get dragon-drag-and-drop from my &lt;a href="https://build.opensuse.org/package/show/home:bgstack15/dragon-drag-and-drop"&gt;OBS
repository&lt;/a&gt;.&lt;/p&gt;</description><category>devuan</category><category>dpkg</category><category>packages</category><category>rpm</category><category>x11</category><guid>https://bgstack15.ddns.net/blog/posts/2021/01/29/package-for-devuan-dragon-drag-and-drop/</guid><pubDate>Fri, 29 Jan 2021 14:12:59 GMT</pubDate></item><item><title>LibreWolf dpkg for Debian is now available</title><link>https://bgstack15.ddns.net/blog/posts/2020/12/27/librewolf-dpkg-for-debian-is-now-available/</link><dc:creator>bgstack15</dc:creator><description>&lt;p&gt;I recently came across the &lt;a href="https://librewolf-community.gitlab.io/"&gt;LibreWolf&lt;/a&gt;
project, which is a community that maintains a set of patches on top of
current Firefox, to stay focused on privacy. I wrote a
&lt;a href="https://gitlab.com/bgstack15/librewolf-linux/-/blob/2c9c981a05bce293b2e7757333b8a756aa828a37/prep-librewolf-dpkg.sh"&gt;script&lt;/a&gt;
that builds the assets required to build a dpkg of Librewolf. I submitted a
&lt;a href="http://link%20to%20https://gitlab.com/librewolf-community/browser/linux/-/merge_requests/12"&gt;merge request&lt;/a&gt; to the LibreWolf team to include
this script. You can go download &lt;a href="https://build.opensuse.org/package/show/home:bgstack15:aftermozilla/librewolf"&gt;LibreWolf for
Devuan&lt;/a&gt;
and Debian from my OBS space. In case I ever purge my gitlab space, here is
the script and its conf file.&lt;/p&gt;
&lt;table class="codehilitetable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt;&lt;span class="normal"&gt;  1&lt;/span&gt;
&lt;span class="normal"&gt;  2&lt;/span&gt;
&lt;span class="normal"&gt;  3&lt;/span&gt;
&lt;span class="normal"&gt;  4&lt;/span&gt;
&lt;span class="normal"&gt;  5&lt;/span&gt;
&lt;span class="normal"&gt;  6&lt;/span&gt;
&lt;span class="normal"&gt;  7&lt;/span&gt;
&lt;span class="normal"&gt;  8&lt;/span&gt;
&lt;span class="normal"&gt;  9&lt;/span&gt;
&lt;span class="normal"&gt; 10&lt;/span&gt;
&lt;span class="normal"&gt; 11&lt;/span&gt;
&lt;span class="normal"&gt; 12&lt;/span&gt;
&lt;span class="normal"&gt; 13&lt;/span&gt;
&lt;span class="normal"&gt; 14&lt;/span&gt;
&lt;span class="normal"&gt; 15&lt;/span&gt;
&lt;span class="normal"&gt; 16&lt;/span&gt;
&lt;span class="normal"&gt; 17&lt;/span&gt;
&lt;span class="normal"&gt; 18&lt;/span&gt;
&lt;span class="normal"&gt; 19&lt;/span&gt;
&lt;span class="normal"&gt; 20&lt;/span&gt;
&lt;span class="normal"&gt; 21&lt;/span&gt;
&lt;span class="normal"&gt; 22&lt;/span&gt;
&lt;span class="normal"&gt; 23&lt;/span&gt;
&lt;span class="normal"&gt; 24&lt;/span&gt;
&lt;span class="normal"&gt; 25&lt;/span&gt;
&lt;span class="normal"&gt; 26&lt;/span&gt;
&lt;span class="normal"&gt; 27&lt;/span&gt;
&lt;span class="normal"&gt; 28&lt;/span&gt;
&lt;span class="normal"&gt; 29&lt;/span&gt;
&lt;span class="normal"&gt; 30&lt;/span&gt;
&lt;span class="normal"&gt; 31&lt;/span&gt;
&lt;span class="normal"&gt; 32&lt;/span&gt;
&lt;span class="normal"&gt; 33&lt;/span&gt;
&lt;span class="normal"&gt; 34&lt;/span&gt;
&lt;span class="normal"&gt; 35&lt;/span&gt;
&lt;span class="normal"&gt; 36&lt;/span&gt;
&lt;span class="normal"&gt; 37&lt;/span&gt;
&lt;span class="normal"&gt; 38&lt;/span&gt;
&lt;span class="normal"&gt; 39&lt;/span&gt;
&lt;span class="normal"&gt; 40&lt;/span&gt;
&lt;span class="normal"&gt; 41&lt;/span&gt;
&lt;span class="normal"&gt; 42&lt;/span&gt;
&lt;span class="normal"&gt; 43&lt;/span&gt;
&lt;span class="normal"&gt; 44&lt;/span&gt;
&lt;span class="normal"&gt; 45&lt;/span&gt;
&lt;span class="normal"&gt; 46&lt;/span&gt;
&lt;span class="normal"&gt; 47&lt;/span&gt;
&lt;span class="normal"&gt; 48&lt;/span&gt;
&lt;span class="normal"&gt; 49&lt;/span&gt;
&lt;span class="normal"&gt; 50&lt;/span&gt;
&lt;span class="normal"&gt; 51&lt;/span&gt;
&lt;span class="normal"&gt; 52&lt;/span&gt;
&lt;span class="normal"&gt; 53&lt;/span&gt;
&lt;span class="normal"&gt; 54&lt;/span&gt;
&lt;span class="normal"&gt; 55&lt;/span&gt;
&lt;span class="normal"&gt; 56&lt;/span&gt;
&lt;span class="normal"&gt; 57&lt;/span&gt;
&lt;span class="normal"&gt; 58&lt;/span&gt;
&lt;span class="normal"&gt; 59&lt;/span&gt;
&lt;span class="normal"&gt; 60&lt;/span&gt;
&lt;span class="normal"&gt; 61&lt;/span&gt;
&lt;span class="normal"&gt; 62&lt;/span&gt;
&lt;span class="normal"&gt; 63&lt;/span&gt;
&lt;span class="normal"&gt; 64&lt;/span&gt;
&lt;span class="normal"&gt; 65&lt;/span&gt;
&lt;span class="normal"&gt; 66&lt;/span&gt;
&lt;span class="normal"&gt; 67&lt;/span&gt;
&lt;span class="normal"&gt; 68&lt;/span&gt;
&lt;span class="normal"&gt; 69&lt;/span&gt;
&lt;span class="normal"&gt; 70&lt;/span&gt;
&lt;span class="normal"&gt; 71&lt;/span&gt;
&lt;span class="normal"&gt; 72&lt;/span&gt;
&lt;span class="normal"&gt; 73&lt;/span&gt;
&lt;span class="normal"&gt; 74&lt;/span&gt;
&lt;span class="normal"&gt; 75&lt;/span&gt;
&lt;span class="normal"&gt; 76&lt;/span&gt;
&lt;span class="normal"&gt; 77&lt;/span&gt;
&lt;span class="normal"&gt; 78&lt;/span&gt;
&lt;span class="normal"&gt; 79&lt;/span&gt;
&lt;span class="normal"&gt; 80&lt;/span&gt;
&lt;span class="normal"&gt; 81&lt;/span&gt;
&lt;span class="normal"&gt; 82&lt;/span&gt;
&lt;span class="normal"&gt; 83&lt;/span&gt;
&lt;span class="normal"&gt; 84&lt;/span&gt;
&lt;span class="normal"&gt; 85&lt;/span&gt;
&lt;span class="normal"&gt; 86&lt;/span&gt;
&lt;span class="normal"&gt; 87&lt;/span&gt;
&lt;span class="normal"&gt; 88&lt;/span&gt;
&lt;span class="normal"&gt; 89&lt;/span&gt;
&lt;span class="normal"&gt; 90&lt;/span&gt;
&lt;span class="normal"&gt; 91&lt;/span&gt;
&lt;span class="normal"&gt; 92&lt;/span&gt;
&lt;span class="normal"&gt; 93&lt;/span&gt;
&lt;span class="normal"&gt; 94&lt;/span&gt;
&lt;span class="normal"&gt; 95&lt;/span&gt;
&lt;span class="normal"&gt; 96&lt;/span&gt;
&lt;span class="normal"&gt; 97&lt;/span&gt;
&lt;span class="normal"&gt; 98&lt;/span&gt;
&lt;span class="normal"&gt; 99&lt;/span&gt;
&lt;span class="normal"&gt;100&lt;/span&gt;
&lt;span class="normal"&gt;101&lt;/span&gt;
&lt;span class="normal"&gt;102&lt;/span&gt;
&lt;span class="normal"&gt;103&lt;/span&gt;
&lt;span class="normal"&gt;104&lt;/span&gt;
&lt;span class="normal"&gt;105&lt;/span&gt;
&lt;span class="normal"&gt;106&lt;/span&gt;
&lt;span class="normal"&gt;107&lt;/span&gt;
&lt;span class="normal"&gt;108&lt;/span&gt;
&lt;span class="normal"&gt;109&lt;/span&gt;
&lt;span class="normal"&gt;110&lt;/span&gt;
&lt;span class="normal"&gt;111&lt;/span&gt;
&lt;span class="normal"&gt;112&lt;/span&gt;
&lt;span class="normal"&gt;113&lt;/span&gt;
&lt;span class="normal"&gt;114&lt;/span&gt;
&lt;span class="normal"&gt;115&lt;/span&gt;
&lt;span class="normal"&gt;116&lt;/span&gt;
&lt;span class="normal"&gt;117&lt;/span&gt;
&lt;span class="normal"&gt;118&lt;/span&gt;
&lt;span class="normal"&gt;119&lt;/span&gt;
&lt;span class="normal"&gt;120&lt;/span&gt;
&lt;span class="normal"&gt;121&lt;/span&gt;
&lt;span class="normal"&gt;122&lt;/span&gt;
&lt;span class="normal"&gt;123&lt;/span&gt;
&lt;span class="normal"&gt;124&lt;/span&gt;
&lt;span class="normal"&gt;125&lt;/span&gt;
&lt;span class="normal"&gt;126&lt;/span&gt;
&lt;span class="normal"&gt;127&lt;/span&gt;
&lt;span class="normal"&gt;128&lt;/span&gt;
&lt;span class="normal"&gt;129&lt;/span&gt;
&lt;span class="normal"&gt;130&lt;/span&gt;
&lt;span class="normal"&gt;131&lt;/span&gt;
&lt;span class="normal"&gt;132&lt;/span&gt;
&lt;span class="normal"&gt;133&lt;/span&gt;
&lt;span class="normal"&gt;134&lt;/span&gt;
&lt;span class="normal"&gt;135&lt;/span&gt;
&lt;span class="normal"&gt;136&lt;/span&gt;
&lt;span class="normal"&gt;137&lt;/span&gt;
&lt;span class="normal"&gt;138&lt;/span&gt;
&lt;span class="normal"&gt;139&lt;/span&gt;
&lt;span class="normal"&gt;140&lt;/span&gt;
&lt;span class="normal"&gt;141&lt;/span&gt;
&lt;span class="normal"&gt;142&lt;/span&gt;
&lt;span class="normal"&gt;143&lt;/span&gt;
&lt;span class="normal"&gt;144&lt;/span&gt;
&lt;span class="normal"&gt;145&lt;/span&gt;
&lt;span class="normal"&gt;146&lt;/span&gt;
&lt;span class="normal"&gt;147&lt;/span&gt;
&lt;span class="normal"&gt;148&lt;/span&gt;
&lt;span class="normal"&gt;149&lt;/span&gt;
&lt;span class="normal"&gt;150&lt;/span&gt;
&lt;span class="normal"&gt;151&lt;/span&gt;
&lt;span class="normal"&gt;152&lt;/span&gt;
&lt;span class="normal"&gt;153&lt;/span&gt;
&lt;span class="normal"&gt;154&lt;/span&gt;
&lt;span class="normal"&gt;155&lt;/span&gt;
&lt;span class="normal"&gt;156&lt;/span&gt;
&lt;span class="normal"&gt;157&lt;/span&gt;
&lt;span class="normal"&gt;158&lt;/span&gt;
&lt;span class="normal"&gt;159&lt;/span&gt;
&lt;span class="normal"&gt;160&lt;/span&gt;
&lt;span class="normal"&gt;161&lt;/span&gt;
&lt;span class="normal"&gt;162&lt;/span&gt;
&lt;span class="normal"&gt;163&lt;/span&gt;
&lt;span class="normal"&gt;164&lt;/span&gt;
&lt;span class="normal"&gt;165&lt;/span&gt;
&lt;span class="normal"&gt;166&lt;/span&gt;
&lt;span class="normal"&gt;167&lt;/span&gt;
&lt;span class="normal"&gt;168&lt;/span&gt;
&lt;span class="normal"&gt;169&lt;/span&gt;
&lt;span class="normal"&gt;170&lt;/span&gt;
&lt;span class="normal"&gt;171&lt;/span&gt;
&lt;span class="normal"&gt;172&lt;/span&gt;
&lt;span class="normal"&gt;173&lt;/span&gt;
&lt;span class="normal"&gt;174&lt;/span&gt;
&lt;span class="normal"&gt;175&lt;/span&gt;
&lt;span class="normal"&gt;176&lt;/span&gt;
&lt;span class="normal"&gt;177&lt;/span&gt;
&lt;span class="normal"&gt;178&lt;/span&gt;
&lt;span class="normal"&gt;179&lt;/span&gt;
&lt;span class="normal"&gt;180&lt;/span&gt;
&lt;span class="normal"&gt;181&lt;/span&gt;
&lt;span class="normal"&gt;182&lt;/span&gt;
&lt;span class="normal"&gt;183&lt;/span&gt;
&lt;span class="normal"&gt;184&lt;/span&gt;
&lt;span class="normal"&gt;185&lt;/span&gt;
&lt;span class="normal"&gt;186&lt;/span&gt;
&lt;span class="normal"&gt;187&lt;/span&gt;
&lt;span class="normal"&gt;188&lt;/span&gt;
&lt;span class="normal"&gt;189&lt;/span&gt;
&lt;span class="normal"&gt;190&lt;/span&gt;
&lt;span class="normal"&gt;191&lt;/span&gt;
&lt;span class="normal"&gt;192&lt;/span&gt;
&lt;span class="normal"&gt;193&lt;/span&gt;
&lt;span class="normal"&gt;194&lt;/span&gt;
&lt;span class="normal"&gt;195&lt;/span&gt;
&lt;span class="normal"&gt;196&lt;/span&gt;
&lt;span class="normal"&gt;197&lt;/span&gt;
&lt;span class="normal"&gt;198&lt;/span&gt;
&lt;span class="normal"&gt;199&lt;/span&gt;
&lt;span class="normal"&gt;200&lt;/span&gt;
&lt;span class="normal"&gt;201&lt;/span&gt;
&lt;span class="normal"&gt;202&lt;/span&gt;
&lt;span class="normal"&gt;203&lt;/span&gt;
&lt;span class="normal"&gt;204&lt;/span&gt;
&lt;span class="normal"&gt;205&lt;/span&gt;
&lt;span class="normal"&gt;206&lt;/span&gt;
&lt;span class="normal"&gt;207&lt;/span&gt;
&lt;span class="normal"&gt;208&lt;/span&gt;
&lt;span class="normal"&gt;209&lt;/span&gt;
&lt;span class="normal"&gt;210&lt;/span&gt;
&lt;span class="normal"&gt;211&lt;/span&gt;
&lt;span class="normal"&gt;212&lt;/span&gt;
&lt;span class="normal"&gt;213&lt;/span&gt;
&lt;span class="normal"&gt;214&lt;/span&gt;
&lt;span class="normal"&gt;215&lt;/span&gt;
&lt;span class="normal"&gt;216&lt;/span&gt;
&lt;span class="normal"&gt;217&lt;/span&gt;
&lt;span class="normal"&gt;218&lt;/span&gt;
&lt;span class="normal"&gt;219&lt;/span&gt;
&lt;span class="normal"&gt;220&lt;/span&gt;
&lt;span class="normal"&gt;221&lt;/span&gt;
&lt;span class="normal"&gt;222&lt;/span&gt;
&lt;span class="normal"&gt;223&lt;/span&gt;
&lt;span class="normal"&gt;224&lt;/span&gt;
&lt;span class="normal"&gt;225&lt;/span&gt;
&lt;span class="normal"&gt;226&lt;/span&gt;
&lt;span class="normal"&gt;227&lt;/span&gt;
&lt;span class="normal"&gt;228&lt;/span&gt;
&lt;span class="normal"&gt;229&lt;/span&gt;
&lt;span class="normal"&gt;230&lt;/span&gt;
&lt;span class="normal"&gt;231&lt;/span&gt;
&lt;span class="normal"&gt;232&lt;/span&gt;
&lt;span class="normal"&gt;233&lt;/span&gt;
&lt;span class="normal"&gt;234&lt;/span&gt;
&lt;span class="normal"&gt;235&lt;/span&gt;
&lt;span class="normal"&gt;236&lt;/span&gt;
&lt;span class="normal"&gt;237&lt;/span&gt;
&lt;span class="normal"&gt;238&lt;/span&gt;
&lt;span class="normal"&gt;239&lt;/span&gt;
&lt;span class="normal"&gt;240&lt;/span&gt;
&lt;span class="normal"&gt;241&lt;/span&gt;
&lt;span class="normal"&gt;242&lt;/span&gt;
&lt;span class="normal"&gt;243&lt;/span&gt;
&lt;span class="normal"&gt;244&lt;/span&gt;
&lt;span class="normal"&gt;245&lt;/span&gt;
&lt;span class="normal"&gt;246&lt;/span&gt;
&lt;span class="normal"&gt;247&lt;/span&gt;
&lt;span class="normal"&gt;248&lt;/span&gt;
&lt;span class="normal"&gt;249&lt;/span&gt;
&lt;span class="normal"&gt;250&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="ch"&gt;#!/bin/sh&lt;/span&gt;
&lt;span class="c1"&gt;# File: prep-librewolf-dpkg.sh&lt;/span&gt;
&lt;span class="c1"&gt;# Location: https://gitlab.com/bgstack15/librewolf-linux.git&lt;/span&gt;
&lt;span class="c1"&gt;# Latest supported version: librewolf-83.0-1&lt;/span&gt;
&lt;span class="c1"&gt;# Author: bgstack15&lt;/span&gt;
&lt;span class="c1"&gt;# SPDX-License-Identifier: CC-BY-SA-4.0&lt;/span&gt;
&lt;span class="c1"&gt;# Startdate: 2020-11-29&lt;/span&gt;
&lt;span class="c1"&gt;# Title: Build Dpkg for LibreWolf&lt;/span&gt;
&lt;span class="c1"&gt;# Purpose: Prepare initial assets for running "dpkg-buildpackage -b -us -uc" for LibreWolf by adapting Debian Firefox assets&lt;/span&gt;
&lt;span class="c1"&gt;# History:&lt;/span&gt;
&lt;span class="c1"&gt;# Usage:&lt;/span&gt;
&lt;span class="c1"&gt;#    Can send these final assets up to Open Build Service&lt;/span&gt;
&lt;span class="c1"&gt;# References:&lt;/span&gt;
&lt;span class="c1"&gt;#    Script numbers from https://gitlab.com/librewolf-community/browser/linux/-/tree/master/binary_tarball/scripts&lt;/span&gt;
&lt;span class="c1"&gt;# Improve:&lt;/span&gt;
&lt;span class="c1"&gt;#    Make this idempotent. Right now it is very much not.&lt;/span&gt;
&lt;span class="c1"&gt;# Dependencies:&lt;/span&gt;
&lt;span class="c1"&gt;#    wget, git, tar, awk, sed&lt;/span&gt;

&lt;span class="c1"&gt;#####################################&lt;/span&gt;
&lt;span class="c1"&gt;# Load settings&lt;/span&gt;

&lt;span class="c1"&gt;# basically, dot-source the conf file.&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt; -z &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;librewolf_dpkg_conf&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;librewolf_dpkg_conf&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt; find &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt; dirname &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;0&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; -maxdepth &lt;span class="m"&gt;2&lt;/span&gt; -name &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt; basename &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;0&lt;/span&gt;&lt;span class="p"&gt;%%.sh&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.conf"&lt;/span&gt; &lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; -print &lt;span class="m"&gt;2&lt;/span&gt;&amp;gt;/dev/null &lt;span class="p"&gt;|&lt;/span&gt; head -n1 &lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt; ! -r &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;librewolf_dpkg_conf&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Unable to load config file, which should be named the same as this script but with a .conf ending. Aborted."&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&amp;gt;&lt;span class="p"&gt;&amp;amp;&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
. &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;librewolf_dpkg_conf&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="c1"&gt;#####################################&lt;/span&gt;
&lt;span class="c1"&gt;# Download initial components&lt;/span&gt;

&lt;span class="c1"&gt;# Download upstream Debian assets, which includes&lt;/span&gt;
&lt;span class="c1"&gt;#   1. orig tarball, which in Debian is not always the pristine contents from upstream source&lt;/span&gt;
&lt;span class="c1"&gt;#   2. debian/ directory which defines how to build a package for Debian&lt;/span&gt;
&lt;span class="c1"&gt;#   3. Debian source package control file&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;work_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt; -z &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;SKIP_DOWNLOAD&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
   wget --content-disposition http://deb.debian.org/debian/pool/main/f/firefox/firefox_&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;firefox_version&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;.orig.tar.xz &lt;span class="c1"&gt;# -O librewolf_"${firefox_version}".orig.tar.xz&lt;/span&gt;
   wget --content-disposition http://deb.debian.org/debian/pool/main/f/firefox/firefox_&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;debian_firefox_version&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;.debian.tar.xz &lt;span class="c1"&gt;# -O librewolf_"${debian_firefox_version}".debian.tar.xz&lt;/span&gt;
   wget --content-disposition http://deb.debian.org/debian/pool/main/f/firefox/firefox_&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;debian_firefox_version&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;.dsc &lt;span class="c1"&gt;# -O librewolf_"${debian_firefox_version}".dsc&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;# extract these contents to where they belong&lt;/span&gt;
mkdir -p &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;source_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt; -z &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;SKIP_EXTRACT&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
   &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Extracting files from orig and debian tarballs. This might take a while."&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&amp;gt;&lt;span class="p"&gt;&amp;amp;&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;
   tar -C &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;source_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; -Jx --strip-components&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt; -f firefox_&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;firefox_version&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;.orig.tar.xz
   tar -C &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt; dirname &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;debian_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; -Jxf firefox_&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;debian_firefox_version&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;.debian.tar.xz
   &lt;span class="c1"&gt;# dsc file is a text file and needs no extraction&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;# Download git sources&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt; -z &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;SKIP_GIT&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;
   &lt;span class="c1"&gt;# yes, use a sub-shell because of this cd. pushd is a bash builtin, but we are using sh and not bash.&lt;/span&gt;
   &lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;git_source_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   git clone &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;librewolf_common_url&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; common
   git clone &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;librewolf_settings_url&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; settings
   git clone &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;librewolf_linux_url&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; linux
&lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;#####################################&lt;/span&gt;
&lt;span class="c1"&gt;# Script 1 tasks&lt;/span&gt;

&lt;span class="c1"&gt;# update debian/control file&lt;/span&gt;
&lt;span class="c1"&gt;# update fields and add libjack-dev&lt;/span&gt;
sed -i -r &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;debian_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;/control &lt;span class="se"&gt;\&lt;/span&gt;
   -e &lt;span class="s1"&gt;'/^[[:alpha:]]+: firefox/s/firefox/librewolf/'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
   -e &lt;span class="s1"&gt;'/^Package:.*-l10/,$d'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
   -e &lt;span class="s1"&gt;'/^Maintainer:/{s/Maintainer:/XSBC-Original-Maintainer:/;iMaintainer: B. Stack &amp;lt;bgstack15@gmail.com&amp;gt;'&lt;/span&gt; -e &lt;span class="s1"&gt;'}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
   -e &lt;span class="s1"&gt;'/^Uploaders:/d'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
   -e &lt;span class="s1"&gt;'/libasound2-dev/s/libasound2-dev,/libasound2-dev, libjack-dev,/;'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
   -e &lt;span class="s1"&gt;'/^Vcs-/d'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
   -e &lt;span class="s1"&gt;'/Breaks:.*xul-ext-torbutton/d'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
   -e &lt;span class="s1"&gt;'/Description:/,+8{/Description:/,/^\s*$/d}'&lt;/span&gt;
cat &lt;span class="s"&gt;&amp;lt;&amp;lt;'EOF' &amp;gt;&amp;gt; "${debian_dir}"/control&lt;/span&gt;
&lt;span class="s"&gt;Description: LibreWolf variant of Mozilla Firefox web browser&lt;/span&gt;
&lt;span class="s"&gt; LibreWolf is a build of Firefox that seeks to protect user privacy,&lt;/span&gt;
&lt;span class="s"&gt; security, and freedom.&lt;/span&gt;
&lt;span class="s"&gt;EOF&lt;/span&gt;

&lt;span class="c1"&gt;#####################################&lt;/span&gt;
&lt;span class="c1"&gt;# Script 2 tasks&lt;/span&gt;

&lt;span class="c1"&gt;# none. Dependencies are handled by the build environment by interpreting the dsc file.&lt;/span&gt;

&lt;span class="c1"&gt;#####################################&lt;/span&gt;
&lt;span class="c1"&gt;# Script 3 tasks&lt;/span&gt;

&lt;span class="c1"&gt;# overlay the orig tarball contents with LibreWolf contents&lt;/span&gt;
&lt;span class="c1"&gt;# LibreWolf branding&lt;/span&gt;
cp -pr &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;git_source_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;/common/source_files/browser/branding &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;source_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;/browser/
&lt;span class="c1"&gt;# update mozconfig with needed info&lt;/span&gt;
sed -i -e &lt;span class="s1"&gt;'/with-app-name=/d'&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;debian_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;/browser.mozconfig.in
cat &lt;span class="s"&gt;&amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; "${debian_dir}"/browser.mozconfig.in&lt;/span&gt;

&lt;span class="s"&gt;# Start of LibreWolf effects&lt;/span&gt;
&lt;span class="s"&gt;ac_add_options --disable-tests&lt;/span&gt;
&lt;span class="s"&gt;ac_add_options --disable-debug&lt;/span&gt;

&lt;span class="s"&gt;ac_add_options --prefix=/usr&lt;/span&gt;
&lt;span class="s"&gt;ac_add_options --enable-release&lt;/span&gt;
&lt;span class="s"&gt;ac_add_options --enable-hardening&lt;/span&gt;
&lt;span class="s"&gt;ac_add_options --enable-rust-simd&lt;/span&gt;

&lt;span class="s"&gt;# Branding ac_add_options --enable-update-channel=release &lt;/span&gt;
&lt;span class="s"&gt;ac_add_options --with-app-name=librewolf&lt;/span&gt;
&lt;span class="s"&gt;ac_add_options --with-app-basename=LibreWolf&lt;/span&gt;
&lt;span class="s"&gt;ac_add_options --with-branding=browser/branding/librewolf&lt;/span&gt;
&lt;span class="s"&gt;ac_add_options --with-distribution-id=io.gitlab.librewolf&lt;/span&gt;
&lt;span class="s"&gt;ac_add_options --with-unsigned-addon-scopes=app,system&lt;/span&gt;
&lt;span class="s"&gt;ac_add_options --allow-addon-sideload&lt;/span&gt;
&lt;span class="s"&gt;export MOZ_REQUIRE_SIGNING=0&lt;/span&gt;

&lt;span class="s"&gt;# Features&lt;/span&gt;
&lt;span class="s"&gt;ac_add_options --enable-jack&lt;/span&gt;
&lt;span class="s"&gt;ac_add_options --disable-crashreporter&lt;/span&gt;

&lt;span class="s"&gt;# Disables crash reporting, telemetry and other data gathering tools&lt;/span&gt;
&lt;span class="s"&gt;mk_add_options MOZ_CRASHREPORTER=0&lt;/span&gt;
&lt;span class="s"&gt;mk_add_options MOZ_DATA_REPORTING=0&lt;/span&gt;
&lt;span class="s"&gt;mk_add_options MOZ_SERVICES_HEALTHREPORT=0&lt;/span&gt;
&lt;span class="s"&gt;mk_add_options MOZ_TELEMETRY_REPORTING=0&lt;/span&gt;

&lt;span class="s"&gt;ac_add_options --disable-elf-hack&lt;/span&gt;

&lt;span class="s"&gt;# LibreWolf binary release uses clang-11 but Debian builds Firefox with gcc so this is irrelevant.&lt;/span&gt;
&lt;span class="s"&gt;#export CC='clang-11'&lt;/span&gt;
&lt;span class="s"&gt;#export CXX='clang++-11'&lt;/span&gt;
&lt;span class="s"&gt;#export AR=llvm-ar-11&lt;/span&gt;
&lt;span class="s"&gt;#export NM=llvm-nm-11&lt;/span&gt;
&lt;span class="s"&gt;#export RANLIB=llvm-ranlib-11&lt;/span&gt;

&lt;span class="s"&gt;ac_add_options --enable-optimize&lt;/span&gt;
&lt;span class="s"&gt;EOF&lt;/span&gt;

&lt;span class="c1"&gt;# add patches to debian/patches&lt;/span&gt;
mkdir -p &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;debian_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;/patches/librewolf
cp -pr &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;git_source_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;/linux/megabar.patch &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;git_source_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;/linux/remove_addons.patch &lt;span class="se"&gt;\&lt;/span&gt;
   &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;git_source_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;/linux/deb_patches/*.patch &lt;span class="se"&gt;\&lt;/span&gt;
   &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;debian_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;/patches/librewolf/
cat &lt;span class="s"&gt;&amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; "${debian_dir}"/patches/series&lt;/span&gt;
&lt;span class="s"&gt;librewolf/lower-python3-requirement.patch -p1&lt;/span&gt;
&lt;span class="s"&gt;librewolf/armhf-reduce-linker-memory-use.patch -p1&lt;/span&gt;
&lt;span class="s"&gt;#librewolf/build-with-libstdc++-7.patch -p1&lt;/span&gt;
&lt;span class="s"&gt;librewolf/fix-armhf-webrtc-build.patch -p1&lt;/span&gt;
&lt;span class="s"&gt;librewolf/webrtc-fix-compiler-flags-for-armhf.patch -p1&lt;/span&gt;
&lt;span class="s"&gt;librewolf/python3-remove-variable-annotations.patch -p1&lt;/span&gt;
&lt;span class="s"&gt;librewolf/python3-remove-fstrings.patch -p1&lt;/span&gt;
&lt;span class="s"&gt;librewolf/python3-remove-pep487.patch -p1&lt;/span&gt;
&lt;span class="s"&gt;librewolf/silence-gtk-style-assertions.patch -p1&lt;/span&gt;
&lt;span class="s"&gt;librewolf/sandbox-update-arm-syscall-numbers.patch -p1&lt;/span&gt;
&lt;span class="s"&gt;librewolf/remove_addons.patch -p1&lt;/span&gt;
&lt;span class="s"&gt;librewolf/megabar.patch -p1&lt;/span&gt;
&lt;span class="s"&gt;EOF&lt;/span&gt;
&lt;span class="c1"&gt;# observe that build-with-libstdc++-7 is disabled for this dpkg. Debian builds Firefox with gcc, not clang.&lt;/span&gt;
&lt;span class="c1"&gt;# fix some fuzz in remove_addons.patch. The space is important!&lt;/span&gt;
sed -i -r -e &lt;span class="s1"&gt;'s/libs /l10n /;'&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;debian_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;/patches/librewolf/remove_addons.patch

&lt;span class="c1"&gt;# additional main LibreWolf activities&lt;/span&gt;
&lt;span class="c1"&gt;# disable pocket in source&lt;/span&gt;
sed -i &lt;span class="s2"&gt;"/'pocket'/d"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;source_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;/browser/components/moz.build
sed -i &lt;span class="s2"&gt;"/SaveToPocket\.init/d"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;source_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;/browser/components/BrowserGlue.jsm
&lt;span class="c1"&gt;# Remove internal plugin certificates&lt;/span&gt;
sed -i -r -e &lt;span class="s1"&gt;'/organizationalUnit.{0,5}=.{0,5}Mozilla/{N;N;N;d}'&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;source_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;/toolkit/mozapps/extensions/internal/XPIInstall.jsm
&lt;span class="c1"&gt;# allow SearchEngines option in non-ESR builds&lt;/span&gt;
sed -i -r -e &lt;span class="s1"&gt;'/enterprise_only/s#true#false#g;'&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;source_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;/browser/components/enterprisepolicies/schemas/policies-schema.json

&lt;span class="c1"&gt;#####################################&lt;/span&gt;
&lt;span class="c1"&gt;# Script 4 tasks&lt;/span&gt;

sed -i -r -e &lt;span class="s1"&gt;'2{&lt;/span&gt;
&lt;span class="s1"&gt;   iexport DEB_BUILD_HARDENING=1&lt;/span&gt;
&lt;span class="s1"&gt;   ;iexport DEB_BUILD_HARDENING_STACKPROTECTOR=1&lt;/span&gt;
&lt;span class="s1"&gt;   ;iexport DEB_BUILD_HARDENING_FORTIFY=1&lt;/span&gt;
&lt;span class="s1"&gt;   ;iexport DEB_BUILD_HARDENING_FORMAT=1&lt;/span&gt;
&lt;span class="s1"&gt;   ;iexport DEB_BUILD_HARDENING_PIE=1&lt;/span&gt;
&lt;span class="s1"&gt;   ;iexport CPP&lt;/span&gt;
&lt;span class="s1"&gt;}&lt;/span&gt;
&lt;span class="s1"&gt;/^EXPORTS/{&lt;/span&gt;
&lt;span class="s1"&gt;   iCPPFLAGS += -D_FORTIFY_SOURCE=2&lt;/span&gt;
&lt;span class="s1"&gt;   ;iCFLAGS += -march=x86-64 -mtune=generic -O2 -pipe -fno-plt&lt;/span&gt;
&lt;span class="s1"&gt;   ;iCXXFLAGS += -march=x86-64 -mtune=generic -O2 -pipe -fno-plt&lt;/span&gt;
&lt;span class="s1"&gt;   ;iLDFLAGS += -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now&lt;/span&gt;
&lt;span class="s1"&gt;}&lt;/span&gt;
&lt;span class="s1"&gt;2{&lt;/span&gt;
&lt;span class="s1"&gt;   iexport MOZ_NOSPAM=1&lt;/span&gt;
&lt;span class="s1"&gt;   iexport MACH_USE_SYSTEM_PYTHON=1&lt;/span&gt;
&lt;span class="s1"&gt;}&lt;/span&gt;
&lt;span class="s1"&gt;'&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;debian_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;/rules

&lt;span class="c1"&gt;#####################################&lt;/span&gt;
&lt;span class="c1"&gt;# Additional steps for dpkg implementation&lt;/span&gt;

&lt;span class="c1"&gt;# fix the binary name that gets installed in /usr/bin, and disable crash reporter by changing what variable name it looks for that will enable it&lt;/span&gt;
sed -i -e &lt;span class="s1"&gt;'/%if browser/,+2s/firefox/librewolf/'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
   -e &lt;span class="s1"&gt;'/%if CRASH_REPORTER/s/CRASH_REPORTER/CRASH_REPORTER_ENABLED/'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
   &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;debian_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;/browser.install.in

&lt;span class="c1"&gt;# add changelog contents for LibreWolf&lt;/span&gt;
&lt;span class="nv"&gt;new_changelog&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt; mktemp &lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
   cat &lt;span class="s"&gt;&amp;lt;&amp;lt;EOF&lt;/span&gt;
&lt;span class="s"&gt;librewolf (83.0-1) unstable; urgency=low&lt;/span&gt;

&lt;span class="s"&gt;  * Fork to librewolf release&lt;/span&gt;

&lt;span class="s"&gt; -- B. Stack &amp;lt;bgstack15@gmail.com&amp;gt;  $( date "+%a, %d %b %+4Y %T %z" )&lt;/span&gt;

&lt;span class="s"&gt;EOF&lt;/span&gt;
   cat &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;debian_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;/changelog
&lt;span class="o"&gt;}&lt;/span&gt; &amp;gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;new_changelog&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
cat &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;new_changelog&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &amp;gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;debian_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;/changelog

rm -f &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;new_changelog&lt;/span&gt;&lt;span class="k"&gt;:-&lt;/span&gt;&lt;span class="nv"&gt;NOTHINGTODEL&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="c1"&gt;#####################################&lt;/span&gt;
&lt;span class="c1"&gt;# Build new assets &lt;/span&gt;
&lt;span class="c1"&gt;# dpkg-buildpackage needs the orig tarball, debian tarball, and dsc file.&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Building new tarballs. This might take a while."&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&amp;gt;&lt;span class="p"&gt;&amp;amp;&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;

&lt;span class="c1"&gt;# orig tarball&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;work_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
tar -Jc -f librewolf_&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;firefox_version&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;.orig.tar.xz -C &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt; dirname &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;source_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; librewolf_&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;firefox_version&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="c1"&gt;# debian tarball&lt;/span&gt;
tar -Jc -f librewolf_&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;debian_firefox_version&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;.debian.tar.xz -C &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt; dirname  &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;debian_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; debian

&lt;span class="c1"&gt;# dsc file, which needs to be modified&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;work_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
sed -r &lt;span class="se"&gt;\&lt;/span&gt;
   -e &lt;span class="s1"&gt;'/^(Files|Checksums-.{0,8}):/,$d'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
   -e &lt;span class="s1"&gt;'1,/^Format:/{/^Format:/!{d}}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
   -e &lt;span class="s1"&gt;'s/^([[:alpha:]]+:).* firefox(-l10n[^\s]*)*/\1 librewolf/'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
   -e &lt;span class="s1"&gt;'/firefox-l10n/d'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
   -e &lt;span class="s1"&gt;'/^Maintainer:/{s/Maintainer:/XSBC-Original-Maintainer:/;iMaintainer: B. Stack &amp;lt;bgstack15@gmail.com&amp;gt;'&lt;/span&gt; -e &lt;span class="s1"&gt;'}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
   -e &lt;span class="s1"&gt;'/^Uploaders:/d'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
   -e &lt;span class="s1"&gt;'/libasound2-dev/s/libasound2-dev,/libasound2-dev, libjack-dev,/;'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
   -e &lt;span class="s1"&gt;'/^Vcs-/d'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
   -e &lt;span class="s1"&gt;'/^ firefox/s/firefox/librewolf/g'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
   firefox_&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;debian_firefox_version&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;.dsc &amp;gt; librewolf_&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;debian_firefox_version&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;.dsc
&lt;span class="o"&gt;{&lt;/span&gt;
   &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Files:"&lt;/span&gt;
   &lt;span class="k"&gt;for&lt;/span&gt; word &lt;span class="k"&gt;in&lt;/span&gt; librewolf*z &lt;span class="p"&gt;;&lt;/span&gt;
   &lt;span class="k"&gt;do&lt;/span&gt;
      &lt;span class="nb"&gt;printf&lt;/span&gt; &lt;span class="s2"&gt;"%s %s\n"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt; stat -c &lt;span class="s1"&gt;'%s'&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;word&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt; md5sum &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;word&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; 
   &lt;span class="k"&gt;done&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; awk &lt;span class="s1"&gt;'{print " "$2,$1,$3}'&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt; &amp;gt;&amp;gt; librewolf_&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;debian_firefox_version&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;.dsc

&lt;span class="c1"&gt;# And now you have in the ${work_dir} location three files.&lt;/span&gt;
&lt;span class="c1"&gt;# librewolf_80.3.orig.tar.xz librewolf_80.3-1.debian.tar.xz librewolf_80.3-1.dsc&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;And the config file.&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;# Config file for prep-librewolf-dpkg.sh
# Configure these settings before running that script.

debian_firefox_version=83.0-1       # current version of Firefox package in Debian sid
firefox_version=83.0                # current version of Firefox

librewolf_common_url=https://gitlab.com/librewolf-community/browser/common.git
librewolf_settings_url=https://gitlab.com/librewolf-community/settings.git
librewolf_linux_url=https://gitlab.com/librewolf-community/browser/linux.git

# user configurable
git_source_dir=/usr/src/librewolf # where LibreWolf git contents are cached
debian_dir=/home/librewolf/debian # where the firefox_debian.tar.xz file is extracted
source_dir=/home/librewolf/librewolf_&lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="n"&gt;firefox_version&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt; # where firefox.orig.tar.xz file is extracted with --strip-components=1
work_dir=/home/librewolf
&lt;/code&gt;&lt;/pre&gt;</description><category>aftermozilla</category><category>browser</category><category>devuan</category><category>dpkg</category><category>librewolf</category><guid>https://bgstack15.ddns.net/blog/posts/2020/12/27/librewolf-dpkg-for-debian-is-now-available/</guid><pubDate>Sun, 27 Dec 2020 13:45:58 GMT</pubDate></item></channel></rss>