Louis-Philippe Véronneau - debianhttps://veronneau.org/2024-02-07T00:00:00-05:00Montreal's Debian & Stuff - February 20242024-02-07T00:00:00-05:002024-02-07T00:00:00-05:00Louis-Philippe Véronneautag:veronneau.org,2024-02-07:/montreals-debian-stuff-february-2024.html<p>New Year, Same Great People! Our Debian User Group met for the first of our
2024 bi-monthly meetings on February 4th and it was loads of fun. Around
twelve different people made it this time to <a href="https://koumbit.org">Koumbit</a>, where the meeting
happened.</p>
<p>As a reminder, our meetings are called "Debian & Stuff …</p><p>New Year, Same Great People! Our Debian User Group met for the first of our
2024 bi-monthly meetings on February 4th and it was loads of fun. Around
twelve different people made it this time to <a href="https://koumbit.org">Koumbit</a>, where the meeting
happened.</p>
<p>As a reminder, our meetings are called "Debian & Stuff" because we want to be
as open as possible and welcome people that want to work on "other stuff" than
Debian.</p>
<p>Here is what we did:</p>
<p><strong>pollo</strong>:</p>
<ul>
<li>tested a laptop that had a defective battery with a known good one (the
problem was indeed with the battery :D)</li>
<li>renewed his expiring OpenPGP key</li>
<li>worked on removing <code>trapperkeeper-scheduler-clojure</code> from the DebCI
<a href="https://ci.debian.net/status/reject_list/">reject_list</a></li>
<li>helped anarcat with packaging <code>sigal</code></li>
<li>managed to feed most of the people present :)</li>
</ul>
<p><strong>LeLutin</strong>:</p>
<ul>
<li>worked with lavamind to upload new upstream release of <code>smokeping</code></li>
</ul>
<p><strong>mjeanson</strong>:</p>
<ul>
<li>migrated from <code>lxd</code> to <code>incus</code> on his servers</li>
<li>helped anarcat with flashing his AirGradient</li>
</ul>
<p><strong>lavamind</strong>:</p>
<ul>
<li>submitted <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1063047">a bug report</a> on <code>r-cran-rserve</code> (promptly
fixed/uploaded by maintainer!)</li>
<li>reviewed and uploaded <code>smokeping</code></li>
<li>bug triaged the <code>facter</code> package</li>
<li>worked on <code>puppet-agent</code> new upstream version 8.4.0</li>
</ul>
<p><strong>viashimo</strong>:</p>
<h1></h1>
<ul>
<li>updated <code>puppet-strings</code> from 2.9.0 to 4.2.1</li>
<li>reported <a href="https://github.com/puppetlabs/puppet-strings/issues/386">upstream test failures</a> on <code>puppet-strings</code> with recent
versions of <code>mdl</code></li>
</ul>
<p><strong>tvaz & tassia</strong>:</p>
<h1></h1>
<ul>
<li>drafted a call & request for funding for the Vanier College FLOSS Club
hardware marathon at Eastern Bloc</li>
<li>worked on an application to conduct research at Vanier College on Debian
usability</li>
<li>babysitted :-)</li>
</ul>
<p><strong>joeDoe</strong>:</p>
<ul>
<li>worked on his AirGradient</li>
<li>debugged the WiFi and VPN setup on his new laptop</li>
</ul>
<p><strong>anarcat</strong>:</p>
<ul>
<li>worked on packaging <code>sigal</code></li>
<li>worked on flashing his AirGradient boards</li>
<li>rewrote a <a href="https://gitlab.com/anarcat/airgradient-exporter">Prometheus exporter for Airgradient devices</a></li>
<li>brought over a car full of old computer gear to donate</li>
</ul>
<h2>Pictures</h2>
<p>I was pretty busy this time around and ended up not taking a lot of pictures.
Here's a bad one of the ceiling at Koumbit I took, and a picture by anarcat of
the content of his boxes of loot:</p>
<p><img src="/media/blog/2024-02-07/ceiling.jpg" width="70%" style="margin-left:15%" title="A picture of the ceiling at Koumbit" alt="A picture of the ceiling at Koumbit">
<img src="/media/blog/2024-02-07/anarcat_loot.jpg" width="70%" style="margin-left:15%" title="The content of anarcat's boxes of loot" alt="The content of anarcat's boxes of loot"></p>Montreal's Debian & Stuff - November 20232023-12-06T00:00:00-05:002023-12-06T00:00:00-05:00Louis-Philippe Véronneautag:veronneau.org,2023-12-06:/montreals-debian-stuff-november-2023.html<p>Hello from a snowy Montréal! My life has been pretty busy lately<sup id="fnref:strike"><a class="footnote-ref" href="#fn:strike">1</a></sup> so
please forgive this late report.</p>
<p>On November 19th, our local Debian User Group met at Montreal's most
prominent hackerspace, <a href="https://foulab.org/">Foulab</a>. We've been there a few times already, but
since our last visit, Foulab has had some …</p><p>Hello from a snowy Montréal! My life has been pretty busy lately<sup id="fnref:strike"><a class="footnote-ref" href="#fn:strike">1</a></sup> so
please forgive this late report.</p>
<p>On November 19th, our local Debian User Group met at Montreal's most
prominent hackerspace, <a href="https://foulab.org/">Foulab</a>. We've been there a few times already, but
since our last visit, Foulab has had some membership/financial troubles. Happy
to say things are going well again and a new team has taken over the space.</p>
<p>This meetup wasn't the most productive day for me (something about being
exhausted apparently makes it hard to concentrate), but other people did a
bunch of interesting stuff :)</p>
<ul>
<li>Kienan & Gabriel worked on the <a href="https://tracker.debian.org/pkg/libinfluxdb-http-perl">libinfluxdb-http-perl</a> package (now in
Sid!), which is needed for <a href="https://tracker.debian.org/pkg/smokeping">smokeping</a>.</li>
<li>Jérôme worked on updating JRuby to the latest upstream version.</li>
<li>I failed to update <a href="https://tracker.debian.org/pkg/monitoring-plugins-systemd">monitoring-plugins-systemd</a> to the latest upstream
version. It seems the entire test suite has been re-written and I couldn't
make it work in <code>sbuild</code>...</li>
<li>Tiago and Tassia worked on the Debian Contributors website. More
specifically, they added a DSA domains data source and created a scheduler on
<code>dcf.debian.net</code> to make daily updates on the data sources in the
<a href="https://salsa.debian.org/debian/dc-sources">dc-sources</a> repository.</li>
<li>Michael worked on the 2024 <a href="https://github.com/nsec/nsec-badge">NorthSec badge</a>.</li>
<li>Gerard worked on debugging his broken <a href="https://www.airgradient.com/open-airgradient/instructions/diy">AirGradient</a> board.</li>
</ul>
<h2>Pictures</h2>
<p>Here are a bunch of pictures I took! Foulab is always a great place to snap
quirky things :)</p>
<p><img src="/media/blog/2023-12-06/foulab.jpg" width="70%" style="margin-left:15%" title="A sign on a whiteboard that says 'Bienvenue aux laboratoires qui rends fou'" alt="A sign on a whiteboard that says 'Bienvenue aux laboratoires qui rends fou'">
<img src="/media/blog/2023-12-06/biohouse.jpg" width="70%" style="margin-left:15%" title="The entrance of the bio-hacking house, with a list of rules" alt="The entrance of the bio-hacking house, with a list of rules">
<img src="/media/blog/2023-12-06/broken_keyboard.jpg" width="70%" style="margin-left:15%" title="An exploded keyboard with a 'Press F1 to continue' sign" alt="An exploded keyboard with a 'Press F1 to continue' sign">
<img src="/media/blog/2023-12-06/tux.jpg" width="70%" style="margin-left:15%" title="An inflatable Tux with a Foulab T-Shirt" alt="An inflatable Tux with a Foulab T-Shirt">
<img src="/media/blog/2023-12-06/workshop.jpg" width="70%" style="margin-left:15%" title="A picture of the woodworking workshop" alt="A picture of the woodworking workshop"></p>
<div class="footnote">
<hr>
<ol>
<li id="fn:strike">
<p>More busy than the typical end of semester rush... At work, we are
currently renegotiating our collective bargaining agreement and things
aren't going so well. We went on strike for a few days already and we're
planning on another 7 days starting on Friday 8th. <a class="footnote-backref" href="#fnref:strike" title="Jump back to footnote 1 in the text">↩</a></p>
</li>
</ol>
</div>Montreal's Debian & Stuff - "September" 20232023-10-07T00:00:00-04:002023-10-07T00:00:00-04:00Louis-Philippe Véronneautag:veronneau.org,2023-10-07:/montreals-debian-stuff-september-2023.html<p>Last Sunday, our local Debian user group gathered to chat, to work on Debian and
to do other, non-Debian related hacking. A "Debian & Stuff"!</p>
<p>It had been a while since we held a proper meetup. Our last event was the
<a href="https://veronneau.org/goodbye-bullseye-report-from-the-montreal-2023-bsp.html">Montreal BSP</a> we organised back in March 2023... We somewhat …</p><p>Last Sunday, our local Debian user group gathered to chat, to work on Debian and
to do other, non-Debian related hacking. A "Debian & Stuff"!</p>
<p>It had been a while since we held a proper meetup. Our last event was the
<a href="https://veronneau.org/goodbye-bullseye-report-from-the-montreal-2023-bsp.html">Montreal BSP</a> we organised back in March 2023... We somewhat missed the
window for a June meetup and summer events never seem to gather a good crowd,
so I didn't try to organise one.</p>
<p>All this to say it was nice to see folks from the Montreal Debian community :)</p>
<p>This event was also the first time we were hosted by <a href="https://solon-collectif.org/action/espace-des-possibles-petite-patrie/">L'Espace des possibles -
Petite Patrie</a>, a social venue that aims to provide a space for
not-for-profit activities, like repair cafés, sowing classes, board game
nights, etc. It was really nice and we will surely meet there again in the
future.</p>
<p><img src="/media/blog/2023-10-07/group_picture.jpg" width="70%" style="margin-left:15%" title="A group picture during the event" alt="A group picture during the event"></p>
<p>Many people came to the event, including some new ones. Although people always
tend to come and go during the day, a total of 12 people attended the event.</p>
<p>As always, people worked on very different projects! One of the focus of this
D&S was assembling <a href="https://www.airgradient.com/open-airgradient/instructions/diy/a">AirGradient DIY basic kits</a>. Our local
community has been talking a lot about air quality metrics in the past few
months<sup id="fnref:fires"><a class="footnote-ref" href="#fn:fires">1</a></sup>. Tiago thus decided to have a company print the PCBs for this
kit and graciously gave away a few spares. Michael then took upon himself to
order parts on AliExpress and a few of us ended up soldering the kits together
while chatting.</p>
<p><img src="/media/blog/2023-10-07/kit.jpg" width="70%" style="margin-left:15%" title="An AirGradient DIY basic kit, semi-assembled" alt="An AirGradient DIY basic kit, semi-assembled"></p>
<p>Otherwise, some Debian work was also done:</p>
<ul>
<li>I triaged and closed a bunch of bug reports and started packaging <a href="https://salsa.debian.org/pollo/labwc">labwc</a>,
a Wayland compositor heavily inspired by Openbox.</li>
<li>Jérôme did some work on Clojure libraries that broke when Java 21 became
supported in Sid.</li>
<li>Gabriel worked on the <code>libinfluxdb-http-perl</code> library.</li>
<li>Tiago and Tassia continued their work on the new <a href="https://salsa.debian.org/tassia/dc-sources">DC Sources</a>
project and Tiago <a href="https://salsa.debian.org/debian.net-team/requests/-/issues/19">applied for a debian.net VM</a> for this service.</li>
</ul>
<p>The whole event was super fun, the tacos we had for lunch were delicious (and
very authentic!), and we ended up at a local microbrewery to share a pint later
in the evening.</p>
<p>Looking forward to the next event!</p>
<div class="footnote">
<hr>
<ol>
<li id="fn:fires">
<p>Mostly as a result of the large forest fires in Canada this summer. I
myself <a href="https://veronneau.org/weather-station-data-visualisations-using-r-and-python.html">blogged</a> <a href="https://veronneau.org/pymonitair-air-quality-monitoring-display-with-micropython.html">twice</a> about air quality-related projects
recently. <a class="footnote-backref" href="#fnref:fires" title="Jump back to footnote 1 in the text">↩</a></p>
</li>
</ol>
</div>Python 3.11, pip and (breaking) system packages2023-05-29T00:00:00-04:002023-05-29T00:00:00-04:00Louis-Philippe Véronneautag:veronneau.org,2023-05-29:/python-311-pip-and-breaking-system-packages.html<p>As we get closer to <a href="https://micronews.debian.org/2023/1682655083.html">Debian Bookworm's release</a>, I thought I'd share
one change in Python 3.11 that will surely affect many people.</p>
<p>Python 3.11 implements the new <a href="https://peps.python.org/pep-0668/">PEP 668</a>, <em>Marking Python base environments
as “externally managed”</em><sup id="fnref:kudos"><a class="footnote-ref" href="#fn:kudos">1</a></sup>. If you use <code>pip</code> regularly on Debian, it's
likely you'll …</p><p>As we get closer to <a href="https://micronews.debian.org/2023/1682655083.html">Debian Bookworm's release</a>, I thought I'd share
one change in Python 3.11 that will surely affect many people.</p>
<p>Python 3.11 implements the new <a href="https://peps.python.org/pep-0668/">PEP 668</a>, <em>Marking Python base environments
as “externally managed”</em><sup id="fnref:kudos"><a class="footnote-ref" href="#fn:kudos">1</a></sup>. If you use <code>pip</code> regularly on Debian, it's
likely you'll eventually hit the <code>externally-managed-environment</code> error:</p>
<pre>
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
If you wish to install a non-Debian-packaged Python package,
create a virtual environment using python3 -m venv path/to/venv.
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
sure you have python3-full installed.
If you wish to install a non-Debian packaged Python application,
it may be easiest to use pipx install xyz, which will manage a
virtual environment for you. Make sure you have pipx installed.
See /usr/share/doc/python3.11/README.venv for more information.
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
</pre>
<p>With this PEP, Python tools can now distinguish between packages that have been
installed by the user with a tool like <code>pip</code> and ones installed using a
distribution's package manager, like <code>apt</code>.</p>
<p>This is generally great news: it was previously too easy to break a system by
mixing the two types of packages. This PEP will simplify our role as a
distribution, as well as improve the overall Python user experience in Debian.</p>
<p>Sadly, it's also likely this change will break some of your scripts, especially
CI that (legitimately) install packages via <code>pip</code> alongside system packages.
For example, I use the following <code>gitlab-ci</code> snippet to make sure my PRs don't
break my build process<sup id="fnref:build"><a class="footnote-ref" href="#fn:build">2</a></sup>:</p>
<pre>
build:flit:
stage: build
script:
- apt-get update && apt-get install -y flit python3-pip
- FLIT_ROOT_INSTALL=1 flit install
- metalfinder --help
</pre>
<p>With Python 3.11, this snippet will error out, as <code>pip</code> will refuse to install
packages alongside the system's. The fix is to tell <code>pip</code> it's OK to "break"
your system packages, either using the <code>--break-system-packages</code> parameter, or
the <code>PIP_BREAK_SYSTEM_PACKAGES=1</code> environment variable<sup id="fnref:search"><a class="footnote-ref" href="#fn:search">3</a></sup>.</p>
<p>This, of course, is not something you should be using in production to restore
the old behavior! The "proper" way to fix this issue, as the
<code>externally-managed-environment</code> error message aptly (har har) informs you, is
to use virtual environments.</p>
<p>Happy hacking!</p>
<div class="footnote">
<hr>
<ol>
<li id="fn:kudos">
<p>Kudos to our own Matthias Klose, Stefano Rivera and Elana Hashman,
who worked on designing and implementing this PEP! <a class="footnote-backref" href="#fnref:kudos" title="Jump back to footnote 1 in the text">↩</a></p>
</li>
<li id="fn:build">
<p>Which is something that bit me before... You push some changes to
your git repository, everything seems fine and all the tests pass, so you
merge it and make a new git tag.
When the time comes to build and upload this tag to PyPi, you find out some
minor thing broke your build system (which you weren't testing) and you
have to scramble to make a point-release to fix the issue. Sad! <a class="footnote-backref" href="#fnref:build" title="Jump back to footnote 2 in the text">↩</a></p>
</li>
<li id="fn:search">
<p>Don't go searching for this environment variable in <code>pip</code>'s code
though, as you won't find it! All of <code>pip</code>'s command line options <a href="https://pip.pypa.io/en/stable/topics/configuration/#environment-variables">can be
passed as env vars</a> using the <code>PIP_<UPPER_LONG_NAME></code> format.
Useful for tools that use <code>pip</code> indirectly, like <code>flit</code>. <a class="footnote-backref" href="#fnref:search" title="Jump back to footnote 3 in the text">↩</a></p>
</li>
</ol>
</div>Goodbye Bullseye — report from the Montreal 2023 BSP2023-03-04T00:00:00-05:002023-03-04T00:00:00-05:00Louis-Philippe Véronneautag:veronneau.org,2023-03-04:/goodbye-bullseye-report-from-the-montreal-2023-bsp.html<p>Hello World! I haven't really had time to blog here since the start of the
semester, as I've been pretty busy at work<sup id="fnref:busy"><a class="footnote-ref" href="#fn:busy">1</a></sup>.</p>
<p>All this to say, this report for the <a href="https://wiki.debian.org/BSP/2023/02/ca/Montreal">Bug Squashing Party</a> we held in
Montreal last weekend is a little late, sorry :)</p>
<p>First of all, I'm …</p><p>Hello World! I haven't really had time to blog here since the start of the
semester, as I've been pretty busy at work<sup id="fnref:busy"><a class="footnote-ref" href="#fn:busy">1</a></sup>.</p>
<p>All this to say, this report for the <a href="https://wiki.debian.org/BSP/2023/02/ca/Montreal">Bug Squashing Party</a> we held in
Montreal last weekend is a little late, sorry :)</p>
<p>First of all, I'm pleased to announce our local community seems to be doing
great and has recovered from the pandemic-induced lull. May COVID stay away
from our bodies forever.</p>
<p>This time around, a total of 9 people made it to what has become somewhat of a
biennial tradition<sup id="fnref:biennial"><a class="footnote-ref" href="#fn:biennial">2</a></sup>. We worked on <a href="https://bugs.debian.org/cgi-bin/pkgreport.cgi?users=debian-release@lists.debian.org;tag=bsp-2023-02-ca-montreal">a grand total of 14 bugs</a>
and even managed to close some!</p>
<p>It looks like I was too concentrated on bugs to take a picture of the event...
To redeem myself, I hereby offer you a picture of a cute-but-hairless cat I met
on Sunday morning:</p>
<p><img src="/media/blog/2023-03-04/sphinx_cat.jpg" title="Picture of a curious sphinx cat on a table" alt="Picture of a curious sphinx cat on a table" height="80%" width="80%" style="margin-left: 10%;"></p>
<p>You should try to <a href="https://wiki.debian.org/BSP#Upcoming_BSPs">join an upcoming BSP</a> or to <a href="https://wiki.debian.org/HostingBSP">organise
one</a> if you can. It's loads of fun and you'll be helping the project
make the next release happen sooner!</p>
<p>As always, thanks to Debian for granting us a budget for the food and to rent
the venue.</p>
<p>Goodbye Bullseye!</p>
<div class="footnote">
<hr>
<ol>
<li id="fn:busy">
<p>Which I guess is a good thing, since it means I actually have work
this semester :O <a class="footnote-backref" href="#fnref:busy" title="Jump back to footnote 1 in the text">↩</a></p>
</li>
<li id="fn:biennial">
<p>See our previous BSPs in <a href="https://wiki.debian.org/BSP/2017/04/ca/Montreal">2017</a>, <a href="https://wiki.debian.org/BSP/2019/01/ca/Montreal">2019</a> and <a href="https://wiki.debian.org/BSP/2021/03/ca/Montreal">2021</a>. <a class="footnote-backref" href="#fnref:biennial" title="Jump back to footnote 2 in the text">↩</a></p>
</li>
</ol>
</div>Debian Python Team 2022 Sprint Report2022-12-08T00:00:00-05:002022-12-08T00:00:00-05:00Louis-Philippe Véronneautag:veronneau.org,2022-12-08:/debian-python-team-2022-sprint-report.html<p>This is the report for the <a href="https://wiki.debian.org/Sprints/2022/PythonTeam">Debian Python Team remote sprint</a>
that took place on December 2-3-4 2022.</p>
<p>Many thanks to those who participated, namely:</p>
<ul>
<li>Étienne Mollier (emollier)</li>
<li>Taihsiang Ho (tai271828)</li>
<li>Athos Ribeiro (athos)</li>
<li>Stuart Prescott (stuart)</li>
<li>Louis-Philippe Véronneau (pollo)</li>
<li>Ileana Dumitrescu (ildumi)</li>
<li>James Valleroy (jvalleroy)</li>
<li>Emmanuel Arias (eamanu)</li>
<li>Kurt …</li></ul><p>This is the report for the <a href="https://wiki.debian.org/Sprints/2022/PythonTeam">Debian Python Team remote sprint</a>
that took place on December 2-3-4 2022.</p>
<p>Many thanks to those who participated, namely:</p>
<ul>
<li>Étienne Mollier (emollier)</li>
<li>Taihsiang Ho (tai271828)</li>
<li>Athos Ribeiro (athos)</li>
<li>Stuart Prescott (stuart)</li>
<li>Louis-Philippe Véronneau (pollo)</li>
<li>Ileana Dumitrescu (ildumi)</li>
<li>James Valleroy (jvalleroy)</li>
<li>Emmanuel Arias (eamanu)</li>
<li>Kurt Kremitzki (kkremitzki)</li>
<li>Mohammed Bilal (rmb)</li>
<li>Stefano Rivera (tumbleweed)</li>
<li>Jeroen Ploemen (jcfp)</li>
</ul>
<p>Here is a list of issues we worked on:</p>
<h2>pybuild autodep8 feature</h2>
<p>About a year ago, <a href="https://salsa.debian.org/python-team/tools/dh-python/-/merge_requests/27">Antonio Terceiro contributed code</a> to <code>pybuild</code> to
make it possible to automatically run the upstream test suite as autopkgtests.</p>
<p>This feature has now been merged and uploaded to unstable. Although you can
find out more about it in the <a href="https://manpages.debian.org/unstable/dh-python/pybuild-autopkgtest.1.en.html">pybuild-autopkgtest manpage</a>, an email
providing more details should be sent to the debian-python mailing list
relatively soon.</p>
<h2>Fixing packages that run tests via <code>python3 setup.py test</code></h2>
<p>Last August, Stefano Rivera <a href="https://lists.debian.org/debian-python/2022/08/msg00046.html">poked the team </a> about the deprecation
of the <code>python3 setup.py test</code> command to run tests in <code>pybuild</code>. Although this
feature has been <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=982298">deprecated upstream for 6 years now</a>, many packages
in the archive still use it to run the upstream test suite during build.</p>
<p>Around 29 of the 67 packages that are team-maintained by the Debian Python Team
were fixed during the sprint. Ideally, all of them would be before the feature
is removed from <code>pybuild</code>.</p>
<p>if a package you maintain still runs this command, please consider fixing it!</p>
<h2>Fixing packages that use <code>nose</code></h2>
<p><code>nose</code>, provided by the <code>python3-nose</code> package, is an obsolete testing
framework for Python and has been <a href="https://github.com/nose-devs/nose/commit/0f40fa995384afad">unmaintained since 2015</a>.</p>
<p>During the sprint, people worked on fixing some of the many bugs filled against
packages still running tests via <code>nose</code>, but there are still <a href="https://bugs.debian.org/cgi-bin/pkgreport.cgi?users=python-modules-team@lists.alioth.debian.org;tag=nose-rm">around 240
packages</a> affected by this issue in the archive.</p>
<p>Again, if a package you maintain still runs this command, please consider
fixing it!</p>
<h2>Removal of the remaining Python2 packages</h2>
<p>With the upload of <code>dh-python 5.20221202</code>, Stefano Rivera officially removed
support for <code>dh_python2</code> and <code>dh_pypy</code>, thus closing the <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=942959">"Python2 removal in
sid/bullseye"</a> bug.</p>
<p>It seems some work still needs to be done for <a href="https://release.debian.org/transitions/html/python2-rm.html">complete Python2
removal from Sid</a>, but I expect this will be done in time for the
Bookworm release.</p>
<h2>Working on Lintian tags for the Team</h2>
<p>During the sprint, I managed to work on some Lintian issues that we had
targeted, namely:</p>
<ul>
<li>the addition of a <a href="https://salsa.debian.org/lintian/lintian/-/merge_requests/429">"missing-cpython-extension"</a> tag to flag packages
that do not build CPython extensions for all the supported Python versions.</li>
<li>fixing a false-positive in the
<a href="https://salsa.debian.org/lintian/lintian/-/merge_requests/426">"missing-prerequisite-for-pyproject-backend"</a> tag.</li>
</ul>
<p>I also worked on a few other Lintian tags, but they were unrelated to the
Debian Python Team itself.</p>
<p>I'm also happy to report many of the tags I wrote for the team in the past few
months were merged by the awesome Russ Allbery and should land in unstable as
soon as a new release is made.</p>
<p>I'm particularly looking forward the new <a href="https://salsa.debian.org/lintian/lintian/-/merge_requests/404">"uses-python-distutils"</a> tag
that should help us flag packages that still use the deprecated <code>distutils</code>
library.</p>
<h2>Patching distro-tracker (tracker.debian.org) to show pending team MRs</h2>
<p>It's often hard to have a good overview of pending merge requests when working
with team-maintained packages, as by default, Salsa doesn't notify anyone when
a MR is opened.</p>
<p>Although our workflow typically does not involve creating merge requests, <a href="https://salsa.debian.org/groups/python-team/packages/-/merge_requests">some
people still do</a> and they end up sitting there, unnoticed.</p>
<p>During the sprint, Kurt Kremitzki worked on solving this issue by having
<code>distro-tracker</code> show the pending MRs on our <a href="https://tracker.debian.org/teams/python/">team's tracker page</a>.</p>
<p>Sadly, it seems little progress was made, as the removal of
<code>python3-django-jsonfield</code> from the archive and breaking changes in
<code>python3-selenium</code> has broken the test suite.</p>
<h2>Migrate packages building with the flit plugin to the generic pyproject one</h2>
<p><code>pybuild</code> has been supporting building with PEP-517 style <code>pyproject.toml</code> files
via a generic plugin (<code>pybuild-plugin-pyproject</code>) for a while now.</p>
<p>As this plugin supersedes the old <code>flit</code> plugin, we've been thinking of
deprecating it in time for the Bookworm release.</p>
<p>To make this possible, most of the packages in the archive that still used this
plugin were migrated to the generic one and I opened bugs on the last handful
of packages that were not team-maintained.</p>
<h2>Other work</h2>
<p>Many other things were done during the sprint, such as:</p>
<ul>
<li>improving existing packages (for example, adding or fixing autopkgtests)</li>
<li>triaging and fixing <a href="https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=python3.11&users=debian-python@lists.debian.org">Python 3.11 bugs</a></li>
<li>updating packages to the latest upstream release</li>
<li>sponsoring uploads</li>
</ul>
<h2>Thanks</h2>
<p>Thanks again to everyone who joined the sprint, and three big cheers for all
the folks who <a href="https://www.debian.org/donations">donate to Debian</a> and made it possible for us to have a
food budget for the event.</p>Montreal's Debian & Stuff - October 20222022-11-01T00:00:00-04:002022-11-01T00:00:00-04:00Louis-Philippe Véronneautag:veronneau.org,2022-11-01:/montreals-debian-stuff-october-2022.html<p>Our local Debian user group gathered on Sunday October 30th to chat, work on
Debian and do other, non-Debian related hacking :) This time around, we met at
<a href="https://www.efficios.com/">EfficiOS's</a><sup id="fnref:efficios"><a class="footnote-ref" href="#fn:efficios">1</a></sup> offices. As you can see from the following
picture, it's a great place and the view they have is pretty awesome …</p><p>Our local Debian user group gathered on Sunday October 30th to chat, work on
Debian and do other, non-Debian related hacking :) This time around, we met at
<a href="https://www.efficios.com/">EfficiOS's</a><sup id="fnref:efficios"><a class="footnote-ref" href="#fn:efficios">1</a></sup> offices. As you can see from the following
picture, it's a great place and the view they have is pretty awesome. Many
thanks for hosting us!</p>
<p><img src="/media/blog/2022-11-01/mont-royal.jpg" width="70%" style="margin-left:15%" title="The view from EfficiOS' offices, overlooking the Mont-Royal" alt="The view from EfficiOS' offices, overlooking the Mont-Royal"></p>
<p>This was our 4th meeting this year and once again, attendance was great: 10
people showed up to work on various things.</p>
<p>Following our bi-monthly schedule, our next meeting should be in December, but
I'm not sure it'll happen. December can be a busy month here and I will have to
poke our mailing list to see if people have the spoons for an event.</p>
<p>This time around, I was able to get a rough log of the Debian work people did:</p>
<p><strong>pollo</strong>:</p>
<ul>
<li>followed up with the DPL for <a href="https://deb.li/2S8U">upcoming Debian Python Team Sprint</a></li>
<li>opened a wishlist bug (<a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1023140">#1023140</a>) on the <code>devscripts</code> package for <code>uscan</code>
to verify git tags signed with SSH keys</li>
<li>updated <code>python-mediafile</code> and <code>mutagen</code> to the latest upstream version</li>
</ul>
<p><strong>mjeanson</strong>:</p>
<ul>
<li>fixed RC bug <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1022419">#1022419</a> on <code>babeltrace</code></li>
<li>kindly hosted us, with the help of Mathieu Desnoyers</li>
</ul>
<p><strong>viashimo</strong>:</p>
<ul>
<li>started updating <code>puppet-strings</code> to 3.0.1</li>
<li>was blocked in the process by tests requiring <code>ruby-mdl</code>, which is not
packaged yet</li>
<li>was blocked in packaging <code>ruby-mdl</code> by <code>rubocop</code> not being >= ~1.2x</li>
</ul>
<p><strong>lavamind</strong>:</p>
<ul>
<li>updated <code>jnffi</code> to 1.3.9, as part of the work on <code>jruby</code> he's been doing</li>
</ul>
<p><strong>anarcat</strong>:</p>
<ul>
<li>updated <code>g10k</code> to latest upstream</li>
</ul>
<p><strong>babelouest</strong>:</p>
<ul>
<li>updated <code>node-jose</code> to 4.10.4</li>
<li>worked on bug <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1021779">#1021779</a> in <code>libical3</code></li>
</ul>
<p><strong>tvaz</strong>:</p>
<ul>
<li>worked on updating <code>apticron</code></li>
</ul>
<p>As always, thanks to the Debian project for granting us a budget to buy some
food!</p>
<div class="footnote">
<hr>
<ol>
<li id="fn:efficios">
<p>Makers of the awesome <a href="https://lttng.org/">LTTng</a> project, amongst other things. <a class="footnote-backref" href="#fnref:efficios" title="Jump back to footnote 1 in the text">↩</a></p>
</li>
</ol>
</div>Montreal's Debian & Stuff - August 20222022-09-07T00:00:00-04:002022-09-07T00:00:00-04:00Louis-Philippe Véronneautag:veronneau.org,2022-09-07:/montreals-debian-stuff-august-2022.html<p>Our local Debian user group gathered on Sunday August 28th<sup id="fnref:late"><a class="footnote-ref" href="#fn:late">1</a></sup> at the very
hackish <a href="https://foulab.org/exposition/">Foulab</a> for the August 2022 edition of our "Debian & Stuff"
meetings.</p>
<p>As always, the event was a success and we had lots of fun. Nine people showed
up, including some new faces and people I …</p><p>Our local Debian user group gathered on Sunday August 28th<sup id="fnref:late"><a class="footnote-ref" href="#fn:late">1</a></sup> at the very
hackish <a href="https://foulab.org/exposition/">Foulab</a> for the August 2022 edition of our "Debian & Stuff"
meetings.</p>
<p>As always, the event was a success and we had lots of fun. Nine people showed
up, including some new faces and people I hadn't seen in a while:</p>
<video width="70%" style="margin-left:15%" autoplay loop>
<source src="https://veronneau.org/media/blog/2022-09-07/group_photo.webm" type="video/webm" />
Animated picture of the people present at the event.
</video>
<p>On my side, although I was badly sleep-deprived <sup id="fnref:wry"><a class="footnote-ref" href="#fn:wry">2</a></sup>, I still managed to be
somewhat productive!</p>
<p>One of the WiFi Access Points we use in our 4-apartment LAN had been
boot-looping for a few weeks, after a failed sysupgrade to the latest version
of OpenWRT. lavamind and I suspect the flash got corrupted in a way or another
during the upgrade process...</p>
<p>Lucky for us, <a href="https://openwrt.org/toh/engenius/eap1300">this model</a> has a serial port and runs U-Boot. After a
bit of tinkering, some electrical tape and two different serial
adapters<sup id="fnref:serial"><a class="footnote-ref" href="#fn:serial">3</a></sup>, we managed to identify the pin layout and got a shell on the
machine. The device has a reset button, but since the kernel panic was
happening too soon in the boot process, we weren't able to get into OpenWRT's
failsafe mode this way.</p>
<p><img src="/media/blog/2022-09-07/eap1300.jpg" width="70%" style="margin-left:15%" title="The WiFi AP being flashed via a serial-to-USB adapter" alt="The WiFi AP being flashed via a serial-to-USB adapter"></p>
<p>Once we had serial access, wiping the flash and re-installing OpenWRT fixed our
problem. A quick <code>ansible-playbook</code> run later, the device was back to being
usable and configured :)</p>
<p>I was too tired to keep track of what others did, but I took some nice pictures
of the pizza we got, and of this nice blow-up Tux wearing a Foulab t-shirt. Enjoy!</p>
<p><img src="/media/blog/2022-09-07/tux.jpg" width="70%" style="margin-left:15%" title="A blow-up Tux wearing a Foulab t-shirt" alt="A blow-up Tux wearing a Foulab t-shirt"></p>
<p><img src="/media/blog/2022-09-07/pizza.jpg" width="70%" style="margin-left:15%" title="One of the pizzas we ordered" alt="One of the pizzas we ordered"></p>
<p>As always, thanks to the Debian project for granting us a budget to rent the
venue and to buy some food.</p>
<div class="footnote">
<hr>
<ol>
<li id="fn:late">
<p>Please excuse the late blog post, it's Harvest Season here and I've been
quite busy. <a class="footnote-backref" href="#fnref:late" title="Jump back to footnote 1 in the text">↩</a></p>
</li>
<li id="fn:wry">
<p>A bad case of wry neck kept me from sleeping properly for a while in
August. <a class="footnote-backref" href="#fnref:wry" title="Jump back to footnote 2 in the text">↩</a></p>
</li>
<li id="fn:serial">
<p>As it turns out, serial connections work better when you use the
right pins for TX and RX! <a class="footnote-backref" href="#fnref:serial" title="Jump back to footnote 3 in the text">↩</a></p>
</li>
</ol>
</div>Montreal's Debian & Stuff - June 20222022-06-22T00:00:00-04:002022-06-22T00:00:00-04:00Louis-Philippe Véronneautag:veronneau.org,2022-06-22:/montreals-debian-stuff-june-2022.html<p>As planned, we held our second local Debian meeting of the year last Sunday. We
met at the lovely <a href="https://easternbloc.ca/">Eastern Bloc</a> (an artists' hacklab) to work on Debian
(and other stuff!), chat and socialise.</p>
<p>Although there were fewer people than at our last meeting<sup id="fnref:less"><a class="footnote-ref" href="#fn:less">1</a></sup>, we still did
a lot …</p><p>As planned, we held our second local Debian meeting of the year last Sunday. We
met at the lovely <a href="https://easternbloc.ca/">Eastern Bloc</a> (an artists' hacklab) to work on Debian
(and other stuff!), chat and socialise.</p>
<p>Although there were fewer people than at our last meeting<sup id="fnref:less"><a class="footnote-ref" href="#fn:less">1</a></sup>, we still did
a lot of work!</p>
<p>I worked on fixing a bunch of bugs in Clojure packages<sup id="fnref:bugs"><a class="footnote-ref" href="#fn:bugs">2</a></sup>, LeLutin worked
on <code>podman</code> and packaged <code>libinfluxdb-http-perl</code> and anarcat worked on
<code>internetarchive</code>, <code>trocla</code> and <code>moneta</code>. Olivier also came by and worked on
debugging his Kali install.</p>
<p>We are planning to have our next meeting at the end of August. If you are
interested, the best way to stay in touch is either to <a href="https://lists.debian.org/debian-dug-quebec/">subscribe to our
mailing list</a> or to join our IRC channel (#debian-quebec on OFTC). Events
are also posted on Quebec's <a href="https://agendadulibre.qc.ca/tags/debian-qu%C3%A9bec">Agenda du libre</a>.</p>
<p>Many thanks to Debian for providing us a budget to rent the venue for the day
and for the pizza! Here is a nice picture anarcat took of (one of) the glasses
of porter we had afterwards, at the next door brewery:</p>
<p><img src="/media/blog/2022-06-22/porter.jpg" width="70%" style="margin-left:15%" title="A glass of English Porter from Silo Brewery" alt="A glass of English Porter from Silo Brewery"></p>
<div class="footnote">
<hr>
<ol>
<li id="fn:less">
<p>Summer meetings are always less populous and it also happened to be
Father's Day... <a class="footnote-backref" href="#fnref:less" title="Jump back to footnote 1 in the text">↩</a></p>
</li>
<li id="fn:bugs">
<p><a href="https://bugs.debian.org/1012824">#1012824</a>, <a href="https://bugs.debian.org/1011856">#1011856</a>, <a href="https://bugs.debian.org/1011837">#1011837</a>, <a href="https://bugs.debian.org/1011844">#1011844</a>, <a href="https://bugs.debian.org/1011864">#1011864</a>
and <a href="https://bugs.debian.org/1011967">#1011967</a>. <a class="footnote-backref" href="#fnref:bugs" title="Jump back to footnote 2 in the text">↩</a></p>
</li>
</ol>
</div>Clojure Team 2022 Sprint Report2022-05-18T00:00:00-04:002022-05-18T00:00:00-04:00Louis-Philippe Véronneautag:veronneau.org,2022-05-18:/clojure-team-2022-sprint-report.html<p>This is the report for the <a href="https://wiki.debian.org/Sprints/2022/ClojureTeam">Debian Clojure Team remote sprint</a>
that took place on May 13-14th.</p>
<p>Looking at my previous blog entries, this was my first Debian sprint <a href="https://veronneau.org/debconf-videoteam-sprint-report-debconf20home.html">since
July 2020</a>! Crazy how fast time flies...</p>
<p>Many thanks to those who participated, namely:</p>
<ul>
<li>Rob Browning (rlb)</li>
<li>Elana Hashman (ehashman …</li></ul><p>This is the report for the <a href="https://wiki.debian.org/Sprints/2022/ClojureTeam">Debian Clojure Team remote sprint</a>
that took place on May 13-14th.</p>
<p>Looking at my previous blog entries, this was my first Debian sprint <a href="https://veronneau.org/debconf-videoteam-sprint-report-debconf20home.html">since
July 2020</a>! Crazy how fast time flies...</p>
<p>Many thanks to those who participated, namely:</p>
<ul>
<li>Rob Browning (rlb)</li>
<li>Elana Hashman (ehashman)</li>
<li>Jérôme Charaoui (lavamind)</li>
<li>Leandro Doctors (allentiak)</li>
<li>Louis-Philippe Véronneau (pollo)</li>
</ul>
<p>Sadly, Utkarsh Gupta — although having planned on participating — ended up not
being able to and worked on DebConf Bursary paperwork instead.</p>
<h2>rlb</h2>
<p>Rob mostly worked on creating a <code>dh-clojure</code> tool to help make packaging
Clojure libraries easier.</p>
<p>At the moment, most of the packaging is done manually, by invoking build
tools by hand. Having a tool to automate many of the steps required to build
Clojure packages would go a long way in making them more uniform.</p>
<p>His work (although still very much a WIP) can be found here:
<a href="https://salsa.debian.org/rlb/dh-clojure/">https://salsa.debian.org/rlb/dh-clojure/</a></p>
<h2>ehashman</h2>
<p>Elana:</p>
<ul>
<li>Finished the Java Team VCS migration to the Clojure Team namespace.</li>
<li><a href="https://wiki.debian.org/Clojure/Leiningen2.9.8">Worked on updating Leiningen to 2.9.8</a>.</li>
<li>Proposed an <a href="https://github.com/technomancy/leiningen/pull/2796">upstream dependency update in Leiningen</a> to match
Debian's most recent version.</li>
<li>Gave pollo Owner access on the Clojure Team namespace and added lavamind as
a Developer.</li>
<li>Uploaded Clojure 1.10.3-1.</li>
<li>Updated <code>sjacket-clojure</code> to version 0.1.1.1 and uploaded it to experimental.</li>
<li>Added build tests to <code>spec-alpha-clojure</code>.</li>
<li>Filed bug <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1010995">#1010995</a> for missing test dependency for Clojure.</li>
<li>Closed bugs <a href="https://bugs.debian.org/976151">#976151</a>, <a href="https://bugs.debian.org/992735">#992735</a> and <a href="https://bugs.debian.org/992736">#992736</a>.</li>
</ul>
<h2>lavamind</h2>
<p>It was Jérôme's first time working on Clojure packages, and things went great!
During the sprint, he:</p>
<ul>
<li>Joined the Clojure Team on salsa.</li>
<li>Identified missing dependencies to update <code>puppetdb</code> to the 7.x release.</li>
<li>Learned how to package Clojure libraries in Debian.</li>
<li>Packaged <code>murphy-clojure</code>, <code>truss-clojure</code> and <code>encore-clojure</code> and uploaded
them to NEW.</li>
<li>Began to package <code>nippy-clojure</code>.</li>
</ul>
<h2>allentiak</h2>
<p>Leandro joined us on Saturday, since he couldn't get off work on Friday. He
mostly continued working on replacing our in-house scripts for
<code>/usr/bin/clojure</code> by upstream's, a task <a href="https://wiki.debian.org/Clojure/Goals/ClojureCLIToolsInDebian">he had already started during GSoC
2021</a>.</p>
<p>Sadly, none of us were familiar with Debian's mechanism for alternatives. If you
(yes you, dear reader) are familiar with it, I'm sure he would warmly welcome
feedback on <a href="https://salsa.debian.org/allentiak/clojure-cli/-/commit/8cfeba00e74ffb5d5eb2a32e35391eee1a08277d">his development branch</a>.</p>
<h2>pollo</h2>
<p>As for me, I:</p>
<ul>
<li>Fixed a classpath bug in <code>core-async-clojure</code> that was breaking other
libraries.</li>
<li>Added meaningful autopkgtests to <code>core-async-clojure</code>.</li>
<li>Uploaded new versions of <code>tools-analyzer-clojure</code> and
<code>trapperkeeper-clojure</code> with autopkgtests.</li>
<li>Updated <code>pomegranate-clojure</code> and <code>nrepl-clojure</code> to the latest upstream
version and revamped the way they were packaged.</li>
<li>Assisted lavamind with Clojure packaging.</li>
</ul>
<p>Overall, it was quite a productive sprint!</p>
<p>Thanks to Debian for sponsoring our food during the sprint. It was nice to be
able to concentrate on fixing things instead of making food :)</p>
<p>Here's a bonus picture of the nice sushi platter I ended up getting for dinner
on Saturday night:</p>
<p><img src="/media/blog/2022-05-18/sushi.jpg" width="70%" style="margin-left:15%" title="Picture of a sushi platter" alt="Picture of a sushi platter"></p>Montreal's Debian & Stuff - April 20222022-04-28T00:00:00-04:002022-04-28T00:00:00-04:00Louis-Philippe Véronneautag:veronneau.org,2022-04-28:/montreals-debian-stuff-april-2022.html<p>After two long years of COVID hiatus, local Debian events in Montreal are back!
Last Sunday, nine of us met at <a href="https://www.koumbit.org/en">Koumbit</a> to work on Debian (and other stuff!),
chat and socialise.</p>
<p>Even though these events aren't always the most productive, it was super fun
and definitely helps keeping me …</p><p>After two long years of COVID hiatus, local Debian events in Montreal are back!
Last Sunday, nine of us met at <a href="https://www.koumbit.org/en">Koumbit</a> to work on Debian (and other stuff!),
chat and socialise.</p>
<p>Even though these events aren't always the most productive, it was super fun
and definitely helps keeping me motivated to work on Debian in my spare time.</p>
<p>Many thanks to Debian for providing us a budget to rent the venue for the day
and for the pizzas! Here are a few pictures I took during the event:</p>
<p><img src="/media/blog/2022-04-28/pizza.jpg" width="70%" style="margin-left:15%" title="Pizza boxes on a wooden bench" alt="Pizza boxes on a wooden bench"></p>
<p><img src="/media/blog/2022-04-28/board.jpg" width="70%" style="margin-left:15%" title="Whiteboard listing TODO items for some of the participants" alt="Whiteboard listing TODO items for some of the participants"></p>
<p><img src="/media/blog/2022-04-28/laptops.jpg" width="70%" style="margin-left:15%" title="A table with a bunch of laptops, and LeLutin :)" alt="A table with a bunch of laptops, and LeLutin :)"></p>
<p>If everything goes according to plan, our next meeting should be sometime in
June. If you are interested, the best way to stay in touch is either to
<a href="https://lists.debian.org/debian-dug-quebec/">subscribe to our mailing list</a> or to join our IRC channel
(#debian-quebec on OFTC). Events are also posted on Quebec's <a href="https://agendadulibre.qc.ca/tags/debian-qu%C3%A9bec">Agenda du
libre</a>.</p>Debian Clojure Team Sprint --- May 13-14th 20222022-03-19T00:00:00-04:002022-03-19T00:00:00-04:00Louis-Philippe Véronneautag:veronneau.org,2022-03-19:/debian-clojure-team-sprint-may-13-14th-2022.html<p>I'm happy to announce the Debian Clojure Team will hold a remote sprint from
May 13th to May 14th 2022.</p>
<p>The goal of this sprint is to improve various aspects of the Clojure ecosystem
in Debian. As such, everyone is welcome to participate!</p>
<p>Here are a few items we are …</p><p>I'm happy to announce the Debian Clojure Team will hold a remote sprint from
May 13th to May 14th 2022.</p>
<p>The goal of this sprint is to improve various aspects of the Clojure ecosystem
in Debian. As such, everyone is welcome to participate!</p>
<p>Here are a few items we are planning to work on, in no particular order:</p>
<ul>
<li>Update <code>leiningen</code> to the latest upstream version, to let some libraries in
experimental migrate to unstable.</li>
<li>Work towards replacing our custom Clojure script with upstream's and package
<code>clj | clojure-cli</code>.</li>
<li>Update <code>clojure</code> to the latest upstream version.</li>
<li>Work on debugging autopkgtest failures on a bunch of <code>puppetlabs-*</code>
libraries.</li>
<li>Work on lintian tags for the Clojure Team.</li>
</ul>
<p>You can register for the sprint on the <a href="https://wiki.debian.org/Sprints/2022/ClojureTeam">Debian Wiki</a>. We are planning to
ask the DPL for a food budget. If you plan on joining and want your food to be
sponsored, please register <strong>before April 2nd</strong>.</p>Writing QA Scripts for Debian Teams2021-06-27T00:00:00-04:002021-06-27T00:00:00-04:00Louis-Philippe Véronneautag:veronneau.org,2021-06-27:/writing-qa-scripts-for-debian-teams.html<p>Since I joined the Debian Python Team, I have had a lot of fun working on
different QA issues. Although I'm still a Perl illiterate<sup id="fnref:perl"><a class="footnote-ref" href="#fn:perl">1</a></sup>, I've for
example contributed to a few Lintian tags.</p>
<p>There are multiple ways to make mass QA changes to team-managed packages.
Projects like the …</p><p>Since I joined the Debian Python Team, I have had a lot of fun working on
different QA issues. Although I'm still a Perl illiterate<sup id="fnref:perl"><a class="footnote-ref" href="#fn:perl">1</a></sup>, I've for
example contributed to a few Lintian tags.</p>
<p>There are multiple ways to make mass QA changes to team-managed packages.
Projects like the <a href="https://janitor.debian.net/">Debian Janitor</a> are more than fantastic: they make
for a robust, thorough and automated way to fix QA issues in the archive and I
don't have enough good words to describe the amazing work of Jelmer Vernooij on
the toolsuite the Janitor uses.</p>
<p>But with robustness comes complexity. The Janitor is currently based on 10
different subtools (<code>silver-platter</code>, <code>ognibuild</code>, <code>lintian-brush</code>, ...) and if
you want to use it to fix a bug, you first need to make sure there's a Lintian
tag that flags the issue you're working on. Then you need to <a href="https://salsa.debian.org/jelmer/lintian-brush/-/blob/master/doc/fixer-writing-guide.rst">write a
lintian-brush fixer</a> to fix said issue. Sadly, sometimes writing a new
Lintian tag to flag a trivial changes is not the appropriate course of action
and only creates clutter.</p>
<p>All this to say until now, I was a missing a "quick and somewhat dirty<sup id="fnref:shell"><a class="footnote-ref" href="#fn:shell">2</a></sup>"
way to make simple one-off changes to a bunch of packages. <a href="https://salsa.debian.org/pollo/qa-scripts/-/blob/master/clojure-new-email.py">200 lines of Python
later</a>, I'm happy to report I have a simple way to replace
the old Clojure Team email in <code>d/control</code> by the new one for all of our
packages. Even better, although this script doesn't aim to be a versatile tool
like the Janitor is, most of the functions can be reused for other similar
one-off scripts.</p>
<p>Many thanks to Felix Lechner showing me the very handy <a href="https://lintian.debian.org/query">Lintian Query JSON
interface</a>!</p>
<div class="footnote">
<hr>
<ol>
<li id="fn:perl">
<p>I don't really enjoy coding in Perl, but it makes up so much of the
current Debian infrastructure that I wish I did. I keep telling myself I
should buy an "Introduction to Perl" book... <a class="footnote-backref" href="#fnref:perl" title="Jump back to footnote 1 in the text">↩</a></p>
</li>
<li id="fn:shell">
<p>A quick and <em>dirty</em> way to make those changes would've been to write
a shell script, but one of my 2021 resolution is to use Python for all my
scripting needs. <a class="footnote-backref" href="#fnref:shell" title="Jump back to footnote 2 in the text">↩</a></p>
</li>
</ol>
</div>Hardening Weechat Relays Against RCE on Bullseye2021-06-24T00:00:00-04:002021-06-24T00:00:00-04:00Louis-Philippe Véronneautag:veronneau.org,2021-06-24:/hardening-weechat-relays-against-rce-on-bullseye.html<p>I've been using <code>weechat</code> to connect to IRC <a href="https://veronneau.org/goodbye-pidginznc-hello-weechatrelay.html">since late 2016</a> and one
of its killer feature is relays. They let use other frontends like the <a href="https://f-droid.org/en/packages/com.ubergeek42.WeechatAndroid/">Weechat
Android app</a> or the amazing <a href="https://github.com/glowing-bear/glowing-bear">Glowing Bear</a> (packaged in
Debian Bullseye by yours truly).</p>
<p>Sadly, relays also used to be somewhat of a …</p><p>I've been using <code>weechat</code> to connect to IRC <a href="https://veronneau.org/goodbye-pidginznc-hello-weechatrelay.html">since late 2016</a> and one
of its killer feature is relays. They let use other frontends like the <a href="https://f-droid.org/en/packages/com.ubergeek42.WeechatAndroid/">Weechat
Android app</a> or the amazing <a href="https://github.com/glowing-bear/glowing-bear">Glowing Bear</a> (packaged in
Debian Bullseye by yours truly).</p>
<p>Sadly, relays also used to be somewhat of a security risk: anyone with access to
a relay<sup id="fnref:phone"><a class="footnote-ref" href="#fn:phone">1</a></sup> could run scripts on the machine running <code>weechat</code> by using
commands such as <code>/exec</code> or <code>/script</code>. Not great.</p>
<p><a href="https://github.com/weechat/weechat/commit/80b980b2af71faa9a2d825c61a5d41d7ace0dc60">Since version 2.5</a> (Buster had version 2.3), you can mitigate this
risk by setting a command allowlist for relays. Later versions <a href="https://github.com/weechat/weechat/commit/dd44c1db16d0ec9359f6403337bbff59f98a389b#diff-34e6cf0f77c92bfba0a773c866cfd4333128eeb31cbe25731f04a0eb89bc48a8R1032-R1038">implemented a
sane default</a> by blocking the following commands:</p>
<ul>
<li><code>/exec</code></li>
<li><code>/fset</code></li>
<li><code>/set</code></li>
<li><code>/unset</code></li>
<li><code>/plugin</code></li>
<li><code>/script</code></li>
<li><code>/python</code></li>
<li><code>/perl</code></li>
<li><code>/ruby</code></li>
<li><code>/lua</code></li>
<li><code>/tcl</code></li>
<li><code>/guile</code></li>
<li><code>/javascript</code></li>
<li><code>/php</code></li>
<li><code>/secure</code></li>
<li><code>/upgrade</code></li>
<li><code>/quit</code></li>
</ul>
<p>Sadly, this default <a href="https://salsa.debian.org/kolter/weechat/-/blob/debian/3.0.1-1/src/plugins/relay/relay-config.c#L1274-1288">didn't make in into Bullseye</a>. If you are
running <code>weechat</code> and are using the relays feature, after upgrading to
Bullseye, I would recommend you run the following commands in the <code>weechat</code>
TUI:</p>
<pre>
/set relay.weechat.commands *,!exec,!fset,!set,!unset,!plugin,!script,!python,!perl,!ruby,!lua,!tcl,!guile,!javascript,!php,!secure,!upgrade,!quit
/save
</pre>
<div class="footnote">
<hr>
<ol>
<li id="fn:phone">
<p>For example, someone steals your phone and connects to IRC via the
Weechat app... <a class="footnote-backref" href="#fnref:phone" title="Jump back to footnote 1 in the text">↩</a></p>
</li>
</ol>
</div>New Desktop Computer2021-06-10T00:00:00-04:002021-06-10T00:00:00-04:00Louis-Philippe Véronneautag:veronneau.org,2021-06-10:/new-desktop-computer.html<p>I built my last desktop computer what seems like ages ago. In 2011, I was in a
very different place, both financially and as a person. At the time, I was
earning minimum wage at my school's café to pay rent. Since the café was owned
by the school cooperative …</p><p>I built my last desktop computer what seems like ages ago. In 2011, I was in a
very different place, both financially and as a person. At the time, I was
earning minimum wage at my school's café to pay rent. Since the café was owned
by the school cooperative, I had an employee discount on computer parts. This
gave me a chance to build my first computer from spare parts at a reasonable
price.</p>
<p>After 10 years of service<sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup>, the time has come to upgrade. Although this
machine was still more than capable for day to day tasks like browsing the web
or playing casual video games, it started to show its limits when time came to
do more serious work.</p>
<p>Old computer specs:</p>
<div class="highlight"><pre><span></span><code><span class="n">CPU</span><span class="o">:</span><span class="w"> </span><span class="n">AMD</span><span class="w"> </span><span class="n">FX</span><span class="o">-</span><span class="mi">8530</span>
<span class="n">Memory</span><span class="o">:</span><span class="w"> </span><span class="mi">8</span><span class="n">GB</span><span class="w"> </span><span class="n">DDR3</span><span class="w"> </span><span class="mi">1600</span><span class="n">Mhz</span>
<span class="n">Motherboard</span><span class="o">:</span><span class="w"> </span><span class="n">ASUS</span><span class="w"> </span><span class="n">TUF</span><span class="w"> </span><span class="n">SABERTOOTH</span><span class="w"> </span><span class="mi">990</span><span class="n">FX</span><span class="w"> </span><span class="n">R2</span><span class="o">.</span><span class="mi">0</span>
<span class="n">Storage</span><span class="o">:</span><span class="w"> </span><span class="n">Samsung</span><span class="w"> </span><span class="mi">850</span><span class="w"> </span><span class="n">EVO</span><span class="w"> </span><span class="mi">500</span><span class="n">GB</span><span class="w"> </span><span class="n">SATA</span>
</code></pre></div>
<p>I first started considering an upgrade in September 2020: David Bremner was
kindly fixing <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=969430">a bug</a> in <code>ledger</code> that kept me from balancing my books
and since it seemed like a class of bug that would've been easily caught by an
autopkgtest, I decided to add one.</p>
<p>After adding the necessary snippets to run the upstream testsuite (an easy task
I've done multiple times now), I ran <code>sbuild</code> and ... my computer froze and
crashed. Somehow, what I thought was a simple Python package was maxing all the
cores on my CPU and using all of the 8GB of memory I had available.<sup id="fnref:2"><a class="footnote-ref" href="#fn:2">2</a></sup></p>
<p>A few month later, I worked on <code>jruby</code> and the builds took 20 to 30 minutes —
long enough to completely disrupt my flow. The same thing happened when I
wanted to work on <code>lintian</code>: the testsuite would take more than 15 minutes to
run, making quick iterations impossible.</p>
<p>Sadly, the pandemic completely wrecked the computer hardware market and prices
here in Canada have only recently started to go down again. As a result, I had
to wait more time than I would've liked not to pay scalper prices.</p>
<p>New computer specs:</p>
<div class="highlight"><pre><span></span><code><span class="n">CPU</span><span class="o">:</span><span class="w"> </span><span class="n">AMD</span><span class="w"> </span><span class="n">Ryzen</span><span class="w"> </span><span class="mi">5900</span><span class="n">X</span>
<span class="n">Memory</span><span class="o">:</span><span class="w"> </span><span class="mi">64</span><span class="n">GB</span><span class="w"> </span><span class="n">DDR4</span><span class="w"> </span><span class="mi">3200</span><span class="n">MHz</span>
<span class="n">Motherboard</span><span class="o">:</span><span class="w"> </span><span class="n">MSI</span><span class="w"> </span><span class="n">MPG</span><span class="w"> </span><span class="n">B550</span><span class="w"> </span><span class="n">Gaming</span><span class="w"> </span><span class="n">Plus</span>
<span class="n">Storage</span><span class="o">:</span><span class="w"> </span><span class="n">Corsair</span><span class="w"> </span><span class="n">MP600</span><span class="w"> </span><span class="mi">500</span><span class="w"> </span><span class="n">GB</span><span class="w"> </span><span class="n">Gen4</span><span class="w"> </span><span class="n">NVME</span>
</code></pre></div>
<p>The difference between the two machines is pretty staggering: I've gone from a
CPU with 2 cores and 8 threads, to one with 12 cores and 24 threads. Not only
that, but single-threaded performance has also vastly increased in those 10
years.</p>
<p>A good example would be building <code>grammalecte</code>, a package <a href="https://salsa.debian.org/python-team/packages/grammalecte">I've recently
sponsored</a>. I feel it's a good benchmark, since the build relies
on single-threaded performance for the normal Python operations, while being
threaded when it compiles the dictionaries.</p>
<p>On the old computer:</p>
<div class="highlight"><pre><span></span><code>Build needed 00:10:07, 273040k disk space
</code></pre></div>
<p>And as you can see, on the new computer the build time has been significantly
reduced:</p>
<div class="highlight"><pre><span></span><code>Build needed 00:03:18, 273040k disk space
</code></pre></div>
<p>Same goes for things like the <code>lintian</code> testsuite. Since it's a very
multi-threaded workload, it now takes less than 2 minutes to run; a 750%
improvement.</p>
<p>All this to say I'm happy with my purchase. And — lo and behold — I can now
build <code>ledger</code> without a hitch, even though it maxes my 24 threads and uses 28GB
of RAM. Who would've thought...</p>
<p><img src="/media/blog/2021-06-10/htop_ledger.png" title="Screen capture of htop showing how much resources ledger takes to build" alt="Screen capture of htop showing how much resources ledger takes to build" height="80%" width="80%" style="margin-left: 10%;"></p>
<div class="footnote">
<hr>
<ol>
<li id="fn:1">
<p>I managed to fry that PC's motherboard in 2016 and later replaced it with
a brand new one. I also upgraded the storage along the way, from a very cheap
cacheless 120GB SSD to a larger Samsung 850 EVO SATA drive. <a class="footnote-backref" href="#fnref:1" title="Jump back to footnote 1 in the text">↩</a></p>
</li>
<li id="fn:2">
<p>As it turns out, <code>ledger</code> is mostly written in C++ :) <a class="footnote-backref" href="#fnref:2" title="Jump back to footnote 2 in the text">↩</a></p>
</li>
</ol>
</div>Montreal 2021 BSP2021-03-29T00:00:00-04:002021-03-29T00:00:00-04:00Louis-Philippe Véronneautag:veronneau.org,2021-03-29:/montreal-2021-bsp.html<p>Last weekend Debian Quebec <a href="https://wiki.debian.org/BSP/2021/03/ca/Montreal">held a Bug Squashing Party</a> to try to fix some
bugs in the upcoming Debian Bullseye.</p>
<p>I wasn't convinced at first, but Tassia's contagious energy and willingness to
help organise the event eventually won me over. And — shockers! — it was
really fun.</p>
<p><img src="/media/blog/2021-03-29/group_photo.jpg" title="Group picture of the BSP attendees on Jitsi Meet" alt="Group picture of the BSP attendees on Jitsi Meet" height="80%" width="80%" style="margin-left: 10%;"></p>
<p>We fixed a couple …</p><p>Last weekend Debian Quebec <a href="https://wiki.debian.org/BSP/2021/03/ca/Montreal">held a Bug Squashing Party</a> to try to fix some
bugs in the upcoming Debian Bullseye.</p>
<p>I wasn't convinced at first, but Tassia's contagious energy and willingness to
help organise the event eventually won me over. And — shockers! — it was
really fun.</p>
<p><img src="/media/blog/2021-03-29/group_photo.jpg" title="Group picture of the BSP attendees on Jitsi Meet" alt="Group picture of the BSP attendees on Jitsi Meet" height="80%" width="80%" style="margin-left: 10%;"></p>
<p>We fixed a couple of <a href="http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=debian-release@lists.debian.org;tag=bsp-2021-03-ca-montreal">RC bugs</a>, held <a href="https://wiki.debian.org/BSP/2021/03/ca/Montreal#Lightning_talks">lightning talks</a> and had a
virtual pizza party!</p>
<p>My lightning talk on autopkgtests was well received and a few people decided to
migrate to <code>sbuild</code> and <a href="https://wiki.debian.org/sbuild#Using_autopkgtest">enable autopkgtests</a> by default.</p>
<p>Sergio's talk on <a href="https://blog.sergiodj.net/2021/03/05/a-debuginfod-service-for-debian.html">debuginfod</a> was incredibly interesting. I'm not a C
programmer and the live demo made me understand how this service can help
making debugging C easier.</p>
<p>Jerome's talk on using Yubikeys to unlock LUKS encrypted drives was also very
good! It also served as a reminder that Yubico's product are much more
featureful and convenient to use than other Open Hardware/ Free Software
hardware tokens. Hopefully that will change as enterprises like Nitrokey and
Solokey mature.</p>
<p>This was my third BSP, crazy how time flies... With the Bullseye release closing
in, you should try to <a href="https://wiki.debian.org/BSP#Upcoming_BSPs">join</a> or <a href="https://wiki.debian.org/HostingBSP">organise one</a>!</p>New Year, New OpenPGP Key2021-03-07T00:00:00-05:002021-03-07T00:00:00-05:00Louis-Philippe Véronneautag:veronneau.org,2021-03-07:/new-year-new-openpgp-key.html<pre>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Sun, 07 Mar 2021 13:00:17 -0500
I've recently set up a new OpenPGP key and will be transitioning away from my
old one.
It is a chance for me to start using a OpenPGP hardware token and to transition
to a new …</pre><pre>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Sun, 07 Mar 2021 13:00:17 -0500
I've recently set up a new OpenPGP key and will be transitioning away from my
old one.
It is a chance for me to start using a OpenPGP hardware token and to transition
to a new personal email address (my main public contact is still my
`@debian.org` address).
Please note that I've partially redacted some email addresses from this
statement to minimise the amount of spam I receive. It shouldn't be hard for
actual humans to follow the instructions below to find the complete addresses.
The old key will continue to be valid for a few months, but will eventually be
revoked.
You might know my old OpenPGP certificate as:
pub rsa4096/0x7AEAC4EC6AAA0A97 2014-12-22 [expires: 2021-06-02]
Key fingerprint = 677F 54F1 FA86 81AD 8EC0 BCE6 7AEA C4EC 6AAA 0A97
uid Louis-Philippe Véronneau <REDACTED@riseup.net>
uid Louis-Philippe Véronneau (alias) <REDACTED@riseup.net>
uid Louis-Philippe Véronneau (debian) <REDACTED@debian.org>
My new OpenPGP certificate is:
pub ed25519/0xE1E5457C8BAD4113 2021-03-06 [expires: 2022-03-06]
Key fingerprint = F64D 61D3 21F3 CB48 9156 753D E1E5 457C 8BAD 4113
uid Louis-Philippe Véronneau <REDACTED@veronneau.org>
uid Louis-Philippe Véronneau <REDACTED@debian.org>
These days, I mostly use my key for Debian and to sign git commit. I don't
really expect you to sign my new key if you had signed my old one.
I've published the new certificate on keys.openpgp.org as well as on my
personal website. You can fetch it like this:
$ wget -O- https://veronneau.org/media/openpgp.key | gpg --import
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCgAdFiEEZ39U8fqGga2OwLzmeurE7GqqCpcFAmBFFM8ACgkQeurE7Gqq
CpcuchAAscAeszdtA+TlCI4YvK5nlk+nJnCnNBSnl7Et+jiNjq8kB/Fud+dWMTXC
Zag8oJkalbbxub0BT0bEAn+BiBunu58E0gd0Xq4syTbqZ5o5IN17S/tfxCD0k1hf
ewrnYZ2l0i5g4YvHGKC+Xv4D+Z84BylnIRaXHqlUdluOVfVYDfLybOAqoktO/KUH
I+vQBwXj0Fr/QAtgiz5Nwh/YHFiU9xMSvr5ozRwAFs6+xfIqFHuVPRRkEN5iVo4D
kkMIz+kFfkoh4aWIP4dgAu39XnEgxwTR9J+4yE8TzCCMzO7xCK0X6vqgPAxYMPvb
RuP4FnGWOnGnlcudCUAUkOaryrwRi+dPQTnNICHTYsvVc7dg+W0EhVUkwEuuEwpI
qtcB/Y5AGhqK0Cc11uXiFjIQwLTgwcUez4F0xrGeqsTtAM5gyRup2w0jbocTuYSh
ZRv/2zwrq/S3xVrUYGqdT+L5odmkBzz9zOwY5WlU2H9CMFOdh71XOv9wWQXan9ou
hLRodeOQ8MinIBP+sX36ol1zg/aP7mCHvRRSBzWt7l3WhVxgZFpNwIfp/RZqU0R4
IEq48mntFhPvHJjFmAKLKK/ckzNMtSn+HWQPJV3HTInKCTu5PTNMU3SAvPHOHEps
V6WWSOPB+1Lm/tlIULDc+0SopWoiWO4NObCSs8zMZHlYPBk5x/KIdQQBFgoAHRYh
BMqnQAcHqBawIC/DzfQlelCyHPqFBQJgRRTPAAoJEPQlelCyHPqFFVEA/1qScaAk
O+eBEE4q0BaJDsqweCS1XCcuQGkQCKi5Zv6kAQChQ96Ve7cKbN/wRkT9pdIhmx01
+CmIsnp3k6N0ZYLLCg==
=onl0
-----END PGP SIGNATURE-----
</pre>dput-ng or: How I Learned to Stop Worrying and Love the Hooks2021-02-21T00:00:00-05:002021-02-21T00:00:00-05:00Louis-Philippe Véronneautag:veronneau.org,2021-02-21:/dput-ng-or-how-i-learned-to-stop-worrying-and-love-the-hooks.html<p>As my contributions to Debian continue to grow in number, I find myself
uploading to the archive more and more often.</p>
<p>Although I'm pretty happy with my current sbuild-based workflow, twice in the
past few weeks I inadvertently made a binary upload instead of a source-only
one.<sup id="fnref:thanks"><a class="footnote-ref" href="#fn:thanks">1</a></sup></p>
<p>As it …</p><p>As my contributions to Debian continue to grow in number, I find myself
uploading to the archive more and more often.</p>
<p>Although I'm pretty happy with my current sbuild-based workflow, twice in the
past few weeks I inadvertently made a binary upload instead of a source-only
one.<sup id="fnref:thanks"><a class="footnote-ref" href="#fn:thanks">1</a></sup></p>
<p>As it turns out, I am not the only DD who has had this problem before. As
Nicolas Dandrimont kindly pointed to me, <code>dput-ng</code> supports pre and post
upload hooks that can be used to lint your uploads. Even better, it also ships
with a <code>check-debs</code> hook that lets you block binary uploads.</p>
<p>Pretty neat, right? In a perfect world, enabling the hook would only be a matter
of adding it in the hook list of <code>/etc/dput.d/metas/debian.json</code> and using the
following defaults:</p>
<pre>
"check-debs": {
"enforce": "source",
"skip": false
},
</pre>
<p>Sadly, <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=983160">bug #983160</a> currently makes this whole setup more complex than
it should be and forces me to use two different <code>dput-ng</code> profiles pointing to
two different files in <code>/etc/dput.d/metas</code>: a default source-only one
(<code>ftp-master</code>) and a binary upload one (<code>ftp-master-binary</code>).</p>
<p>Otherwise, one could use a single profile that disallows binary uploads and when
needed, override the hook using something like this:</p>
<pre>
$ dput --override "check-debs.enforce=debs" foo_1.0.0-1_amd64.changes
</pre>
<p>I did start debugging the <code>--override</code> issue in <code>dput-ng</code>, but I'm not sure I'll
have time to submit a patch anytime soon. In the meantime, I'm happy to report I
shouldn't be uploading the wrong <code>.changes</code> file by mistake again!</p>
<div class="footnote">
<hr>
<ol>
<li id="fn:thanks">
<p>Thanks to Holger Levsen and Adrian Bunk for catching those and
notifying me. <a class="footnote-backref" href="#fnref:thanks" title="Jump back to footnote 1 in the text">↩</a></p>
</li>
</ol>
</div>puppetserver 6: a Debian packaging post-mortem2021-01-09T00:00:00-05:002021-01-09T00:00:00-05:00Louis-Philippe Véronneautag:veronneau.org,2021-01-09:/puppetserver-6-a-debian-packaging-post-mortem.html<p>I have been a Puppet user for a couple of years now, first at work, and
eventually for my personal servers and computers. Although it can have a steep
learning curve, I find Puppet both nimble and very powerful. I also prefer it
to Ansible for its speed and the …</p><p>I have been a Puppet user for a couple of years now, first at work, and
eventually for my personal servers and computers. Although it can have a steep
learning curve, I find Puppet both nimble and very powerful. I also prefer it
to Ansible for its speed and the agent-server model it uses.</p>
<p>Sadly, Puppet Labs hasn't been the most supportive upstream and tends to move
pretty fast. Major versions rarely last for a whole Debian Stable release and
the upstream <code>.deb</code> packages are full of vendored libraries.<sup id="fnref:openssl"><a class="footnote-ref" href="#fn:openssl">1</a></sup></p>
<p>Since 2017, Apollon Oikonomopoulos has been the one doing most of the work on
Puppet in Debian. Sadly, he's had less time for that lately and with Puppet 5
being deprecated in January 2021, Thomas Goirand, Utkarsh Gupta and I have been
trying to package Puppet 6 in Debian for the last 6 months.</p>
<p>With Puppet 6, the old ruby Puppet server using Passenger is not supported
anymore and has been replaced by <code>puppetserver</code>, written in Clojure and running
on the JVM. That's quite a large change and although <code>puppetserver</code> does reuse
some of the Clojure libraries <code>puppetdb</code> (already in Debian) uses, packaging it
meant quite a lot of work.</p>
<h2>Work in the Clojure team</h2>
<p>As part of my efforts to package <code>puppetserver</code>, I had the pleasure to join the
Clojure team and learn a lot about the Clojure ecosystem.</p>
<p>As I mentioned earlier, a lot of the Clojure dependencies needed for
<code>puppetserver</code> were already in the archive. Unfortunately, when Apollon
Oikonomopoulos packaged them, the <code>leiningen</code> build tool hadn't been packaged
yet. This meant I had to rebuild a lot of packages, on top of packaging some
new ones.</p>
<p>Since then, thanks to the efforts of Elana Hashman, <code>leiningen</code> has been
packaged and lets us run the upstream testsuites and create <code>.jar</code> artifacts
closer to those upstream releases.</p>
<p>During my work on <code>puppetserver</code>, I worked on the following packages:</p>
<details>
<summary>
List of packages
</summary>
<ul>
<li><code>backport9</code></li>
<li><code>bidi-clojure</code></li>
<li><code>clj-digest-clojure</code></li>
<li><code>clj-helper</code></li>
<li><code>clj-time-clojure</code></li>
<li><code>clj-yaml-clojure</code></li>
<li><code>cljx-clojure</code></li>
<li><code>core-async-clojure</code></li>
<li><code>core-cache-clojure</code></li>
<li><code>core-match-clojure</code></li>
<li><code>cpath-clojure</code></li>
<li><code>crypto-equality-clojure</code></li>
<li><code>crypto-random-clojure</code></li>
<li><code>data-csv-clojure</code></li>
<li><code>data-json-clojure</code></li>
<li><code>data-priority-map-clojure</code></li>
<li><code>java-classpath-clojure</code></li>
<li><code>jnr-constants</code></li>
<li><code>jnr-enxio</code></li>
<li><code>jruby</code></li>
<li><code>jruby-utils-clojure</code></li>
<li><code>kitchensink-clojure</code></li>
<li><code>lazymap-clojure</code></li>
<li><code>liberator-clojure</code></li>
<li><code>ordered-clojure</code></li>
<li><code>pathetic-clojure</code></li>
<li><code>potemkin-clojure</code></li>
<li><code>prismatic-plumbing-clojure</code></li>
<li><code>prismatic-schema-clojure</code></li>
<li><code>puppetlabs-http-client-clojure</code></li>
<li><code>puppetlabs-i18n-clojure</code></li>
<li><code>puppetlabs-ring-middleware-clojure</code></li>
<li><code>puppetserver</code></li>
<li><code>raynes-fs-clojure</code></li>
<li><code>riddley-clojure</code></li>
<li><code>ring-basic-authentication-clojure</code></li>
<li><code>ring-clojure</code></li>
<li><code>ring-codec-clojure</code></li>
<li><code>shell-utils-clojure</code></li>
<li><code>ssl-utils-clojure</code></li>
<li><code>test-check-clojure</code></li>
<li><code>tools-analyzer-clojure</code></li>
<li><code>tools-analyzer-jvm-clojure</code></li>
<li><code>tools-cli-clojure</code></li>
<li><code>tools-reader-clojure</code></li>
<li><code>trapperkeeper-authorization-clojure</code></li>
<li><code>trapperkeeper-clojure</code></li>
<li><code>trapperkeeper-filesystem-watcher-clojure</code></li>
<li><code>trapperkeeper-metrics-clojure</code></li>
<li><code>trapperkeeper-scheduler-clojure</code></li>
<li><code>trapperkeeper-webserver-jetty9-clojure</code></li>
<li><code>url-clojure</code></li>
<li><code>useful-clojure</code></li>
<li><code>watchtower-clojure</code></li>
</ul>
</details>
<p>If you want to learn more about packaging Clojure libraries and applications,
I rewrote the Debian Clojure <a href="https://wiki.debian.org/Clojure/PackagingTutorial">packaging tutorial</a> and added a section
about the quirks of using <code>leiningen</code> without a dedicated <code>dh_lein</code> tool.</p>
<h2>Work left to get puppetserver 6 in the archive</h2>
<p>Unfortunately, I was not able to finish the <code>puppetserver</code> 6 packaging work.
It is thus unlikely it will make it in Debian Bullseye. If the issues described
below are fixed, it would be possible to to package <code>puppetserver</code> in
<code>bullseye-backports</code> though.</p>
<p>So what's left?</p>
<h3>jruby</h3>
<p>Although I tried my best (kudos to Utkarsh Gupta and Thomas Goirand for the
help), <code>jruby</code> in Debian is still broken. It does build properly, but the
testsuite fails with multiple errors:</p>
<ul>
<li><code>ruby-psych</code> is broken (<a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=959571">#959571</a>)</li>
<li>there are some random java failures on a few tests (no clue why)</li>
<li>tests ran by <code>raklelib/rspec.rake</code> fail to run, maybe because the <code>--pattern</code>
command line option isn't compatible with our version of <code>rake</code>? Utkarsh seemed
to know why this happens.</li>
</ul>
<p><code>jruby</code> testsuite failures aside, I have not been able to use the <code>jruby.deb</code> the
package currently builds in <code>jruby-utils-clojure</code> (testsuite failure). I had the
same exact failure with the (more broken) <code>jruby</code> version that is currently in
the archive, which leads me to think this is a <code>LOAD_PATH</code> issue in
<code>jruby-utils-clojure</code>. More on that below.</p>
<p>To try to bypass these issues, I <a href="https://salsa.debian.org/clojure-team/jruby-utils-clojure/-/commit/1499fcf367887442bf5848470458f2be02e21907">tried to <em>vendor</em></a> <code>jruby</code> into
<code>jruby-utils-clojure</code>. At first I understood <em>vendoring</em> meant including
upstream pre-built artifacts (<code>jruby-complete.jar</code>) and shipping them directly.</p>
<p>After talking with people on the <code>#debian-mentors</code> and <code>#debian-ftp</code> IRC
channels, I now understand why this isn't a good idea (and why it's not
permitted in Debian). Many thanks to the people who were patient and kind enough
to discuss this with me and give me alternatives.</p>
<p>As far as I now understand it, <em>vendoring</em> in Debian means "to have an embedded
copy of the source code in another package". Code shipped that way still needs
to be built from source. This means we need to build <code>jruby</code> ourselves, one way
or another. <em>Vendoring</em> <code>jruby</code> in another package thus isn't terribly helpful.</p>
<p>If fixing <code>jruby</code> the proper way isn't possible, I would suggest trying to
build the package using embedded code copies of the external libraries <code>jruby</code>
needs to build, instead of trying to use the Debian libraries.<sup id="fnref:ruby2.5"><a class="footnote-ref" href="#fn:ruby2.5">2</a></sup> This
should make it easier to replicate what upstream does and to have a final
<code>.jar</code> that can be used.</p>
<h3>jruby-utils-clojure</h3>
<p>This package is a first-level dependency for <code>puppetserver</code> and is the glue
between <code>jruby</code> and <code>puppetserver</code>.</p>
<p>It builds fine, but the testsuite fails when using the Debian <code>jruby</code> package. I
think the problem is caused by a <code>jruby</code> <code>LOAD_PATH</code> issue.</p>
<p>The Debian <code>jruby</code> package plays with the <code>LOAD_PATH</code> a little to try use
Debian packages instead of downloading gems from the web, as upstream <code>jruby</code>
does. This seems to clash with the <code>gem-home</code>, <code>gem-path</code>, and
<code>jruby-load-path</code> variables in the <code>jruby-utils-clojure</code> package. The testsuite
plays around with these variables and some Ruby libraries can't be found.</p>
<p>I tried to fix this, but failed. Using the upstream <code>jruby-complete.jar</code> instead
of the Debian <code>jruby</code> package, the testsuite passes fine.</p>
<p>This package could clearly be uploaded to NEW right now by ignoring the
testsuite failures (we're just packaging static <code>.clj</code> source files in the
proper location in a <code>.jar</code>).</p>
<h3>puppetserver</h3>
<p><code>jruby</code> issues aside, packaging puppetserver itself is 80% done. Using the
upstream <code>jruby-complete.jar</code> artifact, the testsuite fails with a weird
Clojure error I'm not sure I understand, but I haven't debugged it for very
long.</p>
<p>Upstream uses git submodules to vendor puppet (agent), hiera (3), facter and
puppet-resource-api for the testsuite to run properly. I haven't touched that,
but I believe we can either:</p>
<ul>
<li>link to the Debian packages</li>
<li>fix the Debian packages if they don't include the right files (maybe in a new
binary package that just ships part of the source code?)</li>
</ul>
<p>Without the testsuite actually running, it's hard to know what files are needed
in those packages.</p>
<h2>What now</h2>
<p><strong>Puppet 5 is now deprecated.</strong></p>
<p>If you or your organisation cares about Puppet in Debian,<sup id="fnref:care"><a class="footnote-ref" href="#fn:care">3</a></sup> <code>puppetserver</code>
really isn't far away from making it in the archive.</p>
<p>Very talented Debian Developers are always eager to work on these issues and
can be contracted for very reasonable rates. If you're interested in
contracting someone to help iron out the last issues, don't hesitate to reach
out via one of the following:</p>
<ul>
<li>the <a href="https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/pkg-puppet-devel">debian-puppet</a> mailing list</li>
<li>the <a href="https://lists.debian.org/debian-jobs/">debian-jobs</a> mailing list</li>
<li>the <a href="https://www.debian.org/consultants/index.html">Debian Consultants index</a></li>
<li><a href="https://www.fossjobs.net/">fossjobs.net</a></li>
</ul>
<p>As for I, I'm happy to say I got a new contract and will go back to teaching
Economics for the Winter 2021 session. I might help out with some general Debian
packaging work from time to time, but it'll be as a hobby instead of a job.</p>
<h2>Thanks</h2>
<p>The work I did during the last 6 weeks would be not have been possible without
the support of the Wikimedia Foundation, who were gracious enough to contract
me. My particular thanks to Faidon Liambotis, Moritz Mühlenhoff and John Bond.</p>
<p>Many, many thanks to Rob Browning, Thomas Goirand, Elana Hashman, Utkarsh Gupta
and Apollon Oikonomopoulos for their direct and indirect help, without which
all of this wouldn't have been possible.</p>
<div class="footnote">
<hr>
<ol>
<li id="fn:openssl">
<p>For example, the upstream package for the Puppet Agent vendors
OpenSSL. <a class="footnote-backref" href="#fnref:openssl" title="Jump back to footnote 1 in the text">↩</a></p>
</li>
<li id="fn:ruby2.5">
<p>One of the problems of using Ruby libraries already packaged in
Debian is that <code>jruby</code> currently only supports Ruby 2.5. Ruby libraries in
Debian are currently expected to work with Ruby 2.7, with the transition to
Ruby 3.0 planned after the Bullseye release. <a class="footnote-backref" href="#fnref:ruby2.5" title="Jump back to footnote 2 in the text">↩</a></p>
</li>
<li id="fn:care">
<p>If you run Puppet, you clearly should care: the <code>.deb</code> packages
upstream publishes really aren't great and I would not recommend using them. <a class="footnote-backref" href="#fnref:care" title="Jump back to footnote 3 in the text">↩</a></p>
</li>
</ol>
</div>A better git diff2020-11-17T00:00:00-05:002020-11-17T00:00:00-05:00Louis-Philippe Véronneautag:veronneau.org,2020-11-17:/a-better-git-diff.html<p>A few days ago I wrote a quick patch and missed a dumb mistake that made the
program crash. When reviewing the merge request on Salsa, the problem became
immediately apparent; Gitlab's diff is much better than what <code>git diff</code> shows by
default in a terminal.</p>
<p>Well, it turns out …</p><p>A few days ago I wrote a quick patch and missed a dumb mistake that made the
program crash. When reviewing the merge request on Salsa, the problem became
immediately apparent; Gitlab's diff is much better than what <code>git diff</code> shows by
default in a terminal.</p>
<p>Well, it turns out <a href="https://github.blog/2016-06-13-git-2-9-has-been-released/">since version 2.9</a>, git bundles a better pager,
<code>diff-highlight</code>. <em>À la</em> Gitlab, it will highlight what changed in the line.</p>
<p><img src="/media/blog/2020-11-17/diff.png" width="70%" style="margin-left:15%" title="The output of git diff using diff-highlight" alt="The output of git diff using diff-highlight"></p>
<p>Sadly, even though <code>diff-highlight</code> comes with the git package in Debian, it is
not built by default <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=925288">(925288)</a>. You will need to:</p>
<pre>
$ sudo make --directory /usr/share/doc/git/contrib/diff-highlight
</pre>
<p>You can then add this line to your <code>.gitconfig</code> file:</p>
<pre>
[core]
pager = /usr/share/doc/git/contrib/diff-highlight/diff-highlight | less --tabs=4 -RFX
</pre>
<p>If you use <code>tig</code>, you'll also need to add this line in your <code>tigrc</code>:</p>
<pre>
set diff-highlight = /usr/share/doc/git/contrib/diff-highlight/diff-highlight
</pre>