Message ID | 20190212170033.68143-1-agraf@suse.de |
---|---|
State | Superseded |
Headers | show |
Series | Add travis-ci config file | expand |
On Tue, Feb 12, 2019 at 06:00:33PM +0100, Alexander Graf wrote: > There is a really convenient service for open source project from Travis > CI: They allow for free CI testing using their infrastructure. > > Grub has had issues with broken builds for various targets for a long time > already. The main reason is a lack of CI to just do smoke tests on whether > all targets still at least compile. > > This patch adds a travis config file which builds (almost) all currently > available targets. > > On top of that, this travis config also runs a small execution test on the > x86_64-efi target. > > All of this config file can easily be extended further on. It probably makes > sense to do something similar to the u-boot test infrastructure that > communicates with the payload properly. Going forward, we also will want to > do more qemu runtime checks for other targets. > > Currently, with this config alone, I already see about half of the available > targets as broken. So it's definitely desperately needed :). This is awesome.. However is grub on github to automatically kick of CI ? > > Signed-off-by: Alexander Graf <agraf@suse.de> > --- > .travis.yml | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 118 insertions(+) > create mode 100644 .travis.yml > > diff --git a/.travis.yml b/.travis.yml > new file mode 100644 > index 000000000..05608fc21 > --- /dev/null > +++ b/.travis.yml > @@ -0,0 +1,118 @@ > +# SPDX-License-Identifier: GPL-3.0+ > +# Originally Copyright Roger Meier <r.meier@siemens.com> > +# Adapted for grub by Alexander Graf <agraf@suse.de> > + > +# build grub on Travis CI - https://travis-ci.org/ > + > +dist: xenial > + > +language: c > + > +addons: > + apt: > + packages: > + - cppcheck > + - sloccount > + - sparse > + - bc > + - build-essential > + - libsdl1.2-dev > + - python > + - python-virtualenv > + - swig > + - libpython-dev > + - iasl > + - rpm2cpio > + - wget > + - device-tree-compiler > + - lzop > + - liblz4-tool > + - libisl15 > + - qemu-system > + - ovmf > + - unifont > + > +env: > + global: > + - PATH=/tmp/qemu-install/bin:/tmp/grub/bin:/usr/bin:/bin:/tmp/cross/gcc-8.1.0-nolibc/aarch64-linux/bin:/tmp/cross/gcc-8.1.0-nolibc/arm-linux-gnueabi/bin:/tmp/cross/gcc-8.1.0-nolibc/ia64-linux/bin:/tmp/cross/gcc-8.1.0-nolibc/mips64-linux/bin:/tmp/cross/gcc-8.1.0-nolibc/powerpc64-linux/bin:/tmp/cross/gcc-8.1.0-nolibc/riscv32-linux/bin:/tmp/cross/gcc-8.1.0-nolibc/riscv64-linux/bin:/tmp/cross/gcc-8.1.0-nolibc/sparc64-linux/bin > + > +before_script: > + # install toolchains based on TOOLCHAIN} variable > + - mkdir /tmp/cross > + # results in binaries like /tmp/cross/gcc-8.1.0-nolibc/ia64-linux/bin/ia64-linux-gcc > + - for i in $CROSS_TARGETS; do > + ( cd /tmp/cross; wget -O - https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/8.1.0/x86_64-gcc-8.1.0-nolibc-$i.tar.xz | xzcat | tar x ); > + done > + > +script: > + # Comments must be outside the command strings below, or the Travis parser > + # will get confused. > + - ./autogen.sh > + > + # Build all selected grub targets: > + - for target in $GRUB_TARGETS; do > + plat=${target#*-}; > + arch=${target%-*}; > + [ "$arch" = "arm64" ] && arch=aarch64-linux; > + [ "$arch" = "arm" ] && arch=arm-linux-gnueabi; > + [ "$arch" = "ia64" ] && arch=ia64-linux; > + [ "$arch" = "mipsel" ] && arch=mips64-linux; > + [ "$arch" = "powerpc" ] && arch=powerpc64-linux; > + [ "$arch" = "riscv32" ] && arch=riscv32-linux; > + [ "$arch" = "riscv64" ] && arch=riscv64-linux; > + [ "$arch" = "sparc64" ] && arch=sparc64-linux; > + echo "Building $target"; > + mkdir obj-$target; > + ( cd obj-$target && ../configure --target=$arch --with-platform=$plat --prefix=/tmp/grub && make -j4 && make -j4 install ) &> log || ( cat log; false ); > + done > + > + # Our test canary > + - echo -e "insmod echo\\ninsmod reboot\\necho hello world\\nreboot" > grub.cfg > + > + # Assemble images and possibly run them > + - for target in $GRUB_TARGETS; do grub-mkimage -c grub.cfg -p / -O $target -o grub-$target echo reboot normal; done > + > + # Run images we know how to run > + - if [[ "$GRUB_TARGETS" == *"x86_64-efi"* ]]; then qemu-system-x86_64 -bios /usr/share/ovmf/OVMF.fd -m 512 -no-reboot -nographic -net nic -net user,tftp=.,bootfile=grub-x86_64-efi | tee grub.log && grep "hello world" grub.log; fi > + > +matrix: > + include: > + # each env setting here is a dedicated build > + - name: "x86_64" > + env: > + - GRUB_TARGETS="x86_64-efi x86_64-xen" > + - name: "i386" > + env: > + - GRUB_TARGETS="i386-efi i386-xen i386-xen_pvh i386-pc i386-multiboot i386-coreboot i386-ieee1275 i386-qemu" > + - name: "powerpc" > + env: > + - GRUB_TARGETS="powerpc-ieee1275" > + - CROSS_TARGETS=powerpc64-linux" > + - name: "sparc64" > + env: > + - GRUB_TARGETS="sparc64-ieee1275" > + - CROSS_TARGETS=sparc64-linux" > + - name: "ia64" > + env: > + - GRUB_TARGETS="ia64-efi" > + - CROSS_TARGETS=ia64-linux" > + - name: "mips" > + env: > + - GRUB_TARGETS="mips-qemu_mips mips-arc mipsel-arc mipsel-qemu_mips" > + - CROSS_TARGETS=mips64-linux" > + - name: "arm" > + env: > + - GRUB_TARGETS="arm-uboot arm-coreboot arm-efi" > + - CROSS_TARGETS="arm-linux-gnueabi" > + - name: "arm64" > + env: > + - GRUB_TARGETS="arm64-efi" > + - CROSS_TARGETS=aarch64-linux" > + - name: "riscv32" > + env: > + - GRUB_TARGETS="riscv32-efi" > + - CROSS_TARGETS=riscv32-linux" > + - name: "riscv64" > + env: > + - GRUB_TARGETS="riscv64-efi" > + - CROSS_TARGETS=riscv64-linux" > -- > 2.12.3 > > > _______________________________________________ > Grub-devel mailing list > Grub-devel@gnu.org > https://lists.gnu.org/mailman/listinfo/grub-devel _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel
Dear Alexander, On 02/12/19 18:00, Alexander Graf wrote: > There is a really convenient service for open source project from Travis > CI: They allow for free CI testing using their infrastructure. > > Grub has had issues with broken builds for various targets for a long time > already. The main reason is a lack of CI to just do smoke tests on whether > all targets still at least compile. > > This patch adds a travis config file which builds (almost) all currently > available targets. > > On top of that, this travis config also runs a small execution test on the > x86_64-efi target. > > All of this config file can easily be extended further on. It probably makes > sense to do something similar to the u-boot test infrastructure that > communicates with the payload properly. Going forward, we also will want to > do more qemu runtime checks for other targets. > > Currently, with this config alone, I already see about half of the available > targets as broken. So it's definitely desperately needed :). Thank you very much for this patch. Could you please post the URL where the test results are available for the run you did? There is one small typo further down. > Signed-off-by: Alexander Graf <agraf@suse.de> > --- > .travis.yml | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 118 insertions(+) > create mode 100644 .travis.yml > > diff --git a/.travis.yml b/.travis.yml > new file mode 100644 > index 000000000..05608fc21 > --- /dev/null > +++ b/.travis.yml > @@ -0,0 +1,118 @@ […] > +before_script: > + # install toolchains based on TOOLCHAIN} variable Remove the bracket }? > + - mkdir /tmp/cross > + # results in binaries like /tmp/cross/gcc-8.1.0-nolibc/ia64-linux/bin/ia64-linux-gcc > + - for i in $CROSS_TARGETS; do > + ( cd /tmp/cross; wget -O - https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/8.1.0/x86_64-gcc-8.1.0-nolibc-$i.tar.xz | xzcat | tar x ); > + done […] Thanks, Paul _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel
On 13.02.19 13:04, Paul Menzel wrote: > Dear Alexander, > > > On 02/12/19 18:00, Alexander Graf wrote: >> There is a really convenient service for open source project from Travis >> CI: They allow for free CI testing using their infrastructure. >> >> Grub has had issues with broken builds for various targets for a long time >> already. The main reason is a lack of CI to just do smoke tests on whether >> all targets still at least compile. >> >> This patch adds a travis config file which builds (almost) all currently >> available targets. >> >> On top of that, this travis config also runs a small execution test on the >> x86_64-efi target. >> >> All of this config file can easily be extended further on. It probably makes >> sense to do something similar to the u-boot test infrastructure that >> communicates with the payload properly. Going forward, we also will want to >> do more qemu runtime checks for other targets. >> >> Currently, with this config alone, I already see about half of the available >> targets as broken. So it's definitely desperately needed :). > > Thank you very much for this patch. Could you please post the URL where the > test results are available for the run you did? Oh, definitely! https://travis-ci.org/agraf/grub/builds/492262122 > > There is one small typo further down. > >> Signed-off-by: Alexander Graf <agraf@suse.de> >> --- >> .travis.yml | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 118 insertions(+) >> create mode 100644 .travis.yml >> >> diff --git a/.travis.yml b/.travis.yml >> new file mode 100644 >> index 000000000..05608fc21 >> --- /dev/null >> +++ b/.travis.yml >> @@ -0,0 +1,118 @@ > > […] > >> +before_script: >> + # install toolchains based on TOOLCHAIN} variable > > Remove the bracket }? Well, the whole comment is stale. Thanks for catching it :) Alex > >> + - mkdir /tmp/cross >> + # results in binaries like /tmp/cross/gcc-8.1.0-nolibc/ia64-linux/bin/ia64-linux-gcc >> + - for i in $CROSS_TARGETS; do >> + ( cd /tmp/cross; wget -O - https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/8.1.0/x86_64-gcc-8.1.0-nolibc-$i.tar.xz | xzcat | tar x ); >> + done > > […] > > > Thanks, > > Paul >
On 12.02.19 19:29, Konrad Rzeszutek Wilk wrote: > On Tue, Feb 12, 2019 at 06:00:33PM +0100, Alexander Graf wrote: >> There is a really convenient service for open source project from Travis >> CI: They allow for free CI testing using their infrastructure. >> >> Grub has had issues with broken builds for various targets for a long time >> already. The main reason is a lack of CI to just do smoke tests on whether >> all targets still at least compile. >> >> This patch adds a travis config file which builds (almost) all currently >> available targets. >> >> On top of that, this travis config also runs a small execution test on the >> x86_64-efi target. >> >> All of this config file can easily be extended further on. It probably makes >> sense to do something similar to the u-boot test infrastructure that >> communicates with the payload properly. Going forward, we also will want to >> do more qemu runtime checks for other targets. >> >> Currently, with this config alone, I already see about half of the available >> targets as broken. So it's definitely desperately needed :). > > This is awesome.. However is grub on github to automatically kick of CI ? I've seen multiple projects now that have their main mirror hosted themselves with some magic syncing it to github (Linux, U-Boot). I haven't quite figured out *how* they do that, but since it's been done before I guess there must be a way. My gut feeling is that mirroring is built into github itself even. Alex _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel
diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..05608fc21 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,118 @@ +# SPDX-License-Identifier: GPL-3.0+ +# Originally Copyright Roger Meier <r.meier@siemens.com> +# Adapted for grub by Alexander Graf <agraf@suse.de> + +# build grub on Travis CI - https://travis-ci.org/ + +dist: xenial + +language: c + +addons: + apt: + packages: + - cppcheck + - sloccount + - sparse + - bc + - build-essential + - libsdl1.2-dev + - python + - python-virtualenv + - swig + - libpython-dev + - iasl + - rpm2cpio + - wget + - device-tree-compiler + - lzop + - liblz4-tool + - libisl15 + - qemu-system + - ovmf + - unifont + +env: + global: + - PATH=/tmp/qemu-install/bin:/tmp/grub/bin:/usr/bin:/bin:/tmp/cross/gcc-8.1.0-nolibc/aarch64-linux/bin:/tmp/cross/gcc-8.1.0-nolibc/arm-linux-gnueabi/bin:/tmp/cross/gcc-8.1.0-nolibc/ia64-linux/bin:/tmp/cross/gcc-8.1.0-nolibc/mips64-linux/bin:/tmp/cross/gcc-8.1.0-nolibc/powerpc64-linux/bin:/tmp/cross/gcc-8.1.0-nolibc/riscv32-linux/bin:/tmp/cross/gcc-8.1.0-nolibc/riscv64-linux/bin:/tmp/cross/gcc-8.1.0-nolibc/sparc64-linux/bin + +before_script: + # install toolchains based on TOOLCHAIN} variable + - mkdir /tmp/cross + # results in binaries like /tmp/cross/gcc-8.1.0-nolibc/ia64-linux/bin/ia64-linux-gcc + - for i in $CROSS_TARGETS; do + ( cd /tmp/cross; wget -O - https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/8.1.0/x86_64-gcc-8.1.0-nolibc-$i.tar.xz | xzcat | tar x ); + done + +script: + # Comments must be outside the command strings below, or the Travis parser + # will get confused. + - ./autogen.sh + + # Build all selected grub targets: + - for target in $GRUB_TARGETS; do + plat=${target#*-}; + arch=${target%-*}; + [ "$arch" = "arm64" ] && arch=aarch64-linux; + [ "$arch" = "arm" ] && arch=arm-linux-gnueabi; + [ "$arch" = "ia64" ] && arch=ia64-linux; + [ "$arch" = "mipsel" ] && arch=mips64-linux; + [ "$arch" = "powerpc" ] && arch=powerpc64-linux; + [ "$arch" = "riscv32" ] && arch=riscv32-linux; + [ "$arch" = "riscv64" ] && arch=riscv64-linux; + [ "$arch" = "sparc64" ] && arch=sparc64-linux; + echo "Building $target"; + mkdir obj-$target; + ( cd obj-$target && ../configure --target=$arch --with-platform=$plat --prefix=/tmp/grub && make -j4 && make -j4 install ) &> log || ( cat log; false ); + done + + # Our test canary + - echo -e "insmod echo\\ninsmod reboot\\necho hello world\\nreboot" > grub.cfg + + # Assemble images and possibly run them + - for target in $GRUB_TARGETS; do grub-mkimage -c grub.cfg -p / -O $target -o grub-$target echo reboot normal; done + + # Run images we know how to run + - if [[ "$GRUB_TARGETS" == *"x86_64-efi"* ]]; then qemu-system-x86_64 -bios /usr/share/ovmf/OVMF.fd -m 512 -no-reboot -nographic -net nic -net user,tftp=.,bootfile=grub-x86_64-efi | tee grub.log && grep "hello world" grub.log; fi + +matrix: + include: + # each env setting here is a dedicated build + - name: "x86_64" + env: + - GRUB_TARGETS="x86_64-efi x86_64-xen" + - name: "i386" + env: + - GRUB_TARGETS="i386-efi i386-xen i386-xen_pvh i386-pc i386-multiboot i386-coreboot i386-ieee1275 i386-qemu" + - name: "powerpc" + env: + - GRUB_TARGETS="powerpc-ieee1275" + - CROSS_TARGETS=powerpc64-linux" + - name: "sparc64" + env: + - GRUB_TARGETS="sparc64-ieee1275" + - CROSS_TARGETS=sparc64-linux" + - name: "ia64" + env: + - GRUB_TARGETS="ia64-efi" + - CROSS_TARGETS=ia64-linux" + - name: "mips" + env: + - GRUB_TARGETS="mips-qemu_mips mips-arc mipsel-arc mipsel-qemu_mips" + - CROSS_TARGETS=mips64-linux" + - name: "arm" + env: + - GRUB_TARGETS="arm-uboot arm-coreboot arm-efi" + - CROSS_TARGETS="arm-linux-gnueabi" + - name: "arm64" + env: + - GRUB_TARGETS="arm64-efi" + - CROSS_TARGETS=aarch64-linux" + - name: "riscv32" + env: + - GRUB_TARGETS="riscv32-efi" + - CROSS_TARGETS=riscv32-linux" + - name: "riscv64" + env: + - GRUB_TARGETS="riscv64-efi" + - CROSS_TARGETS=riscv64-linux"
There is a really convenient service for open source project from Travis CI: They allow for free CI testing using their infrastructure. Grub has had issues with broken builds for various targets for a long time already. The main reason is a lack of CI to just do smoke tests on whether all targets still at least compile. This patch adds a travis config file which builds (almost) all currently available targets. On top of that, this travis config also runs a small execution test on the x86_64-efi target. All of this config file can easily be extended further on. It probably makes sense to do something similar to the u-boot test infrastructure that communicates with the payload properly. Going forward, we also will want to do more qemu runtime checks for other targets. Currently, with this config alone, I already see about half of the available targets as broken. So it's definitely desperately needed :). Signed-off-by: Alexander Graf <agraf@suse.de> --- .travis.yml | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 .travis.yml -- 2.12.3 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel