# SPDX-License-Identifier: GPL-2.0-or-later # Copyright (C) 2020 by Tarek BOUCHKATI on: push name: OpenOCD Snapshot jobs: package: runs-on: [ubuntu-18.04] env: DL_DIR: ../downloads BUILD_DIR: ../build steps: - name: Install needed packages run: | sudo apt-get update sudo apt-get install autotools-dev autoconf automake libtool pkg-config cmake texinfo texlive g++-mingw-w64-i686 - name: Checkout Code uses: actions/checkout@v1 - run: ./bootstrap - name: Prepare libusb1 env: LIBUSB1_VER: 1.0.26 run: | mkdir -p $DL_DIR && cd $DL_DIR wget "https://github.com/libusb/libusb/releases/download/v${LIBUSB1_VER}/libusb-${LIBUSB1_VER}.tar.bz2" tar -xjf libusb-${LIBUSB1_VER}.tar.bz2 echo "LIBUSB1_SRC=$PWD/libusb-${LIBUSB1_VER}" >> $GITHUB_ENV - name: Prepare hidapi env: HIDAPI_VER: 0.11.2 run: | mkdir -p $DL_DIR && cd $DL_DIR wget "https://github.com/libusb/hidapi/archive/hidapi-${HIDAPI_VER}.tar.gz" tar -xzf hidapi-${HIDAPI_VER}.tar.gz cd hidapi-hidapi-${HIDAPI_VER} ./bootstrap echo "HIDAPI_SRC=$PWD" >> $GITHUB_ENV - name: Prepare libftdi env: LIBFTDI_VER: 1.5 run: | mkdir -p $DL_DIR && cd $DL_DIR wget "http://www.intra2net.com/en/developer/libftdi/download/libftdi1-${LIBFTDI_VER}.tar.bz2" tar -xjf libftdi1-${LIBFTDI_VER}.tar.bz2 echo "LIBFTDI_SRC=$PWD/libftdi1-${LIBFTDI_VER}" >> $GITHUB_ENV - name: Prepare capstone env: CAPSTONE_VER: 4.0.2 run: | mkdir -p $DL_DIR && cd $DL_DIR CAPSTONE_NAME=${CAPSTONE_VER} CAPSTONE_FOLDER=capstone-${CAPSTONE_VER} wget "https://github.com/aquynh/capstone/archive/${CAPSTONE_VER}.tar.gz" tar -xzf ${CAPSTONE_VER}.tar.gz echo "CAPSTONE_SRC=$PWD/capstone-${CAPSTONE_VER}" >> $GITHUB_ENV - name: Package OpenOCD for windows env: MAKE_JOBS: 2 HOST: i686-w64-mingw32 LIBUSB1_CONFIG: --enable-shared --disable-static HIDAPI_CONFIG: --enable-shared --disable-static --disable-testgui LIBFTDI_CONFIG: -DSTATICLIBS=OFF -DEXAMPLES=OFF -DFTDI_EEPROM=OFF CAPSTONE_CONFIG: "CAPSTONE_BUILD_CORE_ONLY=yes CAPSTONE_STATIC=yes CAPSTONE_SHARED=no" run: | # check if there is tag pointing at HEAD, otherwise take the HEAD SHA-1 as OPENOCD_TAG OPENOCD_TAG="`git tag --points-at HEAD`" [ -z $OPENOCD_TAG ] && OPENOCD_TAG="`git rev-parse --short HEAD`" # check if there is tag pointing at HEAD, if so the release will have the same name as the tag, # otherwise it will be named 'latest' RELEASE_NAME="`git tag --points-at HEAD`" [ -z $RELEASE_NAME ] && RELEASE_NAME="latest" [[ $RELEASE_NAME = "latest" ]] && IS_PRE_RELEASE="true" || IS_PRE_RELEASE="false" # set env and call cross-build.sh export OPENOCD_TAG=$OPENOCD_TAG export OPENOCD_SRC=$PWD export OPENOCD_CONFIG="" mkdir -p $BUILD_DIR && cd $BUILD_DIR bash $OPENOCD_SRC/contrib/cross-build.sh $HOST # add missing dlls cd $HOST-root/usr cp `$HOST-gcc --print-file-name=libwinpthread-1.dll` ./bin/ cp `$HOST-gcc --print-file-name=libgcc_s_sjlj-1.dll` ./bin/ # prepare the artifact ARTIFACT="openocd-${OPENOCD_TAG}-${HOST}.tar.gz" tar -czf $ARTIFACT * echo "RELEASE_NAME=$RELEASE_NAME" >> $GITHUB_ENV echo "IS_PRE_RELEASE=$IS_PRE_RELEASE" >> $GITHUB_ENV echo "ARTIFACT_PATH=$PWD/$ARTIFACT" >> $GITHUB_ENV - name: Publish OpenOCD packaged for windows uses: actions/upload-artifact@v2 with: path: ${{ env.ARTIFACT_PATH }} - name: Delete 'latest' Release uses: dev-drprasad/delete-tag-and-release@v0.2.0 with: delete_release: true tag_name: ${{ env.RELEASE_NAME }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Create Release uses: ncipollo/release-action@v1 with: tag: ${{ env.RELEASE_NAME }} commit: ${{ github.sha }} draft: false artifacts: ${{ env.ARTIFACT_PATH }} prerelease: ${{ env.IS_PRE_RELEASE }} token: ${{ secrets.GITHUB_TOKEN }}