<?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 build)</title><link>https://bgstack15.ddns.net/blog/</link><description></description><atom:link href="https://bgstack15.ddns.net/blog/categories/build.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>Tue, 03 Feb 2026 14:30:44 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Debuild package misc recommends</title><link>https://bgstack15.ddns.net/blog/posts/2026/01/30/debuild-package-misc-recommends/</link><dc:creator>bgstack15</dc:creator><description>&lt;p&gt;I wanted to add a recommended package to one of the packages I build for myself. I wanted to use my existing logic in Makefiles for DEPLIST, deptype, etc., which is demonstrated in gmm's &lt;a href="https://bgstack15.ddns.net/blog/cgit/gmm/tree/debian/rules"&gt;debian/rules&lt;/a&gt; file.&lt;/p&gt;
&lt;blockquote&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="n"&gt;override_dh_gencontrol&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="n"&gt;printf&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"misc:Depends="&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&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;$&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="n"&gt;APPNAME&lt;/span&gt;&lt;span class="o"&gt;}.&lt;/span&gt;&lt;span class="n"&gt;substvars&lt;/span&gt;&lt;span class="w"&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="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;C&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;src&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;deplist&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;DISTRO&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;devuan&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;DEPTYPE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;dep&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;SEPARATOR&lt;/span&gt;&lt;span class="o"&gt;=&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="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;vE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'make\[[0-9]'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&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;$&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="n"&gt;APPNAME&lt;/span&gt;&lt;span class="o"&gt;}.&lt;/span&gt;&lt;span class="n"&gt;substvars&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_gencontrol&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/blockquote&gt;
&lt;p&gt;I had to update d/control and d/rules. It was very easy.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="gh"&gt;diff --git a/debian/control b/debian/control&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="gh"&gt;index 5dd9849..a6638af 100644&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="gd"&gt;--- a/debian/control&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="gi"&gt;+++ b/debian/control&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="gu"&gt;@@ -11,6 +11,7 @@ Package: stackrpms-acer-chromebook&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;Architecture: all&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;Multi-Arch: foreign&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;Depends: ${misc:Depends}, ${shlibs:Depends}&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="gi"&gt;+Recommends: ${misc:Recommends}&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;Description: Common files for Acer Chromebook platform&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt; Useful configs and scripts for Stackrpms Acer Chromebook&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt; systems&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="gh"&gt;diff --git a/debian/rules b/debian/rules&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="gh"&gt;index 45b851e..d07d83a 100755&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="gd"&gt;--- a/debian/rules&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="gi"&gt;+++ b/debian/rules&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="gu"&gt;@@ -15,6 +15,8 @@ override_dh_auto_install:&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;override_dh_gencontrol:&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;       printf "misc:Depends=" &amp;gt; debian/${APPNAME}.substvars&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;       make -C src deplist DISTRO=devuan DEPTYPE=dep SEPARATOR=',' | grep -vE 'make\[[0-9]' &amp;gt;&amp;gt; debian/${APPNAME}.substvars&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="gi"&gt;+       printf "misc:Recommends=" &amp;gt;&amp;gt; debian/${APPNAME}.substvars&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="gi"&gt;+       make -C src deplist DISTRO=devuan DEPTYPE=rec SEPARATOR=',' | grep -vE 'make\[[0-9]' &amp;gt;&amp;gt; debian/${APPNAME}.substvars&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;       dh_gencontrol&lt;span class="w"&gt;&lt;/span&gt;

&lt;span class="w"&gt; &lt;/span&gt;execute_after_dh_auto_clean:&lt;span class="w"&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;I also just had to add the relevant &lt;code&gt;rec-devuan: firmware-atheros&lt;/code&gt; in one of the source files.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/codesearch.debian.net/search?q=misc%3ARecommends&amp;amp;literal=1"&gt;Reference 1&lt;/a&gt; was all I needed, to make it so my additional contents in the substvars file got added in the correct spot in my package.&lt;/p&gt;
&lt;p&gt;Because I'd already written the Makefile logic to parse depends, recommends, and suggests, for a given target type, this small dpkg addition can hook into that logic without a lot of extra work!&lt;/p&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/codesearch.debian.net/search?q=misc%3ARecommends&amp;amp;literal=1"&gt;https://codesearch.debian.net/search?q=misc%3ARecommends&amp;amp;literal=1&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/codesearch.debian.net/show?file=git_1%3A2.51.0-1%2Fdebian%2Fcontrol&amp;amp;line=212"&gt;git_1:2.51.0-1/debian/control&lt;/a&gt;&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt; perl, libcgi-pm-perl
Pre-Depends: &lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="n"&gt;misc&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Pre&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Depends&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt;
Recommends: &lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="n"&gt;misc&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Recommends&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt;, libhttp-date-perl | libtime-parsedate-perl
Breaks: apache2.2-common (&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt; 2.3&lt;/span&gt;&lt;span class="err"&gt;~)&lt;/span&gt;
&lt;span class="err"&gt;Suggests:&lt;/span&gt; &lt;span class="err"&gt;httpd-cgi&lt;/span&gt; &lt;span class="err"&gt;|&lt;/span&gt; &lt;span class="err"&gt;libcgi-fast-perl,&lt;/span&gt; &lt;span class="err"&gt;git-doc&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/blockquote&gt;</description><category>build</category><category>debuild</category><guid>https://bgstack15.ddns.net/blog/posts/2026/01/30/debuild-package-misc-recommends/</guid><pubDate>Fri, 30 Jan 2026 13:45:00 GMT</pubDate></item><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>Install build dependencies from source files, dpkg and rpm</title><link>https://bgstack15.ddns.net/blog/posts/2020/02/08/install-build-dependencies-from-source-files-dpkg-and-rpm/</link><dc:creator>bgstack15</dc:creator><description>&lt;h4&gt;For a dpkg&lt;/h4&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;cd &lt;span class="nv"&gt;$packagedir&lt;/span&gt; ;
mk-build-deps
sudo apt-get install ./&lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="n"&gt;package&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt;-build-deps*.deb
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Source: &lt;a href="https://serverfault.com/questions/127625/given-a-debian-source-package-how-do-i-install-the-build-deps/127679#127679"&gt;ubuntu - Given a debian source package - How do I install the build-
deps? - Server Fault&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;For an rpm&lt;/h4&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;yum-builddep my-package.spec
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Or&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;dnf builddep my-package.spec
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="https://stackoverflow.com/questions/13227162/automatically-install-build-dependencies-prior-to-building-an-rpm-package"&gt;fedora - Automatically install build dependencies prior to building an RPM
package - Stack
Overflow&lt;/a&gt;/13228992#13228992&lt;/p&gt;</description><category>build</category><category>debuild</category><category>devuan</category><category>dpkg</category><category>oneliner</category><category>packages</category><category>rpm</category><category>rpmbuild</category><guid>https://bgstack15.ddns.net/blog/posts/2020/02/08/install-build-dependencies-from-source-files-dpkg-and-rpm/</guid><pubDate>Sat, 08 Feb 2020 13:41:47 GMT</pubDate></item><item><title>dnf install build deps</title><link>https://bgstack15.ddns.net/blog/posts/2018/11/29/dnf-install-build-deps/</link><dc:creator>bgstack15</dc:creator><description>&lt;p&gt;If you want to build a package, but need all of its buildrequires packages,
use this command:&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;sudo dnf builddep wxGTK3
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I leave my source repositories off, so be sure to do any
&lt;strong&gt;--enablerepo=fedora-source,updates-source&lt;/strong&gt; as necessary.&lt;/p&gt;
&lt;h2&gt;For debian family&lt;/h2&gt;
&lt;p&gt;Try a cool tool named "mk-build-deps" as documented over at
&lt;a href="https://www.guyrutenberg.com/2017/09/23/use-mk-build-deps-instead-of-apt-get-%0Abuild-dep/"&gt;https://www.guyrutenberg.com/2017/09/23/use-mk-build-deps-instead-of-apt-get-
build-dep/&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;h3&gt;Weblinks&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://stackoverflow.com/questions/13227162/automatically-install-build-dependencies-prior-to-building-an-rpm-package/13228992#13228992"&gt;Automatically install build dependencies prior to building an RPM
package&lt;/a&gt;
[stackoverflow.com]&lt;/p&gt;</description><category>build</category><category>compile</category><category>dependencies</category><category>dnf</category><category>repo</category><guid>https://bgstack15.ddns.net/blog/posts/2018/11/29/dnf-install-build-deps/</guid><pubDate>Thu, 29 Nov 2018 13:42:53 GMT</pubDate></item><item><title>xfe spec Fedora 26 with proper build dependencies</title><link>https://bgstack15.ddns.net/blog/posts/2017/11/25/xfe-spec-fedora-26-with-proper-build-dependencies/</link><dc:creator>bgstack15</dc:creator><description>&lt;p&gt;See the spec file at
&lt;a href="https://gist.github.com/bgstack15/ec1677daa1d19a9e1f5124068619e813"&gt;https://gist.github.com/bgstack15/ec1677daa1d19a9e1f5124068619e813&lt;/a&gt;. The
wonderful &lt;a href="http://roland65.free.fr/xfe/"&gt;X File Explorer&lt;/a&gt; does not properly
describe what is needed to compile it. So here is my research to help anyone
else trying to compile it on Fedora 26.&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;dnf&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="n"&gt;rpm&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;build&lt;/span&gt; &lt;span class="n"&gt;intltool&lt;/span&gt; &lt;span class="n"&gt;fox&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;devel&lt;/span&gt; &lt;span class="n"&gt;glib&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;devel&lt;/span&gt; &lt;span class="n"&gt;libpng&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;devel&lt;/span&gt; &lt;span class="n"&gt;libXft&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;devel&lt;/span&gt; &lt;span class="n"&gt;freetype&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;devel&lt;/span&gt; &lt;span class="n"&gt;gcc&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;https://gist.github.com/bgstack15/ec1677daa1d19a9e1f5124068619e813&lt;/p&gt;</description><category>build</category><category>opensource</category><category>rpm</category><category>xfe</category><guid>https://bgstack15.ddns.net/blog/posts/2017/11/25/xfe-spec-fedora-26-with-proper-build-dependencies/</guid><pubDate>Sat, 25 Nov 2017 13:57:13 GMT</pubDate></item></channel></rss>