From 3a4cf7ccee0a29663cdf5cf67c19b4ec34efb4a5 Mon Sep 17 00:00:00 2001 From: vit9696 Date: Mon, 7 May 2018 21:36:24 +0300 Subject: [PATCH] Add Linux x86-64 CI support --- .travis.yml | 26 +++++++++++------ macbuild.sh | 63 ---------------------------------------- unixbuild.sh | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 99 insertions(+), 72 deletions(-) delete mode 100755 macbuild.sh create mode 100755 unixbuild.sh diff --git a/.travis.yml b/.travis.yml index 99a9946..91f88f1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,7 +7,7 @@ matrix: compiler: clang script: - - ./macbuild.sh + - ./unixbuild.sh deploy: provider: releases @@ -20,25 +20,33 @@ matrix: tags: true - os: linux + dist: trusty compiler: clang before_install: - - sudo add-apt-repository --yes ppa:ubuntu-sdk-team/ppa - sudo apt-get update -qq - - sudo apt-get install -qq qt5-qmake qtbase5-dev qtdeclarative5-dev libqt5webkit5-dev libsqlite3-dev + - sudo apt-get install -qq qt5-default qt5-qmake qtbase5-dev-tools cmake script: - - qmake -qt=qt5 uefitool.pro - - make + - ./unixbuild.sh - os: linux + dist: trusty compiler: gcc before_install: - - sudo add-apt-repository --yes ppa:ubuntu-sdk-team/ppa - sudo apt-get update -qq - - sudo apt-get install -qq qt5-qmake qtbase5-dev qtdeclarative5-dev libqt5webkit5-dev libsqlite3-dev + - sudo apt-get install -qq qt5-default qt5-qmake qtbase5-dev-tools cmake script: - - qmake -qt=qt5 uefitool.pro - - make + - ./unixbuild.sh + + deploy: + provider: releases + skip_cleanup: true + file: "dist/*.zip" + file_glob: true + api_key: + secure: "WjYd93lVLKHULBpUXS/WtGrkdXyAwxHOUnLJotyDmQipAQP5Ox7Kj12JwkSJGEmVOEdcbIQJyi0QxPjn1UYbYsAt6Op8zrjnYLS4G4fMdBtcxprWzid85uTW7oAAIFs7ygMVhpzxRKpu70yNb683vbThqNmaOu6RyG9aJOLtPAg=" + on: + tags: true diff --git a/macbuild.sh b/macbuild.sh deleted file mode 100755 index 2675323..0000000 --- a/macbuild.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/bash - -if [ ! -d /opt/qt56sm ]; then - curl -L -o /tmp/qt-5.6.3-static-mac.zip https://github.com/distdb/qtbuilds/blob/master/qt-5.6.3-static-mac.zip?raw=true || exit 1 - qtsum=$(shasum -a 256 /tmp/qt-5.6.3-static-mac.zip | cut -f1 -d' ') - qtexpsum="214d22d8572ea6162753c8dd251d79275f3b22d49204718c637d722409e0cfcb" - if [ "$qtsum" != "$qtexpsum" ]; then - echo "Qt hash $qtsum does not match $qtexpsum" - exit 1 - fi - sudo mkdir -p /opt || exit 1 - cd /opt || exit 1 - sudo unzip -q /tmp/qt-5.6.3-static-mac.zip || exit 1 - cd - || exit 1 -fi - -export PATH="/opt/qt56sm/bin:$PATH" - -echo "Attempting to build UEFITool for macOS..." - -UEFITOOL_VER=$(cat uefitool.cpp | grep ^version | cut -d'"' -f2) -UEFIPATCH_VER=$(cat UEFIPatch/uefipatch_main.cpp | grep '"UEFIPatch [0-9]' | cut -d'"' -f2 | cut -d' ' -f2) -UEFIREPLACE_VER=$(cat UEFIReplace/uefireplace_main.cpp | grep '"UEFIReplace [0-9]' | cut -d'"' -f2 | cut -d' ' -f2) - -build_tool() { - echo "Building $1 $2" - # Check version - if [ "$(echo "$2" | grep '^[0-9]*\.[0-9]*\.[0-9]*$')" != "$2" ]; then - echo "Invalid $1 version!" - exit 1 - fi - # Tools are in subdirectories - if [ "$1" != "UEFITool" ]; then - cd "$1" || exit 1 - fi - - # Build - qmake $3 QMAKE_CXXFLAGS+=-flto QMAKE_LFLAGS+=-flto CONFIG+=optimize_size || exit 1 - make || exit 1 - - # Archive - if [ "$1" = "UEFITool" ]; then - strip -x UEFITool.app/Contents/MacOS/UEFITool || exit 1 - zip -qry dist/"UEFITool_${UEFITOOL_VER}_mac.zip" UEFITool.app "${4}" || exit 1 - else - strip -x "$1" || exit 1 - zip -qry ../dist/"${1}_${2}_mac.zip" "${1}" "${4}" || exit 1 - fi - - # Return to parent - if [ "$1" != "UEFITool" ]; then - cd - || exit 1 - fi -} - -rm -rf dist -mkdir -p dist || exit 1 - -build_tool UEFITool "$UEFITOOL_VER" uefitool.pro -build_tool UEFIPatch "$UEFIPATCH_VER" uefipatch.pro patches.txt -build_tool UEFIReplace "$UEFIREPLACE_VER" uefireplace.pro - -exit 0 diff --git a/unixbuild.sh b/unixbuild.sh new file mode 100755 index 0000000..d54b077 --- /dev/null +++ b/unixbuild.sh @@ -0,0 +1,82 @@ +#!/bin/bash + +UTARGET=$(uname) + +if [ "$UTARGET" = "Darwin" ]; then + export UPLATFORM="mac" +elif [ "$UTARGET" = "Linux" ]; then + export UPLATFORM="linux_$(uname -m)" +else + # Fallback to something... + export UPLATFORM="$UTARGET" +fi + +if [ "$UPLATFORM" = "mac" ]; then + if [ ! -d /opt/qt56sm ]; then + curl -L -o /tmp/qt-5.6.3-static-mac.zip https://github.com/distdb/qtbuilds/blob/master/qt-5.6.3-static-mac.zip?raw=true || exit 1 + qtsum=$(shasum -a 256 /tmp/qt-5.6.3-static-mac.zip | cut -f1 -d' ') + qtexpsum="214d22d8572ea6162753c8dd251d79275f3b22d49204718c637d722409e0cfcb" + if [ "$qtsum" != "$qtexpsum" ]; then + echo "Qt hash $qtsum does not match $qtexpsum" + exit 1 + fi + sudo mkdir -p /opt || exit 1 + cd /opt || exit 1 + sudo unzip -q /tmp/qt-5.6.3-static-mac.zip || exit 1 + cd - || exit 1 + fi + + export PATH="/opt/qt56sm/bin:$PATH" +fi + +echo "Attempting to build UEFITool NE for ${UPLATFORM}..." + +UEFITOOL_VER=$(cat uefitool.cpp | grep ^version | cut -d'"' -f2) +UEFIPATCH_VER=$(cat UEFIPatch/uefipatch_main.cpp | grep '"UEFIPatch [0-9]' | cut -d'"' -f2 | cut -d' ' -f2) +UEFIREPLACE_VER=$(cat UEFIReplace/uefireplace_main.cpp | grep '"UEFIReplace [0-9]' | cut -d'"' -f2 | cut -d' ' -f2) + +build_tool() { + echo "Building $1 $2" + # Check version + if [ "$(echo "$2" | grep '^[0-9]*\.[0-9]*\.[0-9]*$')" != "$2" ]; then + echo "Invalid $1 version!" + exit 1 + fi + # Tools are in subdirectories + if [ "$1" != "UEFITool" ]; then + cd "$1" || exit 1 + fi + + # Build + # -flto is flawed on CI atm + if [ "$UPLATFORM" = "mac" ]; then + qmake $3 QMAKE_CXXFLAGS+=-flto QMAKE_LFLAGS+=-flto CONFIG+=optimize_size || exit 1 + else + qmake $3 CONFIG+=optimize_size || exit 1 + fi + + make || exit 1 + + # Archive + if [ "$1" = "UEFITool" ] && [ "$UPLATFORM" = "mac" ]; then + strip -x UEFITool.app/Contents/MacOS/UEFITool || exit 1 + zip -qry dist/"${1}_${2}_${UPLATFORM}.zip" UEFITool.app "${4}" || exit 1 + else + strip -x "$1" || exit 1 + zip -qry ../dist/"${1}_${2}_${UPLATFORM}.zip" "${1}" "${4}" || exit 1 + fi + + # Return to parent + if [ "$1" != "UEFITool" ]; then + cd - || exit 1 + fi +} + +rm -rf dist +mkdir -p dist || exit 1 + +build_tool UEFITool "$UEFITOOL_VER" uefitool.pro +build_tool UEFIPatch "$UEFIPATCH_VER" uefipatch.pro patches.txt +build_tool UEFIReplace "$UEFIREPLACE_VER" uefireplace.pro + +exit 0