The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

SettingUpBuildSystem - How to set-up a chrooted build system

create lenny base

        debootstrap lenny /var/tmp/let32 http://ftp.at.debian.org/debian/
        mount -o bind /proc /var/tmp/let32/proc
        chroot /var/tmp/let32 su -
        echo let32 > /etc/debian_chroot
        apt-get update
        apt-get install sudo
        adduser b &&echo 'b ALL=(ALL)NOPASSWD: ALL' >> /etc/sudoers
        exit
        chroot /var/tmp/let32 su - b
        sudo apt-get install libapt-pkg-perl
        sudo apt-get install libyaml-perl libyaml-syck-perl libtext-diff-perl liblist-moreutils-perl
        sudo apt-get install libfile-slurp-perl libtest-exception-perl libtest-differences-perl
        sudo apt-get install libjson-xs-perl libmoose-perl libfile-chdir-perl
        sudo apt-get install libpath-class-perl libtest-deep-perl libreadonly-perl
        sudo apt-get install libfile-find-rule-perl libfile-homedir-perl libio-compress-bzip2-perl
                
        sudo cpan
        # o conf connect_to_internet_ok yes
        # o conf commit
        
        sudo cpan -i CPAN::Patches::Plugin::Debian Debian::Apt::PM
        
        sudo apt-get install debootstrap

        sudo chown b /var/cache/apt/apt-pm/*
        sudo bash -c 'echo "deb http://pkg-perl.alioth.debian.org/~jozef-guest/pmindex/ lenny main contrib non-free" >> /etc/apt/sources.list'
        apt-pm update

        sudo chown b /var/lib/dh-make-pm /var/lib/cpan-patches/
        
        cd /var/lib/cpan-patches/
        rmdir debian-set
        sudo git clone git://github.com/jozef/CPAN-Patches-Debian-Set.git debian-set
        rmdir set
        sudo git clone git://github.com/jozef/CPAN-Patches-Example-Set.git set

        sudo bash -c 'echo "deb     http://ftp.at.debian.org/debian testing main contrib" >> /etc/apt/sources.list'
        sudo bash -c 'echo "deb-src http://ftp.at.debian.org/debian testing main contrib" >> /etc/apt/sources.list'
        sudo bash -c 'echo -e "Package: *\nPin: release a=stable\nPin-Priority: 700\n\nPackage: *\nPin: release a=testing\nPin-Priority: 600\n" >> /etc/apt/preferences'
        sudo apt-get update
        sudo apt-get install -t testing dh-make-perl debhelper
        sudo apt-get install -t testing xvfb po4a quilt dpatch cdbs build-essential cowdancer dpkg-dev
        
        ######
        # probably not, backport those
        cd /tmp
        svn co svn://cvs.alioth.debian.org/svn/pkg-perl/trunk/dh-make-perl
        cd dh-make-perl
        perl Build.PL && ./Build manifest && ./Build distmeta
        sudo apt-get install libmodule-depends-perl libwww-mechanize-perl libfile-touch-perl
        sudo cpan -i Array::Unique Email::Date::Format autodie Module::CoreList File::DirCompare Text::Diff
        perl Build.PL && ./Build test && sudo ./Build install

create cowbuilder for lenny

        sudo debootstrap lenny /var/cache/pbuilder/base.cow
        sudo bash -c 'echo "127.0.0.1"' > /var/cache/pbuilder/base.cow/etc/hosts'
        sudo bash -c 'echo "deb file:///var/cache/pbuilder/result/ unstable/" >> /var/cache/pbuilder/base.cow/etc/apt/sources.list'
        sudo bash -c 'echo "deb file:///var/cache/pbuilder/result/ unstable/" >> /etc/apt/sources.list'
        cd /var/cache/pbuilder/result/
        sudo chown b .
        wget http://github.com/jozef/Debian-Apt-PM/raw/master/examples/repo/Makefile
        wget http://github.com/jozef/Debian-Apt-PM/raw/master/examples/repo/Release.conf
        mkdir -p unstable/unsorted
        vim Release.conf
        # generate a key without passphrase
        gpg --gen-key
        gpg --export --armor | sudo apt-key add -
        gpg --export --armor | sudo chroot /var/cache/pbuilder/base.cow/ apt-key add -
        make
        sudo apt-get update
        
        sudo chroot /var/cache/pbuilder/base.cow su -
        echo build > /etc/debian_choot
        apt-get update
        apt-get install cowdancer
        exit
        
        sudo bash -c 'echo "BINDMOUNTS=/var/cache/pbuilder/result" >> /etc/pbuilderrc'
        sudo bash -c 'echo "PDEBUILD_PBUILDER=cowbuilder" >> /etc/pbuilderrc'
        sudo cowbuilder --update

backport for packaging

        sudo chroot /var/cache/pbuilder/base.cow/
        bash -c 'echo "deb     http://ftp.at.debian.org/debian testing main contrib" >> /etc/apt/sources.list'
        bash -c 'echo -e "Package: *\nPin: release a=stable\nPin-Priority: 700\n\nPackage: *\nPin: release a=testing\nPin-Priority: 600\n" >> /etc/apt/preferences'
        apt-get update
        exit

        cd /tmp
        apt-get source dpkg
        cd dpkg-*
        pdebuild
        cd /var/cache/pbuilder/result/; make new-package all
        
        cd /tmp
        cd apt-get source debhelper
        cd dh-make-perl-*
        pdebuild
        cd /var/cache/pbuilder/result/; make new-package all
        
        libtool
        gettext
        autoconf
        m4
        libdb4.7-dev
        
        cd /tmp
        cd apt-get source xz-utils
        cd xz-utils-*
        # needs autoconf >= 2.64
        vim debian/control
        pdebuild
        cd /var/cache/pbuilder/result/; make new-package all
        
        cd /var/cache/pbuilder/result/
        mv unstable/unsorted unstable/for-build
        mkdir unstable/unsorted
        make all
        
        base-files
        
        # remove testing
        vim /var/cache/pbuilder/base.cow/etc/apt/sources.list
        mv /var/cache/pbuilder/base.cow/etc/apt/preferences /var/cache/pbuilder/base.cow/etc/apt/preferences.old
        
        sudo cowbuilder --update
        
        

backport perl

        coreutils
        libdb4.7-dev    # Build-Depends: coreutils (>= 8.5)
        perl

backport libs/utilites

        quilt
        libxml2
        libxslt1.1     # vim debian/control and add ^^^ version of libxml2
        libxml-libxml-perl
        libxml-libxslt-perl
        
        # apache
        apr
        libdb4.8
        apr-util
        openssl
        apache2
        libapache2-mod-perl2
        libwww-perl
        libxml-sax-perl      # has a update-perl-sax-parsers script in debian/

dh-make-pm

        # not needed?  sudo apt-get install apt-file
        #              sudo apt-file update
        
        cd && mkdir src && cd src
        svn co svn://cvs.alioth.debian.org/svn/pkg-perl/trunk/dh-make-perl
        cd dh-make-perl
        wget http://github.com/jozef/Debian-Apt-PM/raw/master/patches/FromCPAN.pm.patch
        patch -p1 < FromCPAN.pm.patch
        perl Build.PL && ./Build test && sudo ./Build install

start building

build first

        Test::Simple
        Module::Build
        Module::CoreList

        # for Class::MOP
        Test::Output
        Test::LeakTrace
        SUPER
        
        # for Moose
        FileHandle::Fmode
        DBM::Deep
        
        # for Mouse
        Class::Method::Modifiers
        ExtUtils::ParseXS
        Test::Exception
        
        # for POE
        POE::Test::Loops

        # misc
        Test::Kwalitee
        Test::Portability::Files
        LWP

then mass build

        Tatsumaki
        Dancer
        Silki