Paul's Blog Entries for August 2006

Tuesday 1st August 2006

New Computer

With funding for my new company imminent, I placed an order for some of the bits for my new computer with Tekheads:

  • Thermaltake Tsunami Aluminium Case - Silver
  • Enermax Liberty 500W ELT500AWT Modular PSU - SLI Ready
  • Abit AN8-32X SLI PCI-E (Socket 939) Motherboard
  • AMD Athlon 64 X2 Dual Core 4600+ (939 Pin) - Retail with Fan
  • eVGA GeForce 7900GT 256MB GDDR3 HDTV-Out/Dual DVI (PCI-E) - Retail 10yr Warranty

  • 2x Seagate Barracuda 7200.10 SATAII NCQ 3Gb/s 320GB 16MB Cache OEM

Wednesday 2nd August 2006

Hospital Visit

Drove Bingning's mum to her appointment at the Dental Hospital. Took Leon for his first visit to the City of Manchester Stadium on the way back.

New Computer

Collected some more bits for the new computer from Aria Technology:

  • Cherry CyMotion Expert Combo Keyboard (black)

  • Logitech Premium Optical Mouse (black)
  • Sony DRU820A 16x Dual Layer DVDRW
  • OCZ Platinum XTC 2GB DDR2 RAM kit, PC2 6400

Arrived back home to find that I'd missed City Link's attempted delivery of the other bits, so will have to wait until tomorrow to put it all together.

Whilst I was at Aria, I also bought a new PSU and some case fans to replace those in my current desktop box, which has become very noisy recently. It's certainly much quieter now.

I actually had to drill some holes in the plastic front fascia of the case to allow air in for the front case fan (there's a nice fan mount there and holes in the metal chassis, but nowhere for the air to come from!).

Thursday 3rd August 2006

Local Packages

  • Updated perl-Module-CoreList to 2.06

  • Updated dovecot to 1.0.rc5

New Computer

The parts from Tekheads arrived just after lunchtime. It soon became apparent that I had the wrong sort of memory. Silly me didn't know the difference between dual-channel DDR and DDR2. The OCZ memory I bought was the latter but the Abit motherboard required the former. I took the memory back to Aria who gave me a credit note for the full amount, which was nice given that they have prominent signs stating that Items bought in error and no longer wanted will be subject to a 25% administration charge. So that was nice. The Corsair TWINX2048-3200PT memory I bought as a replacement was actually cheaper than the OCZ memory, so I got a refund too :-)

Friday 4th August 2006

VirtenSys Limited

My new employer has just completed a $12 million venture capital funding round. So I'll get paid next week :-)

Local Packages

Made some samba packages that addressed the CIFS issues I've been having.

Saturday 5th August 2006

New Computer

Got it up and running. Installed mock and built x86_64 versions of the samba packages from yesterday. Was suitably impressed with the performance. Copied my home directory over from the old box (an 800MHz Athlon) and got my desktop back. I'm a happy bunny right now.

Sunday 6th August 2006

Local Packages

Reoganised the repository to add an architecture directory underneath the distribution directory now that I can build packages for both i386 and x86_64 architectures. I updated the mirrorlists accordingly and started populating the FC5/x86_64 repo.

Monday 7th August 2006

Local Packages

  • Continued populating the FC5/x86_64 repository

  • Updated perl-Pod-Coverage to 0.18; the new "fully qualified" test fails on perl 5.8.0 though:

    t/02simple.......ok 32/33#     Failed test (t/02simple.t at line 84)
    t/02simple.......NOK 33#          got: undef
    #     expected: '1'
    # Looks like you failed 1 tests of 33.
            Test returned status 1 (wstat 256, 0x100)
    DIED. FAILED test 33
            Failed 1/33 tests, 96.97% okay
  • I worked around this by patching out this test for builds on Red Hat Linux 9 and Enterprise Linux 3
  • It seems that some people aren't using the mirrorlists, and so are trying to access the repositories at the old locations; for now I'll redirect these:
    RedirectMatch permanent /ftp/contrib/yum-repo/([^/]+)/repodata(.*)$$1/i386/repodata$2
  • Updated gtkwave to 3.0.8

  • Updated bittorrent to 4.20.7; --dfile support in the tracker is still broken

  • Updated curl to 7.15.5

Fedora Extras

  • Updated gtkwave to 3.0.8

Tuesday 8th August 2006

Local Packages

  • Updated dovecot to 1.0.rc6

  • The RedirectMatch fix for people accessing the repo using the old hierarchy worked OK for the metadata and repoview files, but not for the packages themselves, which didn't trigger the rewrite rule. So now I have a much better solution, which also redirects accesses to missing repoview pages to the repoview index for the repo concerned.

  • Firstly, in httpd.conf:

    # RewriteLock must be in main server config
    RewriteEngine on
    RewriteLock /var/log/httpd/REWRITE.lock
    <VirtualHost *:80>
        RewriteEngine on
        RewriteLog /var/log/httpd/cfo-rewrite_log
        RewriteLogLevel 1
        RewriteMap repo-remap prg:/usr/local/bin/repo-remap
        # Make the ftp server's files available by http too.
        Alias /ftp /home/ftp/pub
        <Directory /home/ftp/pub>
            Options Indexes Includes FollowSymLinks
            IndexOptions +SuppressColumnSorting +VersionSort
            AllowOverride None
            order allow,deny
            allow from all
        # Remap accesses to files in repos that are no longer there
        # (Skip next 3 rules for other locations)
        RewriteRule !^/ftp/contrib/yum-repo/[^/]+/.*$       - [S=3]
        # Try remapping the request to the new locations
        RewriteRule ^/ftp/contrib/yum-repo/(.*)$            ${repo-remap:$1}
        # If we need a redirect, do it
        RewriteRule ^/GOTO:(.*)$                            $1 [R=permanent,L]
        # If the file exists or is just a subtle redirect, pass through to next handler
        RewriteRule ^(.*)$                                  - [PT]
  • The rewrite map script, /usr/local/bin/repo-remap:

    #   generate substitution URL on stdout
    # All input data is relative to the yum-repo directory
    $repodir = '/home/ftp/pub/contrib/yum-repo';
    $repouri = '/ftp/contrib/yum-repo';
    $repourl = '/GOTO:' . $repouri;
    while (<>) {
            chomp; $reporeq = $_;
            # If the distro directory doesn't exist, bail out straight away
            ( $distro = $reporeq ) =~ s|/.*||;
            if ( ! -d $repodir . '/' . $distro ) {
                    print "$repouri/$reporeq\n";
            # If requesting index.php, change to index.html
            $reporeq =~ s|/index\.php$|/index.html|;
            # See if it's a request using the architecture directory
            ( $filereq = $reporeq ) =~ s|[^/]*/||;
            ( $archdir = $filereq ) =~ s|/.*||;
            if ( -d  $repodir . '/' . $distro . '/' . $archdir ) {
                    # Request has proper directory hierarchy
                    # If requested file exists, pass through
                    if ( -f $repodir . '/' . $reporeq || -d $repodir . '/' . $reporeq ) {
                            print "$repouri/$reporeq\n";
                    # Otherwise, redirect to repo index page
                    print $repourl . '/' . $distro . '/' . $archdir . "/repodata/index.html\n";
            } else {
                    # Request has old directory structure
                    # See if inserting the 'i386' directory fixes the issue
                    if ( -f $repodir . '/' .  $distro . '/i386/' . $filereq ||
                         -d $repodir . '/' .  $distro . '/i386/' . $filereq   ) {
                            print $repourl . '/' . $distro . '/i386/' . $filereq . "\n";
                    # Otherwise, redirect to repo index page
                    print $repourl . '/' . $distro . "/i386/repodata/index.html\n";
  • I don't do much perl, so there may be much better ways of doing the above, but it works for me
  • Updated unrar to 3.6.7 (a version that actually builds on my x86_64 box)

Fedora Extras

  • Addressed Bug #201691 on perl-MIME-tools, requesting that some of the examples be installed into /usr/bin

Wednesday 9th August 2006

Local Packages

  • Ugo Bellavance alerted me to a sendmail problem regarding PID files; there was also a reference to this and a shared memory issue, both of which had patches available, in Bug #198099, so I built a new package incoporating those patches

SELinux and mock

  • Got a bit further trying to track down the cause of the hangs in mock when trying to build for a Fedora Core 2 target on a host with SELinux enabled.

Thursday 10th August 2006

Local Packages

  • Updated sendmail to 8.13.8, which includes the fixes for the issues I patched last night |)

  • Updated bittorrent to 4.20.8; --dfile is still broken for the tracker

  • Updated bw-whois to 5.0

  • Updated perl-Module-CoreList to 2.07

Friday 11th August 2006

Local Packages

  • Updated gtkwave to 3.0.9

  • Finally resolved the problem with building Fedora Core 2 packages in mock on a system with SELinux enabled; it's been around a year since I first came across this issue so I'm in a good mood today!

Fedora Extras

  • Updated gtkwave to 3.0.9

Monday 14th August 2006

Local Packages

  • Started populating x86_64 repositories for Fedora Core 4 and Red Hat Enterprise Linux 4
  • Updated gtorrentviewer to include missing buildreq intltool

  • Updated tzip to build useful debuginfo packages

Tuesday 15th August 2006

Local Packages

  • Continued with the population of the Fedora Core 4 and Centos 4 x86_64 repositories
  • Tweaked proftpd to build successfully in mock (add buildreqs of tcp_wrappers and zlib-devel, don't fail if the ProFTPD GPG key isn't in the builder's keyring)

  • Tweaked smbldap-tools and perl-WeakRef to build with the right distribution tags

Fedora Extras

Wednesday 16th August 2006

Local Packages

  • Updated buildsys-build in require python on all releases prior to Fedora Core 5; without this, most python module builds in mock break

  • Completed populating the Fedora Core 4 and CentOS 4 x86_64 repositories


  • Updated my home page to reflect my new employment status :-)

Thursday 17th August 2006

Internet Outage

  • A power failure at Telehouse caused around 6 hours of downtime for my home machine (on PlusNet) and around three hours for the work mail server (on !Clara.Net)

Local Packages

  • Updated unrar to 3.6.8

Friday 18th August 2006

Local Packages

  • Updated bittorrent to 4.20.9; at last everything seems to be working

  • Updated dovecot to 1.0.rc7

Sunday 20th August 2006

Woken by Alarm

The temperature alarm on laurel (my old desktop) went off again, at around 4:10am. I'm not at my best at that time of day. It was running the makewhatis -w from the cron.weekly job. I killed the job, the alarm beeping stopped shortly afterwards and I went back to bed.

In the afternoon I fitted an addition fan blowing at the bridge chip on the Gigabyte GA-7IXE4 motherboard (which has a small heatsink but no fan). I also discovered that the BIOS display of the hardware monitoring page locks up after trying to display the voltage of the -5V rail and it has to be reset using the reset switch. The lm_sensors output for this rail indicates something above +3V so I suspect that there is a hardware problem there. I told lm_sensors to ignore that rail, and also the temp3 sensor, which doesn't appear to be connected. I bumped up the CPU temperature alarm to not go off until 90°C too. Running makewhatis -w manually and watching the sensors output, the CPU temperature peaked at 80.5°C so that should be OK now.


alias char-major-89 i2c-dev


chip "w83782d-*" "w83627hf-*"
    label in0 "Vcore"
    label in1 "Vcache"
    label in2 "+3.3V"
    label in3 "+5V"
    label in4 "+12V"
    label in5 "-12V"
    label in6 "-5V"
    label in7 "V5SB"
    label in8 "VBat"
    compute in3 ((6.8/10)+1)*@ ,  @/((6.8/10)+1)
    compute in4 ((28/10)+1)*@  ,  @/((28/10)+1)
    compute in5 (5.14 * @) - 14.91  ,  (@ + 14.91) / 5.14
    compute in6 (3.14 * @) -  7.71  ,  (@ +  7.71) / 3.14
    compute in7 ((6.8/10)+1)*@ ,  @/((6.8/10)+1)
    set in0_min vid*0.95
    set in0_max vid*1.05
    set in1_max 3.81
    set in1_min 2.24
    set in2_min 3.3 * 0.95
    set in2_max 3.3 * 1.05
    set in3_min 5.0 * 0.95
    set in3_max 5.0 * 1.05
    set in4_min 12 * 0.90
    set in4_max 12 * 1.10
    set in5_max -12 * 0.90
    set in5_min -12 * 1.10
    set in6_max -5 * 0.95
    set in6_min -5 * 1.05
    set in7_min 5 * 0.95
    set in7_max 5 * 1.05
    set in8_min 3.0 * 0.80
    set in8_max 3.0 * 1.20
    ignore in6
    ignore temp3
    set temp1_over 40
    set temp1_hyst 37
    set beep_enable 1

Monday 21st August 2006

Fedora Extras

  • Updated gtkwave to 3.0.10

Local Packages

  • Updated gtkwave to 3.0.10

  • Updated pptpconfig to 20060821

PPTP Client

  • Updated pptpconfig to 20060821

  • Discovered a change in the way CVS access works. Instead of:

    $ cvs -d checkout modulename
  • It now needs:
    $ cvs checkout modulename
  • This change probably happened quite a while ago but I'm not very active in CVS.

Thursday 24th August 2006

Local Packages

Made some significant changes to my buildsystem:

  • Used suggestions from Extras/MockTricks to enable the autocache of mock buildroots to speed up mock. It's interesting to see how much the size of the minimal buildroot (the packages listed at fedoraProject:Packaging/Guidelines#Exceptions plus their dependencies) changes between distributions:

    $ ls -l /var/lib/mock/root-cache/
    total 1915456
    -rw-rw-r-- 1 root mock  81888007 Aug 24 11:42 centos-3-i386.tar.gz
    -rw-rw-r-- 1 root mock  85405813 Aug 24 11:54 centos-3-x86_64.tar.gz
    -rw-rw-r-- 1 root mock 121852773 Aug 24 11:40 centos-4-i386.tar.gz
    -rw-rw-r-- 1 root mock 128487310 Aug 24 11:52 centos-4-x86_64.tar.gz
    -rw-rw-r-- 1 root mock  89651706 Aug 24 11:31 fedora-1-i386-core.tar.gz
    -rw-rw-r-- 1 root mock  92763322 Aug 24 11:21 fedora-2-i386-core.tar.gz
    -rw-rw-r-- 1 root mock 130415162 Aug 24 11:11 fedora-3-i386-core.tar.gz
    -rw-rw-r-- 1 root mock 138236605 Aug 24 11:03 fedora-4-i386-core.tar.gz
    -rw-rw-r-- 1 root mock 143118349 Aug 24 11:58 fedora-4-x86_64-core.tar.gz
    -rw-rw-r-- 1 root mock 128570517 Aug 24 10:59 fedora-5-i386-core.tar.gz
    -rw-rw-r-- 1 root mock 132355621 Aug 24 12:06 fedora-5-x86_64-core.tar.gz
    -rw-rw-r-- 1 root mock 223028304 Aug 24 10:53 fedora-development-i386-core.tar.gz
    -rw-rw-r-- 1 root mock 229692899 Aug 24 10:40 fedora-development-x86_64-core.tar.gz
    -rw-rw-r-- 1 root mock  57085074 Aug 24 11:48 redhat-73-i386.tar.gz
    -rw-rw-r-- 1 root mock  86610677 Aug 24 11:46 redhat-8-i386.tar.gz
    -rw-rw-r-- 1 root mock  90143315 Aug 24 11:44 redhat-9-i386.tar.gz
  • Also from Extras/MockTricks, I set up a local squid cache. This isn't needed for any of the current distribution releases I'm building for since I keep local mirrors of those, but it enables me to build packages for rawhide without having to constantly re-download lots of large packages.

  • I made myself a wrapper script (mb) to run mock, so as to ensure that I don't forget to use the --autocache option or use setarch i386 for 32-bit builds. It also gives me a shorthand notation for the distributions, so I can do:

    $ mb fc4.32 some.src.rpm
    $ mb fc4.64 some.src.rpm
  • and I'll get 32 and 64 bit builds for FC4 :-)

  • Here's the script in case it's of any use to anyone (it'll need tweaking):
    # mb: mock build
    # mb distro.archbits options ...
    # e.g.
    # mb rhl7.32 rebuild some.rpm
    # mb fc5.64 rebuild some.rpm
    # How to use mb
    usage () {
            echo "mb: usage: mb distro.archbits options ..."
    # Parse distro.archbits
    case "$#" in
    0|1)    usage 1>&2
            exit 1;;
    *)      root="$1"
    if [ "${distro}.${archbits}" != "$root" ]; then
            echo "mb: cannot parse distro.archbits: $root" 1>&2
            exit 1
    # Only valid values for archbits are 32 and 64
    case "$archbits" in
    32|64)  ;;
    *)      echo "mb: archbits should be 32 or 64: $archbits"
            exit 1;;
    # Only valid values for distro are rhl[7-9], rhel[3-4], fc[1-6]
    case "$distro" in
    rhl7|rhl8|rhl9)                 ;;
    rhel3|rhel4)                    ;;
    fc1|fc2|fc3|fc4|fc5|fc6)        ;;
    *)      echo "mb: valid distros are: rhl[7-9], rhel[3-4], fc[1-6]" 1>&2
            exit 1;;
    # Work out buildroot name
    case "$root" in
    rhl7.32)        buildroot=redhat-73-i386;;
    rhl8.32)        buildroot=redhat-8-i386;;
    rhl9.32)        buildroot=redhat-9-i386;;
    rhel3.32)       buildroot=centos-3-i386;;
    rhel3.64)       buildroot=centos-3-x86_64;;
    rhel4.32)       buildroot=centos-4-i386;;
    rhel4.64)       buildroot=centos-4-x86_64;;
    fc1.32)         buildroot=fedora-1-i386-core;;
    fc2.32)         buildroot=fedora-2-i386-core;;
    fc3.32)         buildroot=fedora-3-i386-core;;
    fc4.32)         buildroot=fedora-4-i386-core;;
    fc4.64)         buildroot=fedora-4-x86_64-core;;
    fc5.32)         buildroot=fedora-5-i386-core;;
    fc5.64)         buildroot=fedora-5-x86_64-core;;
    fc6.32)         buildroot=fedora-devel-i386-core;;
    fc6.64)         buildroot=fedora-devel-x86_64-core;;
    *)              echo "mb: unsupported distribution/architecture: $root" 1>&2
                    exit 1;;
    # Run mock
    case $archbits in
    32)     echo setarch i386 mock --autocache -r $buildroot "$@"
            setarch i386 mock --autocache -r $buildroot "$@";;
    64)     echo mock --autocache -r $buildroot "$@"
            mock --autocache -r $buildroot "$@";;
  • Updated buildsys-macros to use the next major release version if the release version number extracted from /etc/redhat-release has a number larger than 80 after a decimal point. So for instance, building it on the current rawhide (FC 5.91) returns:

    dist .fc6
    fedora 6

Friday 25th August 2006

Local Packages

  • Updated libidn to 0.6.6

  • Updated perl-Mail-Mbox-MessageParser to 1.4005

Fedora Extras

  • Updated perl-Mail-Mbox-MessageParser to 1.4005

PPTP Client

  • I've cobbled together a repoclosure script to check that there are no broken dependencies in the repositories before I publish them, so as to avoid problems like the one with the SuSE package sneaking into the Fedora repo; it is very resource-intensive though, so I'm going to have to migrate it to the main buildsystem box so it doesn't cripple the server

  • Built libglade and gnome-libs packages for FC6 in case my Fedora Extras submissions for these packages aren't reviewed before FC6 is released

Monday 28th August 2006

Fedora Extras

  • Fixed Bug #202328 relating to one of the libraries shipped in ORBit having undefined weak symbol references

Local Packages

  • Fixed python-twisted-names not to have dependency on deprecated (and no longer in my repository) python-twisted-flow package (thanks to Quentin Arce for the report); also did a few other spec file cleanups whilst I was at it, such as preventing creation of a debuginfo package and not %ghost-ing the .pyo files

Tuesday 29th August 2006

SELinux Policy Update

The latest FC5 SELinux policy package, selinux-policy-2.3.7-2.fc5, contains my context fixes for /etc/aliases(.&) but more importantly, splits out a separate selinux-policy-devel package. This means that the procedure to BuildSeLinuxPolicyModules is now the same in FC5 as for FC6 onwards, which is nice :-)

Fedora Extras

  • Removed python-devel buildreq and stopped %ghost-ing the .pyo files in bittorrent

  • Fixed buildreqs for lat (gtk-sharp2 split to gtk-sharp2 and gnome-sharp, both with -devel packages for FC6)

  • Tidied up spec files for perl-Convert-BinHex and perl-IO-stringy to my own cosmetic preferences (packages were previously orphaned)

  • Rebuilt as part of the FE6 mass rebuild:

    • bluefish

    • grepmail

    • gtorrentviewer

    • milter-regex

    • perl-Authen-DigestMD5

    • perl-Class-Loader

    • perl-Crypt-DH

    • perl-Crypt-DSA

    • perl-Crypt-Primes

    • perl-Crypt-Random

    • perl-Crypt-RSA

    • perl-Crypt-SmbHash

    • perl-Data-Buffer

    • perl-Date-Simple

    • perl-Digest-BubbleBabble

    • perl-Digest-MD2

    • perl-FileHandle-Unget

    • perl-IO-stringy

Local Packages

  • Updated contagged and mod_fcgid to simplify SELinux buildreqs

Wednesday 30th August 2006

Fedora Extras

  • Rebuilt as part of the FE6 mass rebuild:

    • perl-MailTools

    • perl-Math-GMP

    • perl-Math-Pari

    • perl-Tie-EncryptedHash

    • pptp

    • rbldnsd

    • spamass-milter

Thursday 31st August 2006

Mock/Squid Problem Resolved

As I don't want to maintain full local mirrors of the Fedora development repositories (i386 and x86_64), I've configured my buildsystem to use offsite repositories via a squid cache. Unfortunately the squid setup wasn't caching the packages. This turned out to be due to my selection of mirror:

$ HEAD ""
200 OK
Cache-Control: no-store
Connection: close
Date: Thu, 31 Aug 2006 10:22:26 GMT
Via: 1.1
Accept-Ranges: bytes
ETag: "616686-23a03-fe262140"
Server: Apache/2.0.54 (Debian GNU/Linux)
Content-Length: 145923
Content-Type: application/x-redhat-package-manager
Last-Modified: Fri, 25 Aug 2006 02:04:13 GMT
Client-Date: Thu, 31 Aug 2006 10:22:31 GMT
Client-Response-Num: 1

Switching to a more sane mirror resolved the problem.

Local Packages

Wrote a script to check for dependency closure in my repository, which identified a number of issues:

  • I removed smbldap_tools from the RHL9, FC1, and RHEL3 due to unsatisfied dependencies:

    • perl(Unicode::MapUTF8)

    • perl(Net::LDAP::LDIF)

    • perl(Net::LDAP)

  • I rebuilt perl-Module-Compat with the epoch included in the versioned perl dependency for RHL9 and RHEL3

  • I rebuilt ud, pop3gwd, and hot-babe on older distributions to avoid dependencies on recent glibc symbols

  • Built RHEL4.x86_64 versions of perl-BerkeleyDB, perl-Convert-UUlib, perl-Digest-MD4, perl-MIME-XBase64, perl-Unicode-Map, perl-Unicode-Map8, perl-Unicode-String, perl-Unix-Syslog, and perl-version, all of which I'd somehow missed building when initially populating the repository

I also began to populate a Fedora Core Development version of my local repository.

Fedora Extras

  • Updated perl-Net-SSH-Perl so as not to run the 03-packet test, which is prone to hanging (CPAN RT#6101)

Previous Month: July 2006
Next Month: September 2006