diff --git a/.travis.yml b/.travis.yml index 7a6555db..7cee0156 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,6 +10,14 @@ matrix: - os: osx compiler: clang +env: + global: + - SHORT_COMMIT_HASH=`git rev-parse --short HEAD` + - VERSION_STRING=nightly-$SHORT_COMMIT_HASH + - BUILD_NAME="HackRF-`date +%Y-%m-%d`-$SHORT_COMMIT_HASH" + - ARTEFACT_BASE=$TRAVIS_BUILD_DIR/artefacts/ + - ARTEFACT_PATH=$ARTEFACT_BASE/$BUILD_NAME + addons: apt: packages: @@ -35,15 +43,19 @@ before_script: - export CFLAGS="-Wall -Wextra -Werror" script: + # Host code - mkdir host/build - cd host/build - cmake .. - make - - cd ../.. - - mkdir firmware/build-hackrf-one - - mkdir firmware/build-jawbreaker - - mkdir firmware/build-rad1o - - cd firmware/libopencm3 + # Firmware + # Set version string + - cd ../../firmware + - sed -e "s/\#set(VERSION.*/set(VERSION \"$VERSION_STRING\")/" -i".bak" hackrf-common.cmake + - mkdir build-hackrf-one + - mkdir build-jawbreaker + - mkdir build-rad1o + - cd libopencm3 - make - cd ../build-hackrf-one - cmake .. @@ -54,3 +66,31 @@ script: - cd ../build-rad1o - cmake -DBOARD=RAD1O .. - make + +after_success: + # Construct archive for deploying to ubertooth-nightlies + - mkdir -p $ARTEFACT_PATH/firmware-bin/ + # Export HackRF git repo + - cd $TRAVIS_BUILD_DIR/ + - git archive --format=tar HEAD | (cd $ARTEFACT_PATH && tar xf -) + # Set version string + - sed -e "s/\#set(RELEASE.*/set(RELEASE \"$VERSION_STRING\")/" -i".bak" $ARTEFACT_PATH/host/cmake/set_release.cmake + # Copy firmware to firmware-bin directory + - cd $TRAVIS_BUILD_DIR/firmware/ + - cp cpld/sgpio_if/default.xsvf $ARTEFACT_PATH/firmware-bin/hackrf_cpld_default.xsvf + - cp build-hackrf-one/hackrf_usb/hackrf_usb.bin $ARTEFACT_PATH/firmware-bin/hackrf_one_usb.bin + - cp build-hackrf-one/hackrf_usb/hackrf_usb.dfu $ARTEFACT_PATH/firmware-bin/hackrf_one_usb.dfu + - cp build-jawbreaker/hackrf_usb/hackrf_usb.bin $ARTEFACT_PATH/firmware-bin/hackrf_jawbreaker_usb.bin + - cp build-jawbreaker/hackrf_usb/hackrf_usb.dfu $ARTEFACT_PATH/firmware-bin/hackrf_jawbreaker_usb.dfu + - cp build-rad1o/hackrf_usb/hackrf_usb.bin $ARTEFACT_PATH/firmware-bin/rad1o_usb.bin + - cp build-rad1o/hackrf_usb/hackrf_usb.dfu $ARTEFACT_PATH/firmware-bin/rad1o_usb.dfu + # Build the archive + - cd $ARTEFACT_BASE + - tar -cJvf $ARTEFACT_BASE/$BUILD_NAME.tar.xz $BUILD_NAME + +deploy: + provider: script + skip-cleanup: true + script: bash $TRAVIS_BUILD_DIR/tools/deploy-nightly.sh + on: + branch: master diff --git a/firmware/hackrf-common.cmake b/firmware/hackrf-common.cmake index fed1de96..5af882d1 100644 --- a/firmware/hackrf-common.cmake +++ b/firmware/hackrf-common.cmake @@ -34,19 +34,22 @@ SET(LIBOPENCM3 ${PATH_HACKRF_FIRMWARE}/libopencm3) include(${PATH_HACKRF_FIRMWARE}/dfu-util.cmake) -execute_process( - COMMAND git log -n 1 --format=%h - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} - RESULT_VARIABLE GIT_VERSION_FOUND - ERROR_QUIET - OUTPUT_VARIABLE GIT_VERSION - OUTPUT_STRIP_TRAILING_WHITESPACE -) -if (GIT_VERSION_FOUND) - set(VERSION "unknown") -else (GIT_VERSION_FOUND) - set(VERSION ${GIT_VERSION}) -endif (GIT_VERSION_FOUND) +#set(VERSION "") +if (NOT DEFINED VERSION) + execute_process( + COMMAND git log -n 1 --format=%h + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + RESULT_VARIABLE GIT_VERSION_FOUND + ERROR_QUIET + OUTPUT_VARIABLE GIT_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + if (GIT_VERSION_FOUND) + set(VERSION "unknown") + else (GIT_VERSION_FOUND) + set(VERSION "git-${GIT_VERSION}") + endif (GIT_VERSION_FOUND) +endif() if(NOT DEFINED BOARD) set(BOARD HACKRF_ONE) @@ -62,7 +65,7 @@ if(NOT DEFINED SRC_M0) set(SRC_M0 "${PATH_HACKRF_FIRMWARE_COMMON}/m0_sleep.c") endif() -SET(HACKRF_OPTS "-D${BOARD} -DLPC43XX -D${MCU_PARTNO} -DTX_ENABLE -D'VERSION_STRING=\"git-${VERSION}\"'") +SET(HACKRF_OPTS "-D${BOARD} -DLPC43XX -D${MCU_PARTNO} -DTX_ENABLE -D'VERSION_STRING=\"${VERSION}\"'") SET(LDSCRIPT_M4 "-T${PATH_HACKRF_FIRMWARE_COMMON}/${MCU_PARTNO}_M4_memory.ld -Tlibopencm3_lpc43xx_rom_to_ram.ld -T${PATH_HACKRF_FIRMWARE_COMMON}/LPC43xx_M4_M0_image_from_text.ld") diff --git a/tools/deploy-nightly.sh b/tools/deploy-nightly.sh new file mode 100644 index 00000000..4a0ded5a --- /dev/null +++ b/tools/deploy-nightly.sh @@ -0,0 +1,48 @@ +#!/bin/bash +REPO=greatscottgadgets/hackrf-nightly +PUBLICATION_BRANCH=master +# set -x +cd $HOME +# Checkout the branch +git clone --branch=$PUBLICATION_BRANCH https://${GITHUB_TOKEN}@github.com/$REPO.git publish +cd publish +# Update pages +cp $ARTEFACT_BASE/$BUILD_NAME.tar.xz . +# Write index page +cd $TRAVIS_BUILD_DIR +COMMITS=`git log --oneline | awk '{print $1}'` +cd $HOME/publish +echo " + +
+ +