<?xml version="1.0" encoding="utf-8" ?>

<rdf:RDF 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns="http://my.netscape.com/rdf/simple/0.9/">
<channel>
    <title>Codehelp blog</title>
    <link>http://www.linux.codehelp.co.uk/serendipity/</link>
    <description>Powered by Debian</description>
    <dc:language>en</dc:language>

    <image rdf:resource="http://www.linux.codehelp.co.uk/serendipity/templates/default/img/s9y_banner_small.png" />

    <items>
      <rdf:Seq>
        <rdf:li resource="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/247-guid.html" />
        <rdf:li resource="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/246-guid.html" />
        <rdf:li resource="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/245-guid.html" />
        <rdf:li resource="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/244-guid.html" />
        <rdf:li resource="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/243-guid.html" />
        <rdf:li resource="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/242-guid.html" />
        <rdf:li resource="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/241-guid.html" />
        <rdf:li resource="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/240-guid.html" />
        <rdf:li resource="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/239-guid.html" />
        <rdf:li resource="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/238-guid.html" />
        <rdf:li resource="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/237-guid.html" />
        <rdf:li resource="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/236-guid.html" />
        <rdf:li resource="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/235-guid.html" />
        <rdf:li resource="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/234-guid.html" />
        <rdf:li resource="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/233-guid.html" />
      </rdf:Seq>
    </items>
</channel>

<image rdf:about="http://www.linux.codehelp.co.uk/serendipity/templates/default/img/s9y_banner_small.png">
        <url>http://www.linux.codehelp.co.uk/serendipity/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Codehelp blog - Powered by Debian</title>
        <link>http://www.linux.codehelp.co.uk/serendipity/</link>
        <width>100</width>
        <height>21</height>
    </image>


<item rdf:about="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/247-guid.html">
    <title>pybit 1.0.0 - distributed, scalable builds direct from VCS or archives</title>
    <link>http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/247-pybit-1.0.0-distributed,-scalable-builds-direct-from-VCS-or-archives.html</link>
    <description>
    PyBit is a distributed build system able to build packages in response to VCS commits or other triggers, across multiple architectures, multiple clients and multiple build environments with automated uploads to a nominated repository.&lt;br /&gt;
&lt;br /&gt;
Support is included in 1.0.0 for building Debian packages using sbuild in response to subversion commits or changes in debian-devel-changes@lists.debian.org (by using apt as a version control handler) for any architecture and build environment which sbuild can support. There is also an example git commit template. Pybit has been designed to be fully extensible, so support for RPM or other package formats can be added as well as other version control handlers, other build environments and other architectures. Pybit is also scalable, when one type of client is struggling with the workload, another machine of the same architecture can be added to the pool to share the load. Pybit can also build a package for any number of architectures and build environments at the same time. The Pybit web interface provides an at-a-glance summary of all current builds as well as options to blacklist certain combinations, cancel and retry specific jobs and add monitor each pybit client. Current use cases include:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Rapidly changing VCS&lt;/b&gt; - one or more subversion repositories with lots of Debian packages, built automatically for any number of build environments and architectures every time the debian/changelog is modified. Clean chroot builds provide continuous integration testing of the every package.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;b&gt;Rebuilding the archive with different compilers or flags&lt;/b&gt; - a dedicated email account subscribed to debian-devel-changes@lists.debian.org feeding messages through procmail to the changes-debian hook, passing build requests to the apt handler to rebuild each package in your own sbuild chroots, using whatever environments, suites and build options can be configured within those chroots.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;something else we haven&#039;t thought of yet ... there is scope for a lot more hooks, package formats, chroot tools and handler plugins.&lt;/li&gt;&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
&lt;br /&gt;
Pybit 1.0.0 has &lt;a href=&quot;http://packages.qa.debian.org/p/pybit/news/20130518T233403Z.html&quot;&gt;arrived in Debian unstable&lt;/a&gt; as a direct result of the efforts put in by the pybit team during a sprint on 18th May 2013. Thanks to everyone involved in Pybit.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://freecode.com/projects/pybit&quot;&gt;https://freecode.com/projects/pybit&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://nicholasdavidson.github.io/pybit/&quot;&gt;http://nicholasdavidson.github.io/pybit/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://github.com/nicholasdavidson/pybit&quot;&gt;https://github.com/nicholasdavidson/pybit&lt;/a&gt;&lt;br /&gt;
 
    </description>

    <dc:publisher>Codehelp blog</dc:publisher>
    <dc:creator>nospam@example.com (Neil Williams)</dc:creator>
    <dc:subject>
    </dc:subject>
    <dc:date>2013-05-19T00:02:28Z</dc:date>
    <wfw:comment>http://www.linux.codehelp.co.uk/serendipity/wfwcomment.php?cid=247</wfw:comment>
        <wfw:commentRss>http://www.linux.codehelp.co.uk/serendipity/rss.php?version=1.0&amp;type=comments&amp;cid=247</wfw:commentRss>
    
    
</item>
<item rdf:about="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/246-guid.html">
    <title>Update on klibc for AArch64</title>
    <link>http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/246-Update-on-klibc-for-AArch64.html</link>
    <description>
    &lt;b&gt;klibc_2.0.1-3.2_arm64.changes&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://www.linux.codehelp.co.uk/serendipity/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
I&#039;ve now &lt;a href=&quot;https://github.com/codehelp/klibc-aarch64/commit/4bea053460a755f3752e14b6569b9bb5f49c5841&quot;&gt;completed&lt;/a&gt; the first patch for klibc 2.0.1 for arm64 support - it&#039;s completely untested and likely to break things, so it&#039;s &lt;b&gt;up for review not usage&lt;/b&gt;. Those who are brave enough to look at the patch, please report issues via the github issue tracker.&lt;br /&gt;
&lt;br /&gt;
35 files changed, 509 insertions(+), 19 deletions(-)&lt;br /&gt;
&lt;br /&gt;
21 new C files to replace removed syscalls, most of which simply borrow from glibc and provide a general purpose call (like open) instead of the actual syscall (openat).&lt;br /&gt;
&lt;br /&gt;
Next is to test the build and look into what is necessary to push the patch to the current 2.0.3 upstream.&lt;br /&gt;
 
    </description>

    <dc:publisher>Codehelp blog</dc:publisher>
    <dc:creator>nospam@example.com (Neil Williams)</dc:creator>
    <dc:subject>
    </dc:subject>
    <dc:date>2013-02-08T15:17:22Z</dc:date>
    <wfw:comment>http://www.linux.codehelp.co.uk/serendipity/wfwcomment.php?cid=246</wfw:comment>
        <wfw:commentRss>http://www.linux.codehelp.co.uk/serendipity/rss.php?version=1.0&amp;type=comments&amp;cid=246</wfw:commentRss>
    
    
</item>
<item rdf:about="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/245-guid.html">
    <title>Hard drive death</title>
    <link>http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/245-Hard-drive-death.html</link>
    <description>
    My 1Tb laptop drive started misbehaving a few weeks ago, just spending a lot of time spinning when it should have been reading frequently changed files (like the browser cache). I was tempted to blame the browser at that point as no other packages appeared affected.&lt;br /&gt;
&lt;br /&gt;
Wednesday night, a routine package upgrade on unstable brought in a bunch of qt4 updates which I wanted and a virtual box update that I didn&#039;t see much point in delaying ... 15 minutes later I couldn&#039;t work out why the virtualbox dkms task was still running, spotted it spinning in depmod and found some alarming messages in dmesg about short reads and errors reading from the hard drive. Hmm. The hard drive was out of control at this point, it quickly became apparent that no disc access was going to be possible and I couldn&#039;t get to a terminal to kill the current tasks, so I killed the power. The fsck which followed reboot showed more of the errors I&#039;d seen in dmesg and fell back to the manual intervention stage. A few hours of confirming attempts to fix the errors, fsck finally finished. A short amount of usage showed that although fsck had finished, the drive was not happy and was starting to give short reads on other parts of the filesystem, resulting in ~40% of the filesystem appearing to be read-only when the rest was read-write. Somehow, I didn&#039;t think this was a welcome feature as the areas affected appeared to be quite random.&lt;br /&gt;
&lt;br /&gt;
The drive in question was a replacement for the original 300Gb drive supplied with the ThinkPad, so a quick bit of switching of drives into a caddy and I could rsync my data off the large drive onto the smaller one. The rsync itself took a &lt;b&gt;lot&lt;/b&gt; longer than it should have done because it got lots of short reads too. (Principally in /lib/modules/3.2.0-4/ and in the browser cache directories which had been the original symptom as well as most other places where one could have expected processes to have open files when the drive failed).&lt;br /&gt;
&lt;br /&gt;
Now the 1Tb drive was a pig to fit into the Thinkpad originally because it was too big for the bay but I fitted it anyway. Yes, that was probably a mistake. It certainly meant that in order to fit it I had to not put the drive into the useful caddy provided by Lenovo which makes removal of the drive simple. Indeed the drive was wedged into the bay so tightly that it wasn&#039;t going to come out with normal levels of persuasion. This probably contributed to the failure of the drive, so live and learn.&lt;br /&gt;
&lt;br /&gt;
With help from Andy Simpkins (it&#039;s always handy to have a hardware engineer on hand at times like this), the keyboard was lifted out, the case was dismantled and just enough room was made to get a screwdriver in behind the sata drive and lever it out of the bay. OK, rebuild laptop, put replacement drive into the caddy (because the smaller capacity drive is also a lot smaller in height than the 1Tb and therefore has plenty of clearance between it and the bay) and move on to the software recovery stage.&lt;br /&gt;
&lt;br /&gt;
Hint: if this happens again, before turning off the broken system for the last time, just remember to download a recent Debian ISO to a USB stick - it saves having to ask someone else or find another machine to do the download. (Thanks Andy...)&lt;br /&gt;
&lt;br /&gt;
OK, so after the usual complaints on reboot that there was no operating system, F12 got the boot order menu up and I was in Debian Installer Rescue Mode. Reinstalling grub failed initially for a few reasons: &lt;ol&gt;&lt;li&gt;&lt;br /&gt;
I&#039;d deliberately not copied /dev /proc and /sys from the old harddrive but I&#039;d also forgotten to create empty ones on the new drive...&lt;/li&gt;&lt;li&gt;&lt;code&gt;/etc/fstab&lt;/code&gt; helpfully referred to / as a UUID which no longer applied, so that had to be edited&lt;/li&gt;&lt;li&gt;grub was confused and couldn&#039;t find the root filesystem&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;
A few iterations later, I had a working /dev directory inside the /target chroot, bind mounted from the /dev outside the chroot, I was able to mount proc and sys, so grub was finally happy to reinstall itself and then update the initramfs setup for the new drive.&lt;br /&gt;
&lt;br /&gt;
Reboot, another fsck, all appeared well. I was able to login via the terminal but not in X. Hmmm. Stop xdm, startx manually from the terminal, problems with /tmp/ - permission denied. Oops. Yes, it does help to create /tmp with the right permissions....&lt;br /&gt;
&lt;br /&gt;
The final stage was to complete the &lt;code&gt;dpkg --configure -a&lt;/code&gt; from the original failure. I&#039;ve yet to reinstall the 3.2.0-4 kernel, so I&#039;m back on 3.2.0-3 but that&#039;s OK.&lt;br /&gt;
&lt;br /&gt;
So now I&#039;m back on the original drive, albeit temporarily without any swap whatsoever (because I didn&#039;t partition the replacement drive to create /dev/sda5 before doing the copy) and now I remember the second reason I wanted to replace the original drive with the 1Tb drive - the original drive is &lt;b&gt;as NOISY as hell&lt;/b&gt;. The whole edge of the laptop vibrates constantly, to the point that I can feel the vibration under the keys as I type. It&#039;s not that the drive is loose in the bay, it&#039;s just a constant vibration.&lt;br /&gt;
&lt;br /&gt;
But, I have kept all my data and I have a usable laptop for the BSP this weekend. I will be looking at an SSD drive to replace this one though and having also found my old Acer laptop with power supply, I can now reference this entry when I transfer the system a second time.&lt;br /&gt;
 
    </description>

    <dc:publisher>Codehelp blog</dc:publisher>
    <dc:creator>nospam@example.com (Neil Williams)</dc:creator>
    <dc:subject>
    Debian, </dc:subject>
    <dc:date>2013-01-25T10:14:09Z</dc:date>
    <wfw:comment>http://www.linux.codehelp.co.uk/serendipity/wfwcomment.php?cid=245</wfw:comment>
        <wfw:commentRss>http://www.linux.codehelp.co.uk/serendipity/rss.php?version=1.0&amp;type=comments&amp;cid=245</wfw:commentRss>
    
    
</item>
<item rdf:about="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/244-guid.html">
    <title>Status of klibc on AArch64</title>
    <link>http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/244-Status-of-klibc-on-AArch64.html</link>
    <description>
    With significant assistance from Steve McIntyre and some judicious delving into the &lt;a href=&quot;http://infocenter.arm.com/help/index.jsp&quot;&gt;ARM Information Centre&lt;/a&gt;, I&#039;ve now got the assembly portions of klibc sorted (but untested) for AArch64 (arm64).&lt;br /&gt;
&lt;br /&gt;
Andy &amp;amp; I started by copying the old ARM support as a new directory and one of &lt;a href=&quot;https://github.com/codehelp/klibc-aarch64/commit/61db0ec37a165ce2b75c846ec202c56159ebe6fe&quot;&gt;the final steps&lt;/a&gt; was to remove a whole bunch of legacy code from the days before Thumb and all the #ifdef lines which went with it. Some files disappeared entirely. setjmp.S was the largest amount of work as the load&amp;store multiple support of ARMv7 has gone in ARMv8, so the stmia mnemonic had to be &lt;a href=&quot;https://github.com/codehelp/klibc-aarch64/commit/1ea28e11dc23259f2830c11bf0772504c2598eea&quot;&gt;expanded to multiple stp calls&lt;/a&gt; but that makes it more explicit, so it&#039;s not a bad thing.&lt;br /&gt;
&lt;br /&gt;
Steve &amp;amp; I borrowed from the glibc AArch64 code from &lt;a href=&quot;http://sourceware.org/git/?p=glibc.git;a=summary&quot;&gt;upstream&lt;/a&gt; by Marcus Shawcroft, simplifying the glibc macros for klibc and also got clues about what extra registers needed handling compared to ARMv7.&lt;br /&gt;
&lt;br /&gt;
I&#039;ve now got to look at some traditional cross-compilation issues because the Linaro AArch64 toolchain doesn&#039;t install to typical Debian cross-building paths and the build now moves past the AArch64-specific assembly and fails later when the C code gets the wrong include path and ends up including /usr/include/i386-linux-gnu/asm/byteorder.h with predictable results.&lt;br /&gt;
&lt;br /&gt;
If someone has an AArch64 toolchain already set up, feel free to &lt;a href=&quot;https://github.com/codehelp/klibc-aarch64&quot;&gt;clone my modified klibc tree&lt;/a&gt; and let me know if there are subsequent build errors. Of course, if you fancy testing a build in the Foundation Model for ARMv8, that would be good too! (Report issues via github.)&lt;br /&gt;
&lt;br /&gt;
Whilst I&#039;m sorting out the toolchain, I&#039;ve also been updating &lt;a href=&quot;https://github.com/codehelp/perl-cross-debian&quot;&gt;perl-cross-debian&lt;/a&gt; (which has also seen &lt;a href=&quot;http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2013-01/msg00235.html&quot;&gt;some more upstream testing&lt;/a&gt; and improvement).&lt;br /&gt;
 
    </description>

    <dc:publisher>Codehelp blog</dc:publisher>
    <dc:creator>nospam@example.com (Neil Williams)</dc:creator>
    <dc:subject>
    Debian, </dc:subject>
    <dc:date>2013-01-13T10:02:27Z</dc:date>
    <wfw:comment>http://www.linux.codehelp.co.uk/serendipity/wfwcomment.php?cid=244</wfw:comment>
        <wfw:commentRss>http://www.linux.codehelp.co.uk/serendipity/rss.php?version=1.0&amp;type=comments&amp;cid=244</wfw:commentRss>
    
    
</item>
<item rdf:about="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/243-guid.html">
    <title>perl-cross-debian updates</title>
    <link>http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/243-perl-cross-debian-updates.html</link>
    <description>
    &lt;a href=&quot;http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2013-01/msg00213.html&quot;&gt;Working with perl upstream&lt;/a&gt;, we&#039;re getting closer to a fully cross-built upstream perl without needing the external perl installation. The &lt;a href=&quot;https://github.com/castaway/perl/tree/jrobinson/configure-for-cross&quot;&gt;branch&lt;/a&gt; (which is &lt;a href=&quot;https://github.com/codehelp/perl/tree/jrobinson/configure-for-cross&quot;&gt;also available here with a few of my changes&lt;/a&gt;) now builds a host miniperl, cross-builds the rest of perl and &lt;b&gt;almost&lt;/b&gt; gets through the rest of the build by using the host miniperl to handle the extensions up as far as XS::Typemap:&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
make[1]: Leaving directory `/home/neil/code/debian/src/perl/cross/git/perl/ext/XS-APItest&#039;&lt;br /&gt;
./miniperl -Ilib make_ext.pl lib/auto/XS/Typemap/Typemap.so MAKE=make LIBPERL_A=libperl.a LINKTYPE=dynamic&lt;br /&gt;
	Making XS::Typemap (all)&lt;br /&gt;
make[1]: Entering directory `/home/neil/code/debian/src/perl/cross/git/perl/ext/XS-Typemap&#039;&lt;br /&gt;
make[1]: Leaving directory `/home/neil/code/debian/src/perl/cross/git/perl/ext/XS-Typemap&#039;&lt;br /&gt;
Making all in ext/XS-Typemap&lt;br /&gt;
make all PERL_CORE=1 LIBPERL_A=libperl.a LINKTYPE=dynamic&lt;br /&gt;
make[1]: Entering directory `/home/neil/code/debian/src/perl/cross/git/perl/ext/XS-Typemap&#039;&lt;br /&gt;
make[1]: Leaving directory `/home/neil/code/debian/src/perl/cross/git/perl/ext/XS-Typemap&#039;&lt;br /&gt;
./perl -f -Ilib pod/buildtoc -q&lt;br /&gt;
Can&#039;t load module Digest::MD5, dynamic loading not available in this perl.&lt;br /&gt;
  (You may need to build a new perl executable which either supports&lt;br /&gt;
  dynamic loading or has the Digest::MD5 module statically linked into it.)&lt;br /&gt;
 at Porting/pod_lib.pl line 4.&lt;br /&gt;
Compilation failed in require at Porting/pod_lib.pl line 4.&lt;br /&gt;
BEGIN failed--compilation aborted at Porting/pod_lib.pl line 4.&lt;br /&gt;
Compilation failed in require at pod/buildtoc line 17.&lt;br /&gt;
BEGIN failed--compilation aborted at pod/buildtoc line 18.&lt;br /&gt;
make: *** [pod/perltoc.pod] Error 2&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
Note the change from ./miniperl (which is itself a bug as it should be ./host/miniperl) to ./perl which is, naturally, an armel binary. It&#039;s also copied into the local directory, replacing the system perl if I copy it in.&lt;br /&gt;
&lt;br /&gt;
So, more to do, but at least it gets this far.&lt;br /&gt;
&lt;br /&gt;
Improved support for the extensions should also make it easier to clean up the current Debian cross-build diff which is the remaining bit of awkwardness / kludge.&lt;br /&gt;
 
    </description>

    <dc:publisher>Codehelp blog</dc:publisher>
    <dc:creator>nospam@example.com (Neil Williams)</dc:creator>
    <dc:subject>
    Debian, </dc:subject>
    <dc:date>2013-01-11T22:08:00Z</dc:date>
    <wfw:comment>http://www.linux.codehelp.co.uk/serendipity/wfwcomment.php?cid=243</wfw:comment>
        <wfw:commentRss>http://www.linux.codehelp.co.uk/serendipity/rss.php?version=1.0&amp;type=comments&amp;cid=243</wfw:commentRss>
    
    
</item>
<item rdf:about="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/242-guid.html">
    <title>bootstrapping arm64</title>
    <link>http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/242-bootstrapping-arm64.html</link>
    <description>
    I&#039;m still working on perl-cross-debian (&lt;a href=&quot;http://packages.qa.debian.org/p/perl-cross-debian/news/20130105T184758Z.html&quot;&gt;just uploaded 0.0.2&lt;/a&gt;) and there&#039;s more to do on that with &lt;a href=&quot;http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2013-01/msg00092.html&quot;&gt;upstream&lt;/a&gt; but part of the reason to work on perl cross-building is to do what I can to help with the ARM64 port.&lt;br /&gt;
&lt;br /&gt;
So, I went back to &lt;a href=&quot;http://www.youtube.com/watch?v=ZxU1DkR998U&quot;&gt;Wookey&#039;s talk at DebConf12&lt;/a&gt; which leads to the &lt;a href=&quot;http://people.linaro.org/~wookey/buildd/quantal-arm64/sbuild-ma/status-bootstrap.html#summary&quot;&gt;current list of cross-build results for arm64&lt;/a&gt; and started through the list.&lt;br /&gt;
&lt;br /&gt;
coreutils is listed as failing but that was an archive error (MD5sum hash mismatch), so that just needs a retry. I don&#039;t have access to that buildd, yet, so nothing I can do there.&lt;br /&gt;
&lt;br /&gt;
Next on the list (excluding those just waiting for build-deps) was &lt;a href=&quot;http://packages.qa.debian.org/k/klibc.html&quot;&gt;klibc&lt;/a&gt;. &lt;pre&gt;&lt;br /&gt;
  aarch64-linux-gnu-gcc -Wp,-MD,usr/klibc/.__static_init.o.d  -nostdinc -iwithprefix &lt;br /&gt;
include -I/«PKGBUILDDIR»/usr/include/arch/x86_64 -Iusr/include/arch/x86_64 &lt;br /&gt;
-I/«PKGBUILDDIR»/usr/include/bits64 &lt;br /&gt;
-Iusr/include/bits64 -I/«PKGBUILDDIR»/usr/klibc/../include &lt;br /&gt;
-Iusr/klibc/../include -I/«PKGBUILDDIR»/usr/include -Iusr/include &lt;br /&gt;
-I/«PKGBUILDDIR»/linux/include -Ilinux/include &lt;br /&gt;
-I/«PKGBUILDDIR»/linux/arch/x86/include -Ilinux/arch/x86/include &lt;br /&gt;
-D__KLIBC__=2 -D__KLIBC_MINOR__=0 -D_BITSIZE=64 -fno-stack-protector -fwrapv -m64 -Os &lt;br /&gt;
-fno-asynchronous-unwind-tables -fomit-frame-pointer -falign-functions=1 -falign-jumps=1 -falign-loops=1 &lt;br /&gt;
-W -Wall -Wno-sign-compare -Wno-unused-parameter -c -o usr/klibc/__static_init.o usr/klibc/__static_init.c&lt;br /&gt;
aarch64-linux-gnu-gcc: error: unrecognized command line option &#039;-m64&#039;&lt;br /&gt;
make[4]: *** [usr/klibc/__static_init.o] Error 1&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Turns out that this is a build failure I understood, at least initially. A little digging and a trivial patch was begun:&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
--- a/usr/klibc/arch/arm/MCONFIG&lt;br /&gt;
+++ b/usr/klibc/arch/arm/MCONFIG&lt;br /&gt;
@@ -30,6 +30,13 @@&lt;br /&gt;
 ifeq ($(CONFIG_AEABI),y)&lt;br /&gt;
 KLIBCREQFLAGS += -mabi=aapcs-linux -mno-thumb-interwork&lt;br /&gt;
 else&lt;br /&gt;
+# aarch64&lt;br /&gt;
+ifeq ($(CONFIG_AARCH64),y)&lt;br /&gt;
+KLIBCREQFLAGS +=&lt;br /&gt;
+KLIBCOPTFLAGS += -mgeneral-regs-only&lt;br /&gt;
+else&lt;br /&gt;
 KLIBCREQFLAGS += -mabi=apcs-gnu -mno-thumb-interwork&lt;br /&gt;
 endif&lt;br /&gt;
 endif&lt;br /&gt;
+endif&lt;br /&gt;
+&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
Alongside a trivial change to &lt;code&gt;debian/rules&lt;/code&gt;&lt;pre&gt;&lt;br /&gt;
ifeq ($(DEB_HOST_ARCH),arm64)&lt;br /&gt;
DEB_MAKE_ENVVARS := ARCH=arm CONFIG_AARCH64=y CPU_ARCH=armv8-a CPU_TUNE=generic&lt;br /&gt;
endif&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
OK, then things get a bit more awkward, &lt;pre&gt;&lt;br /&gt;
....&lt;br /&gt;
code/debian/cross/klibc/klibc-2.0.1/linux/arch/arm/include -Ilinux/arch/arm/include -D__KLIBC__=2 &lt;br /&gt;
-D__KLIBC_MINOR__=0 -D_BITSIZE=32 -fno-stack-protector -fwrapv -fno-exceptions -Os &lt;br /&gt;
-march=armv8-a -mtune=generic -mgeneral-regs-only -W -Wall -Wno-sign-compare -Wno-unused-parameter &lt;br /&gt;
-c -o ../foo.o usr/klibc/arch/arm/crt0.S&lt;br /&gt;
usr/klibc/arch/arm/crt0.S: Assembler messages:&lt;br /&gt;
usr/klibc/arch/arm/crt0.S:19: Error: operand 1 should be an integer register -- `mov r0,sp&#039;&lt;br /&gt;
usr/klibc/arch/arm/crt0.S:20: Error: operand 1 should be an integer register -- `mov r1,#0&#039;&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
Hmm. Assembly, well, yes, I&#039;ve done assembly before, I know what mov should normally do, sp is likely to be the stack pointer .... where&#039;s my AARCH64 assembly PDF again... &lt;a href=&quot;http://board.flatassembler.net/download.php?id=5698&quot;&gt;PRD03-GENC-010197&lt;/a&gt; ... &lt;br /&gt;
&lt;br /&gt;
OK, so maybe the r0 and r1 should be x0 and x1, hmm, that at least doesn&#039;t raise assembly errors. So a tentative change:&lt;pre&gt;&lt;br /&gt;
--- a/usr/klibc/arch/arm/crt0.S&lt;br /&gt;
+++ b/usr/klibc/arch/arm/crt0.S&lt;br /&gt;
@@ -15,9 +15,13 @@&lt;br /&gt;
 #ifdef __thumb__&lt;br /&gt;
 	.thumb_func&lt;br /&gt;
 #endif&lt;br /&gt;
-&lt;br /&gt;
+#ifdef __aarch64__&lt;br /&gt;
+_start: mov x0, sp&lt;br /&gt;
+	mov x1, #0&lt;br /&gt;
+	bl __libc_init&lt;br /&gt;
+#else&lt;br /&gt;
 _start:	mov	r0, sp&lt;br /&gt;
 	mov	r1, #0&lt;br /&gt;
 	bl	__libc_init&lt;br /&gt;
-&lt;br /&gt;
+#endif&lt;br /&gt;
 	.size _start,.-_start&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
Next stage, however, leaves me quite a bit more lost:&lt;pre&gt;&lt;br /&gt;
....&lt;br /&gt;
klibc-2.0.1/linux/arch/arm/include -Ilinux/arch/arm/include &lt;br /&gt;
-D__KLIBC__=2 -D__KLIBC_MINOR__=0 -D_BITSIZE=32 -fno-stack-protector -fwrapv -fno-exceptions -Os &lt;br /&gt;
-march=armv8-a -mtune=generic -mgeneral-regs-only -W -Wall -Wno-sign-compare -Wno-unused-parameter &lt;br /&gt;
-c -o usr/klibc/arch/arm/setjmp.o usr/klibc/arch/arm/setjmp.S&lt;br /&gt;
usr/klibc/arch/arm/setjmp.S: Assembler messages:&lt;br /&gt;
usr/klibc/arch/arm/setjmp.S:32: Error: unknown mnemonic `stmia&#039; -- `stmia r0,{r4,r5,r6,r7,r8,r9,r10,fp,sp,lr}&#039;&lt;br /&gt;
usr/klibc/arch/arm/setjmp.S:33: Error: operand 1 should be an integer register -- `mov r0,#0&#039;&lt;br /&gt;
usr/klibc/arch/arm/setjmp.S:34: Error: operand 1 should be an integer register -- `mov pc,lr&#039;&lt;br /&gt;
usr/klibc/arch/arm/setjmp.S:42: Error: unknown mnemonic `ldmia&#039; -- `ldmia r0,{r4,r5,r6,r7,r8,r9,r10,fp,sp,lr}&#039;&lt;br /&gt;
usr/klibc/arch/arm/setjmp.S:43: Error: unknown mnemonic `movs&#039; -- `movs r0,r1&#039;&lt;br /&gt;
usr/klibc/arch/arm/setjmp.S:44: Error: unknown mnemonic `moveq&#039; -- `moveq r0,#1&#039;&lt;br /&gt;
usr/klibc/arch/arm/setjmp.S:45: Error: operand 1 should be an integer register -- `mov pc,lr&#039;&lt;br /&gt;
make[5]: *** [usr/klibc/arch/arm/setjmp.o] Error 1&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
So now I&#039;m out of my depth of AARCH64 assembly (apart from the recurrence of mov r0 vs mov x0 etc.). If the above is useful then maybe someone can work out what is wrong with setjmp.S or whether AARCH64 just means that klibc needs to gain a arch/arm64/ directory and not try to duplicate each entire assembly block within #ifdef clauses.&lt;br /&gt;
&lt;br /&gt;
I don&#039;t really know where else to put an incomplete investigation like this, so it&#039;s here for anyone to find.&lt;br /&gt;
&lt;br /&gt;
(Oh, and if you&#039;re reading those arm64 cross-build logs, then a few hundred occurrences of &lt;code&gt;ldconfig: /usr/lib/aarch64-linux-gnu/*.so is for unknown machine 183.&lt;/code&gt; in every build log (success or fail) is apparently entirely normal until more packages get fixed. &lt;b&gt;Really&lt;/b&gt; slows down scanning the build log. &lt;img src=&quot;http://www.linux.codehelp.co.uk/serendipity/templates/default/img/emoticons/sad.png&quot; alt=&quot;:-(&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
I may try busybox or libusb next. libusb looks like a classic &quot;you might have told me to cross-compile but I&#039;m going to use g++ anyway because I know best&quot; cross-building problem, indicative of yet another &lt;acronym title=&quot;brain dead build system&quot;&gt;BDBS&lt;/acronym&gt;. sigh.&lt;br /&gt;
&lt;br /&gt;
Resources:&lt;br /&gt;
&lt;a href=&quot;http://www.cnx-software.com/2012/11/06/getting-started-with-64-bit-arm-development-hello-world-and-linux-on-armv8-fast-models/&quot;&gt;Getting started with 64-bit ARM development&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.linaro.org/engineering/armv8/#tab1&quot;&gt;ARMv8 images for developers&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://marcin.juszkiewicz.com.pl/2012/10/25/aarch64-for-everyone/&quot;&gt;AArch64 for everyone, Marcin Juszkiewicz&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://wiki.linaro.org/HowTo/HelloAarch64&quot;&gt;Howto/HelloAarch64 - Linaro wiki&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://gcc.gnu.org/onlinedocs/gcc/AArch64-Options.html&quot;&gt;AArch64 gcc options&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
 
    </description>

    <dc:publisher>Codehelp blog</dc:publisher>
    <dc:creator>nospam@example.com (Neil Williams)</dc:creator>
    <dc:subject>
    </dc:subject>
    <dc:date>2013-01-06T18:34:01Z</dc:date>
    <wfw:comment>http://www.linux.codehelp.co.uk/serendipity/wfwcomment.php?cid=242</wfw:comment>
        <wfw:commentRss>http://www.linux.codehelp.co.uk/serendipity/rss.php?version=1.0&amp;type=comments&amp;cid=242</wfw:commentRss>
    
    
</item>
<item rdf:about="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/241-guid.html">
    <title>perl-cross-debian is ready!</title>
    <link>http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/241-perl-cross-debian-is-ready!.html</link>
    <description>
    This is the listing for my local cross-build-only repository for perl:&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
perl | 5.14.2-16 | unstable | armel, source&lt;br /&gt;
perl | 5.16.2-1 | experimental | armel, source&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
Prior to this, 5.14.2-15 also cross-built. &lt;br /&gt;
&lt;br /&gt;
I&#039;ve just &lt;a href=&quot;https://github.com/codehelp/perl-cross-debian/commit/fbdbdcfb3c8e900466fdfb4b36944593dd528ae9&quot;&gt;pushed&lt;/a&gt; the update which fixes 5.16 from current Debian experimental.&lt;br /&gt;
&lt;br /&gt;
This means that I&#039;m ready to push perl-cross-debian into experimental via NEW. Whilst the package is in NEW, I will be approaching perl upstream about the necessary changes for Makefile.SH and updating the existing bug reports &lt;a href=&quot;http://bugs.debian.org/285559&quot;&gt;#285559&lt;/a&gt; and &lt;a href=&quot;http://bugs.debian.org/633884&quot;&gt;#633884&lt;/a&gt; with the necessary changes for debian/rules.&lt;br /&gt;
&lt;br /&gt;
In the meantime, the changes for Makefile.SH and debian/rules exist within the &lt;a href=&quot;https://github.com/codehelp/perl-cross-debian/tree/master/patches&quot;&gt;perl-cross-debian source code&lt;/a&gt; - the patch for 5.14.2 is the same as I used for 5.16.2 and I don&#039;t see a need, yet, for this to be any different with current perl upstream. Equally, the patch for debian/rules works equally well for 5.14.2 and 5.16.2. All the version-specific (and architecture-specific) data lives in perl-cross-debian.&lt;br /&gt;
&lt;br /&gt;
So it&#039;s time to &lt;a href=&quot;https://github.com/codehelp/perl-cross-debian/tags&quot;&gt;tag perl-cross-debian 0.0.1&lt;/a&gt; and upload to ftp-master as a native package aimed at experimental.&lt;br /&gt;
&lt;br /&gt;
What&#039;s left to do? &lt;b&gt;TESTING!&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
I&#039;ve only tested with armel using the Emdebian cross-building toolchains from Squeeze using the old dpkg-cross style cross-dependency installation paths. There is outline code for armhf and arm64 but these need testing. The code also needs testing using the latest MultiArch cross-building toolchains. This should be a simple matter of checking if the dpkg-cross style paths exist and looking for MultiArch if not.&lt;br /&gt;
&lt;br /&gt;
Right now, all of this is &quot;worksforme&quot; grade. It needs others to have a go and file bugs. Until the package is through NEW, feel free to use the issue tracker on the &lt;a href=&quot;https://github.com/codehelp/perl-cross-debian&quot;&gt;perl-cross-debian github site&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Please read through the &lt;a href=&quot;https://github.com/codehelp/perl-cross-debian/tree/master/doc&quot;&gt;documentation in the source code&lt;/a&gt; and the manpages in the package (xml in the source code) and tell me if some of it isn&#039;t clear.&lt;br /&gt;
 
    </description>

    <dc:publisher>Codehelp blog</dc:publisher>
    <dc:creator>nospam@example.com (Neil Williams)</dc:creator>
    <dc:subject>
    Debian, </dc:subject>
    <dc:date>2012-12-13T12:34:05Z</dc:date>
    <wfw:comment>http://www.linux.codehelp.co.uk/serendipity/wfwcomment.php?cid=241</wfw:comment>
        <wfw:commentRss>http://www.linux.codehelp.co.uk/serendipity/rss.php?version=1.0&amp;type=comments&amp;cid=241</wfw:commentRss>
    
    
</item>
<item rdf:about="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/240-guid.html">
    <title>perl-cross-debian update</title>
    <link>http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/240-perl-cross-debian-update.html</link>
    <description>
    &lt;a href=&quot;http://linux.codehelp.co.uk/serendipity/index.php?/archives/239-Long-term-maintenance-of-perl-cross-build-support-in-Debian.html&quot;&gt;Long term maintenance of cross-build support for the Debian configuration of perl&lt;/a&gt; has now gained some code at &lt;a href=&quot;https://github.com/codehelp/perl-cross-debian&quot;&gt;github&lt;/a&gt; and an &lt;a href=&quot;http://bugs.debian.org/694326&quot;&gt;ITP: #694326&lt;/a&gt; for Debian.&lt;br /&gt;
&lt;br /&gt;
There&#039;s some working code for perl 5.14 and initial work on 5.16 (which isn&#039;t complete yet).&lt;br /&gt;
&lt;br /&gt;
This will dramatically simplify the patch for &lt;a href=&quot;http://bugs.debian.org/633884&quot;&gt;#633884&lt;/a&gt; and provide a base for getting another part of that patch into upstream (Makefile.SH). (Thanks to Steve McIntyre &amp;amp; Peter Pearse for the body of the patch itself.)&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))&lt;br /&gt;
&lt;br /&gt;
define variant&lt;br /&gt;
$(if $(findstring static,$1),static,$(if $(findstring debug,$1),debug,shared))&lt;br /&gt;
endef&lt;br /&gt;
&lt;br /&gt;
define cross-config&lt;br /&gt;
    /usr/bin/perl-cross-debian --variant $(call variant,$@)&lt;br /&gt;
    perl -Ilib  make_patchnum.pl&lt;br /&gt;
endef&lt;br /&gt;
endif&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
So the config*variant files will live in /usr/share/perl-cross-debian/$arch/$perl_version/&lt;br /&gt;
&lt;br /&gt;
 
    </description>

    <dc:publisher>Codehelp blog</dc:publisher>
    <dc:creator>nospam@example.com (Neil Williams)</dc:creator>
    <dc:subject>
    Debian, </dc:subject>
    <dc:date>2012-11-25T16:30:13Z</dc:date>
    <wfw:comment>http://www.linux.codehelp.co.uk/serendipity/wfwcomment.php?cid=240</wfw:comment>
        <wfw:commentRss>http://www.linux.codehelp.co.uk/serendipity/rss.php?version=1.0&amp;type=comments&amp;cid=240</wfw:commentRss>
    
    
</item>
<item rdf:about="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/239-guid.html">
    <title>Long term maintenance of perl cross-build support in Debian</title>
    <link>http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/239-Long-term-maintenance-of-perl-cross-build-support-in-Debian.html</link>
    <description>
    After prompts from Wookey and Steve McIntyre, I decided to look at &lt;a href=&quot;http://bugs.debian.org/285559&quot;&gt;#285559&lt;/a&gt; and &lt;a href=&quot;http://bugs.debian.org/633884&quot;&gt;#633884&lt;/a&gt; for perl cross-build support and then port that support forward to the current perl in Wheezy and on to the version of perl currently in experimental. The first patch is for perl 5.8, the second for perl 5.12, neither of which is available currently in Debian. snapshot.debian.org provided the 5.12 source but then that no longer cross-builds with the patch.&lt;br /&gt;
&lt;br /&gt;
The problem, as with any cross build, is that the build &lt;b&gt;must&lt;/b&gt; avoid trying to execute binaries compiled within the build to achieve the test results required by ./configure (or in the case of perl, Configure). &lt;a href=&quot;http://packages.qa.debian.org/dpkg-cross&quot;&gt;dpkg-cross&lt;/a&gt; has one collection of cache values but the intention was always to migrate the package-specific support data into the packages themselves and keep the architecture-specific data in dpkg-cross or dpkg-dev. Therefore, the approach taken in #633884 would be correct, if only there was a way of ensuring that the cached values remain in sync with the relevant Debian package.&lt;br /&gt;
&lt;br /&gt;
I&#039;ll note here that I am aware of other ways of cross-building perl, this is particularly concerned with cross-building the Debian configuration of perl as a Debian package and using Debian or Emdebian cross-compilers. After all, the objective is to support bootstrapping Debian onto new architectures. However, I fully expect this to be just as usable with Ubuntu packages of perl compiled with, e.g. Linaro cross-compilers but I haven&#039;t yet looked at the differences between perl in Debian vs Ubuntu in any detail.&lt;br /&gt;
&lt;br /&gt;
I&#039;ve just got perl 5.14.2 cross-building for armel using the Emdebian gcc-4.4 cross-compiler (4.4.5-8) on a Debian sid amd64 machine without errors (it needs testing, which I&#039;ll look at later), so now is the time to document how it is done and what needs to be fixed. I&#039;ve already discussed part of this with the current perl maintainers in Debian and, subject to just how the update mechanism works, have outline approval for pushing these changes into the Debian package and working with upstream where appropriate. The cache data itself might live in a separate source package which will use a strict dependency on perl to ensure that it remains in sync with the version which it can cross-build. Alternatively, if I can correctly partition the cache data between architecture-specific (and therefore generated from the existing files) and package_$version specific, then it may be possible to push a much smaller patch into the Debian perl package. This would start with some common data, calculate the arch-specific data and then look for some version-specific data, gleaned from Debian porter boxes whilst the version is in Debian experimental.&lt;br /&gt;
&lt;br /&gt;
The key point is that I&#039;ve offered to provide this support for the long term, ensuring that we don&#039;t end up with future stable releases of Debian having a perl package which cannot be cross-built. (To achieve that, we will also end up with versions of perl in Debian testing which also cross-build.)&lt;br /&gt;
&lt;br /&gt;
This cross-build is still using dpkg-cross paths, not MultiArch paths, and this will need to be changed eventually. (e.g. by the source package providing two binaries, one which uses MultiArch and one which expects dpkg-cross paths.) The changes include patches for the upstream Makefile.SH, debian/rules and the cache data itself. Depending on where the cache data finally lives, the new support might or might not use the upstream Cross/ directory as the current contents date from the Zaurus support and don&#039;t appear to be that useful for current versions of perl.&lt;br /&gt;
&lt;br /&gt;
The cache data itself has several problems:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;It is tightly tied to the version of perl which generated it.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;It is, as expected, architecture-dependent&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;It is, unfortunately, very sensitive to the specific configuration used by the distribution itself&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;
&lt;br /&gt;
That last point is important because it means that the cache data is not useful upstream as a block. It also means that generating the cache data for a specific &lt;b&gt;Debian&lt;/b&gt; package means running the generation code on the native architecture with all of the Debian build-dependencies installed for the full perl build. This is going to complicate the use of this method for new architectures like arm64.&lt;br /&gt;
&lt;br /&gt;
My objective for the long term maintenance of this code is to create sufficient data that a new architecture can be bootstrapped by judicious use of some form of template. Quite how that works out, only time will tell. I expect that this will involve isolating the data which is truly architecture-specific which doesn&#039;t change between perl versions from the data which is related to the tests for build-dependencies which does change between perl versions and then work out how to deal with any remainder. A new architecture for a specific perl version should then just be a case of populating the arch-specific data such as the size of a pointer/char and the format specifiers for long long etc. alongside the existing (and correct) data for the current version of perl.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Generating the cache data natively&lt;/h2&gt;&lt;br /&gt;
&lt;br /&gt;
The perl build repeats twice (three builds in total) and each build provides and requires slightly different cache data - &lt;b&gt;static&lt;/b&gt;, &lt;b&gt;debug&lt;/b&gt; and &lt;b&gt;shared&lt;/b&gt;. Therefore, the maintenance code will need to provide a script which can run the correct configuration step for each mode, copy out the cache data for each one and clean up. The script will need to run inside a buildd chroot on a porter box (I&#039;m looking at using abel.debian.org and harris.debian.org for this work so far) so that the derived data matches what the corresponding Debian native build would use. The data then needs slight modification - typically to replace the absolute paths with PERL_BUILD_DIR. It may also be necessary to change the value of cc, ranlib and other compiler-related values to the relevant cross-compiler executables. That &lt;b&gt;should&lt;/b&gt; be possible to arrange within the build of the cache data support package itself, allowing new cache files to be dropped in directly from the porter box.&lt;br /&gt;
&lt;br /&gt;
The configuration step may need to be optimised within debian/rules of perl itself as it currently proceeds on from the bare configuration to do some actual building but I need to compare the data to see if a bare config is modified later. The test step can be omitted already. Each step is performed as:&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
DEB_BUILD_OPTIONS=&quot;nocheck&quot; fakeroot debian/rules perl.static &lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
That is repeated for perl.debug and libperl.so.$(VERSION) where $VERSION comes from :&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
/bin/bash debian/config.debian --full-version&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
The files to be copied out are:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;bitcount.h&lt;/b&gt; - architecture-specific (may be identical between similar architectures like armel &amp;amp; armhf)&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;b&gt;config.h&lt;/b&gt; - architecture &amp;amp; build specific, config.h.debug, config.h.static, config.h.shared.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;b&gt;config.sh&lt;/b&gt; - architecture &amp;amp; build specific config.sh.debug, config.sh.static, config.sh.shared.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;b&gt;uudmap.h&lt;/b&gt; - architecture-specific (may be identical between similar architectures like armel &amp;amp; armhf)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
There is a lot of scope for templating of some form here, e.g. config.h.debug is 4,686 lines long but only 41 of those lines differ between amd64 and armhf for the same version of perl (and some of those can be identified from existing architecture-specific constants) which should make for a much smaller patch.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Architecture-specific cache data for perl&lt;/h2&gt;&lt;br /&gt;
&lt;br /&gt;
So far, the existing patches only deal with armel and armhf. If I compare the differences between armel &amp;amp; armhf, it comes down to:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;compiler names (config.h.*)&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;architecture names (config.sh.*)&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;architecture-based paths (config.sh.*)&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;
&lt;br /&gt;
However, comparing armel and armhf doesn&#039;t provide sufficient info for deriving arm64 or mips etc. Comparing the same versions for armhf and amd64 shows the range of differences more clearly. Typical architecture differences exist like the size of a long, flags to denote if the compiler can cast negative floats to 32bit ints and the sprintf format specifier strings for handling floats and doubles. The data also includes some less expected ones like:&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
armhf: #define Netdb_host_t		const void * /**/&lt;br /&gt;
amd64: #define Netdb_host_t		char * /**/&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
I&#039;m not at all sure why that is arch-specific - if anyone knows, email codehelp @ d.o - same address if anyone fancies helping out ....&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Cross-builds and debclean&lt;/h2&gt;&lt;br /&gt;
&lt;br /&gt;
When playing with the cross-build, remember to use the cross-build clean support, not just debclean:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
dpkg-architecture -aarmel -c fakeroot debian/rules clean&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
That wasted quite a bit of my time initially with having to blow away the entire tree, unpack it from original apt sources and repatch it. (Once Wheezy is out, may actually investigate getting debclean to support the -a switch).&lt;br /&gt;
&lt;br /&gt;
OK, that&#039;s an introduction, I&#039;m planning on pushing the cross-build support code onto github soon-ish and doing some testing of the cross-built perl binaries in a chroot on an armel box. I&#039;ll detail that in another blog post when it&#039;s available.&lt;br /&gt;
&lt;br /&gt;
Next step is to look at perl 5.16 and then current perl upstream git to see how to get Makefile.SH fixed for the long term.&lt;br /&gt;
 
    </description>

    <dc:publisher>Codehelp blog</dc:publisher>
    <dc:creator>nospam@example.com (Neil Williams)</dc:creator>
    <dc:subject>
    Debian, </dc:subject>
    <dc:date>2012-11-18T17:29:48Z</dc:date>
    <wfw:comment>http://www.linux.codehelp.co.uk/serendipity/wfwcomment.php?cid=239</wfw:comment>
        <wfw:commentRss>http://www.linux.codehelp.co.uk/serendipity/rss.php?version=1.0&amp;type=comments&amp;cid=239</wfw:commentRss>
    
    
</item>
<item rdf:about="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/238-guid.html">
    <title>Introducing pyBit - Buildd Integration Toolkit</title>
    <link>http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/238-Introducing-pyBit-Buildd-Integration-Toolkit.html</link>
    <description>
    &lt;h1&gt;pyBit - cross-platform package building using AMQP&lt;/h1&gt;&lt;br /&gt;
&lt;a href=&quot;https://github.com/nicholasdavidson/pybit&quot;&gt;&lt;img src=&quot;https://s3.amazonaws.com/cloud.ohloh.net/attachments/58527/pybit-logo-sm_med.png&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Message queues provide a simple way to create a distributed, cross-platform buildd toolkit to build packages using a collection of buildds, direct from various  VCS clients. pyBit is intended to support rapidly evolving software collections and can support multiple VCS frontends and multiple build backends. Cross building is expected to be supported for some backends. The initial backend uses dpkg for Debian with subversion providing the source and sbuild doing the actual build.&lt;br /&gt;
&lt;br /&gt;
pyBit includes support for cancelling selected builds and using multiple buildd clients per architecture, per platform and per suite.&lt;br /&gt;
&lt;br /&gt;
Hooks are available or in development for subversion and git, other VCS hooks can be added. A RESTful web API provides live build reports and can generate build jobs for specific packages using particular VCS branches on selected architectures to support re-building packages at any point in the development process. Build history is stored using postgresql.&lt;br /&gt;
&lt;br /&gt;
Other buildd systems can rebuild long lists of packages or build lots of binary packages from relatively slow moving source packages. PyBit exists to handle much more rapid software development across a wide range of platforms, VCS inputs and architectures. Buildd clients which are under-used can be tasked with building multiple suites or adding cross-build support. Buildd clients which are over-utilised are easily identified and adding new machines to an existing architecture / platform / suite pool should be easy. Hook activation automatically cancels any ongoing build for the same architecture, platform and suite to avoid wasting time on an interim version. &lt;br /&gt;
&lt;br /&gt;
The emphasis in pyBit is to have fast builds with redundant clients, reliable reporting using a flexible and intuitive frontend. To this end, there is no need for a source package to be uploaded. Depending on the VCS hook in use, builds can happen every time a particular file is changed (e.g. debian/changelog for a native Debian package) or at every push (for a distributed VCS) or whatever is appropriate for a particular software collection. Builds are checked for available build-dependencies and packages re-queued if the build-dependencies are not yet met.&lt;br /&gt;
&lt;br /&gt;
In the longer term, it may well be possible to use more than one server / database combination to support more builds and more platforms.&lt;br /&gt;
&lt;br /&gt;
So far, we&#039;ve got to a working model and tagged &lt;a href=&quot;https://github.com/downloads/nicholasdavidson/pybit/pybit-0.1.0.tar.gz&quot;&gt;0.1.0&lt;/a&gt; as the &lt;a href=&quot;https://github.com/nicholasdavidson/pybit/downloads&quot;&gt;first downloadable release&lt;/a&gt;. There is a lot more to do, especially adding more documentation, more VCS hooks, support for more VCS methods on the buildd clients and more buildd client scripts for platforms other than Debian. (The git hook and git source client are expected to let pyBit be self-buildable but a certain amount of configuration will be required for the server and each client which makes it not-quite self-hosting.)&lt;br /&gt;
&lt;br /&gt;
pyBit concentrates on preparing collections of binary packages which can be used to build others, rather than trying to rebuild everything every time - this allows more rapid upstream software development and encourages modular, re-usable software. pyBit will also support rebuilding specific versions, architectures, suites or platforms via the RESTful web API. Access to this frontend can be controlled through any of the standard methods.&lt;br /&gt;
&lt;br /&gt;
Components are loosely coupled via JSON encoded messages sent using rabbitMQ and curl. A new client can be added at any time and it will simply pick up buildd jobs from the relevant queue.&lt;br /&gt;
&lt;br /&gt;
Development has now moved to &lt;a href=&quot;https://github.com/nicholasdavidson/pybit&quot;&gt;Github&lt;/a&gt; and if anyone wants to look at new clients and new hooks, just contact the team by email or via IRC (#pybit on irc.oftc.net). Current development is based on Debian Squeeze 6.0.6 with backports and also on Debian Wheezy - more testing is welcome. Patches are also very welcome, pyBit is licensed under GPL2+.&lt;br /&gt;
&lt;br /&gt;
There is no intrinsic reason why pyBit could not support any buildd platform capable of taking source from a known location and building a set of binaries. Packages are added to the queues whenever the hook is activated, so adding new packages to the collection is simply a case of triggering the existing hook.&lt;br /&gt;
&lt;br /&gt;
Another interesting challenge for pyBit would be to trigger a hook on a new source code repository and just let it work through every package until everything is built. That probably won&#039;t work with the current 0.1.0 code but if that is what you&#039;d like to work on, join the team.&lt;br /&gt;
 
    </description>

    <dc:publisher>Codehelp blog</dc:publisher>
    <dc:creator>nospam@example.com (Neil Williams)</dc:creator>
    <dc:subject>
    Debian, </dc:subject>
    <dc:date>2012-11-02T20:13:34Z</dc:date>
    <wfw:comment>http://www.linux.codehelp.co.uk/serendipity/wfwcomment.php?cid=238</wfw:comment>
        <wfw:commentRss>http://www.linux.codehelp.co.uk/serendipity/rss.php?version=1.0&amp;type=comments&amp;cid=238</wfw:commentRss>
    
    
</item>
<item rdf:about="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/237-guid.html">
    <title>subversion 1.7.5 insane upgrade requirement wasting days and days of effort</title>
    <link>http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/237-subversion-1.7.5-insane-upgrade-requirement-wasting-days-and-days-of-effort.html</link>
    <description>
    Upgrading the local version of subversion against a large subversion repository has so far taken &lt;b&gt;three DAYS&lt;/b&gt;. It goes through this multi-gigabyte repository in no perceivable order, it goes through every single directory in every single tag and every single branch and &lt;b&gt;refuses&lt;/b&gt; to run in any sub-directory. (Even after clearing out some older tags, the tags/ directory is still nearly 8Gb and that doesn&#039;t include any binary files.) Each tag within tags/ is 500Mb and contains nearly 6000 sub-directories. Yes, it&#039;s large but svn upgrade should still be able to handle it without crippling every machine. &lt;br /&gt;
&lt;br /&gt;
I can&#039;t image how svn is going to manage when the server finally gets upgraded. Probably be quicker to dump the entire repo and reimport it.&lt;br /&gt;
&lt;br /&gt;
When I finally give up the will to proceed or simply need to use this &lt;b&gt;LAPTOP&lt;/b&gt; for something else, I have to interrupt it with Ctrl-C &lt;b&gt;at which point is starts all over again!&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
This isn&#039;t a slow machine, it&#039;s a i5 quad-core T410 with 8Gb of RAM and 1Tb of storage - and svn has made it crawl for days. The only way to pair down the working copy is to &lt;b&gt;delete every tag and branch&lt;/b&gt; which means losing data like old build logs and old packages. The repository is this large because it&#039;s tracking the development of multiple commercial products which share common code but which also have numerous releases and release updates. &lt;br /&gt;
&lt;br /&gt;
I can&#039;t even use svn st on this repo without this completing - I haven&#039;t been able to &lt;b&gt;work&lt;/b&gt; on this repo since this started. Absolutely insane.&lt;br /&gt;
&lt;br /&gt;
Pondering filing an RC bug on the basis of unjustifiable data loss. We have many machines at work with this repository checked out and if we ever migrate to Wheezy, it&#039;s going to mean &lt;b&gt; a WEEK of lost work&lt;/b&gt;!!&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;subversion                    1.7.5-1&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
So, a warning for anyone else using subversion 1.7.5 with a very large repository: &lt;b&gt;DELETE ALL TAGS and BRANCHES and any other directory anywhere in every single working copy tree on every machine which ever wants to use that copy again&lt;/b&gt; before even thinking about upgrading to 1.7.5.&lt;br /&gt;
&lt;br /&gt;
The tags directories don&#039;t even need to be upgraded because we only use those to rebuild the code as it was in chroots.&lt;br /&gt;
&lt;br /&gt;
Unspeakably furious about such a completely dumb tool being thrown into the mix &lt;b&gt;DAYS&lt;/b&gt; before the Wheezy freeze. Now I have to kill it &lt;b&gt;AGAIN&lt;/b&gt; just so that I can suspend the laptop. IDIOTS.&lt;br /&gt;
 
    </description>

    <dc:publisher>Codehelp blog</dc:publisher>
    <dc:creator>nospam@example.com (Neil Williams)</dc:creator>
    <dc:subject>
    Debian, </dc:subject>
    <dc:date>2012-06-19T21:50:51Z</dc:date>
    <wfw:comment>http://www.linux.codehelp.co.uk/serendipity/wfwcomment.php?cid=237</wfw:comment>
        <wfw:commentRss>http://www.linux.codehelp.co.uk/serendipity/rss.php?version=1.0&amp;type=comments&amp;cid=237</wfw:commentRss>
    
    
</item>
<item rdf:about="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/236-guid.html">
    <title>Going to Nicaragua</title>
    <link>http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/236-Going-to-Nicaragua.html</link>
    <description>
    &lt;a href=&quot;http://debconf12.debconf.org/&quot;&gt;&lt;img src=&quot;http://media.debconf.org/dc12/artwork/Goingb_180x150-3.png&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Not DebCamp this year, but I intend to get to more talks than I did in Bosnia and still get some work done on &lt;a href=&quot;http://wiki.debian.org/EmdebianIntegration&quot;&gt;Emdebian Integration&lt;/a&gt; into Debian as well as working on as many RC bugs as I can manage during the week.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://udd.debian.org/cgi-bin/rcbugs.cgi&quot;&gt;Possibly easy targets via UDD&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
A couple of my usual RC bug filter queries:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://udd.debian.org/bugs.cgi?release=wheezy_and_sid&amp;patch=ign&amp;pending=ign&amp;security=ign&amp;wontfix=&amp;upstream=&amp;unreproducible=&amp;forwarded=&amp;claimed=ign&amp;deferred=ign&amp;notmain=ign&amp;notwheezy=&amp;base=&amp;standard=&amp;merged=ign&amp;done=ign&amp;outdatedwheezy=&amp;outdatedsid=&amp;needmig=&amp;newerubuntu=&amp;fnewer=&amp;fnewerval=7&amp;rc=1&amp;sortby=source&amp;sorto=asc&amp;cpopcon=1&amp;cseverity=1&amp;ctags=1&quot;&gt;&lt;br /&gt;
wheezy-and-sid, ignoring patch, pending, security, claimed and not in main.&lt;/a&gt; (483 bugs)&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://udd.debian.org/bugs.cgi?release=wheezy_or_sid&amp;merged=ign&amp;done=ign&amp;fnewerval=7&amp;rc=1&amp;sortby=popcon&amp;sorto=desc&amp;cpopcon=1&quot;&gt;&lt;br /&gt;
wheezy-or-sid, ignoring merged and done&lt;/a&gt; (987 bugs) 
    </description>

    <dc:publisher>Codehelp blog</dc:publisher>
    <dc:creator>nospam@example.com (Neil Williams)</dc:creator>
    <dc:subject>
    Debian, </dc:subject>
    <dc:date>2012-06-09T15:57:00Z</dc:date>
    <wfw:comment>http://www.linux.codehelp.co.uk/serendipity/wfwcomment.php?cid=236</wfw:comment>
        <wfw:commentRss>http://www.linux.codehelp.co.uk/serendipity/rss.php?version=1.0&amp;type=comments&amp;cid=236</wfw:commentRss>
    
    
</item>
<item rdf:about="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/235-guid.html">
    <title>Multiarch and debi</title>
    <link>http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/235-Multiarch-and-debi.html</link>
    <description>
    If you&#039;re in the habit of doing &lt;i&gt;sudo debi&lt;/i&gt; at the end of a build, it&#039;s worth noting a complication with Multiarch.&lt;br /&gt;
&lt;br /&gt;
Sometimes, it&#039;s tempting to rebuild (and install) a shared library with a few untested changes, however, if (like me), you have multiarch packages installed, this can cause a surprise:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
dpkg: error processing ../libqof2_0.8.4-2_amd64.deb (--unpack):&lt;br /&gt;
 trying to overwrite shared &#039;/usr/share/doc/libqof2/changelog.Debian.gz&#039;, which is different from other instances of package libqof2:amd64&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Bumping the changelog doesn&#039;t help:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
dpkg: error processing libqof2:amd64 (--install):&lt;br /&gt;
 package libqof2:amd64 0.8.4-3 cannot be configured because libqof2:armel is at a different version (0.8.4-2)&lt;br /&gt;
dpkg: error processing libqof2:armel (--install):&lt;br /&gt;
 package libqof2:armel 0.8.4-2 cannot be configured because libqof2:amd64 is at a different version (0.8.4-3)&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
The fix for this is, of course, to remove libqof2:armel &lt;b&gt;and all it&#039;s reverse dependencies&lt;/b&gt; and the packages can&#039;t be put back until you&#039;ve built an armel version of your changes.&lt;br /&gt;
&lt;br /&gt;
The way to backout the test change is a bit longwinded, depending on the complexity of your library:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
sudo apt-get --reinstall  install libqof2:amd64=0.8.4-2 libqof-dev:amd64=0.8.4-2 libqof2-backend-qsf:amd64=0.8.4-2 libqof2-backend-sqlite:amd64=0.8.4-2 libqof2-dbg:amd64=0.8.4-2 libqof2:armel=0.8.4-2&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Hmm. I think a helper tool could be needed in the medium term here.&lt;br /&gt;
&lt;br /&gt;
This also means that cross-building Emdebian Crush packages from a Wheezy / Wheezy+1 base is again looking as if it will need to happen inside a chroot, albeit with problems for the packages which are dependencies of the build tools (or the cross toolchain) itself, as the Crush packages will inevitably contain modified files. (For example, Emdebian Policy differs from Debian Policy by requiring - not forbidding - compression of debian/copyright.)&lt;br /&gt;
&lt;br /&gt;
Cross-building packages which are intended to be binary compatible with Debian without conversion (including cross-built packages to use on top of Emdebian Grip) shouldn&#039;t be too affected. You just need to ensure that where the package exists in two or more versions, all installed architectures are built before any architecture is installed.&lt;br /&gt;
&lt;br /&gt;
This is an additional burden compared to the world of &lt;code&gt;dpkg-cross&lt;/code&gt; but it is key to how Multiarch allows cross-building to use sensible dependency resolution.&lt;br /&gt;
&lt;br /&gt;
So, what I think we&#039;ll need is an enhancement to debi which can be passed an architecture (possibly an architecture list), debi then looks for &lt;b&gt;both&lt;/b&gt; the native arch and the requested architecture(s), &lt;b&gt;fails&gt;&lt;/b&gt; if the .changes file for the extra architecture(s) isn&#039;t found or proceeds to &lt;b&gt;install all packages for the native arch and arch-dependent packages for the second architecture&lt;/b&gt; in the same dpkg operation. As a further enhancement, debi might be able to check dpkg --print-foreign-architectures, check the output of $package:$arch against &lt;code&gt;dpkg -l&lt;/code&gt; and either complain or automatically use the Multiarch support to look for the relevant .changes files. debi may even want to check the package (as it&#039;s working in the package top directory usually) for Multiarch support before accepting the architecture list option.&lt;br /&gt;
&lt;br /&gt;
Think I need to do some reading of the debi source and see if a patch is workable...&lt;br /&gt;
 
    </description>

    <dc:publisher>Codehelp blog</dc:publisher>
    <dc:creator>nospam@example.com (Neil Williams)</dc:creator>
    <dc:subject>
    Debian, </dc:subject>
    <dc:date>2012-03-24T11:13:14Z</dc:date>
    <wfw:comment>http://www.linux.codehelp.co.uk/serendipity/wfwcomment.php?cid=235</wfw:comment>
        <wfw:commentRss>http://www.linux.codehelp.co.uk/serendipity/rss.php?version=1.0&amp;type=comments&amp;cid=235</wfw:commentRss>
    
    
</item>
<item rdf:about="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/234-guid.html">
    <title>Rubbish in the archive</title>
    <link>http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/234-Rubbish-in-the-archive.html</link>
    <description>
    I&#039;ve been asked (or been criticised through indirect media) about why packages are removed and as I&#039;ve just done quite a lot of removals at the &lt;a href=&quot;http://wiki.debian.org/BSP/2012/03/gb/Cambridge&quot;&gt;Cambridge BSP&lt;/a&gt; (I&#039;ve done some uploads too, it&#039;s not one-sided), I thought I&#039;d explain my rationale in the hope that it will encourage others to remove more packages and fix those which warrant fixing. This, is an approximation of the kind of &lt;i&gt;scoring&lt;/i&gt; I would use when assessing whether to fix a package or remove it. All bug counts are for the entire source package, including all bugs reported against binaries built from that source.&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;R - Release critical bugs&lt;/b&gt; - count the bugs cumulatively - 1 point for 1 bug, 3 points for two (1+2), 6 points for 3 (1+2+3) etc.&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;p&gt;&lt;b&gt;U - Uninstallable binary packages&lt;/b&gt; - extra points if a -dev package is involved as this will cause FTBFS in reverse dependencies. 1 point for every unrelated package affected. Add extra points if the uninstallable packages are reported as bugs rather than just as notices in the PTS. Add further points for each follow-up message to those bugs. (Filing or following up to a bug report is an indication of user impact as someone had to actually make a contribution.)&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;p&gt;&lt;b&gt;B - Blocking other bugs&lt;/b&gt; - extra points for every RC bug which is blocking any other bug of any severity.&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;p&gt;&lt;b&gt;B - Blocking transitions or release goals&lt;/b&gt; - extra points for every bug which is blocking a release transition. (Note this is not the same as being involved in the transition, it matters if the package is blocking the transition by making other packages involved in the transition unable to be rebuilt or migrate.)&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;p&gt;&lt;b&gt;I - Interest&lt;/b&gt; - popcon is not much use here, &quot;Interest&quot; is a multiplier of the total of previous points. If the package is in testing, multiply the previous points total by the number of days the package has been waiting to enter testing beyond the normal limit. If it is blocking other packages from migrating, add the total number of excess days of all blocked packages. If the package is only in unstable, multiply the previous points total by the number of &lt;b&gt;months&lt;/b&gt; the package has been waiting.&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;p&gt;&lt;b&gt;S - Security&lt;/b&gt; - Count up the number of days the CVE has been waiting longer than a week, multiply that number of days by three and multiply the points so far by the result.&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;p&gt;&lt;b&gt;H - Help&lt;/b&gt; - whether anyone has done any work at all, including the maintainer. Subtract 1 for any patches, 2 if the patches still apply &lt;i&gt;and work&lt;/i&gt;. (It&#039;s not much for patches because if a patch exists and works, the excuses not to upload are less believable). Double the points so far for any working patches which have been ignored for more than a month (more than a week for a CVE or packages blocking transitions.&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
RUBBISH - easy to remember, maybe.&lt;br /&gt;
&lt;br /&gt;
If someone comes up with a UDD query which can resolve the above as an algorithm, a) I&#039;ll buy them a beer at DebConf and b) it could be a useful addition to the PTS...&lt;br /&gt;
 
    </description>

    <dc:publisher>Codehelp blog</dc:publisher>
    <dc:creator>nospam@example.com (Neil Williams)</dc:creator>
    <dc:subject>
    Debian, </dc:subject>
    <dc:date>2012-03-04T10:18:27Z</dc:date>
    <wfw:comment>http://www.linux.codehelp.co.uk/serendipity/wfwcomment.php?cid=234</wfw:comment>
        <wfw:commentRss>http://www.linux.codehelp.co.uk/serendipity/rss.php?version=1.0&amp;type=comments&amp;cid=234</wfw:commentRss>
    
    
</item>
<item rdf:about="http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/233-guid.html">
    <title>Introducing ladder</title>
    <link>http://www.linux.codehelp.co.uk/serendipity/index.php?/archives/233-Introducing-ladder.html</link>
    <description>
    We needed a new package at work and once I&#039;d written it, I realised that it could well be useful for others, so I did the &lt;a href=&quot;http://lists.debian.org/debian-devel/2012/02/msg00579.html&quot;&gt;ITP&lt;/a&gt; and the package is &lt;a href=&quot;http://packages.qa.debian.org/l/ladder.html&quot;&gt;now in Debian unstable&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Ladder&lt;/b&gt; - Stepwise repository upgrade tool&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
Ladder creates a local repository of packages required&lt;br /&gt;
to upgrade a tarball of a chroot to a new milestone or&lt;br /&gt;
software release.&lt;br /&gt;
.&lt;br /&gt;
The repository can be signed and includes all specified&lt;br /&gt;
target packages and dependencies. The repository can then&lt;br /&gt;
be distributed and used to upgrade multiple devices in&lt;br /&gt;
sequence without needing network access.&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
The only dependencies are some simple perl modules, reprepro for the repository, apt and gnupg for the signing. None of those need to be particularly recent versions, so once ladder has had a little time in testing, I will be doing a backport to Squeeze. Lenny is a little less likely but eminently possible if someone specifically asks for it. Not that it particularly needs a backport mind, if you want to run ladder on some other Debian-based system, it&#039;s simply a case of installing the version in unstable. reprepro was in Lenny at a suitable version for what ladder requires, so any system remotely recent should be able to run ladder without changes.&lt;br /&gt;
&lt;br /&gt;
Normally, whenever you need to upgrade a device, you need to get that device onto a network, get access over the serial port or some form of pre-configured network connection, run the commands and clean up afterwards. OK, now do that again... oh and here are another 40 or 100 devices which all need precisely the same thing done and they all have to be shipped to paying customers today. What does any geek do? Script it.&lt;br /&gt;
&lt;br /&gt;
Ladder is part of that process. There would need to be some scripting / programming support on the devices concerned but ladder makes it easier to put that support in place at the design stage and then automate the actual update without the device needing to get onto a network and, potentially, allowing you to decide how to offer the upgrade (automatic, user involvement, engineers only etc.) Once that is implemented, the device is simply pointed at a locally mounted filesystem which contains the &lt;i&gt;ladder step&lt;/i&gt; for the migration. Each step is a SecureApt signed repository which is available at a deterministic location which can be easily scripted and which contains &lt;b&gt;only&lt;/b&gt; the packages necessary (with dependencies) to upgrade any device installed at Milestone A to Milestone B. Nice and small, only the stuff you need, whatever architecture you like and if you need to migrate from Milestone A to Milestone D, then you create a few steps on the ladder and automate the migration from A to B to C to D. All you need is enough space on whatever local media you need to use to plug into the devices. Then copy the media enough times, start the interface on each device and do something useful whilst the upgrade happens. Then, when the next lot need to be upgraded, you already have the media... Oh and ladder does &lt;b&gt;not&lt;/b&gt; need to run on the same architecture as the devices - all package handling is entirely architecture-neutral. So create the ladder steps and media on your fast x86 machines and then let the slower SSD devices take their own sweet time via automation. Simple - maybe, hopefully.&lt;br /&gt;
&lt;br /&gt;
I&#039;m expressly talking about devices here because this is where the original requirement arose - embedded devices which don&#039;t have direct / automatic / accessible network ports or even a working network configuration preset. These aren&#039;t new images to flash onto the device either, these are apt repositories, so only the stuff which needs to be changed is changed which saves a lot of time writing to slow SSD storage.&lt;br /&gt;
&lt;br /&gt;
If the mechanism sounds familiar, yes, it&#039;s using the same principles as xapt, multistrap and emdebian-grip but I thought it could be useful, so I generalised the interface (a bit) and uploaded.&lt;br /&gt;
&lt;br /&gt;
Let me know via the BTS if you need tweaks to the support. Ladder isn&#039;t particularly about getting desktop machines from Debian Potato to Debian Wheezy because you need to identify a &lt;i&gt;target package&lt;/i&gt; to be the top point of the dependency chain which gets into the step repository and all devices should start with the same packages at the same versions. Normally, the kind of devices I use at work have a single top level application which is the sole user interface and which directly or indirectly depends on all the other software required for that device. Whilst the target package value could take a few carefully selected packages instead of just one and there is support for an extra packages field, it&#039;s not intended / expected to be useful for desktops. This is for use with multiple devices which all have the same package selection, are at the same milestone at the start and which all need to migrate smoothly to whatever milestone is intended - one step at a time. Ladder could be used to migrate between Debian releases and I&#039;ve included example config files to support that, but the principle usage is with internal / proprietary repositories based on a common Debian stable platform where the user interface software is managed via identifiable milestones and where users have no direct control over installing packages. It&#039;s a production / manufacturing support tool more than a user / admin support tool. If you want to manage servers and desktops which allow users to install (or request to be installed) arbitrary packages, there are plenty of tools which already support this and are used by DSA in Debian for exactly these tasks. Ladder is not puppet but Linp didn&#039;t sound like a good name...&lt;br /&gt;
&lt;br /&gt;
Ladder step repositories only include the binary packages, not sources - so if the migration is not going to be done in-house and you&#039;re expecting to distribute these steps to users somehow, ensure that the original source repository is available online for the Debian / free software packages concerned. If you can&#039;t do that (because the source is proprietary), you possibly shouldn&#039;t be distributing the binaries as a user update mechanism in the first place because each step will include packages from the core Debian system which need to have the sources available when distributed.&lt;br /&gt;
&lt;br /&gt;
Inevitably, the ladder source package already contains two POT files for translations of the runtime messages and the POD based manpage. I expect to need to expand / clarify the manpage in due course, so don&#039;t rush to translate it yet as it&#039;s likely to change.&lt;br /&gt;
 
    </description>

    <dc:publisher>Codehelp blog</dc:publisher>
    <dc:creator>nospam@example.com (Neil Williams)</dc:creator>
    <dc:subject>
    Debian, </dc:subject>
    <dc:date>2012-02-18T09:52:44Z</dc:date>
    <wfw:comment>http://www.linux.codehelp.co.uk/serendipity/wfwcomment.php?cid=233</wfw:comment>
        <wfw:commentRss>http://www.linux.codehelp.co.uk/serendipity/rss.php?version=1.0&amp;type=comments&amp;cid=233</wfw:commentRss>
    
    
</item>

</rdf:RDF>
