This was my fifth month working on Debian LTS. I was assigned 16
hours
by Freexian's
Debian LTS initiative. I worked on several packages but haven't
uploaded updates yet.
linux-2.6
There is a steady stream of security issues in all Linux kernel
versions. As we don't want to prompt reboots too often, these won't
necessarily result in an update every month; it depends on the
severity of the issue(s). However, I triaged
the current
issues
and committed
the available fixes to version control.
dpkg
The PGP signature validation in dpkg-source has a number of
bugs,
including CVE-2015-0840
which allows the validation to be completely subverted. I
backported fixes for these from the 1.16 (wheezy) branch to the 1.15
(squeeze) branch. dpkg has a test suite and the fixes all came with
new regression tests, so this was easy to verify.
As dpkg is a native package (i.e. there is little separation between
the 'upstream' and Debian packaging), I preferred that the dpkg
maintainers would turn this into an 'upstream' release that I could
upload. Guillem Jover has now reviewed and (semi-)released my
changes, so I will complete this update soon.
tiff
A large number of bugs have been found in the venerable tiff library
and tools, mostly by 'fuzzing' them
with afl. The bugs
have been unhelpfully grouped into a smaller number of CVE IDs,
although it's not clear that these groups were introduced at the
same time and they certainly weren't fixed at the same time.
Most of the upstream bug reports come with samples to reproduce the
bug (crash or memory corruption detectable with valgrind), but
many of these did not turn out to be reproducible (either upstream
or with the version in 'squeeze'). Where they were reproducible,
I've verified that the patches fix the issue.
Unfortunately tiff does not have a test suite, so I made a
call
for testing on the debian-lts list. If I don't get any
responses soon, I'll run my own basic tests with programs that use
libtiff before uploading.
My monthly report covers a large part of what I have been doing in the free software world. I write it for my donators (thanks to them!) but also for the wider Debian community because it can give ideas to newcomers and it s one of the best ways to find volunteers to work with me on projects that matter to me.
Debian LTS
This month I have been paid to work 26.25 hours on Debian LTS. In that time I did the following:
No comment Liked this article? Click here. My blog is Flattr-enabled.
python3.
And with a new Annoy out, I updated RcppAnnoy to it. In the process I got another pull request into Annoy (use R's RNG rather than rand() which R CMD check really dislikes).
This new package is now on CRAN.
Courtesy of CRANberries, there is also a diffstat report for this release.
More detailed information is on the RcppAnnoy page page.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.
Debian Jessie has been released on April 25th, 2015. This has opened the
Stretch development cycle. Reactions to the idea of making Debian
build reproducibly have
been pretty enthusiastic. As the pace is now likely to be even faster,
let's see if we can keep everyone up-to-date on the developments.
Before the release of Jessie
The story goes back a long
way
but a formal announcement to the
project
has only been sent in February 2015.
Since then, too much work has happened to make a complete report, but
to give some highlights:
unstable are tested but also those in testing
and experimental.--enable-deterministic-archives flag. Making ar, strip and
others create deterministic static
libraries.dh_makeshlibs
(#774100), dh_icons
(#774102), dh_usrlocal
(#775020). Patches written
by Lunar.--no-include-build-time option.
Patch by Jelmer
Vernooij.pidl
(from libparse-pidl-perl) reproducible.-creation-date to genisoimage.
Reiner Herrmann opened #783938 to
request making -notimestamp the default behavior for javadoc.
Juan Picca submitted a patch to add a
--use-date flag to texi2html.
Packages fixed
The following packages became reproducible due to changes of their
build dependencies:
apport,
batctl,
cil,
commons-math3,
devscripts,
disruptor,
ehcache,
ftphs,
gtk2hs-buildtools,
haskell-abstract-deque,
haskell-abstract-par,
haskell-acid-state,
haskell-adjunctions,
haskell-aeson,
haskell-aeson-pretty,
haskell-alut,
haskell-ansi-terminal,
haskell-async,
haskell-attoparsec,
haskell-augeas,
haskell-auto-update,
haskell-binary-conduit,
haskell-hscurses,
jsch,
ledgersmb,
libapache2-mod-auth-mellon,
libarchive-tar-wrapper-perl,
libbusiness-onlinepayment-payflowpro-perl,
libcapture-tiny-perl,
libchi-perl,
libcommons-codec-java,
libconfig-model-itself-perl,
libconfig-model-tester-perl,
libcpan-perl-releases-perl,
libcrypt-unixcrypt-perl,
libdatetime-timezone-perl,
libdbd-firebird-perl,
libdbix-class-resultset-recursiveupdate-perl,
libdbix-profile-perl,
libdevel-cover-perl,
libdevel-ptkdb-perl,
libfile-tail-perl,
libfinance-quote-perl,
libformat-human-bytes-perl,
libgtk2-perl,
libhibernate-validator-java,
libimage-exiftool-perl,
libjson-perl,
liblinux-prctl-perl,
liblog-any-perl,
libmail-imapclient-perl,
libmocked-perl,
libmodule-build-xsutil-perl,
libmodule-extractuse-perl,
libmodule-signature-perl,
libmoosex-simpleconfig-perl,
libmoox-handlesvia-perl,
libnet-frame-layer-ipv6-perl,
libnet-openssh-perl,
libnumber-format-perl,
libobject-id-perl,
libpackage-pkg-perl,
libpdf-fdf-simple-perl,
libpod-webserver-perl,
libpoe-component-pubsub-perl,
libregexp-grammars-perl,
libreply-perl,
libscalar-defer-perl,
libsereal-encoder-perl,
libspreadsheet-read-perl,
libspring-java,
libsql-abstract-more-perl,
libsvn-class-perl,
libtemplate-plugin-gravatar-perl,
libterm-progressbar-perl,
libterm-shellui-perl,
libtest-dir-perl,
libtest-log4perl-perl,
libtext-context-eitherside-perl,
libtime-warp-perl,
libtree-simple-perl,
libwww-shorten-simple-perl,
libwx-perl-processstream-perl,
libxml-filter-xslt-perl,
libxml-writer-string-perl,
libyaml-tiny-perl,
mupen64plus-core,
nmap,
openssl,
pkg-perl-tools,
quodlibet,
r-cran-rjags,
r-cran-rjson,
r-cran-sn,
r-cran-statmod,
ruby-nokogiri,
sezpoz,
skksearch,
slurm-llnl,
stellarium.
The following packages became reproducible after getting fixed:
-DNO_VERSION_DATE to build system.--use-date to texi2html.-creation-date to
genisoimage.debbindiff output, missing build logs, unavailable build
dependencies.
Holger Levsen added a new execution environment to run debbindiff using
dependencies from testing. This is required for packages built with
GHC as the compiler only understands interfaces built by the same
version.
debbindiff development
Version 17 has been uploaded to unstable. It now supports comparing
ISO9660 images, dictzip files and should compare identical files much
faster.
Documentation update
Various small updates and fixes to the pages about
PDF produced by LaTeX,
DVI produced by
LaTeX,
static
libraries,
Javadoc,
PE
binaries,
and Epydoc.
Package reviews
Known issues have been tagged when known to be deterministic as some
might unfortunately not show up on every single build.
For example, two new issues have been identified by building with one
timezone in April and one in May. RD
and help2man add current month and
year to the documentation they are producing.
1162 packages have been removed and 774 have been added in
the past week. Most of them are the work of proper automated
investigation done by Chris West.
Summer of code
Finally, we learned that both akira and Dhole were accepted for
this Google Summer of
Code.
Let's welcome them!
They have until May 25th before coding officialy begins. Now is the good time
to help them feel more comfortable by sharing all these little bits of
knowledge on how Debian works.
Yep, I had planned to go, but given the last mail from registration seems there's a overwhelming number of sponsorship requests, so I've dediced to withdraw my request. There's lots of people doing much more important things for Debian than me which deserve that help. Having to complete my MSc project does also help to take this decision, of course.
The new release 0.11.5 of Rcpp arrived on the CRAN network for GNU R yesterday; the corresponding Debian package has also been uploaded.
Rcpp has become the most popular way of enhancing GNU R with C++ code. As of today, 373 packages on CRAN depend on Rcpp for making analyses go faster and further; BioConductor adds another 57 packages, and casual searches on GitHub suggests many more.
This version adds a little more polish and refinement around things we worked on previous releases to solidify builds, installation and the run-time experience. It does not bring anything new or majorrelease continues the 0.11.* release cycle, adding another large number of small bug fixes, polishes and enhancements. As always, you can follow the development via the GitHub repo and particularly the Issue tickets and Pull Requests. And any discussions, questions, ... regarding Rcpp are always welcome at the rcpp-devel mailing list.
See below for a detailed list of changes extracted from the NEWS file.
Changes in Rcpp version 0.11.6 (2015-05-01)Thanks to CRANberries, you can also look at a diff to the previous release As always, even fuller details are on the Rcpp Changelog page and the Rcpp page which also leads to the downloads page, the browseable doxygen docs and zip files of doxygen output for the standard formats. A local directory has source and documentation too. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page.
- Changes in Rcpp API:
- The unwinding of exceptions was refined to protect against inadvertent memory leaks.
- Header files now try even harder not to let macro definitions leak.
- Matrices have a new default constructor for zero-by-zero dimension matrices (via a pull request by Dmitrii Meleshko).
- A new
empty()string constructor was added (via another pull request).- Better support for Vectors with a storage policy different from the default, i.e.
NoProtectStorage, was added.- Changes in Rcpp Attributes:
- Rtools 3.3 is now supported.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.
A new minor release 5.100.1 of Armadillo was released by Conrad yesterday. Armadillo is a powerful and expressive C++ template library for linear algebra aiming towards a good balance between speed and ease of use with a syntax deliberately close to a Matlab.
Our corresponding RcppArmadillo release 0.5.100.1.0 also reached CRAN and Debian yesterday. See below for the brief list of changes.
Changes in RcppArmadillo version 0.5.100.1.0 (2015-05-01)Courtesy of CRANberries, there is also a diffstat report for the most recent CRAN release. As always, more detailed information is on the RcppArmadillo page. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page.
- Upgraded to Armadillo release 5.100.1 ("Ankle Biter Deluxe")
- added
interp1()for 1D interpolation- added
.is_sorted()for checking whether a vector or matrix has sorted elements- updated physical constants to NIST 2010 CODATA values
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.
Some time ago I have embarked on a jurney to install NetBSD on one of my two NSLU2-s. I have ran into all sorts of hurdles and problems which I finally managed to overcome, except one:
A hotfix release for the Finance-YahooQuote Perl module on CPAN is now available. Available Yahoo! Finance decided to change the base URL. My thanks to Nicola Chiapolini who not only noticed but also sent me the one-line patch fixing this:
--- YahooQuote.pm~ 2010-03-27 01:44:10.000000000 +0100
+++ YahooQuote.pm 2015-04-29 11:31:20.407926674 +0200
@@ -34,7 +34,7 @@
$VERSION = '0.24';
## these variables govern what type of quote the modules is retrieving
-$QURLbase = "http://download.finance.yahoo.com/d/quotes.csvr?e=.csv&f=";
+$QURLbase = "http://download.finance.yahoo.com/d/quotes.csv?e=.csv&f=";
$QURLformat = "snl1d1t1c1p2va2bapomwerr1dyj1x"; # default up to 0.19
$QURLextended = "s7t8e7e8e9r6r7r5b4p6p5j4m3m4"; # new in 0.20
$QURLrealtime = "b2b3k2k1c6m2j3"; # also new in 0.20
If need be, edit your file YahooQuote.pm by hand.
This change in Finance-YahooQuote will also affect Beancounter and smtm both of which use this module.
The fix has been pushed to Debian for the corresponding package and to PAUSE for CPAN package.
Having maintained this since 2002 in RCS, I also just created a GitHub repo for it where development/maintenance will now happen.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.
A small project I worked on during the last few weeks has now come together in new package RcppTOML which arrived on CRAN yesterday.
It provides R with a reader for TOML files. TOML stands for Tom's Obvious Markup Language. And before you roll your eyes, glance at the TOML site. It really is different, and has a number of rather wonderful features:
R> p <- parseTOML(system.file("toml", "example.toml", package="RcppTOML"))
R> summary(p)
toml object with top-level slots:
clients, database, owner, servers, title
read from /usr/local/lib/R/site-library/RcppTOML/toml/example.toml
R> p
List of 5
$ clients :List of 2
..$ data :List of 2
.. ..$ : chr [1:2] "gamma" "delta"
.. ..$ : int [1:2] 1 2
..$ hosts: chr [1:2] "alpha" "omega"
$ database:List of 4
..$ connection_max: int 5000
..$ enabled : logi TRUE
..$ ports : int [1:3] 8001 8001 8002
..$ server : chr "192.168.1.1"
$ owner :List of 4
..$ bio : chr "GitHub Cofounder & CEO\\nLikes tater tots and beer."
..$ dob : POSIXct[1:1], format: "1979-05-27 07:32:00"
..$ name : chr "Tom Preston-Werner"
..$ organization: chr "GitHub"
$ servers :List of 2
..$ alpha:List of 2
.. ..$ dc: chr "eqdc10"
.. ..$ ip: chr "10.0.0.1"
..$ beta :List of 2
.. ..$ dc: chr "eqdc10"
.. ..$ ip: chr "10.0.0.2"
$ title : chr "TOML Example"
NULL
R>
See much more at the TOML site. I converted one first project at work to this and it really rocks. Point to a file, get a list back and index all components by their names.
We also added really simple S3 classes to the default print() method uses str() for a more compact presentation of what (in R) is of course nested list types.
Internally, the RcppTOML packages use the splendid cpptoml parser by Chase Geigle. This brings in modern C++11 and makes it that CRAN simply cannot build a binary for R on Windows as the g++ version (still, as of April 2015) in Rtools is too old. There is word of an update to Rtools and that point should we able to support Windows as well. Until then, no mas.
A bit more information is on the package page here as well as as the GitHub repo.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.
(No, I'm not talking about a future Ubuntu release... After all, what kind of weird animal would a weekend be?)
This weekend we took the kids outside for the first time (not counting, of course, visits to the pediatrician). We were quite anxious... Of course, they were born somewhat under weight and at 7 months of gestation. But this Saturday we feelt adventurous, and took the kids out for a day among people!
It might not sound like a big deal, but... Well, we took a not such beautiful or scenic route: We took them to the supermarket, and had a small lunch out. For the first time in the already two months they have been with us.
Dinner with friends at home, having a very good time, and as expected a... Very hard night for us. All that excitement had the babies very nervous.
Today again, for the first time we took the children out to visit some friends of ours. Again, it was great, they behaved very nicely, and were lovely all around.
Lets see what this night holds in place for us.
Anyway, with them growing slowly but steadily... We are very happy, thankful parents. For the first time since Regina is with me in Mexico, this time we decided we would not have a birthday party (yes, I'm 30 minutes away from being 39 year old). I cannot imagine a fuller, better celebration than what we are having. This two babies are the real event in our lives.
Oh... And by the way, this weekend also saw the release of a great new Debian release: Debian 8, codenamed Jessie. Thanks, folks, for such a great birthday present ;-) For reasons that should by now be obvious, I wasn't able to go to either of the release parties I knew of in Mexico City (even one of them was ~500m from home!)
What happens if you remove randomness from Doom?
For some reason, recently I have been thinking about Doom. This
evening I was wanting to explore some behaviour in an old version of
Doom and to do so, I hex-edited the binary and replaced the random
number lookup table with static values.
Rather than consume system randomness, Doom has a fixed 256-value
random number table from which numbers are pulled by aspects of the
game logic. By replacing the whole table with a constant value, you
essentially make the game entirely deterministic.
What does it play like? I tried two values, 0x00 and 0xFF. With
either value, the screen "melt" effect that is used at the end of
levels is replaced with a level vertical wipe: the randomness was
used to offset each column. Monsters do not make different death
noises at different times; only one is played for each category of
monster. The bullet-based (hitscan) weapons have no spread at all:
the shotgun becomes like a sniper rifle, and the chain-gun is
likewise always true. You'd think this would make the super-shotgun
a pretty lethal weapon, but it seems to have been nerfed: the
spread pattern is integral to its function.
With 0x00, monsters never make their idle noises (breathing etc.)
On the other hand, with 0xFF, they always do: so often, that each
sample collides with the previous one, and you just get a sort-of
monster drone. This is quite overwhelming with even a small pack of
monsters.
With 0xFF, any strobing sectors (flickering lights etc.), are
static. However, with 0x00, they strobe like crazy.
With 0x00, monsters seem to choose to attack much more frequently than
usual. Damage seems to be worst-case. The most damaging floor type
("super hellslime"/20%) can hurt you even if you are wearing a radiation
suit: There was a very low chance of it hurting whilst wearing the
suit (~2.6%)
each time the game checked; this is rounded up to 100%.
Various other aspects of the game become weird. A monster may always
choose to use a ranged attack, regardless of how close you are. They
might give up pursuing you. I've seen them walk aimlessly in circles
if they are obstructed by another thing. The chance of monster
in-fighting is never, or a certainty. The player is either mute, or
cries in pain whenever he's hurt.
If you want to try this yourself, the easiest way is to hack the m_random.c
file in the source, but you can hex-edit a binary. Look for a 256-byte sequence
beginning beginning ['0x0', '0x8', '0x6d', '0xdc', '0xde', '0xf1'] and ending
['0x78', '0xa3', '0xec', '0xf9'].
I'm happy with the progress we've made for debian-installer and
related packages for the Jessie release. We're going to end up with a
release that's better in a number of ways than what we've had
before.
1. Big EFI enhancements
I've already blogged a lot about the stuff I've worked on here, so
I'll just summarise for now some of the improvements we've got over
Wheezy.
arm64 and ppc64el.
I'm particularly proud of the arm64 images. With help from Ian
Campbell, Leif Lindholm and Thomas Schmitt I've managed to make
EFI-compatible CD images in an isohybrid design that
means they should also work when copied directly to a USB
stick. Hopefully this will help this new platform to become just as
easy to install as any x86 PC is today.
Hopefully post-Jessie we'll even be able to start providing live
images and openstack images for more architectures too.
More help needed yet!
First of all, we're planning to release Jessie as Debian 8 this
coming Saturday (25th April). Help with testing the installation and
live images as they're produced would be lovely - please join us on
the #debian-cd channel on irc.debian.org and we'll co-ordinate
there.
Secondly, there's an almost endless variety of machines out
there. I've updated information about how Debian installation works on
some of the more awkward
Mac Mini machines,
but we don't yet cover all the bases even there. It would be great to
update the information about other machines such as
the Macbook range as
well - currently a lot of these pages are well out of date and won't
be helpful for new users. Please test on machines if you have them,
and help improve Debian's documentation here.
Next.