Skip to content
Snippets Groups Projects
Select Git revision
  • 99adacd20e903bea65155c9233341ac090ec3b5c
  • master default protected
2 results

make.sh

Blame
  • make.sh 3.42 KiB
    #!/bin/bash
    
    set -x
    
    # Otestujeme, ze je dostatek mista na extremni build (potrebuje cca. 60G tak tu mame 80, at je rezerva i pro ostatni)
    df -m
    while read _ _ _ SPACE _; do
        if [ "$SPACE" -lt "80000" ]; then
            echo "Malo mista, je potreba alespon 80GB, tady koncim!"
            exit 1
        fi
    done <<<$(df -m . | tail -n+2)
    
    # Nastaveni promennych
    export DEBIAN_FRONTEND=noninteractive
    export DEBEMAIL="Pavel Vondruska <vondruska@cesnet.cz>"
    
    # Nacteni promennych o bezicim systemu vcetne verzi
    . /etc/os-release
    
    # Od Debian 11 Bullseye ma debian-security trochu jinou cestu, abychom mohli pouzit heredoc, rozskocime si pres funkci
    function get_debian_security() {
        if [ "${VERSION_ID}" -lt "11" ]; then echo "${VERSION_CODENAME}/updates"; else echo "${VERSION_CODENAME}-security"; fi
    }
    
    # Vygenerovani sources.list podle verze Debianu
    cat > /etc/apt/sources.list << EOSOURCES
    deb http://ftp.zcu.cz/pub/linux/debian ${VERSION_CODENAME} main contrib non-free
    deb http://ftp.zcu.cz/pub/linux/debian ${VERSION_CODENAME}-updates main contrib non-free
    deb http://deb.debian.org/debian-security/ $(get_debian_security) main contrib non-free
    
    deb-src http://ftp.zcu.cz/pub/linux/debian ${VERSION_CODENAME} main contrib non-free
    deb-src http://ftp.zcu.cz/pub/linux/debian ${VERSION_CODENAME}-updates main contrib non-free
    deb-src http://deb.debian.org/debian-security/ $(get_debian_security) main contrib non-free
    EOSOURCES
    
    # Instalace buildovacich veci a zavislosti
    apt update -qqq
    apt install -yqqq git devscripts build-essential gpg dpkg-dev wget
    
    apt source linux
    
    LINDIR=$(find . -maxdepth 1 -name 'linux-*' -type d)
    
    cp -rv meta ${LINDIR}/debian/patches
    
    cd ${LINDIR}
    cd debian/patches
    
    echo '# META' >> series
    for i in `find meta -type f`; do echo $i; done >> series
    
    cd ..
    cd ..
    
    dch -l "+zs" "MetaCentrum patches"
    for i in `ls debian/patches/meta`; do dch -a "$i"; done
    
    VER_PKG=$(head -1 debian/changelog | grep -Po "\d[^\)]+")
    VER_KER=$(ls debian/linux-headers-*-cloud-amd64.postinst | grep -Po "\d.+(?=-cloud)")
    cd ..
    ./make_pkg ${VER_PKG} ${VER_KER}
    cd ${LINDIR}
    
    mk-build-deps --install --tool='apt-get -o Debug::pkgProblemResolver=yes --yes' debian/control
    
    # Build balicku (poprve skonci hned chybou)
    dpkg-buildpackage -uc -us -b || true
    dpkg-buildpackage -uc -us -b > ../build.log 2>&1 || true
    
    cd ..
    mkdir build
    mv build.log build/
    mv *.deb build/
    
    cp -v generate-release.sh build/
    
    cd build
    dpkg-scanpackages . /dev/null > Packages
    gzip -9k Packages
    ./generate-release.sh > Release
    
    export GNUPGHOME=$PWD
    export GPG_TTY=$(tty)
    mkdir -p private-keys-v1.d
    gpg --list-keys
    
    wget --header "PRIVATE-TOKEN: ${PRIVATE_TOKEN_PASS}" https://gitlab.cesnet.cz/api/v4/projects/702%2Fprovoz%2Fkernel-debian-private/repository/files/pgp-key.public/raw?ref=master -O pgp-key.public
    wget --header "PRIVATE-TOKEN: ${PRIVATE_TOKEN_PASS}" https://gitlab.cesnet.cz/api/v4/projects/702%2Fprovoz%2Fkernel-debian-private/repository/files/pgp-key.private/raw?ref=master -O pgp-key.private
    
    cat pgp-key.private | gpg --import --pinentry-mode=loopback --passphrase "$PASS"
    gpg --list-keys
    
    cat Release | gpg --default-key gitlab --digest-algo SHA256 --cert-digest-algo SHA256 --pinentry-mode=loopback --passphrase "$PASS" -abs > Release.gpg
    cat Release | gpg --default-key gitlab --digest-algo SHA256 --cert-digest-algo SHA256 --pinentry-mode=loopback --passphrase "$PASS" -abs --clearsign > InRelease
    
    rm -vrf private-keys-v1.d pubring.kbx trustdb.gpg pgp-key.private pubring.kbx~ generate-release.sh