- job: name: rsalveti-db410c-debian-gateway project-type: freestyle defaults: global properties: - authorization: anonymous: - job-read - job-extended-read - job-workspace linaro: - job-build - job-cancel - build-discarder: days-to-keep: 30 num-to-keep: 30 artifact-num-to-keep: 1 parameters: - string: name: VENDOR default: 'rsalveti' - string: name: OS_FLAVOUR default: 'jessie' - string: name: PLATFORM_NAME default: 'qcom-snapdragon-arm64' - string: name: ROOTFS default: 'developer,arm64,1800M' - string: name: DTBS default: 'msm8916-mtp.dtb apq8016-sbc.dtb' - string: name: SERIAL_CONSOLE default: 'ttyMSM0' - string: name: KERNEL_BRANCH default: 'rsalveti-qcomlt-4.4' - string: name: QCOM_FIRMWARE default: 'http://builds.96boards.org/snapshots/dragonboard410c/binaries/20160620/linux-board-support-package-v1.3.zip' - string: name: QCOM_FIRMWARE_MD5 default: '810c7d39c86f8e39f3eb64eb1122aefb' disabled: false node: docker-jessie-amd64 display-name: 'Personal DB410c debian-based gateway image for rsalveti' scm: - git: url: https://github.com/rsalveti/linux.git refspec: +refs/heads/${KERNEL_BRANCH}:refs/remotes/origin/${KERNEL_BRANCH} name: origin branches: - refs/heads/${KERNEL_BRANCH} skip-tag: true shallow-clone: true wipe-workspace: false wrappers: - timestamps - build-name: name: '#${BUILD_NUMBER}-${GIT_REVISION,length=8}' builders: - shell: | #!/bin/bash set -ex trap cleanup_exit INT TERM EXIT cleanup_exit() { cd ${WORKSPACE} sudo kpartx -dv out/${VENDOR}-${OS_FLAVOUR}-*.sd.img || true rm -rf lci-build-tools rm -rf builddir* } sudo apt-get update sudo apt-get install -y kpartx python-requests device-tree-compiler zip libfdt-dev mtools android-tools-fsutils wget -q \ http://repo.linaro.org/ubuntu/linaro-tools/pool/main/l/linaro-image-tools/linaro-image-tools_2016.05-1linarojessie1_amd64.deb \ http://repo.linaro.org/ubuntu/linaro-tools/pool/main/l/linaro-image-tools/python-linaro-image-tools_2016.05-1linarojessie1_all.deb sudo dpkg -i --force-all *.deb rm -f *.deb # get the boot image tools, and keep track of commit info in the traces git clone git://codeaurora.org/quic/kernel/skales (cd skales && git log -1) export PATH=`pwd`/skales:$PATH export LANG=C export make_bootwrapper=false export make_install=true export kernel_flavour=rsalveti-lt-qcom export kernel_config="defconfig distro.config" export MAKE_DTBS=true export ARCH=arm64 export tcbindir="${HOME}/srv/toolchain/arm64-tc-14.09/bin" export toolchain_url=http://releases.linaro.org/14.09/components/toolchain/binaries/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux.tar.xz test -d lci-build-tools || git clone https://git.linaro.org/git/ci/lci-build-tools.git lci-build-tools bash -x lci-build-tools/jenkins_kernel_build_inst # Create the hardware pack cat << EOF > ${VENDOR}-lt-qcom.default format: '3.0' name: ${VENDOR}-lt-qcom architectures: - arm64 origin: Linaro maintainer: Linaro Platform support: supported serial_tty: ${SERIAL_CONSOLE} kernel_addr: '0x80208000' initrd_addr: '0x83000000' load_addr: '0x60008000' dtb_addr: '0x61000000' partition_layout: bootfs_rootfs mmc_id: '0:1' kernel_file: boot/Image-*-qcom initrd_file: boot/initrd.img-*-qcom dtb_file: lib/firmware/*-qcom/device-tree/msm8916-mtp.dtb boot_script: boot.scr boot_min_size: 64 extra_serial_options: - console=tty0 - console=${SERIAL_CONSOLE},115200n8 assume_installed: - adduser - apt - apt-utils - debconf-i18n - debian-archive-keyring - gcc-4.9 - gnupg - ifupdown - initramfs-tools - iproute2 - irqbalance - isc-dhcp-client - kmod - netbase - udev - linaro-artwork sources: qcom: http://repo.linaro.org/ubuntu/qcom-overlay ${OS_FLAVOUR} main repo: http://repo.linaro.org/ubuntu/linaro-overlay ${OS_FLAVOUR} main rsalveti: http://repo.linaro.org/ubuntu/rsalveti ${OS_FLAVOUR} main debian: http://ftp.debian.org/debian/ ${OS_FLAVOUR} main contrib non-free backports: http://ftp.debian.org/debian/ ${OS_FLAVOUR}-backports main packages: - linux-image-arm64 - linux-headers-arm64 - firmware-linux - wcnss-wlan - wcnss-bt - wcnss-start - ndppd - radvd - bluez - libbluetooth3 EOF # Download license file and firmware rm -f license.txt wget https://git.linaro.org/landing-teams/working/qualcomm/lt-docs.git/blob_plain/HEAD:/license/license.txt rm -rf qcom_firmware && mkdir qcom_firmware && cd qcom_firmware wget -q ${QCOM_FIRMWARE} echo "${QCOM_FIRMWARE_MD5} $(basename ${QCOM_FIRMWARE})" > MD5 md5sum -c MD5 unzip $(basename ${QCOM_FIRMWARE}) cd - rm -f qcom_firmware/linux-board-support-package-*/proprietary-linux/wlan/macaddr0 rm -f qcom_firmware/linux-board-support-package-*/proprietary-linux/firmware.tar sudo MTOOLS_SKIP_CHECK=1 mcopy -i qcom_firmware/linux-board-support-package-*/bootloaders-linux/NON-HLOS.bin \ ::image/modem.* ::image/mba.mbn qcom_firmware/linux-board-support-package-*/proprietary-linux ## Default config file templates # Enable forwarding by default, required by radvd cat << EOF > gateway.conf #net.ipv6.conf.wlan0.accept_ra=2 #net.ipv6.conf.all.forwarding=1 #net.ipv6.conf.all.proxy_ndp=1 EOF # Default address for the bt le 6lowpan interface cat << EOF > bt0 #auto bt0 #allow-hotplug bt0 #iface bt0 inet6 static # address 2001:db8::4 # netmask 68 EOF cat << EOF > radvd.conf #interface bt0 #{ # IgnoreIfMissing on; # AdvSendAdvert on; # prefix 2001:db8::/64 # { # AdvOnLink off; # AdvAutonomous on; # AdvRouterAddr on; # }; #}; EOF cat << EOF > ndppd.conf #route-ttl 30000 #proxy wlan0 { # router yes # timeout 500 # ttl 30000 # rule 2001:db8::/68 { # static # } #} EOF for rootfs in ${ROOTFS}; do rootfs_arch=$(echo $rootfs | cut -f2 -d,) rootfs_sz=$(echo $rootfs | cut -f3 -d,) rootfs=$(echo $rootfs | cut -f1 -d,) cat ${VENDOR}-lt-qcom.default > ${VENDOR}-lt-qcom rm -f `ls hwpack_${VENDOR}-lt-qcom_*_${rootfs_arch}_supported.tar.gz` VERSION=`date +%Y%m%d`-${BUILD_NUMBER} linaro-hwpack-create --debug --backports ${VENDOR}-lt-qcom ${VERSION} linaro-hwpack-replace -t `ls hwpack_${VENDOR}-lt-qcom_*_${rootfs_arch}_supported.tar.gz` -p `ls linux-image-*-${VENDOR}-lt-qcom_*.deb` -r linux-image -d -i linaro-hwpack-replace -t `ls hwpack_${VENDOR}-lt-qcom_*_${rootfs_arch}_supported.tar.gz` -p `ls linux-headers-*-${VENDOR}-lt-qcom_*.deb` -r linux-headers -d -i # Get rootfs export ROOTFS_BUILD_NUMBER=`wget -q --no-check-certificate -O - https://ci.linaro.org/jenkins/job/debian-${rootfs_arch}-rootfs/label=docker-jessie-${rootfs_arch},rootfs=${rootfs}/lastSuccessfulBuild/buildNumber` export ROOTFS_BUILD_TIMESTAMP=`wget -q --no-check-certificate -O - https://ci.linaro.org/jenkins/job/debian-${rootfs_arch}-rootfs/label=docker-jessie-${rootfs_arch},rootfs=${rootfs}/lastSuccessfulBuild/buildTimestamp?format=yyyyMMdd` export ROOTFS_BUILD_URL="http://snapshots.linaro.org/debian/images/${rootfs}-${rootfs_arch}/${ROOTFS_BUILD_NUMBER}/linaro-${OS_FLAVOUR}-${rootfs}-${ROOTFS_BUILD_TIMESTAMP}-${ROOTFS_BUILD_NUMBER}.tar.gz" wget --progress=dot -e dotbytes=2M ${ROOTFS_BUILD_URL} # Create pre-built image(s) linaro-media-create --dev fastmodel --output-directory ${WORKSPACE}/out --image-file ${VENDOR}-${OS_FLAVOUR}-${rootfs}-${PLATFORM_NAME}-${VERSION}.sd.img --image-size 2G --binary linaro-${OS_FLAVOUR}-${rootfs}-${ROOTFS_BUILD_TIMESTAMP}-${ROOTFS_BUILD_NUMBER}.tar.gz --hwpack hwpack_${VENDOR}-lt-qcom_*.tar.gz --hwpack-force-yes --bootloader uefi # Create eMMC rootfs image(s) mkdir rootfs for device in $(sudo kpartx -avs out/${VENDOR}-${OS_FLAVOUR}-${rootfs}-${PLATFORM_NAME}-${VERSION}.sd.img | cut -d' ' -f3); do partition=$(echo ${device} | cut -d'p' -f3) [ "${partition}" = "2" ] && sudo mount -o loop /dev/mapper/${device} rootfs done sudo rm -rf rootfs/dev rootfs/var/lib/apt/lists sudo mkdir rootfs/dev rootfs/var/lib/apt/lists # clean up fstab sudo sed -i '/UUID/d' rootfs/etc/fstab # add license file in the generated rootfs sudo cp -f license.txt rootfs/etc/license.txt # add firmware (adreno, venus and WCN) sudo cp -a qcom_firmware/linux-board-support-package-*/proprietary-linux/* rootfs/lib/firmware # add default config file templates sudo cp gateway.conf rootfs/etc/sysctl.d/ sudo cp bt0 rootfs/etc/network/interfaces.d/ sudo cp radvd.conf rootfs/etc/radvd.conf sudo cp ndppd.conf rootfs/etc/ndppd.conf sudo mkfs.ext4 -L rootfs out/${VENDOR}-${OS_FLAVOUR}-${rootfs}-${PLATFORM_NAME}-${VERSION}.img.raw ${rootfs_sz} mkdir rootfs2 sudo mount -o loop out/${VENDOR}-${OS_FLAVOUR}-${rootfs}-${PLATFORM_NAME}-${VERSION}.img.raw rootfs2 sudo cp -a rootfs/* rootfs2 rootfs_sz_real=$(sudo du -sh rootfs2 | cut -f1) sudo umount rootfs2 rootfs sudo ext2simg -v out/${VENDOR}-${OS_FLAVOUR}-${rootfs}-${PLATFORM_NAME}-${VERSION}.img.raw out/${VENDOR}-${OS_FLAVOUR}-${rootfs}-${PLATFORM_NAME}-${VERSION}.img sudo kpartx -dv out/${VENDOR}-${OS_FLAVOUR}-${rootfs}-${PLATFORM_NAME}-${VERSION}.sd.img sudo rm -rf rootfs out/${VENDOR}-${OS_FLAVOUR}-${rootfs}-${PLATFORM_NAME}-${VERSION}.sd.img rootfs2 out/${VENDOR}-${OS_FLAVOUR}-${rootfs}-${PLATFORM_NAME}-${VERSION}.img.raw # Compress image(s) gzip -9 out/${VENDOR}-${OS_FLAVOUR}-${rootfs}-${PLATFORM_NAME}-${VERSION}.img done # Move all relevant DTBs in out/ for f in ${DTBS} ; do mv out/dtbs/${f} out/ done rm -rf out/dtbs # Create device tree table dtbTool -o out/dt.img -s 2048 out/ # Create boot image mkbootimg \ --kernel out/Image \ --ramdisk out/initrd.img-* \ --output out/boot-${VENDOR}-${OS_FLAVOUR}-${PLATFORM_NAME}-${VERSION}.img \ --dt out/dt.img \ --pagesize "2048" \ --base "0x80000000" \ --cmdline "root=/dev/disk/by-partlabel/rootfs rw rootwait console=tty0 console=${SERIAL_CONSOLE},115200n8" gzip -9 out/boot-${VENDOR}-${OS_FLAVOUR}-${PLATFORM_NAME}-${VERSION}.img # Final preparation for publishing cp -a linux-*.deb out/ # Create MD5SUMS file (cd out && md5sum * > MD5SUMS.txt) publishers: - archive: artifacts: 'out/*' - email: recipients: 'ricardo.salveti@linaro.org'