<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>deaddabe - debian</title><link href="https://deaddabe.fr/" rel="alternate"/><link href="https://deaddabe.fr/feeds/tag.debian.atom.xml" rel="self"/><id>https://deaddabe.fr/</id><updated>2022-05-20T00:00:00+02:00</updated><entry><title>Status update, May 2022</title><link href="https://deaddabe.fr/blog/2022/05/20/status-update-may-2022/" rel="alternate"/><published>2022-05-20T00:00:00+02:00</published><updated>2022-05-20T00:00:00+02:00</updated><author><name>deaddabe</name></author><id>tag:deaddabe.fr,2022-05-20:/blog/2022/05/20/status-update-may-2022/</id><summary type="html">&lt;p&gt;Boing, time for another status update.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Boing, time for another status update.&lt;/p&gt;
&lt;div class="section" id="debian-work"&gt;
&lt;h2&gt;Debian work&lt;/h2&gt;
&lt;p&gt;I have finally found how to make my &lt;a class="reference external" href="https://tracker.debian.org/pkg/fonts-creep2"&gt;fonts-creep2&lt;/a&gt; package work on my Debian
machines. The solution was to not use the TTF file that contains the Bitmap
glyphs, but instead &lt;a class="reference external" href="https://salsa.debian.org/fonts-team/fonts-creep2/-/commit/e3c2fdda265190b624869c2ae6ec2cdae484e950"&gt;generate&lt;/a&gt; an OTB file, which is an &lt;a class="reference external" href="https://en.wikipedia.org/wiki/OpenType"&gt;OpenType&lt;/a&gt; format for
&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Computer_font#BITMAP="&gt;Bitmap fonts&lt;/a&gt;.&lt;/p&gt;
&lt;img alt="Creep2 font used in htop command" src="https://deaddabe.fr/blog/2022/05/20/status-update-may-2022/creep2-htop.png"/&gt;
&lt;p&gt;This means that I can &lt;a class="reference external" href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1008785"&gt;close the fonts-creep ITP bug&lt;/a&gt; altogether and rely on
this &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;fonts-creep2&lt;/span&gt;&lt;/tt&gt; package instead. Hopefully it will be reviewed and
uploaded soon by a certified™ Debian Developer.&lt;/p&gt;
&lt;p&gt;This font is too small for daily usage, but imagine the quantity of data you
could display on an auxiliary screen with poor resolution (and poor pixel
density eventually).&lt;/p&gt;
&lt;p&gt;Here is a meme I created for the occasion:&lt;/p&gt;
&lt;img alt="Hide the pain Harold meme. First: Package software and its gazillion dependencies. Second: Popcon says I'm the only user." src="https://deaddabe.fr/blog/2022/05/20/status-update-may-2022/debian-meme-itp.png"/&gt;
&lt;p&gt;Checks out.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="rust-work"&gt;
&lt;h2&gt;Rust work&lt;/h2&gt;
&lt;p&gt;I have &lt;em&gt;obsoleted&lt;/em&gt; my most popular Rust crate, &lt;a class="reference external" href="https://crates.io/crates/gladis"&gt;gladis&lt;/a&gt;.&lt;/p&gt;
&lt;img alt="Screenshot of the Gladis Github README" src="https://deaddabe.fr/blog/2022/05/20/status-update-may-2022/gladis-github-screenshot.png"/&gt;
&lt;p&gt;Indeed, the GTK folks have managed to develop a similar solution named
&lt;a class="reference external" href="https://gtk-rs.org/gtk4-rs/stable/latest/book/composite_templates.html"&gt;CompositeTemplate&lt;/a&gt;, that is available in both &lt;a class="reference external" href="https://crates.io/crates/gtk3-macros"&gt;gtk3-macros&lt;/a&gt; and &lt;a class="reference external" href="https://crates.io/crates/gtk4-macros"&gt;gtk4-macros&lt;/a&gt;
crates. I did not investigate from how long this has been available before I
created this crate. Hopefully it did not exist before I developed it.&lt;/p&gt;
&lt;p&gt;I have learnt a lot about Rust crates development with this crate, and managed
to put in place a &lt;a class="reference external" href="https://github.com/MicroJoe/gladis/blob/main/release.toml"&gt;semi-automated release flow&lt;/a&gt; that I will surely use in other
future crates.&lt;/p&gt;
&lt;p&gt;See ya.&lt;/p&gt;
&lt;/div&gt;
</content><category term="articles"/><category term="status_update"/><category term="debian"/><category term="rust"/></entry><entry><title>Status update, April 2022</title><link href="https://deaddabe.fr/blog/2022/04/13/status-update-april-2022/" rel="alternate"/><published>2022-04-13T00:00:00+02:00</published><updated>2022-04-13T00:00:00+02:00</updated><author><name>deaddabe</name></author><id>tag:deaddabe.fr,2022-04-13:/blog/2022/04/13/status-update-april-2022/</id><summary type="html">&lt;p&gt;After missing the previous March update, here we go again!&lt;/p&gt;</summary><content type="html">&lt;p&gt;After missing the previous March update, here we go again!&lt;/p&gt;
&lt;div class="section" id="new-avatar"&gt;
&lt;h2&gt;New avatar&lt;/h2&gt;
&lt;p&gt;I created myself a new avatar! Of course, I designed it as a pixel-art picture
— as you should know if you have been following the &lt;a class="reference external" href="https://deaddabe.fr/blog/2022/03/01/status-update-february-2022/"&gt;previous status update&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Since I am still trying to &lt;a class="reference external" href="drawabox.com/"&gt;learn to draw stuff&lt;/a&gt;, I used my previous avatar
that I created with a &lt;a class="reference external" href="https://picrew.me/"&gt;Picrew&lt;/a&gt; generator as a base.&lt;/p&gt;
&lt;div class="figure"&gt;
&lt;a class="reference external image-reference" href="https://deaddabe.fr/blog/2022/04/13/status-update-april-2022/avatar-creation-process.png"&gt;&lt;img alt="First taking the image, then manually painting it to pixel art" src="https://deaddabe.fr/blog/2022/04/13/status-update-april-2022/avatar-creation-process.png"/&gt;&lt;/a&gt;
&lt;p class="caption"&gt;Creation process of the avatar&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Nothing fancy here. I imported the avatar in &lt;a class="reference external" href="https://www.aseprite.org/"&gt;Aseprite&lt;/a&gt; and then draw over it.
Well, it took me some time nonetheless. I estimate it to be around 2 or 3
hours. Note that I am still a beginner, so this (may) explain that.&lt;/p&gt;
&lt;p&gt;If you ask me, I am very happy with the result.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="lospec-palette-scrapper"&gt;
&lt;h2&gt;Lospec palette scrapper&lt;/h2&gt;
&lt;p&gt;I have cleaned up my little scrapper script for the &lt;a class="reference external" href="https://lospec.com/palette-list"&gt;Lospec palettes&lt;/a&gt;, and have
&lt;a class="reference external" href="https://github.com/MicroJoe/lospec-palette-scrapper"&gt;uploaded the project on Github&lt;/a&gt;. Lospec is a website that I have been using
for retrieving cool color palettes for doing pixel art.&lt;/p&gt;
&lt;a class="reference external image-reference" href="https://deaddabe.fr/blog/2022/04/13/status-update-april-2022/lospec-palette-scrapper-logo.png"&gt;&lt;img alt="Logo of the lospec-palette-scrapper project" src="https://deaddabe.fr/blog/2022/04/13/status-update-april-2022/lospec-palette-scrapper-logo.png"/&gt;&lt;/a&gt;
&lt;p&gt;I quickly drafter a logo, ironically in vectorial format using Inkscape.&lt;/p&gt;
&lt;p&gt;I also took the opportunity to upload the scrapped data directly into the
repository, because who knows how may the Lospec website author may react to
this. Whatever happens, the data will stay available in the repository.&lt;/p&gt;
&lt;p&gt;The initial goal of this side project was to create an offline-first palette
browser in GTK4, but I first needed the data. To be continued (?).&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="debian-work"&gt;
&lt;h2&gt;Debian work&lt;/h2&gt;
&lt;p&gt;The Debian work still continues, although it has calmed down. I am still trying
to figure out &lt;a class="reference external" href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1006953"&gt;how to make font-creep2 recognised in various software&lt;/a&gt; — if
not giving up &lt;a class="reference external" href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1008785"&gt;by proposing to package its original variant&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I also made a lot of progress on my personal (semi-private) dashboard to track
my progression of packaging work. This is something that I should be able to
present soon to the other Debianites, if the proposed presentation is accepted
by the reviewers. I will be sure to make a case in point here if in any case.&lt;/p&gt;
&lt;p&gt;Until then, happy coding!&lt;/p&gt;
&lt;/div&gt;
</content><category term="articles"/><category term="status_update"/><category term="arts"/><category term="debian"/></entry><entry><title>Status update, February 2022</title><link href="https://deaddabe.fr/blog/2022/03/01/status-update-february-2022/" rel="alternate"/><published>2022-03-01T00:00:00+01:00</published><updated>2022-03-01T00:00:00+01:00</updated><author><name>deaddabe</name></author><id>tag:deaddabe.fr,2022-03-01:/blog/2022/03/01/status-update-february-2022/</id><summary type="html">&lt;p&gt;Published one day late because of &lt;em&gt;reasons&lt;/em&gt;, here is another status update.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Published one day late because of &lt;em&gt;reasons&lt;/em&gt;, here is another status update.&lt;/p&gt;
&lt;div class="section" id="arts"&gt;
&lt;h2&gt;Arts&lt;/h2&gt;
&lt;p&gt;This comes first, because it is what I dedicated most of my time recently.
Well, I still have a problem regarding the “art” word as I am really not that
great but more of a beginner.&lt;/p&gt;
&lt;p&gt;Mostly, I am currently trying to learn and practising:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Pixel-art; &lt;em&gt;and&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Hand-drawing.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I started with pixel-art first — but as someone who does not know how to draw
things properly, I realised that pixel art is not a magical shortcut. One &lt;em&gt;still
needs to know how to draw&lt;/em&gt;, even if twiddling with pixels.&lt;/p&gt;
&lt;p&gt;Here is one realization of mine, using cubes because I can’t draw much more:&lt;/p&gt;
&lt;img alt="Small cube lifting off from a bigger cube." src="https://deaddabe.fr/blog/2022/03/01/status-update-february-2022/CubeLaunch.gif"/&gt;
&lt;p&gt;For hand drawing I am using &lt;a class="reference external" href="https://drawabox.com/"&gt;Drawabox&lt;/a&gt;, and I have nothing special to show here.
I am doing the exercises as well as practising on white paper and notebooks,
nothing fancy (mostly boxes and triangles, if you &lt;em&gt;really&lt;/em&gt; want to be
disappointed).&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="rust-work"&gt;
&lt;h2&gt;Rust work&lt;/h2&gt;
&lt;div class="section" id="gladis"&gt;
&lt;h3&gt;Gladis&lt;/h3&gt;
&lt;p&gt;I have released a new major version of &lt;a class="reference external" href="https://github.com/MicroJoe/gladis"&gt;gladis&lt;/a&gt;, named 2.0. This is a breaking
change, because it is now requiring the latest 0.15 &lt;a class="reference external" href="https://github.com/gtk-rs/gtk3-rs"&gt;gtk-rs&lt;/a&gt; crate, instead of
the previous 0.14 version in the 1.x versions series.&lt;/p&gt;
&lt;p&gt;There are no major changes regarding the code itself, but there have been many
changes in “chore” tasks like described in the &lt;a class="reference external" href="https://github.com/MicroJoe/gladis/blob/main/CHANGELOG.md#200---2022-02-17"&gt;CHANGELOG&lt;/a&gt;. Mainly, these have
been:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Making the project &lt;em&gt;REUSE-compliant&lt;/em&gt;; &lt;em&gt;and&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Making &lt;em&gt;publishing new versions a lot easier&lt;/em&gt;, using automated tools.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="section" id="making-projects-reuse-compliant"&gt;
&lt;h4&gt;Making projects REUSE-compliant&lt;/h4&gt;
&lt;p&gt;For the first point, I am now on making my new and maintained projects adhere
to the &lt;a class="reference external" href="https://reuse.software/"&gt;software REUSE specification&lt;/a&gt;. I think that this is a great
initiative.&lt;/p&gt;
&lt;p&gt;Indeed, as a Debian individual contributor, figuring out the
Copyright holders of big projects is always a mess. And if someone else from
Redhat or another distribution wants to package the software, but does not know
that this copyright checking has already been done in Debian, this madness has
to be done again!&lt;/p&gt;
&lt;p&gt;Detailing copyright holders directly in upstream using an automated format,
instead of distributions, is the sanest solution in my opinion to transfer this
burden to upstream (sometimes we are even “gessing” copyright holders by deep
inspection of the commit history…).&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="making-releasing-easy"&gt;
&lt;h4&gt;Making releasing easy&lt;/h4&gt;
&lt;p&gt;Maintaining a package with two crates and keeping their versions synchronised
is an “interesting” problem. I have been doing this manually for most of the
history of this crate, but I am done with it. I am now using a set of related
tools in order to release new versions (be it &lt;em&gt;patch&lt;/em&gt;, &lt;em&gt;minor&lt;/em&gt; or &lt;em&gt;major&lt;/em&gt;) a
breeze.&lt;/p&gt;
&lt;p&gt;The tools that I have selected for this purpose are:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://github.com/orhun/git-cliff"&gt;git-cliff&lt;/a&gt; for automatic CHANGELOG generation; &lt;em&gt;and&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://github.com/crate-ci/cargo-release"&gt;cargo-release&lt;/a&gt; for automating the release process in general (calls
git-cliff).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This process probably be more detailed in a dedicated article in the future.
It can be (and will eventually be) reused in other crates in order to
facilitate releasing.&lt;/p&gt;
&lt;p&gt;I am also looking into creating a template for starting out new projects with
everything configured, but it seems that &lt;a class="reference external" href="https://github.com/rust-lang/rfcs/pull/2922"&gt;Cargo templates&lt;/a&gt; are not available yet,
so I will probably create a dedicated git repository for that.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="debian-work"&gt;
&lt;h3&gt;Debian work&lt;/h3&gt;
&lt;p&gt;I have packaged two new fonts:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://tracker.debian.org/pkg/fonts-national-park"&gt;fonts-national-park&lt;/a&gt; (available in &lt;em&gt;unstable&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;fonts-routed-gothic (still in NEW, see &lt;a class="reference external" href="https://bugs.debian.org/1004995"&gt;ITP #1004995&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also updated the popular &lt;a class="reference external" href="https://tracker.debian.org/pkg/fonts-ebgaramond"&gt;fonts-ebgaramond&lt;/a&gt; to its latest git version in
order to get some fixes that have not been published into a new, dedicated
version by upstream.&lt;/p&gt;
&lt;p&gt;Finally I have started packaging python-dt-schema (&lt;a class="reference external" href="https://bugs.debian.org/1005301"&gt;ITP #1005301&lt;/a&gt;) for my kernel tweaking needs, but after some
yak shaking I am now blocked by dependencies planned to be packaged by other
individuals, but actually not packaged yet.&lt;/p&gt;
&lt;p&gt;Aaaand… that’s all! See you next time.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><category term="articles"/><category term="status_update"/><category term="debian"/><category term="rust"/><category term="arts"/></entry><entry><title>Status update, January 2022</title><link href="https://deaddabe.fr/blog/2022/01/20/status-update-january-2022/" rel="alternate"/><published>2022-01-20T00:00:00+01:00</published><updated>2022-01-20T00:00:00+01:00</updated><author><name>deaddabe</name></author><id>tag:deaddabe.fr,2022-01-20:/blog/2022/01/20/status-update-january-2022/</id><summary type="html">&lt;p&gt;Let’s hope for the best for this new year. I think that compaired to the last
two, it will be refreshening and full of possibilities — with the perspective of
the global pandemic finally coming to an end.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Let’s hope for the best for this new year. I think that compaired to the last
two, it will be refreshening and full of possibilities — with the perspective of
the global pandemic finally coming to an end.&lt;/p&gt;
&lt;div class="section" id="resolutions"&gt;
&lt;h2&gt;Resolutions&lt;/h2&gt;
&lt;p&gt;I take the “adopt new resolutions on a new year” thing quite seriously — even
if it seems unpopular these days for some reason that I ignore. Changing habits
is a hard thing, and January the 1st of every year, one gets the occasion to
kickstart new things.&lt;/p&gt;
&lt;p&gt;I will not detail every change that I will start to make this year in this
small update. Still, some of them are described in this article and some others
will come in later publications. This looks like a teasing indeed, so &lt;em&gt;stay
tuned&lt;/em&gt;!&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="debian-work"&gt;
&lt;h2&gt;Debian work&lt;/h2&gt;
&lt;p&gt;Here is one resolution for this new year: reduce my Debian involvement &lt;em&gt;to the
parts that I enjoy the most&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Last year, on multiple times, I have found myself creating or maintaining
packages that did not bring me direct usefulness in my day to day developer
life. When something becomes a burden — and you do it on your free time — you
should seek to stop the burden and do something that brings you satisfaction
instead.&lt;/p&gt;
&lt;p&gt;From now, this is the philosophy that I will &lt;em&gt;try&lt;/em&gt; to stick to concerning my
Debian involvment &lt;em&gt;on my free time&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;This means that I will stop working on the following packages:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://salsa.debian.org/python-team/packages/python-ppft"&gt;python-ppft&lt;/a&gt; (RFA &lt;a class="reference external" href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1003846"&gt;#1003846&lt;/a&gt; created)&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://salsa.debian.org/python-team/packages/python-pox"&gt;python-pox&lt;/a&gt; (ITP &lt;a class="reference external" href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=992509"&gt;#992509&lt;/a&gt; closed)&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://salsa.debian.org/python-team/packages/python-pathos"&gt;python-pathos&lt;/a&gt; (ITP &lt;a class="reference external" href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=992511"&gt;#992511&lt;/a&gt; closed)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;They were packaged by mistake: I misread a dependency name in a package, and
yak-shaving led me to package these as sub-dependencies.&lt;/p&gt;
&lt;p&gt;I wanted to “archive” the Git repositories on Salsa, but I could not find the
corresponding option in the “Settings/Advanced” section of the Gitlab
interface ; the repositories will probably stay as-is for now.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="meta"&gt;
&lt;h2&gt;Meta&lt;/h2&gt;
&lt;p&gt;Concerning this blog:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Updated pelican to the latest &lt;a class="reference external" href="https://github.com/getpelican/pelican/releases/tag/4.7.1"&gt;4.7.1 release&lt;/a&gt;. This release contains
my &lt;a class="reference external" href="https://github.com/getpelican/pelican/pull/2764"&gt;pull request&lt;/a&gt; for automatically starting the brower when writing an
article.&lt;/li&gt;
&lt;li&gt;Migrated rudimentary &lt;tt class="docutils literal"&gt;requirements.txt&lt;/tt&gt; dependency tracking to &lt;a class="reference external" href="https://python-poetry.org/"&gt;Poetry&lt;/a&gt;,
using &lt;tt class="docutils literal"&gt;pyproject.toml&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;poetry.lock&lt;/tt&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="esperanto"&gt;
&lt;h2&gt;Esperanto&lt;/h2&gt;
&lt;p&gt;I am still actively learning Esperanto, but failing to use it in real-life
situations (online or offline). Still, this little mental challenge is nice to
have. I think that when the COVID-19 pandemic situation will have chilled —
hopefully soon with this Ο-variant &lt;a class="footnote-reference" href="#f" id="footnote-reference-1"&gt;[1]&lt;/a&gt; — I will look forward to meet IRL
people in order to speak the “lingvo” out loud.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="final-thoughs"&gt;
&lt;h2&gt;Final thoughs&lt;/h2&gt;
&lt;p&gt;One of the other resolutions is to — as every year — write a little bit more on
this very blog. It is first and foremost a tool that I use to empty my mind and
clarify subjects that I find interresting. And, as a byproduct, a publication
platform that can be read by others.&lt;/p&gt;
&lt;p&gt;I have so many ideas of things to try this year, so, as always, see you soon!&lt;/p&gt;
&lt;table class="docutils footnote" frame="void" id="f" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label"/&gt;&lt;col/&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="#footnote-reference-1"&gt;[1]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Yes, this is a real “omicron” greek leter. Thanks &lt;a class="reference external" href="https://en.wikipedia.org/wiki/B%C3%89PO"&gt;BÉPO&lt;/a&gt; for letting me access so many
fancy symbols.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
</content><category term="articles"/><category term="status_update"/><category term="meta"/><category term="debian"/></entry><entry><title>Status update, November 2021</title><link href="https://deaddabe.fr/blog/2021/11/20/status-update-november-2021/" rel="alternate"/><published>2021-11-20T00:00:00+01:00</published><updated>2021-11-20T00:00:00+01:00</updated><author><name>deaddabe</name></author><id>tag:deaddabe.fr,2021-11-20:/blog/2021/11/20/status-update-november-2021/</id><summary type="html">&lt;p&gt;Winter is coming. Let’s see what has been achieved during the last ~30 days.
As before, this status update is written from a local coffee. Let’s try to keep
this monthly habbit!&lt;/p&gt;</summary><content type="html">&lt;p&gt;Winter is coming. Let’s see what has been achieved during the last ~30 days.
As before, this status update is written from a local coffee. Let’s try to keep
this monthly habbit!&lt;/p&gt;
&lt;div class="section" id="vimium-ff"&gt;
&lt;h2&gt;Vimium-FF&lt;/h2&gt;
&lt;p&gt;I discovered and installed &lt;a class="reference internal" href="#vimium-ff"&gt;Vimium-FF&lt;/a&gt;, after reading about it on a &lt;a class="reference external" href="https://news.ycombinator.com/item?id=22640054"&gt;thread&lt;/a&gt; on
an alternative hacker news browser. It is awesome.&lt;/p&gt;
&lt;p&gt;The default key mapping is for the QWERTY layout. I had to reconfigure it for
the &lt;a class="reference external" href="https://en.wikipedia.org/wiki/B%C3%89PO"&gt;BÉPO&lt;/a&gt; keyboard layout that I am using.&lt;/p&gt;
&lt;p&gt;Caveats: shortcuts do not work in reader mode. It is a shame because this makes
me switch back to arrow keys to scroll through reading material instead of
using the ergonomic HJKL keys (well, CTSR in bépo).&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="project-euler"&gt;
&lt;h2&gt;Project Euler&lt;/h2&gt;
&lt;p&gt;In quest of intellectual stimulation, I have started to participate in the
&lt;a class="reference external" href="https://projecteuler.net/"&gt;Project Euler&lt;/a&gt; online challenges. I already participated when I was a
student, but only made it through the 10 first because of time scarity. I
participated in Python at the time, which caused some performance challenges as
I was bruteforcing some solutions.&lt;/p&gt;
&lt;p&gt;This time I am participating in my favorite programming language for
non-scripting usage: Rust. The great performance and functional constructions
available (generators, filters, …) make it an ideal choice for implementing the
algorithms. Pencil and paper are valuable as well for constructing the final
solution.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="debian-work"&gt;
&lt;h2&gt;Debian work&lt;/h2&gt;
&lt;div class="section" id="new-gftools-release"&gt;
&lt;h3&gt;New gftools release&lt;/h3&gt;
&lt;p&gt;I am trying to bring the new &lt;a class="reference external" href="https://github.com/googlefonts/gftools"&gt;gftools&lt;/a&gt; release &lt;a class="reference external" href="https://tracker.debian.org/pkg/gftools"&gt;to Debian&lt;/a&gt;, but the new
required dependencies cannot be ported because &lt;a class="reference external" href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=984824"&gt;PEP-517/518 are not supported
yet&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As more and more Python packages that I need to package are blocked
because of this issue, it may be the time to take a break from packaging Python
packages in Debian for me. Especially since the &lt;a class="reference external" href="https://ftp-master.debian.org/new.html"&gt;NEW&lt;/a&gt; queue is full again, so
packages uploaded today may arrive in unstable in months anyways.&lt;/p&gt;
&lt;p&gt;I have trouble of keeping track of bug dependencies between my different ITPs.
I managed to create &lt;a class="reference external" href="https://graphviz.org/"&gt;graphviz&lt;/a&gt; diagrams of the dependencies by querying the
&lt;a class="reference external" href="https://wiki.debian.org/UltimateDebianDatabase"&gt;Ultimate Debian Database&lt;/a&gt; with some Python scripts. However this is still
very manual. I hope this idea can gain some traction in the community, but I
need to find energy to promote it.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="notion-dashboard"&gt;
&lt;h3&gt;Notion dashboard&lt;/h3&gt;
&lt;p&gt;I created myself a dashboard on &lt;a class="reference external" href="https://notion.so"&gt;Notion&lt;/a&gt;, a SaaS product that I wanted to try
given the hype it recently received in the tech scene. The idea is to track the
progress of (most of) my ongoing Debian packages that are not available in
unstable yet.&lt;/p&gt;
&lt;p&gt;For this, I have created a set of columns that directly represents the states
of the packages &lt;em&gt;in my own interpretation&lt;/em&gt; of the Debian delivery process:&lt;/p&gt;
&lt;a class="reference external image-reference" href="https://deaddabe.fr/blog/2021/11/20/status-update-november-2021/debian-notion-dashboard.png"&gt;&lt;img alt="Screenshot of the Notion dashboard" class="image-process-article-hidpi" src="https://deaddabe.fr/blog/2021/11/20/status-update-november-2021/derivatives/article-hidpi/1x/debian-notion-dashboard.png" srcset="https://deaddabe.fr/blog/2021/11/20/status-update-november-2021/derivatives/article-hidpi/1x/debian-notion-dashboard.png 1x, https://deaddabe.fr/blog/2021/11/20/status-update-november-2021/derivatives/article-hidpi/2x/debian-notion-dashboard.png 2x"/&gt;&lt;/a&gt;
&lt;p&gt;This is not optimal and manually updated. But I think there is an idea behind
this that could be explored. Maybe oneday I will pursue down this rabbit
hole and create myself an automatic dashboard.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="esperanto"&gt;
&lt;h2&gt;Esperanto&lt;/h2&gt;
&lt;p&gt;Ekde kvar semanaj mi lernas la esperanton. Mi estas komencanto. La lingvo estas
facile. Mi usas DuoLingon kaj esperantan vortaron. Fojfoje mi usas "Google
Translate" pro konfirmiĝi mian vortumijn. Mi ŝatas la esperanton pli ol la
hispanon, kiu mi lernis al liceo.&lt;/p&gt;
&lt;p&gt;Eble mi skribos esperantajn artiklojn se mi ŝatas la lingvo ankoraŭ. Sed sur
otro blogo, ĉar ĝi blogo estas nur pro la teknikajn artiklojn en angla.&lt;/p&gt;
&lt;p&gt;Ĝis la revido!&lt;/p&gt;
&lt;/div&gt;
</content><category term="articles"/><category term="status_update"/><category term="debian"/></entry><entry><title>Status update, October 2021</title><link href="https://deaddabe.fr/blog/2021/10/23/status-update-october-2021/" rel="alternate"/><published>2021-10-23T00:00:00+02:00</published><updated>2021-10-23T00:00:00+02:00</updated><author><name>deaddabe</name></author><id>tag:deaddabe.fr,2021-10-23:/blog/2021/10/23/status-update-october-2021/</id><summary type="html">&lt;p&gt;Leaves are falling, and so have been articles! Let’s see what other things have
been achieved this month.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Leaves are falling, and so have been articles! Let’s see what other things have
been achieved this month.&lt;/p&gt;
&lt;div class="section" id="on-writing"&gt;
&lt;h2&gt;On writing&lt;/h2&gt;
&lt;p&gt;I am quite proud of myself. While between July and September 2021, no articles
have been published. During this month, 3 of them went out! One can deduce that
I have found some motivation for writing about my small experiments.&lt;/p&gt;
&lt;p&gt;I still do not check how many readers I have. Maybe I should spend some time in
setting back a &lt;a class="reference external" href="https://goaccess.io/"&gt;GoAccess&lt;/a&gt; cron task to analyze the web server's logs.&lt;/p&gt;
&lt;p&gt;I have a lot of other ideas, of course. But &lt;em&gt;writing takes time&lt;/em&gt;. However it
helps me to keep track of what I have learned over the months — as well as
empty my mind to let room for other things to learn.&lt;/p&gt;
&lt;p&gt;I am currently writing this status update in a sofa inside of a nice coffee
shop. It helps to get out in order to change atmosphere and find motivation do
finish something before going home. Maybe this is an habit to put in place: go
to the coffee shop at least once every month in order to write other status
updates!&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="debian-work"&gt;
&lt;h2&gt;Debian work&lt;/h2&gt;
&lt;div class="section" id="bcnc"&gt;
&lt;h3&gt;bcnc&lt;/h3&gt;
&lt;p&gt;I have spent a substantial amount of time in improving the Debian packaging of
&lt;a class="reference external" href="https://github.com/vlachoudis/bCNC"&gt;bCNC&lt;/a&gt;. Indeed, this work has been started March 2021 but has not been validated
since. Thanks to the many reviews of Stefano, I have been able to push the
following commits in the &lt;a class="reference external" href="https://salsa.debian.org/python-team/packages/bcnc"&gt;Salsa repository&lt;/a&gt;:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
* b1d93bb introduce autopkgtests
* acc95ce d/control: manually add missing depends
* cd8c101 d/rules: keep .egg-info until dh_python3 for Depends
* d596c51 d/copyright: explain license inference
* e655334 d/upstream/metadata: add Registry for pypi
* 2abdd7b d/bCNC: use exec and consider spaces in args
* acf138a d/rules: do not install tests
* fa1c7e8 d/README.debian: explain missing testing dep
* 4b4cd93 new repack for embedding tests/ dir
*   e47fcd6 Update upstream source from tag 'upstream/0.9.14.317+ds2'
|\
| * c5b0368 New upstream version 0.9.14.317+ds2
* | dc8dabd d/copyright: do not exclude unexisting svgelements
* | 04354b3 d/README.debian: explain strange upstream release policy
* | d7a90f5 d/copyright: do not exclude tests anymore
* | 05fe01d d/copyright: mark code owned by Vasilis Vlachoudis
* | 35f1a7a d/control: add missing pil.imagetk dep
* | 7ce30ee move startup script outside of d/rules
* | aa0a0ec introduce README.debian
* | 2ac9741 install upstream README in docs
&lt;/pre&gt;
&lt;p&gt;A lot of cleanup indeed. I think that the package is now in good shape for
being sponsored into the &lt;a class="reference external" href="https://ftp-master.debian.org/new.html"&gt;NEW queue&lt;/a&gt;, where copyrights will be validated.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="bug-reporting"&gt;
&lt;h3&gt;Bug reporting&lt;/h3&gt;
&lt;p&gt;While working on &lt;a class="reference external" href="https://qa.debian.org/developer.php?email=debian@microjoe.org"&gt;my Debian packages&lt;/a&gt;, I also found issues in other
Debian packages. While I do not have the complete list in mind for this month's
worth of bugs, it shows that reporting bugs is also an important way of
contributing to the Debian ecosystem.&lt;/p&gt;
&lt;p&gt;By using the &lt;tt class="docutils literal"&gt;bts block XXXXXX by YYYYYY&lt;/tt&gt;, I was able to register the
dependencies between my ITP (&lt;a class="reference external" href="https://wiki.debian.org/ITP"&gt;Intent To Package&lt;/a&gt;) bugs and the bugs I reported
and that are currently blocking me from making progress. Some of them have been
closed pretty fast, some others are still open.&lt;/p&gt;
&lt;p&gt;Since the dependencies are stored in the bugs database, I can put these
packages on hold and move on to do other things. I will get notified by email
when the bugs are closed, and can check back on where I stopped.&lt;/p&gt;
&lt;p&gt;See ya!&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><category term="articles"/><category term="status_update"/><category term="debian"/></entry><entry><title>Status update, September 2021</title><link href="https://deaddabe.fr/blog/2021/09/20/status-update-september-2021/" rel="alternate"/><published>2021-09-20T00:00:00+02:00</published><updated>2021-09-20T00:00:00+02:00</updated><author><name>deaddabe</name></author><id>tag:deaddabe.fr,2021-09-20:/blog/2021/09/20/status-update-september-2021/</id><summary type="html">&lt;p&gt;Now that we finally had some (late) sun, let’s see how things have been.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Now that we finally had some (late) sun, let’s see how things have been.&lt;/p&gt;
&lt;div class="section" id="rust-work"&gt;
&lt;h2&gt;Rust work&lt;/h2&gt;
&lt;div class="section" id="crates-io"&gt;
&lt;h3&gt;crates.io&lt;/h3&gt;
&lt;p&gt;I spend too much time trying to figure out how to center images in
&lt;tt class="docutils literal"&gt;README.md&lt;/tt&gt; files. Not only on &lt;tt class="docutils literal"&gt;github.com&lt;/tt&gt;, but also on &lt;tt class="docutils literal"&gt;crates.io&lt;/tt&gt;. To
this purpose, I dug into the &lt;a class="reference external" href="https://github.com/rust-lang/crates.io/"&gt;source code of the latter&lt;/a&gt; to see how I could
make image centering work.&lt;/p&gt;
&lt;p&gt;At first, I though the correct syntax was:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
&lt;img align="center" alt="" src="https://img.shields.io/crates/v/clap.svg"/&gt;
&lt;/pre&gt;
&lt;p&gt;I &lt;a class="reference external" href="https://github.com/rust-lang/crates.io/pull/3862/files"&gt;proposed a PR&lt;/a&gt; (&lt;em&gt;pull request&lt;/em&gt;) to the upstream project, introducing a new
unit test to make sure that this usecase will be documented are guaranteed to
keep working in the future. After getting this merged, I actually tested to
center an image in a crate and push it to &lt;tt class="docutils literal"&gt;crates.io&lt;/tt&gt;. And the image &lt;em&gt;was not
centered&lt;/em&gt;. Dumb me. I should have tried this first.&lt;/p&gt;
&lt;p&gt;Digging a little bit more, the correct syntax to center images both on
&lt;tt class="docutils literal"&gt;github.com&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;crates.io&lt;/tt&gt; was:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
&lt;p align="center"&gt;
    &lt;img alt="" src="https://img.shields.io/crates/v/clap.svg"/&gt;
&lt;/p&gt;
&lt;/pre&gt;
&lt;p&gt;After republishing to &lt;tt class="docutils literal"&gt;crates.io&lt;/tt&gt;, this now seems to work. The image is
centered. Now &lt;a class="reference external" href="https://github.com/MicroJoe/gtk_liststore_item/commit/a859103678c851b1ee29b553843a1c353b0ac8d7"&gt;push&lt;/a&gt; to check for &lt;tt class="docutils literal"&gt;github.com&lt;/tt&gt;. Centered too! Time to
&lt;a class="reference external" href="https://github.com/rust-lang/crates.io/pull/3880"&gt;send a fix&lt;/a&gt; to upstream in order to &lt;em&gt;really&lt;/em&gt; test that image centering will
be supported in the future.&lt;/p&gt;
&lt;p&gt;What a journey. Next time I will remember to test my changes before annoying
upstream with a double PR instead of one.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="cargo-release"&gt;
&lt;h3&gt;cargo-release&lt;/h3&gt;
&lt;p&gt;I have started to play with &lt;a class="reference external" href="https://github.com/crate-ci/cargo-release"&gt;cargo-release&lt;/a&gt; in order to try to automate my
crate deployements. Indeed, most of my crates are making use of &lt;a class="reference external" href="https://doc.rust-lang.org/reference/procedural-macros.html"&gt;proc macros&lt;/a&gt;.
They are architectured like this:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;one main crate, eg. &lt;a class="reference external" href="https://crates.io/crates/gladis"&gt;gladis&lt;/a&gt;; &lt;em&gt;and&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;one macro crate, eg. &lt;a class="reference external" href="https://crates.io/crates/gladis_proc_macro"&gt;gladis_proc_macro&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Both crates live in the &lt;a class="reference external" href="https://github.com/MicroJoe/gladis"&gt;same repository&lt;/a&gt;, using a &lt;a class="reference external" href="https://doc.rust-lang.org/book/ch14-03-cargo-workspaces.html"&gt;cargo workspace&lt;/a&gt; to group
them. The crates use the same version release number. However, I manually need
to bump the versions in different files on each release. This is where
&lt;em&gt;cargo-release&lt;/em&gt; helps.&lt;/p&gt;
&lt;p&gt;I am however &lt;a class="reference external" href="https://github.com/crate-ci/cargo-release/issues/334"&gt;still having trouble&lt;/a&gt; in trying to adapt this tool to my
workflow. However I hope that I will be able to make it work, as I have
currently 3 crates that are using this &lt;em&gt;dual main/macro crates&lt;/em&gt; mechanism.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="debian-work"&gt;
&lt;h2&gt;Debian work&lt;/h2&gt;
&lt;div class="section" id="dm-application"&gt;
&lt;h3&gt;DM application&lt;/h3&gt;
&lt;p&gt;My &lt;a class="reference external" href="https://nm.debian.org/process/919/"&gt;Debian Maintainer application&lt;/a&gt;, which I was happy to brag about &lt;a class="reference external" href="https://deaddabe.fr/blog/2021/08/18/status-update-august-2021/"&gt;in the
previous status update&lt;/a&gt;, has stalled.&lt;/p&gt;
&lt;p&gt;I managed to get my &lt;em&gt;OpenPGP&lt;/em&gt; key signed in-person by sharing beers with a DD
(&lt;em&gt;Debian Developer&lt;/em&gt;) in Paris. However this was &lt;em&gt;not enough&lt;/em&gt; to conclude the
application. I still needed to find an &lt;em&gt;advocate&lt;/em&gt;, that is a person that thinks
my technical contributions are strong enough to be let done without further
babysitting.&lt;/p&gt;
&lt;p&gt;I now need to provide with more signed, irreprochable work before gathering
enough street cred to propose my application again.&lt;/p&gt;
&lt;p&gt;Stay tuned!&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><category term="articles"/><category term="status_update"/><category term="rust"/><category term="debian"/></entry><entry><title>Status update, August 2021</title><link href="https://deaddabe.fr/blog/2021/08/18/status-update-august-2021/" rel="alternate"/><published>2021-08-18T00:00:00+02:00</published><updated>2021-08-18T00:00:00+02:00</updated><author><name>deaddabe</name></author><id>tag:deaddabe.fr,2021-08-18:/blog/2021/08/18/status-update-august-2021/</id><summary type="html">&lt;p&gt;Let's see what has been accomplished during these (rather cold) summer months.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Let's see what has been accomplished during these (rather cold) summer months.&lt;/p&gt;
&lt;div class="section" id="rust-work"&gt;
&lt;h2&gt;Rust work&lt;/h2&gt;
&lt;div class="section" id="glade-bindgen"&gt;
&lt;h3&gt;glade-bindgen&lt;/h3&gt;
&lt;p&gt;I have proposed serveral pull-requests for the &lt;a class="reference external" href="https://github.com/djdisodo/glade-bindgen"&gt;glade-bindgen&lt;/a&gt; Rust crate:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://github.com/djdisodo/glade-bindgen/pull/5"&gt;Fix clippy warnings&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://github.com/djdisodo/glade-bindgen/pull/6"&gt;Introduce GitHub actions CI for crate&lt;/a&gt;; &lt;em&gt;and&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://github.com/djdisodo/glade-bindgen/pull/7"&gt;Add support for *.ui files, use regex&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;They all got merged. I am interested into this crate because it is pushing
a step further what I managed to do with my &lt;a class="reference external" href="https://github.com/MicroJoe/gladis"&gt;gladis&lt;/a&gt; crate: &lt;em&gt;automatically
integrate GTK&lt;/em&gt; &lt;tt class="docutils literal"&gt;*.ui&lt;/tt&gt; &lt;em&gt;XML interface files with Rust code seamlessly&lt;/em&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="gladis-1"&gt;
&lt;h3&gt;gladis&lt;/h3&gt;
&lt;p&gt;Regarding &lt;em&gt;gladis&lt;/em&gt; itself, I have:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://github.com/MicroJoe/gladis/commit/70dd232838ec96f081eff8c20c17012dea47b134"&gt;Added an example in Gladis using the Relm crate&lt;/a&gt;; &lt;em&gt;and&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://github.com/antoyo/relm/pull/293"&gt;Added an example in Relm using the Gladis crate&lt;/a&gt; (&lt;em&gt;not merged yet&lt;/em&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By this reciprocal example introduction, I hope that &lt;em&gt;gladis&lt;/em&gt; will be more
visible and help developers simplify their Relm use with UI files. When
comparing the previous &lt;a class="reference external" href="https://github.com/antoyo/relm/blob/cece834907f17719c5006283cfe7a1812cc5a456/relm-examples/examples/glade.rs"&gt;glade.rs&lt;/a&gt; example with the new &lt;a class="reference external" href="https://github.com/antoyo/relm/blob/cece834907f17719c5006283cfe7a1812cc5a456/relm-examples/examples/glade_gladis.rs"&gt;glade_gladis.rs&lt;/a&gt; one, the
gains are clear.&lt;/p&gt;
&lt;p&gt;Next step would be to do the same for the &lt;a class="reference external" href="https://github.com/AaronErhardt/relm4"&gt;relm4&lt;/a&gt; crate for GTK4 (&lt;a class="reference external" href="https://github.com/AaronErhardt/relm4/issues/9"&gt;and it has a
nice logo now&lt;/a&gt;).&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="debcontrol-struct"&gt;
&lt;h3&gt;debcontrol_struct&lt;/h3&gt;
&lt;p&gt;Finally, I have &lt;a class="reference external" href="https://github.com/MicroJoe/debcontrol_struct"&gt;created&lt;/a&gt; a new crate: &lt;a class="reference external" href="https://crates.io/crates/debcontrol_struct"&gt;debcontrol_struct&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This crate uses a &lt;em&gt;proc macro&lt;/em&gt; to derive named structs and automatically allow
them to be read from a Debian &lt;em&gt;control&lt;/em&gt; file. Not only &lt;tt class="docutils literal"&gt;debian/control&lt;/tt&gt;, but
any file that uses this &lt;em&gt;mail-inspired&lt;/em&gt; &lt;tt class="docutils literal"&gt;key: value&lt;/tt&gt; syntax.&lt;/p&gt;
&lt;p&gt;The provided &lt;a class="reference external" href="https://github.com/MicroJoe/debcontrol_struct/tree/3963d9022a551284e0d3129c77c1da5ffe4a8cc8/debcontrol_struct/examples/copyright"&gt;example&lt;/a&gt; is used to parse the beginning of the
&lt;tt class="docutils literal"&gt;debian/copyright&lt;/tt&gt; file that also uses the &lt;em&gt;control&lt;/em&gt; syntax.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="debian-work"&gt;
&lt;h2&gt;Debian work&lt;/h2&gt;
&lt;div class="section" id="opentracker"&gt;
&lt;h3&gt;opentracker&lt;/h3&gt;
&lt;p&gt;I have packaged the &lt;a class="reference external" href="https://erdgeist.org/arts/software/opentracker/"&gt;opentracker&lt;/a&gt; package &lt;a class="reference external" href="https://salsa.debian.org/microjoe/opentracker"&gt;for Debian&lt;/a&gt;. I had to write few
patches in order to make it work as intented. I proposed the patches back to
upstream as usual — via direct email for this one — and they got merged pretty
quickly into the &lt;em&gt;main&lt;/em&gt; branch!&lt;/p&gt;
&lt;p&gt;Here are two patches for the curious:&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://salsa.debian.org/microjoe/opentracker/-/blob/5b8c5903037c56d83d506a612f39bfa8715ae4cb/debian/patches/0001-Makefile-install-to-DESTDIR.patch"&gt;Makefile: install to DESTDIR&lt;/a&gt;; &lt;em&gt;and&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://salsa.debian.org/microjoe/opentracker/-/blob/5b8c5903037c56d83d506a612f39bfa8715ae4cb/debian/patches/0002-fix-typo-priviliges-privileges.patch"&gt;Fix typo priviliges -&amp;gt; privileges&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I also wrote &lt;a class="reference external" href="https://salsa.debian.org/microjoe/opentracker/-/blob/5b8c5903037c56d83d506a612f39bfa8715ae4cb/debian/opentracker.1"&gt;a man page&lt;/a&gt; for the software, by looking at how other man pages
were redacted, as well as &lt;em&gt;opentracker&lt;/em&gt;'s &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;--help&lt;/span&gt;&lt;/tt&gt; output. I have sent the
man page to upstream, but got no answer (yet).&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="misc"&gt;
&lt;h3&gt;Misc&lt;/h3&gt;
&lt;p&gt;Regarding my other packages, I updated &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;python-strictyaml&lt;/span&gt;&lt;/tt&gt; from 1.3.2 to
1.4.4 &lt;a class="reference external" href="https://salsa.debian.org/python-team/packages/python-strictyaml"&gt;on Salsa&lt;/a&gt;, leaving it for the &lt;a class="reference external" href="https://wiki.debian.org/Teams/PythonTeam"&gt;Python Team&lt;/a&gt; to review while I do not
have push rights, but…&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="dm-application"&gt;
&lt;h3&gt;DM application&lt;/h3&gt;
&lt;p&gt;…Last, but not least, I have &lt;a class="reference external" href="https://nm.debian.org/process/919/"&gt;started to apply as a Debian Maintainer&lt;/a&gt; to be a
part of the team, after something like a year of contributing to the project. I
hope that this will succeed, in order to be able to update my packages without
requiring the review of another &lt;em&gt;Debian Developer&lt;/em&gt; each time.&lt;/p&gt;
&lt;p&gt;Wish me success!&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><category term="articles"/><category term="status_update"/><category term="rust"/><category term="debian"/></entry><entry><title>Status update, July 2021</title><link href="https://deaddabe.fr/blog/2021/07/25/status-update-july-2021/" rel="alternate"/><published>2021-07-25T00:00:00+02:00</published><updated>2021-07-25T00:00:00+02:00</updated><author><name>deaddabe</name></author><id>tag:deaddabe.fr,2021-07-25:/blog/2021/07/25/status-update-july-2021/</id><summary type="html">&lt;p&gt;No status update since a long time (almost a year), mainly because of a lot of
personal challenges. But now is the time to go back on the status update habit!&lt;/p&gt;</summary><content type="html">&lt;p&gt;No status update since a long time (almost a year), mainly because of a lot of
personal challenges. But now is the time to go back on the status update habit!&lt;/p&gt;
&lt;p&gt;This kind of article is used to keep track of what I have achieved over the
course of the last month-or-so. Why keeping track? Because it is a nice way to
remind me that I have not been &lt;em&gt;that&lt;/em&gt; lazy during the month. And also because
it may make you reader find interesting software or problems from my
contribution list.&lt;/p&gt;
&lt;div class="section" id="rust-work"&gt;
&lt;h2&gt;Rust work&lt;/h2&gt;
&lt;p&gt;Maintainance tasks:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Introduce &lt;a class="reference external" href="https://docs.github.com/en/actions"&gt;Github Actions&lt;/a&gt; for my &lt;a class="reference external" href="https://github.com/MicroJoe/gladis"&gt;gladis&lt;/a&gt; and &lt;a class="reference external" href="https://github.com/MicroJoe/gtk_liststore_item"&gt;gtk_liststore_item&lt;/a&gt; Rust
crates;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://github.com/MicroJoe/gladis/issues/2"&gt;Adapt&lt;/a&gt; the last two crates to work with the &lt;a class="reference external" href="https://crates.io/crates/gtk/0.14.0"&gt;gtk 0.14.0 crate
release&lt;/a&gt;; &lt;em&gt;and&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Release them on &lt;a class="reference external" href="https://crates.io/"&gt;crates.io&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After fixing these GTK Rust crates, I stumbled upon the new &lt;a class="reference external" href="https://github.com/djdisodo/glade-bindgen"&gt;glade-bindgen&lt;/a&gt;
crate. This crate pushes the concept of gladis further: it automatically
generate structs containing all of the Gtk widgets, from the source &lt;tt class="docutils literal"&gt;*.ui&lt;/tt&gt;
files.&lt;/p&gt;
&lt;p&gt;This approach is even more attractive than the gladis approach I took some time
ago. It would be nice for this crate to reach a certain level of maturity. To
this intent, I have proposed two (now merged) pull-requests to this crate:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://github.com/djdisodo/glade-bindgen/pull/4"&gt;Cargo.toml: mark project as MIT&lt;/a&gt;; &lt;em&gt;and&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://github.com/djdisodo/glade-bindgen/pull/2"&gt;Introduce support for gtk 0.14.0 release&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Next contributions I would like to make is to make the README a little bit
sexier, as well as applying the &lt;tt class="docutils literal"&gt;rustfmt&lt;/tt&gt; automatic formating tool on
the autogenerated &lt;tt class="docutils literal"&gt;*.ui.rs&lt;/tt&gt; files.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="debian-work"&gt;
&lt;h2&gt;Debian work&lt;/h2&gt;
&lt;p&gt;Debian has been in the &lt;a class="reference external" href="https://release.debian.org/bullseye/freeze_policy.html"&gt;freeze&lt;/a&gt; state for quite some time now. No new packages
allowed. The &lt;a class="reference external" href="https://ftp-master.debian.org/new.html"&gt;NEW&lt;/a&gt; queue is filling up. This is the reason why I did
not spend time creating or improving new packages for now.&lt;/p&gt;
&lt;p&gt;Now that the &lt;em&gt;Full Freeze&lt;/em&gt; &lt;a class="reference external" href="https://lists.debian.org/debian-devel-announce/2021/06/msg00000.html"&gt;has been announced&lt;/a&gt;, I may start to look back at
contributing. At least push all of my waiting packages into &lt;em&gt;testing&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I am also somewhat interested in &lt;a class="reference external" href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=685575"&gt;finishing the packaging&lt;/a&gt; of the
&lt;a class="reference external" href="https://erdgeist.org/arts/software/opentracker/"&gt;opentracker&lt;/a&gt; software (discussion started in 2012!). I use it extensively,
but was surprised that it was not available in the Debian archive.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="meta"&gt;
&lt;h2&gt;Meta&lt;/h2&gt;
&lt;p&gt;Some blog posts are under redaction at the time I am writing this update. They
still need some refinement, but are expected to be published in the coming
weeks. Stay tuned!&lt;/p&gt;
&lt;/div&gt;
</content><category term="articles"/><category term="debian"/><category term="rust"/><category term="status_update"/></entry><entry><title>msmtp and AppArmor: investigating a curious access issue</title><link href="https://deaddabe.fr/blog/2020/12/22/msmtp-and-apparmor-investigating-a-curious-access-issue/" rel="alternate"/><published>2020-12-22T00:00:00+01:00</published><updated>2020-12-22T00:00:00+01:00</updated><author><name>deaddabe</name></author><id>tag:deaddabe.fr,2020-12-22:/blog/2020/12/22/msmtp-and-apparmor-investigating-a-curious-access-issue/</id><summary type="html">&lt;p&gt;Here is a writeup about how I investigated an issue with &lt;em&gt;msmtp&lt;/em&gt; configuration
files on my Debian laptop, how I deduced it was caused by &lt;em&gt;AppArmor&lt;/em&gt; and
finally how I proposed to fix the issue in the package itself.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Here is a writeup about how I investigated an issue with &lt;em&gt;msmtp&lt;/em&gt; configuration
files on my Debian laptop, how I deduced it was caused by &lt;em&gt;AppArmor&lt;/em&gt; and
finally how I proposed to fix the issue in the package itself.&lt;/p&gt;
&lt;div class="section" id="background"&gt;
&lt;h2&gt;Background&lt;/h2&gt;
&lt;p&gt;I am currently refactoring all of my email configuration for command line
usage. My current stack currently uses the following software:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="http://www.mutt.org/"&gt;mutt&lt;/a&gt; to &lt;em&gt;read&lt;/em&gt; emails;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://neovim.io/"&gt;neovim&lt;/a&gt; to &lt;em&gt;write&lt;/em&gt; them (called by &lt;em&gt;mutt&lt;/em&gt;);&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://isync.sourceforge.io/"&gt;isync&lt;/a&gt; (&lt;tt class="docutils literal"&gt;mbsync&lt;/tt&gt;) to &lt;em&gt;synchronize&lt;/em&gt; them; &lt;em&gt;and&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://marlam.de/msmtp/"&gt;msmtp&lt;/a&gt; to &lt;em&gt;send&lt;/em&gt; them.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;While moving reading man pages, I have noticed that &lt;tt class="docutils literal"&gt;msmtp(1)&lt;/tt&gt; specifies that
&lt;em&gt;msmtp&lt;/em&gt; supports the &lt;tt class="docutils literal"&gt;$XDG_CONFIG_HOME/msmtp/config&lt;/tt&gt; configuration file path,
in addition to &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;~/.msmtprc&lt;/span&gt;&lt;/tt&gt; that I have been using.&lt;/p&gt;
&lt;p&gt;The &lt;tt class="docutils literal"&gt;$XDG_CONFIG_HOME&lt;/tt&gt; usually expands to &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;~/.config/&lt;/span&gt;&lt;/tt&gt; directory. It is a
&lt;a class="reference external" href="https://specifications.freedesktop.org/basedir-spec/basedir-spec-0.6.html"&gt;standard&lt;/a&gt; used by a lot of programs to store their configuration files instead
of putting them in arbitrary files directly in the &lt;tt class="docutils literal"&gt;$HOME&lt;/tt&gt; directory.&lt;/p&gt;
&lt;p&gt;I always used &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;~/.msmtprc&lt;/span&gt;&lt;/tt&gt; before, but regrouping files into
&lt;tt class="docutils literal"&gt;$XDG_CONFIG_HOME&lt;/tt&gt; is appealing. It permits to have a &lt;em&gt;cleaner&lt;/em&gt; &lt;tt class="docutils literal"&gt;$HOME&lt;/tt&gt;
directory structure. This is nice to have when you accidentally list all files
in there.&lt;/p&gt;
&lt;p&gt;One important fact to note is that I use &lt;a class="reference external" href="https://www.gnu.org/software/stow/"&gt;GNU Stow&lt;/a&gt; in order to create
symlinks for managing my dotfiles. All of them are regrouped per-software in
my &lt;tt class="docutils literal"&gt;~/dotfiles&lt;/tt&gt; git repository.&lt;/p&gt;
&lt;p&gt;Here is a non-exhaustive tree of this directory:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
$ tree -a ~/dotfiles
/home/user/dotfiles
├── mutt
│   ├── .muttrc
│   ├── .msmtprc
│   ├── .mutt
│   │   ├── common.rc
│   │   ├── ...
&lt;/pre&gt;
&lt;p&gt;When I am on a system that I want to configure to use &lt;em&gt;mutt&lt;/em&gt; (and all the
related software like &lt;em&gt;msmtp&lt;/em&gt;), I just run the following commands to &lt;em&gt;symlink
all the configuration files&lt;/em&gt; into my home directory:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
$ cd dotfiles/
$ stow mutt
$ ls -l ~/.muttrc
... /home/user/.muttrc -&amp;gt; dotfiles/mutt/.muttrc
$ ls -l ~/.msmtprc
... /home/user/.msmtprc -&amp;gt; dotfiles/mutt/.msmtprc
&lt;/pre&gt;
&lt;/div&gt;
&lt;div class="section" id="moving-the-msmtp-configuration"&gt;
&lt;h2&gt;Moving the msmtp configuration&lt;/h2&gt;
&lt;p&gt;This configuration file is moved so that it uses the &lt;tt class="docutils literal"&gt;$XDG_CONFIG_HOME&lt;/tt&gt;
path:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
$ cd ~/dotfiles
$ mkdir -p mutt/.config/msmtp/
$ git mv mutt/.msmtprc mutt/.config/msmtp/config
$ rm ~/.msmtprc
$ stow mutt
$ ls -ld ~/.config/msmtp
... /home/user/.config/msmtp -&amp;gt; ../dotfiles/mutt/.config/msmtp
&lt;/pre&gt;
&lt;p&gt;After moving this file, &lt;em&gt;msmtp&lt;/em&gt; is &lt;em&gt;not able to read its configuration file
anymore&lt;/em&gt;. This is the message displayed when running the following example
command to send a test email:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
$ echo "hello, world" | msmtp -t example@example.org
msmtp: account default not found: no configuration file available
&lt;/pre&gt;
&lt;p&gt;In order to verify that msmtp is trying to open the &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;~/.config/msmtp/config&lt;/span&gt;&lt;/tt&gt;
file like the manual page states, let’s use strace to see which files are
accessed:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
$ echo -e "foo" | strace msmtp -t example@example.org
...

openat(AT_FDCWD, "/etc/msmtprc", O_RDONLY)
= -1 (No such file or directory)

stat("/home/user/.msmtprc", 0x...)
= -1 ENOENT (No such file or directory)

stat("/home/user/.config/msmtp/config",
     {st_mode=S_IFREG|0644, st_size=551, ...})
= 0

geteuid()
= 1000

openat(AT_FDCWD, "/home/user/.config/msmtp/config", O_RDONLY)
= -1 EACCES (Permission denied)
&lt;/pre&gt;
&lt;p&gt;We can see that &lt;tt class="docutils literal"&gt;msmtp&lt;/tt&gt; is trying different configuration files. It can see
our configuration file (&lt;tt class="docutils literal"&gt;stat&lt;/tt&gt;), but it fails when trying to open it. Then it
finally prints the error message and exits with non-zero error.&lt;/p&gt;
&lt;p&gt;The mode of the file detected by &lt;tt class="docutils literal"&gt;stat&lt;/tt&gt; is 644 so there is no reason &lt;em&gt;msmtp&lt;/em&gt;
should not be able to open the file… except if something else is preventing it
to open it!&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="investigating-apparmor-rules"&gt;
&lt;h2&gt;Investigating AppArmor rules&lt;/h2&gt;
&lt;p&gt;And this is when you have to consider the rest of my system. I am using Debian
testing, which is preparing for the &lt;em&gt;bullseye&lt;/em&gt; release. But since &lt;em&gt;buster&lt;/em&gt;
release, &lt;a class="reference external" href="https://wiki.debian.org/AppArmor"&gt;AppArmor&lt;/a&gt; is activated by default.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;AppArmor&lt;/em&gt; is a software that confines programs according to a set of rules. So
this would certainly explain why &lt;em&gt;msmtp&lt;/em&gt; cannot access the configuration file,
while I can access it with any other text editor.&lt;/p&gt;
&lt;p&gt;By looking into the rules directory, we can indeed see that there is a set of
rules activated:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
$ ls -lh /etc/apparmor.d/usr.bin.msmtp
-rw-r--r-- 1 root root 1,5K 16 Dec  14:37 /etc/apparmor.d/usr.bin.msmtp
&lt;/pre&gt;
&lt;p&gt;Here is its (edited) content:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
$ cat /etc/apparmor.d/usr.bin.msmtp
...

profile msmtp /usr/bin/msmtp flags=(attach_disconnected) {
  ...

  /usr/bin/msmtp          mr,
  /etc/aliases            r,
  /etc/msmtprc            r,
  /etc/mailname           r,
  /etc/netrc              r,
  owner @{HOME}/.msmtp*   r,
  owner @{HOME}/.netrc    r,
  owner @{HOME}/.tls-crls r,

  owner @{HOME}/.msmtp*.log wk,
  /var/log/msmtp            wk,

  owner @{HOME}/**/*msmtprc        r,
  owner @{HOME}/.config/msmtp/*    r,
  owner @{HOME}/.cache/msmtp/*     r,
  owner @{HOME}/.cache/msmtp/*.log wk,

  ...

  #include &lt;local usr.bin.msmtp=""&gt;
}
&lt;/local&gt;&lt;/pre&gt;
&lt;p&gt;We can see here the list of files that &lt;em&gt;/usr/bin/msmtp&lt;/em&gt; program is allowed to
access on the system. The files we are interested in are the configuration
files in the home directory of the user, represented by &lt;tt class="docutils literal"&gt;@{HOME}&lt;/tt&gt;.&lt;/p&gt;
&lt;p&gt;We can see that the &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;@{HOME}/**/*msmtprc&lt;/span&gt;&lt;/tt&gt; rule matches the previous path that
we were using (via the &lt;em&gt;symlink&lt;/em&gt;): &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;~/dotfiles/mutt/.msmtprc&lt;/span&gt;&lt;/tt&gt;.&lt;/p&gt;
&lt;p&gt;However, the rule using the XDG_CONFIG_HOME is not using a &lt;tt class="docutils literal"&gt;**&lt;/tt&gt; directory
&lt;em&gt;wildcard&lt;/em&gt;. This means that the program can read the file in &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;~/.config&lt;/span&gt;&lt;/tt&gt;, but
only if it is a plain file. If it is a &lt;em&gt;symlink&lt;/em&gt; redirecting to somewhere else in
the home directory, this rule prevents &lt;em&gt;msmtp&lt;/em&gt; from reading the link.&lt;/p&gt;
&lt;p&gt;The solution seems simple: introduce a directory &lt;em&gt;wildcard&lt;/em&gt; for the &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;~/.config&lt;/span&gt;&lt;/tt&gt;
path as well. Here is the modification that I applied onto this file as root:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
$ diff -u /etc/apparmor.d/usr.bin.msmtp.orig /etc/apparmor.d/usr.bin.msmtp
--- /etc/apparmor.d/usr.bin.msmtp.orig      2020-12-16 13:25:37.618559611 +0100
+++ /etc/apparmor.d/usr.bin.msmtp   2020-12-22 16:14:55.067110824 +0100
@@ -23,7 +23,7 @@
   /var/log/msmtp            wk,

   owner @{HOME}/**/*msmtprc        r,
-  owner @{HOME}/.config/msmtp/*    r,
+  owner @{HOME}/**/.config/msmtp/* r,
   owner @{HOME}/.cache/msmtp/*     r,
   owner @{HOME}/.cache/msmtp/*.log wk,
&lt;/pre&gt;
&lt;p&gt;We need to restart &lt;em&gt;AppArmor&lt;/em&gt; in order for the changes to be applied:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
$ sudo apparmor_parser -R /etc/apparmor.d/usr.bin.msmtp
&lt;/pre&gt;
&lt;p&gt;And now, if we try to call &lt;em&gt;msmtp&lt;/em&gt; again with our &lt;em&gt;symlinked&lt;/em&gt; configuration file,
everything works as expected:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
$ echo -e "foo" | msmtp -t example@example.org
&lt;/pre&gt;
&lt;p&gt;(msmtp will fail because of the example address, but works with a real one)&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="fixing-the-bug-in-debian"&gt;
&lt;h2&gt;Fixing the bug in Debian&lt;/h2&gt;
&lt;p&gt;So, now that we have identified the problem, it would be nice to fix it so that
other people do not have to conduct the same kind of investigation (although
it was fun to do!).&lt;/p&gt;
&lt;p&gt;First, we need to find out which package is installing these rules for
&lt;em&gt;msmtp&lt;/em&gt;:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
$ apt-file search /etc/apparmor.d/usr.bin.msmtp
msmtp: /etc/apparmor.d/usr.bin.msmtp
&lt;/pre&gt;
&lt;p&gt;We can see that the rules are provided by the &lt;em&gt;msmtp&lt;/em&gt; package itself. We could
directly file a bug using the &lt;em&gt;reportbug&lt;/em&gt; tool, but let’s be nice and first
prepare a patch for the source package so that the maintainer can merge the fix
directly.&lt;/p&gt;
&lt;p&gt;Let's download the source package of &lt;em&gt;msmtp&lt;/em&gt;:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
$ mkdir -p ~/tmp/msmtp
$ cd ~/tmp/msmtp
$ apt source msmtp
Reading package lists... Done
NOTICE: 'msmtp' packaging is maintained in the 'Git' version
control system at:
https://salsa.debian.org/kolter/msmtp.git
Please use:
git clone https://salsa.debian.org/kolter/msmtp.git
to retrieve the latest (possibly unreleased) updates to the package.
Need to get 377 kB of source archives.
...
&lt;/pre&gt;
&lt;p&gt;We see an interesting notice that tells us that this package is maintained via
Git. We should probably clone the &lt;a class="reference external" href="https://salsa.debian.org/kolter/msmtp"&gt;repository&lt;/a&gt; instead of using the source
package, since the issue may have already been fixed:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
$ git clone https://salsa.debian.org/kolter/msmtp.git
...
$ cd msmtp
$ find . -name 'usr.bin.msmtp'
./debian/apparmor/usr.bin.msmtp
$ diff -u /etc/apparmor.d/usr.bin.msmtp.orig ./debian/apparmor/usr.bin.msmtp
&lt;/pre&gt;
&lt;p&gt;Using &lt;tt class="docutils literal"&gt;diff&lt;/tt&gt;, we can see that there is no difference between the file
installed on our system and the latest rules. So we can just replace this file
with the one that we have patched, and create a commit out of it:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
$ cp /etc/apparmor.d/usr.bin.msmtp ./debian/apparmor/usr.bin.msmtp
$ git commit ./debian/apparmor/usr.bin.msmtp
...
$ git format-patch -1
&lt;/pre&gt;
&lt;p&gt;From here we can create a bug for the package with &lt;em&gt;reportbug&lt;/em&gt; and attach this
patch as a proposed solution:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
$ reportbug --mutt msmtp
...
12 bug reports found:

Bugs with severity important
   1) #917260  msmtp: hangs after message termination [&lt;crlf&gt;.&lt;crlf&gt;]

Bugs with severity normal
   2) #683892  msmtp attempts to connect to gnome-keyring
   3) #933551  msmtp can't write logs to an encfs file
   4) #942457  msmtp: Running msmtp as a user and Apparmor
   5) #944188  /etc/msmtprc password disclosure
   6) #945024  msmtp: Doesn't generate a Message-Id
   7) #969198  msmtp-mta package should use update-alternatives for symlinking to msmtp
   8) #975333  msmtp: AppArmor profile breaks --file, logfile, and passwordeval

Bugs with severity minor
   9) #487555  Shouldn't complain about permissions unless .msmtprc contains passwords

Bugs with severity wishlist
  10) #569122  $HOME/.msmtprc is incompatible with vixie cron.
  11) #810727  msmtp: should be able to pull hostname from server greeting (for gssapi)
  12) #834167  Should allow pinning server key
(1-12/12) Is the bug you found listed above [y|N|b|m|r|q|s|f|e|?]?
&lt;/crlf&gt;&lt;/crlf&gt;&lt;/pre&gt;
&lt;p&gt;We can see that there are already two bugs regarding &lt;em&gt;msmtp&lt;/em&gt; and &lt;em&gt;apparmor&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;In &lt;a class="reference external" href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=975333"&gt;#975333&lt;/a&gt;, it seems to be agreed that the &lt;em&gt;AppArmor&lt;/em&gt; rules are breaking
many &lt;em&gt;workflows&lt;/em&gt;, and that users should be able to easily disable them for
&lt;em&gt;msmtp&lt;/em&gt;. This is currently being worked on by the maintainer, if I understood
the discussion correctly.&lt;/p&gt;
&lt;p&gt;In &lt;a class="reference external" href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=942457"&gt;#942457&lt;/a&gt;, there are some complaints about how using &lt;em&gt;symlinks&lt;/em&gt; and
&lt;em&gt;dotfiles&lt;/em&gt; does not always work. Some people resort to copy the file instead of
linking to it. &lt;em&gt;This looks like a bug to attach our patch to&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I have sent a new &lt;a class="reference external" href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=942457#25"&gt;answer&lt;/a&gt; to this bug report, confirming that this bug is still
occurring. The patch has also been proposed for the current package maintainer
to fix the issue described in this article.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="conclusion"&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;msmtp&lt;/em&gt; is a nice piece of software. It allows me to send mails via &lt;em&gt;mutt&lt;/em&gt; or
the &lt;em&gt;command line&lt;/em&gt; easily. However the &lt;em&gt;AppArmor&lt;/em&gt; rules proposed in the Debian
package are a little bit restrictive. They should be improved (the intent of
this article), or easily disabled while we are still figuring this out.&lt;/p&gt;
&lt;p&gt;Happy mailing!&lt;/p&gt;
&lt;/div&gt;
</content><category term="articles"/><category term="debian"/></entry></feed>