You are here

Bits from Debian

Subscribe to Feed Bits from Debian
Planet Debian -
Përditësimi: 1 ditë 23 orë më parë

Jaldhar Vyas: My Brexit Joke

Mër, 06/11/2019 - 12:36pd

As it is Bonfire Night (aka Guy Fawkes Night) and I might not get another chance to tell it given recent events, without further ado I present my Brexit joke.

Race relations in Britain have improved tremendously in recent years for Blacks and Asians but sadly bigots have a new target: the large number of people who have recently emigrated from Eastern Europe. Why Boris Johnson only made a pierogi in Parliament and one and half million people signed a petition to stop him.

There you have it, my Brexit joke. Thankyou very much and goodnight!

Norbert Preining: SUSI.AI Smart Speaker release 20191105

Mar, 05/11/2019 - 12:49md

After long and painful times due to the switch to buster, we at the FOSSASIA Team finally can release a new stable build of SUSI.AI for our RaspberryPi based smart speaker.

SUSI.AI aims at bringing a privacy aware personal assistant onto all of your devices. It runs on Android phones, desktop computers, and RaspberryPi based smart speakers. With the switch to Debian/buster, a lot of problems creeped in and the main application became extremely unstable, crashing in libportaudio2 with very unclear symptoms. Thanks to hint by Felix Yan we were able to fix libportaudio2 locally, and finally got a working and stable image.

During the last summer, a great team of GSoC students have worked on SUSI.AI in general, and on the smart speaker in particular. At the moment SUSI.AI can be installed onto RaspberryPi as well as any Debian based distribution (in particular Debian/buster and Ubuntu 19.04 upward). Core components of the SUSI.AI system are:

  • SUSI Server: the brain of the SUSI.AI system, which interprets questions and provides answers using a variety of built-in and user-created skills (Java)
  • SUSI Linux: the frontend for desktops and raspberry pis, listening to hotwords, and using speech-to-text to convert to text, querying the SUSI Server, and responding via text-to-speech conversion on the smart speaker (Python)
  • SUSI Skills: User editable skill database, where writing new skills is as easy as editing Wiki pages

plus a lot of setup, update, sync daemons.

After downloading the image and flashing it onto a sufficiently large SD card (at least 4Gb) via:

unxz susibian-20191105.img.xz sudo dd if=susibian-20191105.img of=/dev/XXX bs=4M conv=fsync

(note that the device /dev/XXX needs to be adjusted for your SD card reader!), further setup is explained in this document. We are working on improving the documentation!

We hope by liberating the personal assistant market from the privacy-ignorant Google and Amazon forces, users will gain more freedom to choose and freedom to share, and freedom to create!

We are looking forward to feedback and suggestions, improvements, pull request! Please send either issues to one of the git repositories, or join us at one of the gitter channels (susi_hardware, susi_server, susi_android, susi_webclient, or generally at fossasia)!

Russ Allbery: Review: Cold Steel

Mar, 05/11/2019 - 5:48pd

Review: Cold Steel, by Kate Elliott

Series: Spiritwalker #3 Publisher: Orbit Copyright: June 2013 ISBN: 0-316-21515-5 Format: Kindle Pages: 597

Cold Steel is the third book in the closely-linked Spiritwalker trilogy. This is one long, sprawling story rather than separable books. If you want to read it, start with Cold Magic, and beware of spoilers for Cold Fire in even cursory descriptions of Cold Steel.

Cold Steel opens with Cat in the hot Caribbean, where most of Cold Fire was set, but does not stay there. This is a proper end to the trilogy and wraps up all the loose ends: the peril Andevai was left in after the semi-cliffhanger ending of Cold Fire, the conflict over governance in Europe, the power of the cold mage Houses, the politics of the radicals, the conflict between cold and fire magic, Bee's entanglements in the Caribbean, Camjiata's war of conquest, and of course the Wild Hunt. There's a lot of plot to finish.

Somewhat unfortunately, what Cold Steel also contains in large quantity is Andevai being an idiot, Cat and Andevai failing to communicate for new (but dumb) reasons, and one of the characters developing into a full-blown arch-villain.

This is a series with a fascinating premise (a very complex alternate history with dragons, magic, humanoid dinosaurs, and a very odd sort of elven court) that I wanted to be a political drama but that the author wrote primarily as a romance. This is not entirely the author's fault; it's a serviceable romance if you enjoy two vastly stubborn people butting heads, falling in love, discovering that being in love doesn't prevent them from butting heads, and finally reaching some hard-fought compromises. But I thought the romance was the least interesting (and least original) thing that was happening in this series and wanted to get it over with so that the series could move on to the more interesting bits, and that opinion was not shared by the author.

The part that caught my attention, as noted in my review of Cold Fire, is the political cause of radicalism and egalitarianism. The history varies wildly from ours, but the politics are clearly late French Revolution writ large (without the church, which is interesting): princes and cold mages colluding to maintain an aristocratic, almost feudal order, resented by laborers and political radicals who are trying to form new governments of equality and to undermine historical privilege and systems of indenture. Into that mix, Elliott drops Camjiata, a brilliantly ambiguous figure who is this world's Napoleon. He uses the radicals, speaks on their terms, and claims to fight for equality, but he personally wants to conquer Europe and bring back the glories of the Roman Empire. He's a strategic genius, one of the smartest people in the book (that's a difficult characterization to write well and Elliott does a good job), but his agenda isn't that of the protagonists or, really, anyone else. Elliott gives the impression of Camjiata as something that happens to Europe more than a force that comes out of the politics everyone else cares about, which I found intriguing throughout the series.

Unfortunately, despite radicalism's central role in the plot and despite Cat's sister Bee finding an unexpected but believable place for herself as a leader, the politics don't go anywhere satisfying. There is little resolution for Europe here, just some personal impact for Andevai and Cat and a parallel mythical plot line with the Wild Hunt that I thought was a bit too obvious (although the resolution of it is satisfying). A series that wrestled with the political complexities of defining radicalism as a constructive form of government instead of an opposition resistance force (the shoal that, to simplify greatly, the real French Revolution ran aground on) would have been messy and challenging to write, but that was the book I wanted to read. Cold Steel alas turns somewhat away from that to personalize the problems and solve them primarily in the realms of magic and romance.

The other difficulty with this final book is that it's structurally a mess. There are too many loose ends to weave together, which results in some odd pacing and story structure. The book starts as a continuation of Cold Fire, involving Caribbean politics and magic, and builds up to a climax with the fairy world a third of the way into the book. Then comes a quiet interlude with Cat and Andevai that stumbles into a pacing gap where Cat is unhappy but not communicating, Andevai is ignoring her, no forward progress is made on the major plots of the novel, and there is a lot of frustrating talking. Pacing for the rest of the book comes in fits and starts, building up to a weirdly unsatisfying war and turning the broader politics of the series into a too-simplistic arc of personal animus, mustache-twirling evil, and magical penis-measuring. Even the ending, although eventually satisfying, provides another excuse for Cat to not talk to people about things that are important.

I'm probably making this sound worse than it is. I am glad I read the whole series. It's hugely ambitious and succeeds in being something different than the typical fantasy trilogy. The world background is one of the most creative I've seen, and if I found the politics unsatisfying in the end, that's only because Elliott attempted something far more ambitious and radical than most fantasy will go near. I think the first book was the strongest and the series sputtered to a conclusion, but it is a proper and satisfying conclusion and both Cat and Andevai, by the end of the series, are characters I enjoy spending time with.

Cold Steel by itself is a bit of a mess, but I still recommend the series as a whole, as long as you're in the mood for something long and complicated and not completely successful.

Rating: 6 out of 10

Julien Danjou: Finding definitions from a source file and a line number in Python

Hën, 04/11/2019 - 11:21pd

My job at Datadog keeps me busy with new and questioning challenges. I recently stumbled upon a problem that sounded easy but was more difficult than I imagined.

Here's the thing: considering a filename and a line number, can you tell which function, method or class this line of code belongs to?

I started to dig into the standard library, but I did not find anything solving this problem. It sounded like I had to write this myself.

The first steps sound easy. Open a file, read it, find the line number. Right.

Then, how do you know which functions this line is in? You don't, expect if you parse the whole file and keep tracks of function definitions. A regular expression parsing each line might be a solution?

Well, you had to be careful as function definitions can span multiple lines.

Using the AST

I decided that a good and robust strategy was not going to use manual parsing or the like, but using Python abstract syntax tree (AST) directly. By leveraging Python's own parsing code, I was sure I was not going to fail while parsing a Python source file.

This can be simply be accomplished with:

import ast def parse_file(filename): with open(filename) as f: return ast.parse(, filename=filename)

And you're done. Are you? No, because that only works in 99.99% of the case. If your source file is using an encoding that is now ASCII or UTF-8, then the function fails. I know you think I'm crazy to think about this but I like my code to be robust.

It turns out Python has a cookie to specify the encoding in the form of # encoding: utf-8 as defined in PEP 263. Reading this cookie would help to find the encoding.

To do that, we need to open the file in binary mode, use a regular expression to match the data, and… Well, it's dull, and somebody already implemented it for us so let's use the fantastic function provided by Python:

import ast import tokenize def parse_file(filename): with as f: return ast.parse(, filename=filename)

That should work in 100% of the time. Until proven otherwise.

Browsing the AST

The parse_file function now returns a Python AST. If you never played with Python AST, it's a gigantic tree that represents your source code just before it is compiled down to Python bytecode.

In the tree, there should be statements and expression. In our case, we're interested in finding the function definition that is the closest to our line number. Here's an implementation of that function:

def filename_and_lineno_to_def(filename, lineno): candidate = None for item in ast.walk(parse_file(filename)): if isinstance(item, (ast.FunctionDef, ast.AsyncFunctionDef, ast.ClassDef)): if item.lineno > lineno: # Ignore whatever is after our line continue if candidate: distance = lineno - item.lineno if distance < (lineno - candidate.lineno): candidate = item else: candidate = item if candidate: return

This iterates over all the node of the AST and returns the node where the line number is the closest to our definition. If we have a file that contains:

class A(object): X = 1 def y(self): return 42

the function filename_and_lineno_to_def returns for the lines 1 to 5:

A A y y yReturn of filename_and_lineo_to_def for lines 1 to 5

It works!


The naive approach described earlier likely works for 90% of your code, but there are some edge cases. For example, when defining function closures, the above algorithm fails. With the following code:

class A(object): X = 1 def y(self): def foo(): return 42 return foo

the function filename_and_lineno_to_def returns for lines 1 to 7:

A A y foo foo foo fooReturn of filename_and_lineo_to_def for lines 1 to 7

Oops. Clearly, lines 6 and 7 do not belong to the foo function. Our approach is too naive to see that starting at line 6, we're back in the y method.

Interval Trees

The correct way of handling that is to consider each function definition as an interval:

Piece of code seen as interval.

Whatever the line number we request is, we should return the node that is responsible for the smallest interval that the line is in.

What we need in this case is a correct data structure to solve our problem: an interval tree fits perfectly our use case. It allows for searching rapidly pieces of code that match our line number.

To solve our problem we need several things:

  • A way to compute the beginning and end line numbers for a function.
  • A tree that is fed with the intervals we computed just before.
  • A way to select the best matching intervals if a line is part of several functions (closure).
Computing Function Intervals

The interval of a function is the first and last lines that compose its body. It's pretty easy to find those by walking through the function AST node:

def _compute_interval(node): min_lineno = node.lineno max_lineno = node.lineno for node in ast.walk(node): if hasattr(node, "lineno"): min_lineno = min(min_lineno, node.lineno) max_lineno = max(max_lineno, node.lineno) return (min_lineno, max_lineno + 1)

Given any AST node, the function returns a tuple of the first and last line number of that node.

Building The Tree

Rather than implementing an interval tree, we'll use the intervaltree library. We need to create a tree and feed it with the computed interval:

def file_to_tree(filename): with as f: parsed = ast.parse(, filename=filename) tree = intervaltree.IntervalTree() for node in ast.walk(parsed): if isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef, ast.ClassDef)): start, end = _compute_interval(node) tree[start:end] = node return tree

Here you go: the function parses the Python file passed as an argument and converts it to its AST representation. It then walks it and feeds the interval tree with every class and function definition.

Querying the Tree

Now that the tree is built, it should be queried with the line number. This is pretty simple:

matches = file_to_tree(filename)[lineno] if matches: return min(matches, key=lambda i: i.length())

The build tree might return several matches if there are several intervals containing our line number. In that case, we pick the smallest interval and return the name of the node — which is our class or function name!

Mission Success

We did it! We started with a naive approach and iterated to a final solution covering 100% of our cases. Picking the right data structure, interval trees here, helped us solving this in an intelligent approach.

Ben Hutchings: Debian LTS work, October 2019

Dje, 03/11/2019 - 11:54md

I was assigned 22.75 hours of work by Freexian's Debian LTS initiative. I worked almost all those hours this month, but will carry over 0.5 hours to November.

I prepared and, after review, released Linux 3.16.75, including various important fixes. I then rebased the Debian package onto that, and sent out a request for testing. I prepared and sent out Linux 3.16.76-rc1 for review.

I handled a misdirected request to update the tzdata package, adding that and the related Perl library to the dla-needed.txt file. I responded to a support request regarding Intel microcode updates for security issues. I also spent some time working on security issues that are still under embargo.

Chris Lamb: Tour d'Orwell: No. 1 South End Road

Dje, 03/11/2019 - 8:26md

In yet one more George Orwell-themed outing, No. 1 South End Road in South Hampstead in north London is the former location of the bookshop that George Orwell worked at from 1934-1935.

He would write rather touchingly about his experiences in an essay titled Bookshop Memories where he, inter alia, described it as a place patronised by those who…

… would be a nuisance anywhere, but have special opportunities in a bookshop.

And in a further comment that has modern day echoes in Netflix, iPlayer and friends:

In a lending library you see people's real tastes, not their pretended ones.

I was meeting with fellow Blairite — Eric…! — to whom I was finally able to gift a copy of Burmese Days that I had acquired in Southwold, the Suffolk village in which he wrote it.

In a nod to Orwell's multiculturalism today the bookshop is now a (Belgian) «Le Pain Quotidien» and big glass windows ensure it is no longer a "gloomy cave of a place." I had a fairly passable and somewhat ironic shakshuka, something that Orwell himself might have sampled whilst residing in Marrakech...

Urvika Gola: Grace Hopper Celebration’19, Orlando

Dje, 03/11/2019 - 7:48md

The first week of October 2019, which happens to be my Birthday as well, I got an opportunity to attend Grace Hoppers Conference.

Being in there with 26,000 other women in tech at the same place was thrilling, overwhelming and quite tiring at the same time. I say tiring because of the 2 hours wait in the long queues just to pick up a paper-badge and later for Keynotes, regular sessions, food, even to get a picture with the great GHC signboard. Waking up at 5 am and going to the convention center to pick my badge is a story for another day..

Intel Women In Tech at GHC #IamIntel

About Grace Hoppers Celebration (GHC) – It’s the world’s largest gathering of Women and other underrepresented groups in Computing / Technology. This year they had a massive 26 thousand amazing and lively group of individuals attending GHC. I got to know about the conference when I was pursuing my Bachelors, GHC-India version of it which of course happens in India every year. I was selected as a Student Scholar for GHC-India. Honestly, I always wanted to be a part of GHC and meet like-minded people sharing different yet similar challenges to be a part of Technology.

This year GHC happened in Orlando, Florida at Orange County Convention Center from 1st – 4th October 2019.

The conference kickstarted with inspiring Keynote sessions and awards. This year’s GHC theme was “We will..” and you could fill in your own interpretation in what ways the statement could be filled.

One of the topics of discussion I really liked was igniting the genius in every child using technology to bring the best quality education to communities around the world, especially the most underserved.

When this video was previewed at GHC keynote, It quite literally gave me goosebumps seeing high school kids talking about what solutions they wish to build via technology. I was pondering on the very insistence by society and all the hype about “Growing up” and doing wonders while we could still do wonders without growing up.

Unfortunately, all the sessions of GHC are not recorded. There were sessions that were happening in parallel, equally interesting and then you have to make this choice of just watching either of them. It’s a pain but that’s how it is. Well, you can still watch some of the keynotes here, which is great!

One of my favorite keynote session amongst the many was by Dr. Fei Fei Lee where she talked about the remarks she received from her admiring colleagues about her idea about image-net, Now, it has a key contribution towards Deep Learning revolution and foundation for the way Machine Learning projects are developed.  She said “It is okay to feel small but together we can be big enough to accomplish anything” and it takes conviction to find your circle.

One unexpected performance which gave everyone chills was themed as how women in tech we have been told false narrative who we are and what we can do. Together we will flip the script and change the status quo. It was uber cool and inspiring to watch this performance. Few snapshots below.



I was looking forward to the keynote by Aicha Evans. She was one of my most admired women in tech in a leadership role. She talked about her vision and necessity for Autonomous Mobility. She concluded by mentioning the famous proverb.

“If you want to go FAST, go ALONE.  If you want to go FAR, go TOGETHER. ”

It’s always a good feeling to meet Outreachy people, I met one of a former Outreachy Intern, we both interned during the same round under the same org, Debian.

It was lovely meeting one of #outreachy alum under Debian and a friend @siamezzze at #GHC19. @outreachy #debian #debianoutreach

— Urvika Gola (@UrvikaGola) October 4, 2019

Intel’s been a proud supporter for GHC for years and has a strong presence at GHC.

Intel’s Hiring Booth at GHC



Intel is committed to advancing the uses of AI that most positively impact the world. The hardware, software, and algorithms that we create and utilize on a daily basis can help identify children at risk of exploitation, improve medical diagnosis, and protect our natural resources. Intel is passionate about equalizing AI resources, capabilities, and services to benefit all. Source – AI4Good

Few products we put out there as a part of Technology Showcase at GHC:-

Intel’s AI TrailGaurd Camera

  • Non-profit RESOLVE’s* new TrailGuard AI* camera uses Intel-powered artificial intelligence technology to detect poachers entering Africa’s wildlife reserves and alert park rangers in near real-time so poachers can be stopped before killing endangered animals.
  • As per stats, 25k – 35k elephants killed annually for their ivory, every day a Rhino is poached for its horn. Lions have lost 43% of their population over the past 20 years. While many of these animals live on protected reserves, the areas are vast, the infrastructure limited and park ranger resources spread thin that it is difficult to stop poachers before they kill.
  • TrailGuard AI builds on anti-poaching prototypes funded by Leonardo DiCaprio Foundation and National Georaphic Society.
  • Find more details here ->

Intel’s Volumetric Capture

  • Since Intel has moved its dial from PC-centric to Data-centric, Intel continues to position itself as the leader in immersive media across key segments including sports and entertainment.
  • Scenes inside the dome from all directions at once, a technique called “volumetric capture.”
  • Data captured by each camera is shaped into voxels (think 3D pixels), which render the virtual environment in multi-perspective 3D.
  • It allows audiences to view a scene from any angle – even the middle of the action.
    This Grease piece was captured at the world’s largest volumetric stage – Intel Studios.
  • Find more details here ->

At the end of it, attending GHC was truly an extraordinary experience. I felt grateful to be a part of the celebration. Thanks to my employer – Intel and Intel’s team for the opportunity.

Jonathan Carter: Free Software Activities (2019-10)

Dje, 03/11/2019 - 7:18md

Bits and pieces

AIMS Desktop talk: On the 1st of October I gave a talk at AIMS titled “Why AIMS Desktop?” where I talked about the Debian-based system we use at AIMS, and went into some detail about what Linux is, what Debian is, and why it’s used within the AIMS network. I really enjoyed the reaction from the students and a bunch of them are interested in getting involved directly with Debian. I intend to figure out a way to guide them into being productive community members without letting it interfere with their academic program.

Catching up with Martin: On the 12th of October I had lunch with Martin Michlmayr. Earlier this year we were both running for DPL, which was an interesting experience and the last time we met neither of us had any intentions to do so. This was the first time we talked in person since then and it was good reflecting over the last year and we also talked about a bunch of non-Debian stuff.

Cover art of our band?

Activity log

2019-10-08: Upload package bundlewrap (3.7.0-1) to Debian unstable.

2019-10-08: Upload package calamares (3.2.14-1) to Debian unstable.

2019-10-08: Sponsor package python3-fastentrypoints (0.12-2) for Debian unstable (Python team request).

2019-10-08: Sponsor package python3-cheetah (3.2.4-1) for Debian unstable (Python team request).

2019-10-14: Upload package calamares (3.2.15-1) to Debian unstable.

2019-10-14: Upload package kpmcore (4.0.1-1) to Debian unstable.

2019-10-14: Upload package gnome-shell-extension-disconnect-wifi (21-1) to Debian unstable.

2019-10-15: Upload package partitionmanager (4.0.0-1) to Debian unstable.

2019-10-15: Sponsor package python-sabyenc (3.3.6-1) for Debian unstable (Python team request).

2019-10-15: Sponsor package python-jaraco.functools (2.0-1) for Debian unstable (Python team request).

2019-10-15: Sponsor package python3-gntp (1.0.3-1) for Debian unstable (Python team request).

2019-10-15: Review package python3-portend (2.5-1) (Not yet ready) (Python team request).

2019-10-15: Review package python3-tempora (1.14.1) (Net yet ready) (Python team request))

2019-10-15: Upload package python3-flask-silk (0.2-15) to Debian unstable.

2019-10-15: Upload package tuxpaint (0.9.24~git20190922-f7d30d-1~exp2) to Debian experimental.

2019-10-15: Upload package python3-flask-silk (0.2-16) to Debian unstable.

2019-10-16: Upload package gnome-shell-extension-multi-monitors (19-1) to Debian unstable.

2019-10-16: Upload package python3-flask (0.6.2-5) to Debian unstable.

2019-10-16: Sponsor package buildbot (2.4.1-1) for Debian unstable (Python team request).

2019-10-16: Signed/sent keys from DebConf19 KSP.

2019-10-17: Publish blog entry “Calamares plans for Debian 11“.

2019-10-17: Upload package kpmcore (4.0.1-2) to Debian unstable (Thanks to Alf Gaida for the merge request with fixes) (Closes: #942522, #942528, #942512).

2019-10-22: Sponsor package membernator (1.1.0-1) for Debian unstable (Python team request).

2019-10-22: Sponsor package isbg (2.1.5-1) for Debian unstable (Python team request).

2019-10-22: Sponsor package python-pluggy (0.13.0-1) for Debian unstable (Python team request).

2019-10-22: Sponsor package python-pyqt5chart (5.11.3+dfsg-2) for Debian unstable (Python team request).

2019-10-23: Upload package tetzle (2.1.4+dfsg1-3) to Debian unstable.

2019-10-23: Upload package partitionmanager (4.0.0-2) to Debian unstable.

2019-10-24: Upload package tetzle (2.1.5+dfsg1-1) to Debian unstable.

2019-10-24: Upload package xabacus (8.2.2-1) to Debian unstable.

2019-10-24: Review package (fpylll) (Needs some more work) (Python team request).

2019-10-28: Upload package gnome-shell-extension-dash-to-dock (25-1) to Debian unstable.

Thorsten Alteholz: My Debian Activities in October 2019

Dje, 03/11/2019 - 4:27md

FTP master

This month I accepted 257 packages and rejected 17. The overall number of packages that got accepted was 314.

Debian LTS

This was my sixty fourth month that I did some work for the Debian LTS initiative, started by Raphael Hertzog at Freexian.

This month my all in all workload has been 22.75h. During that time I did LTS uploads of:

    [DLA 1969-1] file security update for one CVE
    [DLA 1971-1] libarchive security update for one CVE
    [DLA 1972-1] mosquitto security update for four CVEs
    [DLA 1974-1] proftpd-dfsg security update for one CVE
    [DLA 1975-1] spip security update for four CVEs
    [DSA-4557-1] libarchive security update for three CVEs in Stretch and one CVE in Buster

I also started to work on tiff.

Last but not least I did some days of frontdesk duties.

Debian ELTS

This month was the seventeenth ELTS month.

During my allocated time I uploaded:

  • ELA-181-1 of blktrace
  • ELA-182-1 of file
  • ELA-184-1 of libarchive

I also had a look at wireshark and ncurses but did not do an upload yet.

I also did some days of frontdesk duties.

Other stuff

This month I uploaded new upstream versions of …

I improved packaging of …

Steinar H. Gunderson: Chess960 opening recalculation

Dje, 03/11/2019 - 3:00md

Congratulations to Wesley So as the very first official Chess960 world champion!

A while back, I set Stockfish to analyze every opening position in Chess960 (also knows as Fischer Random chess, or Fischerandom, or several other names). For the World Championship, I redid this analysis with a newer version of Stockfish to higher depths (d41 on most positions, d42 on others)—and this time, I kept the PV. (I also fixed a fairly important bug; thanks to Peter Heine Nielsen for spotting it.)

You can find the updated version at It completely supersedes the old one.

Russell Coker: KMail Crashing and LIBGL

Dje, 03/11/2019 - 1:39pd

One problem I’ve had recently on two systems with NVideo video cards is KMail crashing (SEGV) while reading mail. Sometimes it goes for months without having problems, and then it gets into a state where reading a few messages (or sometimes reading one particular message) causes a crash. The crash happens somewhere in the Mesa library stack.

In an attempt to investigate this I tried running KMail via ssh (as that precludes a lot of the GL stuff), but that crashed in a different way (I filed an upstream bug report [1]).

I have discovered a workaround for this issue, I set the environment variable LIBGL_ALWAYS_SOFTWARE=1 and then things work. At this stage I can’t be sure exactly where the problems are. As it’s certain KMail operations that trigger it I think that’s evidence of problems originating in KMail, but the end result when it happens often includes a kernel error log so there’s probably a problem in the Nouveau driver. I spent quite a lot of time investigating this, including recompiling most of the library stack with debugging mode and didn’t get much of a positive result. Hopefully putting it out there will help the next person who has such issues.

Here is a list of environment variables that can be set to debug LIBGL issues (strangely I couldn’t find documentation on this when Googling it). If you are stuck with a problem related to LIBGL you can try setting each of these to “1” in turn and see if it makes a difference. That can either be for the purpose of debugging a problem or creating a workaround that allows you to run the programs you need to run. I don’t know why GL is required to read email.


Related posts:

  1. LUV Hardware Library after 20 Months 20 months ago I started the LUV Hardware Library [1]....
  2. Mplayer, Squeeze, and SE Linux on i386 I’ve just updated my SE Linux repository for Squeeze to...
  3. Executable Stacks in Lenny One thing that I would like to get fixed for...

Dirk Eddelbuettel: binb 0.0.5: More improvements

Sht, 02/11/2019 - 1:25md

The fifth release of the binb package just arrived on CRAN. binb regroups four rather nice themes for writing LaTeX Beamer presentations much more easily in (R)Markdown. As a teaser, a quick demo combining all four themes follows; documentation and examples are in the package.

This release contains some nice extensions to the Monash theme by Rob Hyndman]( You can see the a longer demo in this pdf and the extended options (i.e. for titlepage) in this pdf. David Selby also correct a minor internal wart in Presento.

Changes in binb version 0.0.5 (2019-11-02)
  • The Monash theme was updated with new titlepage and font handling and an expanded demo (Rob in #20).

  • The presento theme is now correctly labeled as exported (David Selby in #22).

  • The two Monash demos are now referenced from (Dirk).

CRANberries provides a summary of changes to the previous version. For questions or comments, please use the issue tracker at GitHub.

If you like this or other open-source work I do, you can now sponsor me at GitHub. For the first year, GitHub will match your contributions.

This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.

Steve Kemp: Keeping a simple markdown work-log, via emacs

Pre, 01/11/2019 - 5:00md

For the past few years I've been keeping a work-log of everything I do. I don't often share these, though it is sometimes interesting to be able to paste into a chat-channel "Oh on the 17th March I changed that .."

I've had a couple of different approaches but for the past few years I've mostly settled upon emacs ~/ I just create a heading for the date and I'm done:

# 10-03-2019 * Did a thing. * See this link * Did another thing. ## Misc. Happy Birthday to me.

As I said I've been doing this for years, but it was only last week that I decided to start making it more efficient. Since I open this file often I should bind it to a key:

(defun worklog() (interactive "*") (find-file "~/Work.MD")) (global-set-key (kbd "C-x w") 'worklog)

This allows me to open the log by just pressing C-x w. The next step was to automate the headers. So I came up with a function which will search for today's date, adding it if missing:

(defun worklog-today() "Move to today's date, if it isn't found then append it" (interactive "*") (beginning-of-buffer) (if (not (search-forward (format-time-string "# %d-%m-%Y") nil t 1)) (progn (end-of-buffer) (insert (format-time-string "\n\n# %d-%m-%Y\n")))))

Now we use some magic to makes this function run every time I open ~/

(defun worklog_hook () (when (equalp (file-name-nondirectory (buffer-file-name)) "") (worklog-today) ) ) (add-hook 'find-file-hook 'worklog_hook)

Finally there is a useful package imenu-list which allows you to create an inline sidebar for files. Binding that to a key allows it to be toggled easily:

(add-hook 'markdown-mode-hook (lambda () (local-set-key (kbd "M-'") 'imenu-list-smart-toggle)

The end result is a screen that looks something like this:

If you have an interest in such things I store my emacs configuration on github, in a dotfile-repository. My init file is writting in markdown, which makes it easy to read:

Mike Gabriel: My Work on Debian LTS/ELTS (October 2019)

Pre, 01/11/2019 - 3:47md

In October 2019, I have worked on the Debian LTS project for 11.75 hours (of 11.75 hours planned) and on the Debian ELTS project for 0 hours (of 5 hours planned) as a paid contributor. I have given back those 5 ELTS hours to the pool.

LTS Work
  • Work on a pre-OpenSSL-1.0.2 patch, adding hostname validation support to imapfilter as found in Debian jessie (built against OpenSSL 1.0.1t) [1]
  • File a Github PR against imapfilter upstream that got OpenSSL versioned #ifdef'ed code sections straight [2]
  • upload imapfilter 2.5.2-2+deb8u1 to jessie-security (DLA-1976-1 [3], 1 CVE)
  • upload libvncserver 0.9.9+dfsg2+deb8u6 to jessie-security (DLA-1977-1 [4], 1 CVE)
  • do a security audit of libvncserver-derived packages in Debian [5]
  • upload italc 1:2.0.2+dfsg1-2+deb8u1 to jessie-security (DLA-1979-1 [6], 21 CVEs)

In fact, preparing the italc security upload needed more time (an extra of 1.7h) than available for my LTS work in October. In my mind, I will move over these 1.7h to November and invoice them then.

In November, I plan to follow-up on the VNC security audit and prepare several VNC related package uploads to Debian jessie LTS. I will also work on package .debdiff patches for package versions in stretch, buster and unstable.

As a first action, I will likely NMU-upload a new upstream release of libvncserver to unstable the coming week [7].

  • I did not do any ELTS work in October 2019.

Junichi Uekawa: I've learnt how to write Dockerfile.

Pre, 01/11/2019 - 1:18md
I've learnt how to write Dockerfile. But I feel I am yet to learn how to run them.

Kurt Kremitzki: Halloween Update for FreeCAD & Debian Science Work

Pre, 01/11/2019 - 4:04pd

There's been a spooky amount of activity in the FreeCAD & Debian Science world since I last wrote! Because this update covers August, September, and October, I'll try to be brief and only touch on the key points.


Staging & Merging App::Link Functionality

The "App::Link" object allows lightweight linking of objects in a document and from external documents.

In August, a major milestone towards unified, mainline mechanical assembly functionality in FreeCAD was reached.

One of the core challenges in implementing assembly functionality is the problem of topological naming. In a CAD model there are topological entities, such as solids, faces, edges, and vertices. We must choose some algorithm to name them so that you can refer to relationships to make an assembly. A simple example would be two cubes, connected by touching faces. If a parameter in your model changes, and after recalculation, your "Face_N" is on the wrong side of the cube, your assembly may break, or not be what you are expecting. Without a good approach to topological naming, parametric FreeCAD models won't be robust to changes and recalculations, which defeats the purpose of parametric modeling.

Because this is such a difficult problem, progress has been slow. However, recently a relatively new FreeCAD developer, 'realthunder', put significant work towards this problem, with a solution finally on the horizon. Because it required major changes to FreeCAD's internals, the review and testing period was and continues to be lengthy.

The milestone in particular was merging of a large chunk of this code, referred to in short as "App::Link functionality". This diff is huge: +70,441 -14,562 lines of C++. You can read more about it on the pull request itself.

I only played a minor contributing role in this effort, preparing a short-lived staging PPA to provide a package for testers after the pull request was opened in July, but it's rather significant news in terms of the project and so worth spreading. Mechanical assembly is (no surprise) a must-have for mechanical engineers interested in FreeCAD, and it's considered by some to be the last remaining blocker for FreeCAD's 1.0 release.

Extra links: notes for code reviewers from the PR author, for the dedicated readers out there.

FreeCAD Python 2 removal in Debian Testing

The Python 2 removal in Debian Testing continues, and with it, FreeCAD's Python 2 package is gone. However, upon upload, several new build failures appeared on the i386, mipsel, and s390x platforms. Turns out there was a regression in dwz, a software I had never heard of before. I tried troubleshooting but unfortunately had FreeCAD drop out of testing due to the Python 2 removal bug filed against it.

Luckily, when I filed a bug against dwz, Matthias Klose and Tom de Vries helped isolate and upstream the problem, with Tom even bisecting the regressing commit in the upstream bug. Thank you, you two!

After adding a workaround to fix those build failures, the new Python 3-only FreeCAD package is on its way to Debian Testing.

FreeCAD Python 3 support added for Ubuntu 16.04

Qt 5 & Python 3 builds for FreeCAD have been available on Ubuntu 18.04 and newer and Debian 10 and newer platforms for some time now. However, Ubuntu 16.04 was problematic due to its old Qt version, which meant a Qt 4, Python 3 build had to be produced. This had been on the back burner for a while because when I initially attempted backporting the necessary packages, I encountered some friction.

However, since it's the last holdout Python 2 platform, I took another look at things to try to speed up the "py2ectomy". It turns out that the missing package needed for a Python 3 build, pivy, was failing to build because of "PIE hardening", a Debian security hardening flag. I had all such flags turned on, so I just had to disable that particular one to get things going.

So, Python 3 builds are now available for Ubuntu 16.04 in the FreeCAD Daily Builds PPA, and they will be coming soon to the stable PPA as well. A new bugfix release has been made for stable, 0.18.4, so I am working on that first, and the Python 3 package will come with it.

Netgen and Pybind11 Builds

Good news for users of FreeCAD's finite element modeling workbench!

Integration with Netgen, a mesh generator, has long been an optional but off-by-default build option for FreeCAD, due to packaging difficulties. However, since I have taken over things in recent years, I have finally gotten things to the state where we can turn this back on by default. As part of this change, I am also building FreeCAD with Pybind11 instead of Boost.Python, marking another milestone in managing FreeCAD's dependencies.

Since this may introduce bugs, I've started by making this change for all of FreeCAD's daily builds in the Ubuntu PPA, as well as the package currently in Debian Unstable. Eventually, this change may come to the stable PPA.

OpenCASCADE 7.4.0

An assembly of a single solid box replicated ~93,000 times. This test case is more than 10x faster in OCCT 7.4.0.

After more than a year of development (PDF warning), a new minor version of OpenCASCADE Technology (OCCT) has been released.

OCCT is the geometry & topology kernel of FreeCAD, and it is also a dependency for several related projects including Gmsh, IFCOpenShell, Netgen, and OpenCAMLib. New releases in OCCT generally herald stability and performance upgrades for core behavior. However, there are some breaking changes and so these improvements are yet to be seen.

For the time being, OCCT 7.4.0 packages are available in my OpenCASCADE PPA and by building the package directly from

OpenFOAM 1906

I uploaded the latest version of OpenFOAM, the toolbox for computational fluid dynamics. It's now available in Ubuntu 19.10, Debian Testing, and via the FreeCAD Community Extras PPA.

Gmsh 4.4.1

The latest version of Gmsh, a 3D finite element mesh generator, is also in Ubuntu 19.10, Debian Testing, and the Community Extras PPA. Thanks to Nico Schlömer for helping maintain this package.

Netgen 6.2.1905

This version of Netgen is only available via the FreeCAD Daily and Community Extras PPAs. Unfortunately Netgen has been stuck in the Debian NEW queue for over 8 months now.

GitHub Sponsors Program

I was accepted into the GitHub Sponsors program! GitHub is matching donations for the first year. Hopefully this helps fund my FOSS work, and FOSS work in general.

Thanks for your support

I appreciate any feedback you might have.

You can get in touch with me via Twitter @thekurtwk.

If you'd like to donate to help support my work, there are several methods available on my site.

Paul Wise: FLOSS Activities October 2019

Pre, 01/11/2019 - 1:48pd
Changes Issues Review Administration
  • Debian: restart dead stunnel, report offline machine to hoster
  • Debian mentors: proposed additional admin
  • Debian wiki: welcome folks to the community, whitelist email addresses
Communication Sponsors

The purple-discord and libapache-mod-auth-kerb work was sponsored by my employer. All other work was done on a volunteer basis.

Thadeu Lima de Souza Cascardo: Overriding ACPI tables on Debian

Enj, 31/10/2019 - 11:08md

Linux supports overriding your computer ACPI tables by adding updated tables to the initrd. Checkout your local documentation at the linux tree at Documentation/admin-guide/acpi/initrd_table_override.rst.

I just uploaded to Debian a small initramfs-tools hook to add tables found at /var/lib/acpi-override/ to the initrd. For now, it's all that it does. The users have to modify the tables themselves and drop them at the referred directory.

It should be on the NEW queue and out to unstable after some time, and it's maintained at salsa.

My usecase for this is a small change to the DMAR table of my Libreboot-enabled X200, so I can experiment with IOMMU on it.

As future work, I may consider a tool to help at least update the OEM revision of the tables, to make it less error-prone to users to update them.

I hope this is useful to other people.