Lunar: Reproducible builds: week 9 in Stretch cycle

Planet Debian - Mon, 29/06/2015 - 23:03

What happened about the reproducible builds effort this week:

Toolchain fixes

Norbert Preining uploaded texinfo/6.0.0.dfsg.1-2 which makes texinfo indices reproducible. Original patch by Chris Lamb.

Lunar submitted recently rebased patches to make the file order of files inside .deb stable.

akira filled #789843 to make tex4ht stop printing timestamps in its HTML output by default.

Dhole wrote a patch for xutils-dev to prevent timestamps when creating gzip compresed files.

Reiner Herrmann sent a follow-up patch for wheel to use UTC as timezone when outputing timestamps.

Mattia Rizzolo started a discussion regarding the failure to build from source of subversion when -Wdate-time is added to CPPFLAGS—which happens when asking dpkg-buildflags to use the reproducible profile. SWIG errors out because it doesn't recognize the aforementioned flag.

Trying to get the .buildinfo specification to more definitive state, Lunar started a discussion on storing the checksums of the binary package used in dpkg status database.

akira discovered—while proposing a fix for simgrid—that CMake internal command to create tarballs would record a timestamp in the gzip header. A way to prevent it is to use the GZIP environment variable to ask gzip not to store timestamps, but this will soon become unsupported. It's up for discussion if the best place to fix the problem would be to fix it for all CMake users at once.

Infrastructure-related work

Andreas Henriksson did a delayed NMU upload of pbuilder which adds minimal support for build profiles and includes several fixes from Mattia Rizzolo affecting reproducibility tests.

Neils Thykier uploaded lintian which both raises the severity of package-contains-timestamped-gzip and avoids false positives for this tag (thanks to Tomasz Buchert).

Petter Reinholdtsen filled #789761 suggesting that how-can-i-help should prompt its users about fixing reproducibility issues.

Packages fixed

The following packages became reproducible due to changes in their build dependencies: autorun4linuxcd, libwildmagic, lifelines, plexus-i18n, texlive-base, texlive-extra, texlive-lang.

The following packages became reproducible after getting fixed:

Some uploads fixed some reproducibility issues but not all of them:

Untested uploaded as they are not in main:

Patches submitted which have not made their way to the archive yet:

  • #789648 on apt-dater by Dhole: allow the build date to be set externally and set it to the time of the latest debian/changelog entry.
  • #789715 on simgrid by akira: fix doxygen and patch CMakeLists.txt to give GZIP=-n for tar.
  • #789728 on aegisub by Juan Picca: get rid of __DATE__ and __TIME__ macros.
  • #789747 on dipy by Juan Picca: set documentation date for Sphinx.
  • #789748 on jansson by Juan Picca: set documentation date for Sphinx.
  • #789799 on tmexpand by Chris Lamb: remove timestamps, hostname and username from the build output.
  • #789804 on libevocosm by Chris Lamb: removes generated files which include extra information about the build environment.
  • #789963 on qrfcview by Dhole: removes the timestamps from the the generated PNG icon.
  • #789965 on xtel by Dhole: removes extra timestamps from compressed files by gzip and from the PNG icon.
  • #790010 on simbody by akira: set HTML_TIMESTAMP=NO in Doxygen configuration.
  • #790023 on stx-btree by akira: pass HTML_TIMESTAMP=NO to Doxygen.
  • #790034 on siscone by akira: removes $datetime from footer.html used by Doxygen.
  • #790035 on thepeg by akira: set HTML_TIMESTAMP=NO in Doxygen configuration.
  • #790072 on libxray-spacegroup-perl by Chris Lamb: set $Storable::canonical = 1 to make space_groups.db.PL output deterministic.
  • #790074 on visp by akira: set HTML_TIMESTAMP=NO in Doxygen configuration.
  • #790081 on wfmath by akira: set HTML_TIMESTAMP=NO in Doxygen configuration.
  • #790082 on wreport by akira: set HTML_TIMESTAMP=NO in Doxygen configuration.
  • #790088 on yudit by Chris Lamb: removes timestamps from the build system by passing a static comment.
  • #790122 on clblas by akira: set HTML_TIMESTAMP=NO in Doxygen configuration.
  • #790133 on dcmtk by akira: set HTML_TIMESTAMP=NO in Doxygen configuration.
  • #790139 on glfw3 by akira: patch for Doxygen timestamps further improved by James Cowgill by removing $datetime from the footer.
  • #790228 on gtkspellmm by akira: set HTML_TIMESTAMP=NO in Doxygen configuration.
  • #790232 on ucblogo by Reiner Herrmann: set LC_ALL to C before sorting.
  • #790235 on basemap by Juan Picca: set documentation date for Sphinx.
  • #790258 on guymager by Reiner Herrmann: use the date from the latest debian/changelog as build date
  • #790309 on pelican by Chris Lamb: removes useless (and unreproducible) tests.
debbindiff development

debbindiff/23 includes a few bugfixes by Helmut Grohne that result in a significant speedup (especially on larger files). It used to exhibit the quadratic time string concatenation antipattern.

Version 24 was released on June 23rd in a hurry to fix an undefined variable introduced in the previous version. (Reiner Herrmann)

debbindiff now has a test suite! It is written using the PyTest framework (thanks Isis Lovecruft for the suggestion). The current focus has been on the comparators, and we are now at 93% of code coverage for these modules.

Several problems were identified and fixed in the process: paths appearing in output of javap, readelf, objdump, zipinfo, unsqusahfs; useless MD5 checksum and last modified date in javap output; bad handling of charsets in PO files; the destination path for gzip compressed files not ending in .gz; only metadata of cpio archives were actually compared. stat output was further trimmed to make directory comparison more useful.

Having the test suite enabled a refactoring of how comparators were written, switching from a forest of differences to a single tree. This helped removing dust from the oldest parts of the code.

Together with some other small changes, version 25 was released on June 27th. A follow up release was made the next day to fix a hole in the test suite and the resulting unidentified leftover from the comparator refactoring. (Lunar)

Documentation update

Ximin Luo improved code examples for some proposed environment variables for reference timestamps. Dhole added an example on how to fix timestamps C pre-processor macros by adding a way to set the build date externally. akira documented her fix for tex4ht timestamps.

Package reviews

94 obsolete reviews have been removed, 330 added and 153 updated this week.

Hats off for Chris West (Faux) who investigated many fail to build from source issues and reported the relevant bugs.

Slight improvements were made to the scripts for editing the review database, edit-notes and clean-notes. (Mattia Rizzolo)


A meeting was held on June 23rd. Minutes are available.

The next meeting will happen on Tuesday 2015-07-07 at 17:00 UTC.


The Linux Foundation announced that it was funding the work of Lunar and h01ger on reproducible builds in Debian and other distributions. This was further relayed in a Bits from Debian blog post.

Categories: Elsewhere

DrupalCon News: DrupalCon Programming Announced - Sessions and Training Selected!

Planet Drupal - Mon, 29/06/2015 - 22:22

One of the most exciting aspects of preparing for a DrupalCon is selecting the sessions that will be presented. It’s always incredibly cool and humbling to see all the great ideas that our community comes up with— and they’re all so great that making the official selections is definitely not an easy process! This time, the Track Chairs had over 500 sessions to read through to determine what content would be presented in Barcelona.

Categories: Elsewhere

Forum One: Join Us at Drupal GovCon!

Planet Drupal - Mon, 29/06/2015 - 22:05

We’re excited for Drupal GovCon coming up on July 22nd! We can’t wait to spend time with the Drupal4Gov community and meet fellow Drupalers from all over! Forum One will be presenting sessions in all four tracks: Site Building, Business and Strategy, Code & DevOps, and Front-end, User Experience and Design! Check out our sessions to learn more about Drupal 8 and other topics!

Here our are sessions at a glance…

What’s in Your Audit? A Guide to Auditing Drupal Sites

Nervous about providing support for a new Drupal site? A comprehensive audit will prepare you to take on Drupal sites that weren’t built by you. Join this session and learn from Forum One’s John Brandenburg as he reviews the audit checklist the our team uses before we take over support work for any Drupal site.

Drupal 8 for Non-developers

Drupal 8’s getting close to launching – do you feel like you need a crash course in what this means? Join Forum One’s Chaz Chumley as he demystifies Drupal 8 for you and teaches you all that you need to know about the world of developers.

The Drupal 8 Decision: Budgets, Bosses, and Bul@#$% Standing between You and the Next World-class CMS

If you’re wondering how to prepare your organization for upgrading your sites to Drupal 8, join WETA’s Jess Snyder, along with Forum One’s Andrew Cohen and Chaz Chumley as they answer questions about the available talent, budgets, goals, and more in regards to Drupal 8.

The Building Blocks of D8

The building blocks of Drupal have changed and now’s the unique time to rethink how to build themes in Drupal 8. Join Chaz Chumley as he dissects a theme and exposes the best practices that we should all be adopting for Drupal 8.

Building Realtime Applications with Drupal and Node.js

Drupal 8’s first class REST interface opens up a world of opportunities to build interactive applications. Come learn how to connect a Node application to Drupal to create dynamic updates from Forum One’s William Hurley as he demonstrates the capabilities of both JavaScript and Node.js using Drupal, AngularJS, and Sails.js!

Automating Deployments

Are you excited to launch your new website, but getting held down by all the steps it takes for your code to make it online? On top of that, each change requires the same long process all over again… what a nail biting experience! Join William Hurley as he demonstrates the power of Jenkins and Capistrano for managing continuous integration and deployment using your git repository.

Combining the Power of Views and Rules

If you’re a beginner who has found the Views module confusing, come check out this session and learn important features of this popular module from Leanne Duca and Forum One’s Onaje Johnston. They’ll also highlight some additional modules that extend the power of Views.

Paraphrasing Panels, Panelizer and Panopoly

Have you ever felt that Panels, Panelizer and Panopoly were a bit overwhelming? Well, come to our session from Forum One’s Keenan Holloway. He will go over the best features of each one and how they are invaluable tools. Keenan will also give out a handy cheat sheet to remember it all, so make sure to stop by!

D3 Data Visualization

Data visualization is the go to right now! Maps, charts, interactive presentations – what tools do you use to build your visual data story? We feel that D3.js is the best tool, so come listen to Keenan Holloway explain why you should be using D3, how to use D3’s visualization techniques, and more.

To the Pattern Lab! Better Collaboration in Drupal Using Atomic Design Principles

Implementing modular design early on in any Drupal project will improve your team’s workflow and efficiency! Attend our session to learn from our very own Daniel Ferro on how to use styleguide/prototyping tools like Pattern Lab to increase collaboration between designers, themers, developers, and your organization on Drupal projects.

Integrating Mentoring into an Open Source Community that Welcomes and Values New Contributors

Are you hoping to mentor new contributors? Check out this session where Forum One’s Kalpana Goel and Cathy Theys from BlackMesh will talk about how to integrate mentoring into all the layers of an open source project and how to develop mentoring into a habit. They’ll be using the Drupal community as an example!

Building an Image Gallery with Drupal 8

If you’re a beginner looking to set up an image gallery, attend this session! Leanne Duca and Onaje Johnston will guide you in how to set up a gallery in Drupal 8 and how to overcome any challenges you may encounter!

Painting a Perfect Picture with Gesso

Attend this session and learn how to design and theme Drupal sites using Atomic Design and the Drupal 8 CSS architecture guidelines from our very own Dan Mouyard! He’ll go over our Gesso theme and our version of Pattern Lab and how they allow us to quickly design and prototype reusable design components, layouts, and pages.

Can’t make it to all of the sessions? Don’t worry, you’ll be able to catch us outside of our scheduled sessions! If you want to connect, stop by our table or check us out on Twitter (@ForumOne). We can’t wait to see you at DrupalGovCon!

Categories: Elsewhere

Drupal Association News: See you at OSCON 2015

Planet Drupal - Mon, 29/06/2015 - 19:51

OSCON, the annual open source conference, brings over 4,000 people together in Portland this July. We are a proud participant again this year and we are excited to talk about Drupal to a wider audience. If you are looking for a reason to attend, you can use the code USRG which will get you 20% off your registration. Or you can use the PCEXPOPLUS code to gain admission to the exhibition hall for free.

Taking Drupal to the larger open source world is a big job, and we need our amazing community's help. Help us spread the word that Drupal is at OSCON! If you're attending, please come by and say hi, let your new friends know they can find us in the nonprofit pavilion at table #6 from Tuesday evening through Thursday afternoon. Or, if you know someone who's in open source who will be at OSCON, please encourage them to come by and say hello! Here's a tweet you can share with your networks to help us spread the word:

Tweet: Going to OSCON 2015? Stop by and say hello. We'll be Drupalin' in the expo hall, nonprofit pavilion.

Thanks to the Portland Drupal community for helping out and to everyone for volunteering time at OSCON. If you want to help out by volunteering at the table, we'd love your assistance! You can sign up here.

See you at OSCON!

Personal blog tags: OSCON
Categories: Elsewhere

The Jibe: Why Drupal 8 is truly awesome for service providers

Planet Drupal - Mon, 29/06/2015 - 19:16

A couple days ago, I received the first in a series of white papers created by the Drupal Association to help Drupal service providers prepare for (and arguably market) Drupal 8.

Categories: Elsewhere

Drupal core announcements: No Drupal 6 or Drupal 7 core release on Wednesday, July 1

Planet Drupal - Mon, 29/06/2015 - 15:42

The monthly Drupal core bug fix/feature release window is scheduled for this Wednesday. However, there have not been enough changes to the development version since the last bug fix/feature release two months ago to warrant a new release, so there will be no Drupal core release on that date.

Upcoming release windows include:

  • Wednesday, July 15 (security release window)
  • Wednesday, August 5 (bug fix/feature release window)

For more information on Drupal core release windows, see the documentation on release timing and security releases, and the discussion that led to this policy being implemented.

Categories: Elsewhere

Annertech: Building a Website on a Budget

Planet Drupal - Mon, 29/06/2015 - 13:01
Building a Website on a Budget

So you want a website. Maybe it is your first website. Maybe you've been here before, but you're starting afresh. You're full of enthusiasm. In your dreams, your website looks like a flashy cruise liner - huge, and with every amenity money can buy. However, your budget stretches to a dinghy with an outboard motor. So how can you rationalise your aspirations within your financial constraints?

You don't have to be a paragon of fiscal rectitude, but you do need to prioritise, and think a little cleverly about how you can approach the project.

Categories: Elsewhere

Paul Wise: The aliens are amongst us!

Planet Debian - Mon, 29/06/2015 - 10:29

Don't worry, they can't cope with our atmosphere.

Perhaps they are just playing dead. Don't turn your back if you see one.

Folks may want to use this alien in free software. The original photo is available on request. To the extent possible under law, I have waived all copyright and related or neighboring rights to this work. The alien has signed a model release. An email or a link to this page would be appreciated though.

Categories: Elsewhere

Web Omelette: Go custom or use a contributed module?

Planet Drupal - Mon, 29/06/2015 - 09:00

That is the main question. If you came here looking for a definitive answer, I'm afraid you won't find one. What you maybe will find is a discussion I propose on this topic and my two cents on the matter.

Why am I talking about this?

I've been working on a big Drupal website recently which has many contributed and custom modules. One of my recent tasks has been enabling validation of an existent text field used for inputting phone numbers. The client needed this number in a specific format. No problem, a quick regex inside hook_node_validate() should do the trick nicely. But then it got me thinking? Isn't there a module I can use for this instead? Well yes there is: Field validation.

I installed this module which comes with a plethora of validation rules and possibilities. The default phone validation for my country was not matching the client expectation so I had to use a custom expression for that. No problem, achieved basically the same result. But was this the better option under the circumstances? You might say yes because people have been working on this module a long time to perfect it, keep it secure and provide all sorts of goodies under the hood. Not to mention that it's used on over 10.000 websites.

However, the Field Validation module is big. It has a bunch of functionality that allows you to perform all sorts of validation on fields. This is not a bad thing, don't get me wrong. But does my little validation need warrant the installation and loading into memory of so much code? My custom solution was very targeted and took no more than 10 or so lines of code.

One argument would be that yes, because I may need other kinds of validation rules in the future so you can use this module also for those. But I think that being already very far in the lifetime of this website the odds are quite low of that. And even if this is the case, will an extra 2-3 validation needs warrant the use of this module?

On the other hand, you can argue that your custom code is not vetted, is difficult to maintain, can be insecure if you make mistakes and basically represents some non-configurable magic on your site. These can all be true but can also all be false depending on the developer, how they document code and the functionality itself.

I ended up with the custom solution in this case because on this site I really want to introduce new modules only if they bring something major to the table (performance being my concern here). So of course, the choice heavily depends on the actual module you are considering, the website it would go on and the custom code you'd write as an alternative.

Moreover, please do not focus on the actual Field Validation module in this discussion. I am not here to discuss its merits but the whether or not installing any such module that serves a tiny purpose is the right way to go. This is mostly a Drupal 7 problem as in D8 we use object oriented practices by which we can have as much code as we want because we only load the necessary parts when needed.

So what do you think? Do you have a general rule when it comes to this decision or you also take it case by case basis? If the latter, what are your criteria for informing your choice? If the former, why is this? I'd love to hear what you have to say.

In Drupal var switchTo5x = true;stLight.options({"publisher":"dr-8de6c3c4-3462-9715-caaf-ce2c161a50c"});
Categories: Elsewhere

Norbert Preining: The Talos Principle – Solving puzzles using SAT solvers

Planet Debian - Mon, 29/06/2015 - 02:21

After my last post on Portal, there was a sale of The Talos Principle, so I got it and started playing. And soon I got stuck at these kind of puzzles where one has to fit in pieces into a frame. As a logician I hate to solve something by trial and error, so I decided I write a solver for these kind of puzzles, based on a propositional logic encoding and satisfiability solver. Sometimes it is good to be logician!

In the Talos Principle, access to new worlds and specific items is often blocked by gates that open by putting Sigils into the frame. Of course, collecting the sigils is the most challenging part, but that is often solvable by logical thinking. On the other hand, solving these fitting puzzles drove me crazy, so let us solve them with a SAT solver.


I used a propositional encoding that for each combination of cells and sigils assigns a propositional variable, which is true if the specific sigil rests in on that cell in the final solution. That is, we have variable (encoded as x_i_j_n) where runs over the cells of the frame, and over the (numbered) sigils.


I have written a perl program that for a definition of a puzzle (see later), outputs SMT2 code, which then is checked for satisfiability and generation of model with the z3 solver (which is available in Debian).

Necessary assertions

We have to state relations between these propositional variables to obtain a proper solution, in particular we have added the following statements:

  • every field has at least one sigil on it
  • every field has at most one sigil on it
  • every sigil is used at least once
  • defining equations for the sigil’s form

Let us go through them one by one:

Every field has at least on sigil on it

That is an easy part by asserting

In the SMT2 code it would look like

(assert (or x_i_j_1 x_i_j_2 ... x_i_j_n)) Every field has at most one sigil on it

This can be achieved by asserting for each tile and each pair of different sigil (numbers), that not both of the two hold:

and in SMT2 code:

(assert (and (not (and x_1_1_1 x_1_1_2)) (not (and x_1_1_1 x_1_1_3)) ... (assert (and (not (and x_1_2_1 x_1_2_2)) (not (and x_1_2_1 x_1_2_3)) ... Every sigil is used at least once

This was a bit a tricky one. First I thought I want to express that every sigil is used exactly once by excluding that for one sigil there are more fields assigned to it then the sigil contains parts. So if a sigil occupies 4 tiles, then every combination of 5 tiles needs to evaluate to false. But with 8×8 or so frames, the number of combinations simply explodes to above several million, which brings my harddrive size and z3 to an end.

The better idea was to say that every sigil was used at least once. Since all sigils together exactly fill the frame, this is enough. This can be done easily by assuming that for each sigil, at least one of the tiles is assigned to it:

or in SMT code for a 6×6 frame and the first sigil:

(assert (or x_1_1_n x_1_2_n ... x_6_6_1)) Defining equations for the sigil’s form

Of course the most important part are the defining equations for the various sigils. Here I choose the following path:

  • choose for each sigil form an anchor point
  • for each tile in the frame and each sigil, put the anchor of the sigil on the tile, and express the 4 directions of rotation

So for example for the top-most sigil in the above photo, I choose the anchor point to be the center, and if that was in , I need to assume that for the upright position

holds. In the same way, when rotated right, we need

All these options have to be disjunctively connected, in SMT code for the case where the anchor lies at (4,2).

(assert (or ... (and x_3_2_n x_4_2_n x_5_2_n x_4_3_n) (and x_3_3_n x_3_2_n x_3_1_n x_4_2_n) (and x_3_2_n x_4_2_n x_5_2_n x_4_1_n) ...

When generating these equations one has to be careful not to include rotated sigils that stick out of the frame, though.

Although the above might not be the optimal encoding, the given assertions suffice to check for SAT and produce a model, which allows me to solve the riddles.

Implementation in Perl

To generate the SMT2 code, I used a Perl script, which is very quickly hacked together. The principle function is (already coded for the above riddle):


where the first two arguments define the size of the frame, and the rest are codes for sigil types:

  • a podest, the first sigil in the above screen shot
  • b stick, the third sigil above, the long stick
  • cl club left, the forth sigil above, a club facing left
  • cr club right, the sixth sigil above, a club facing right
  • q square, the ninth sigil above
  • sl step left, the last sigil in the above image
  • sr step right, mirror of step left (not used above)

This function first sets up the header of the smt2 file, followed by shipping out all the necessary variable definitions, in SMT these are defined as Boolean functions, and the other assertions (please see the Perl code linked below for details). The most interesting part are the definitions of the sigils:

# for each piece, call the defining assertions for my $n (1..$nn) { my $p = $pieces[$n-1]; print "(assert (or\n"; for my $i (1..$xx) { for my $j (1..$yy) { if ($p eq 'q') { type_square($xx,$yy,$i,$j,$n); } elsif ($p eq 'a') { type_potest($xx,$yy,$i,$j,$n); ....

Every sigil type has its own definiton, in case of the a podest, the type_podest function:

sub type_potest { my ($xx,$yy,$i,$j,$n) = @_; my ($il, $jl, $ir, $jr, $iu, $ju); $il = $i - 1; $ir = $i + 1; $iu = $i; $jl = $jr = $j; $ju = $j + 1; do_rotate_shipout($xx,$yy, $i, $j, $n, $il, $jl, $ir, $jr, $iu, $ju); }

This function is prototypical, one defines the tiles a sigil occupies if the anchor is placed on (i,j) for an arbitrary orientation of the sigil, and then calls do_rotate_shipout on the list of occupied tiles. This function in turn is very simple:

sub do_rotate_shipout { my ($xx,$yy, $i, $j, $n, @pairs) = @_ ; for my $g (0..3) { @pairs = rotate90($i, $j, @pairs); check_and_shipout($xx,$yy, $n, $i, $j, @pairs); } }

as it only rotates four times by 90 degrees, and then checks whether the rotated sigil is completely within the frame, and if yes ships out the assertion code. The rotation is done by multiplying the vector from (i,j) to the tile position with the (0 -1 1 0) matrix and adding it again to (i,j):

sub rotate90 { my ($i, $j, @pairs) = @_ ; my @ret; while (@pairs) { my $ii = shift @pairs; my $jj = shift @pairs; my $ni = $i - ($jj - $j); my $nj = $j + ($ii - $i); push @ret, $ni, $nj; } return @ret; }

There are a few more functions, for those interested, the full Perl code is here: tangram.pl. There is no user interface or any config file reading done, I just edit the source code if I need to solve a riddle.

Massaging the output

Last but not least, the output of the z3 solver is a bit noisy, so I run the output through a few Unix commands to get only the true assignments, which gives me the location of the tiles. That is, I run the following pipeline:

perl tangram.pl | z3 -in | egrep 'define-fun|true|false' | sed -e 'h;s/.*//;G;N;s/\n//g' | grep true | sort

which produces a list like the following as output:

(define-fun x_1_1_10 () Bool true) (define-fun x_1_2_10 () Bool true) (define-fun x_1_3_5 () Bool true) (define-fun x_1_4_6 () Bool true) (define-fun x_1_5_6 () Bool true) (define-fun x_1_6_6 () Bool true) (define-fun x_2_1_10 () Bool true) (define-fun x_2_2_10 () Bool true) (define-fun x_2_3_5 () Bool true) ...

from which I can read up the solution that puts the tenth sigil (a square) in the lower left corner:

Categories: Elsewhere

Ben Armstrong: Bluff Trail – Early Summer 2015

Planet Debian - Sun, 28/06/2015 - 21:22

Here’s a photo journal of a walk I just completed around the Pot Lake loop of the Bluff Wilderness Hiking Trail. Hope you enjoy it!

Categories: Elsewhere

Sven Hoexter: moto g GPS reset when it is not working with CM 12.1

Planet Debian - Sun, 28/06/2015 - 21:06

There seems to be an issue with the moto g, CM 12.1 (nightlies) and the GPS. My GPS receiver stopped to work as well and I could recover it with the following steps in fastboot mode as described on xda-developers.

fastboot erase modemst1 fastboot erase modemst2 fastboot reboot

That even works with the 4.2.2 fastboot packaged in anroid-tools-fastboot.

Categories: Elsewhere

Matt Glaman: Fixing "UpdaterException: Unable to determine the type of the source directory"

Planet Drupal - Sun, 28/06/2015 - 18:04

I don't use the built in update functionality provided by the Update module for updating code. I like to use it for reminders and push back statistics of modules used for Drupal.org. However, someone people do use it. Sometimes this piece of functionality can fail and throw an interesting message which doesn't seem to have many answers despite the best Google-fu.

UpdaterException: Unable to determine the type of the source directory. in Updater::factory() (line 99 of ../www/includes/updater.inc).

An exception because a source directory can't be determined. Turns out that the logic before the exception throw is checking if the temporary directory containing update downloads is an actual directory.

It is looking for the following:

$directory = 'temporary://update-extraction-' . _update_manager_unique_identifier();

If you encounter this error, check your file system settings (/admin/config/media/file-system) and make sure the temporary directory is configured properly. If you're not sure what it should be, remove the entry and resave the form, populating your web server's default. Then make sure Drupal (or, rather, your webserver) has permissions to write to that temporary directory.

Categories: Elsewhere

Red Crackle: What is headless Drupal?

Planet Drupal - Sun, 28/06/2015 - 15:57
Recently you must have heard of the term "headless Drupal". You may be wondering what exactly it is. How is it different than standard Drupal and how can you implement it? If these are the questions that are plaguing you, then this is the post for you.
Categories: Elsewhere

Russell Coker: RAID Pain

Planet Debian - Sun, 28/06/2015 - 12:31

One of my clients has a NAS device. Last week they tried to do what should have been a routine RAID operation, they added a new larger disk as a hot-spare and told the RAID array to replace one of the active disks with the hot-spare. The aim was to replace the disks one at a time to grow the array. But one of the other disks had an error during the rebuild and things fell apart.

I was called in after the NAS had been rebooted when it was refusing to recognise the RAID. The first thing that occurred to me is that maybe RAID-5 isn’t a good choice for the RAID. While it’s theoretically possible for a RAID rebuild to not fail in such a situation (the data that couldn’t be read from the disk with an error could have been regenerated from the disk that was being replaced) it seems that the RAID implementation in question couldn’t do it. As the NAS is running Linux I presume that at least older versions of Linux have the same problem. Of course if you have a RAID array that has 7 disks running RAID-6 with a hot-spare then you only get the capacity of 4 disks. But RAID-6 with no hot-spare should be at least as reliable as RAID-5 with a hot-spare.

Whenever you recover from disk problems the first thing you want to do is to make a read-only copy of the data. Then you can’t make things worse. This is a problem when you are dealing with 7 disks, fortunately they were only 3TB disks and only each had 2TB in use. So I found some space on a ZFS pool and bought a few 6TB disks which I formatted as BTRFS filesystems. For this task I only wanted filesystems that support snapshots so I could work on snapshots not on the original copy.

I expect that at some future time I will be called in when an array of 6+ disks of the largest available size fails. This will be a more difficult problem to solve as I don’t own any system that can handle so many disks.

I copied a few of the disks to a ZFS filesystem on a Dell PowerEdge T110 running kernel 3.2.68. Unfortunately that system seems to have a problem with USB, when copying from 4 disks at once each disk was reading about 10MB/s and when copying from 3 disks each disk was reading about 13MB/s. It seems that the system has an aggregate USB bandwidth of 40MB/s – slightly greater than USB 2.0 speed. This made the process take longer than expected.

One of the disks had a read error, this was presumably the cause of the original RAID failure. dd has the option conv=noerror to make it continue after a read error. This initially seemed good but the resulting file was smaller than the source partition. It seems that conv=noerror doesn’t seek the output file to maintain input and output alignment. If I had a hard drive filled with plain ASCII that MIGHT even be useful, but for a filesystem image it’s worse than useless. The only option was to repeatedly run dd with matching skip and seek options incrementing by 1K until it had passed the section with errors.

for n in /dev/loop[0-6] ; do echo $n ; mdadm –examine -v -v –scan $n|grep Events ; done

Once I had all the images I had to assemble them. The Linux Software RAID didn’t like the array because not all the devices had the same event count. The way Linux Software RAID (and probably most RAID implementations) work is that each member of the array has an event counter that is incremented when disks are added, removed, and when data is written. If there is an error then after a reboot only disks with matching event counts will be used. The above command shows the Events count for all the disks.

Fortunately different event numbers aren’t going to stop us. After assembling the array (which failed to run) I ran “mdadm -R /dev/md1” which kicked some members out. I then added them back manually and forced the array to run. Unfortunately attempts to write to the array failed (presumably due to mismatched event counts).

Now my next problem is that I can make a 10TB degraded RAID-5 array which is read-only but I can’t mount the XFS filesystem because XFS wants to replay the journal. So my next step is to buy another 2*6TB disks to make a RAID-0 array to contain an image of that XFS filesystem.

Finally backups are a really good thing…

Related posts:

  1. RAID and Bus Bandwidth As correctly pointed out by cmot [1] my previous post...
  2. Some RAID Issues I just read an interesting paper titled An Analysis of...
  3. Reliability of RAID ZDNet has an insightful article by Robin Harris predicting the...
Categories: Elsewhere

Christian Perrier: Bugs #780000 - 790000

Planet Debian - Sat, 27/06/2015 - 08:13
Thorsten Glaser reported Debian bug #780000 on Saturday March 7th 2015, against the gcc-4.9 package.

Bug #770000 was reported as of November 18th so there have been 10,000 bugs in about 3.5 months, which was significantly slower than earlier.

Matthew Vernon reported Debian bug #790000 on Friday June 26th 2015, against the pcre3 package.

Thus, there have been 10,000 bugs in 3.5 months again. It seems that the bug report rate stabilized again.

Sorry for missing bug #780000 annoucement. I'm doing this since....November 2007 for bug #450000 and it seems that this lack of attention is somehow significant wrt my involvment in Debian. Still, this involvment is still here and I'll try to "survive" in the project until we reach bug #1000000...:-)

See you for bug #800000 annoucement and the result of the bets we placed on the date it would happen.

Categories: Elsewhere

DrupalCon News: Scholarships and Grants Bring 23 Attendees to the Con

Planet Drupal - Sat, 27/06/2015 - 01:52

We always say that you come for the code but stay for the community, but for some attendees, affording a DrupalCon to interact with the community is a hurdle.  We were happy that we were able to offer 20.000€ between 23 grant and scholarship recipients to help lessen that burden and really help them make an impact in Barcelona.  You can see who received a grant or scholarship here.  

Categories: Elsewhere

DrupalCon News: Announcing Community-Focused Keynotes at DrupalCon Barcelona

Planet Drupal - Fri, 26/06/2015 - 23:57

For a new twist on our keynotes, we are excited that our Thursday mainstage will highlight two community speakers that both have important and intersting topics that all Drupalers can benefit from hearing.  

Categories: Elsewhere

qed42.com: June - Drupal Monthly MeetUp

Planet Drupal - Fri, 26/06/2015 - 22:36

This month Pune Drupal group had more than 75 active attendees participating in Drupal Monthly Meetup. We are thankful to Cybage Software Pvt Ltd  for hosting the event on 26th June 2015 at their premises.

The basic agenda of the meetup was to launch the Pune Drupal Camp 2015 website and present the camp highlights. 

Categories: Elsewhere


Subscribe to jfhovinne aggregator - Elsewhere