From a4c3208703e38d210a3cccb073674ea098095757 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Fri, 17 Apr 2015 22:12:44 -0400 Subject: [PATCH 1/7] travis-ci switch to docker infrastructure --- .travis.yml | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3e97545e15..125ce4c09c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,16 +3,36 @@ language: cpp +# use travis-ci docker based infrastructure +sudo: false + +cache: + directories: + - $HOME/.ccache + +addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - build-essential + - ccache + - cmake + - g++-4.8 + - gcc-4.8 + - genromfs + - libc6-i386 + - libncurses5-dev + - python-argparse + - python-empy + - python-serial + - s3cmd + - texinfo + - zlib1g-dev + before_script: - - sudo add-apt-repository --yes ppa:ubuntu-toolchain-r/test - - sudo apt-get update -qq - - if [ "$CXX" = "g++" ]; then sudo apt-get install -qq g++-4.8 gcc-4.8 libstdc++-4.8-dev; fi - if [ "$CXX" = "g++" ]; then export CXX="g++-4.8" CC="gcc-4.8"; fi -# Travis specific tools - - sudo apt-get install -qq s3cmd grep zip # General toolchain dependencies - - sudo apt-get install -qq libc6-i386 gcc-4.7-base:i386 python-serial python-argparse python-empy - - sudo apt-get install -qq flex bison libncurses5-dev autoconf texinfo build-essential libtool zlib1g-dev genromfs git wget cmake - pushd . - cd ~ - wget https://launchpadlibrarian.net/186124160/gcc-arm-none-eabi-4_8-2014q3-20140805-linux.tar.bz2 From 6af3f13a1db71a84fdc9ef8d0eb2af3cb4530a29 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Fri, 17 Apr 2015 22:27:36 -0400 Subject: [PATCH 2/7] travis-ci enable ccache --- .travis.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.travis.yml b/.travis.yml index 125ce4c09c..d0d7254ce8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -41,6 +41,13 @@ before_script: - if grep -Fxq "$exportline" ~/.profile; then echo nothing to do ; else echo $exportline >> ~/.profile; fi - . ~/.profile - popd +# setup ccache + - mkdir -p ~/bin + - ln -s /usr/bin/ccache ~/bin/arm-none-eabi-g++ + - ln -s /usr/bin/ccache ~/bin/arm-none-eabi-gcc + - ln -s /usr/bin/ccache ~/bin/g++-4.8 + - ln -s /usr/bin/ccache ~/bin/gcc-4.8 + - export PATH=~/bin:$PATH git: depth: 500 @@ -59,6 +66,7 @@ env: - BUILD_URI=https://px4-travis.s3.amazonaws.com/archives/Firmware/$TRAVIS_BRANCH/$TRAVIS_BUILD_ID/Firmware.zip script: + - ccache -z - arm-none-eabi-gcc --version - echo 'Running Tests..' && echo -en 'travis_fold:start:script.1\\r' - make tests @@ -66,9 +74,11 @@ script: - echo -en 'travis_fold:end:script.1\\r' - echo 'Building NuttX..' && echo -en 'travis_fold:start:script.2\\r' - make archives + - ccache -s - echo -en 'travis_fold:end:script.2\\r' - echo 'Building Firmware..' && echo -en 'travis_fold:start:script.3\\r' - make -j6 + - ccache -s - echo -en 'travis_fold:end:script.3\\r' - zip Firmware.zip Images/*.px4 From 0629d0dd60839497b6c198b44b93d46200b42583 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Sat, 18 Apr 2015 00:19:27 -0400 Subject: [PATCH 3/7] travis-ci reduce clone depth --- .travis.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index d0d7254ce8..1136f95f1c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -49,9 +49,6 @@ before_script: - ln -s /usr/bin/ccache ~/bin/gcc-4.8 - export PATH=~/bin:$PATH -git: - depth: 500 - env: global: # AWS KEY: $PX4_AWS_KEY From 075227007aa5fd624200dea64efd1809ce5516d8 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Sat, 18 Apr 2015 00:19:56 -0400 Subject: [PATCH 4/7] travis-ci lint fix see http://lint.travis-ci.org/px4/firmware --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 1136f95f1c..194c912c73 100644 --- a/.travis.yml +++ b/.travis.yml @@ -111,4 +111,3 @@ notifications: - https://webhooks.gitter.im/e/2b9c4a4cb2211f8befba on_success: always # options: [always|never|change] default: always on_failure: always # options: [always|never|change] default: always - on_start: false # default: false From b53a33bc513a33c784b37a700058bfbc1e15c985 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Sat, 18 Apr 2015 00:22:18 -0400 Subject: [PATCH 5/7] travis-ci cleanup unused --- .travis.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 194c912c73..7d86522ae4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -56,11 +56,6 @@ env: # AWS SECRET: $PX4_AWS_SECRET - secure: "h6oajlW68dWIr+wZhO58Dv6e68dZHrBLVA6lPXZmheFQBW6Xam1HuLGA0LOW6cL9TnrAsOZ8g4goB58eMQnMEijFZKi3mhRwZhd/Xjq/ZGJOWBUrLoQHZUw2dQk5ja5vmUlKEoQnFZjDuMjx8KfX5ZMNy8A3yssWZtJYHD8c+bk=" - PX4_AWS_BUCKET=px4-travis - - PX4_EMAIL_SUBJECT="Travis CI result" -# Email address: $PX4_EMAIL - - secure: "ei3hKAw6Pk+vEkQBI5Y2Ak74BRAaXcK2UHVnVadviBHI4EVPwn1YGP6A4Y0wnLe4U7ETTl0UiijRoVxyDW0Mq896Pv0siw02amNpjSZZYu+RfN1+//MChB48OxsLDirUdHVrULhl/bOARM02h2Bg28jDE2g7IqmJwg3em3oMbjU=" - - PX4_REPORT=report.txt - - BUILD_URI=https://px4-travis.s3.amazonaws.com/archives/Firmware/$TRAVIS_BRANCH/$TRAVIS_BUILD_ID/Firmware.zip script: - ccache -z From 207b57869d7ed44950a51bbd9632a8549d7a9c49 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Sat, 18 Apr 2015 00:57:26 -0400 Subject: [PATCH 6/7] only define GIT_VERSION where it's used -when the git revision is passed to every file as a define it causes unnecessary ccache cache misses --- makefiles/firmware.mk | 5 ----- src/lib/version/version.h | 8 -------- src/modules/sdlog2/module.mk | 1 + src/modules/sdlog2/sdlog2.c | 2 +- src/modules/uavcan/module.mk | 3 ++- src/modules/uavcan/uavcan_main.cpp | 4 ++-- src/systemcmds/ver/module.mk | 2 ++ src/systemcmds/ver/ver.c | 2 +- 8 files changed, 9 insertions(+), 18 deletions(-) diff --git a/makefiles/firmware.mk b/makefiles/firmware.mk index 21e8739aa1..4c10de931c 100644 --- a/makefiles/firmware.mk +++ b/makefiles/firmware.mk @@ -180,11 +180,6 @@ GLOBAL_DEPS += $(MAKEFILE_LIST) EXTRA_CLEANS = -# -# Extra defines for compilation -# -export EXTRADEFINES := -DGIT_VERSION=$(GIT_DESC) - # # Append the per-board driver directory to the header search path. # diff --git a/src/lib/version/version.h b/src/lib/version/version.h index 8732406306..b79fee182e 100644 --- a/src/lib/version/version.h +++ b/src/lib/version/version.h @@ -43,14 +43,6 @@ #ifndef VERSION_H_ #define VERSION_H_ -/* - GIT_VERSION is defined at build time via a Makefile call to the - git command line. - */ -#define FREEZE_STR(s) #s -#define STRINGIFY(s) FREEZE_STR(s) -#define FW_GIT STRINGIFY(GIT_VERSION) - #ifdef CONFIG_ARCH_BOARD_PX4FMU_V1 #define HW_ARCH "PX4FMU_V1" #endif diff --git a/src/modules/sdlog2/module.mk b/src/modules/sdlog2/module.mk index 8fded0bdb2..6964acf339 100644 --- a/src/modules/sdlog2/module.mk +++ b/src/modules/sdlog2/module.mk @@ -48,3 +48,4 @@ MAXOPTIMIZATION = -Os EXTRACFLAGS = -Wframe-larger-than=1400 +EXTRADEFINES = -DGIT_VERSION='"$(GIT_DESC)"' diff --git a/src/modules/sdlog2/sdlog2.c b/src/modules/sdlog2/sdlog2.c index 2ec7336272..ed93a06b12 100644 --- a/src/modules/sdlog2/sdlog2.c +++ b/src/modules/sdlog2/sdlog2.c @@ -764,7 +764,7 @@ int write_version(int fd) }; /* fill version message and write it */ - strncpy(log_msg_VER.body.fw_git, FW_GIT, sizeof(log_msg_VER.body.fw_git)); + strncpy(log_msg_VER.body.fw_git, GIT_VERSION, sizeof(log_msg_VER.body.fw_git)); strncpy(log_msg_VER.body.arch, HW_ARCH, sizeof(log_msg_VER.body.arch)); return write(fd, &log_msg_VER, sizeof(log_msg_VER)); } diff --git a/src/modules/uavcan/module.mk b/src/modules/uavcan/module.mk index f7feeadabc..437feb3014 100644 --- a/src/modules/uavcan/module.mk +++ b/src/modules/uavcan/module.mk @@ -63,7 +63,8 @@ SRCS += $(subst $(PX4_MODULE_SRC),../../,$(LIBUAVCAN_SRC)) INCLUDE_DIRS += $(LIBUAVCAN_INC) # Since actual compiler mode is C++11, the library will default to UAVCAN_CPP11, but it will fail to compile # because this platform lacks most of the standard library and STL. Hence we need to force C++03 mode. -override EXTRADEFINES := $(EXTRADEFINES) -DUAVCAN_CPP_VERSION=UAVCAN_CPP03 -DUAVCAN_NO_ASSERTIONS +override EXTRADEFINES := $(EXTRADEFINES) -DGIT_VERSION='"$(GIT_DESC)"' -DUAVCAN_CPP_VERSION=UAVCAN_CPP03 -DUAVCAN_NO_ASSERTIONS + # # libuavcan drivers for STM32 diff --git a/src/modules/uavcan/uavcan_main.cpp b/src/modules/uavcan/uavcan_main.cpp index 02cde96564..2d5abf9591 100644 --- a/src/modules/uavcan/uavcan_main.cpp +++ b/src/modules/uavcan/uavcan_main.cpp @@ -210,9 +210,9 @@ void UavcanNode::fill_node_info() /* software version */ uavcan::protocol::SoftwareVersion swver; - // Extracting the first 8 hex digits of FW_GIT and converting them to int + // Extracting the first 8 hex digits of GIT_VERSION and converting them to int char fw_git_short[9] = {}; - std::memmove(fw_git_short, FW_GIT, 8); + std::memmove(fw_git_short, GIT_VERSION, 8); assert(fw_git_short[8] == '\0'); char *end = nullptr; swver.vcs_commit = std::strtol(fw_git_short, &end, 16); diff --git a/src/systemcmds/ver/module.mk b/src/systemcmds/ver/module.mk index 2eeb80b616..4597b5f110 100644 --- a/src/systemcmds/ver/module.mk +++ b/src/systemcmds/ver/module.mk @@ -42,3 +42,5 @@ SRCS = ver.c MODULE_STACKSIZE = 1024 MAXOPTIMIZATION = -Os + +EXTRADEFINES = -DGIT_VERSION='"$(GIT_DESC)"' diff --git a/src/systemcmds/ver/ver.c b/src/systemcmds/ver/ver.c index 087eb52e3d..b794e8b2fa 100644 --- a/src/systemcmds/ver/ver.c +++ b/src/systemcmds/ver/ver.c @@ -101,7 +101,7 @@ int ver_main(int argc, char *argv[]) } if (show_all || !strncmp(argv[1], sz_ver_git_str, sizeof(sz_ver_git_str))) { - printf("FW git-hash: %s\n", FW_GIT); + printf("FW git-hash: %s\n", GIT_VERSION); ret = 0; } From 870c9532a97a506b674001ff297b730b94757553 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Sat, 18 Apr 2015 01:13:25 -0400 Subject: [PATCH 7/7] travis-ci reduce parallel make to 4 threads -travis only has 2 cores --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 7d86522ae4..0405ba560f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -69,7 +69,7 @@ script: - ccache -s - echo -en 'travis_fold:end:script.2\\r' - echo 'Building Firmware..' && echo -en 'travis_fold:start:script.3\\r' - - make -j6 + - make -j4 - ccache -s - echo -en 'travis_fold:end:script.3\\r' - zip Firmware.zip Images/*.px4