.travis_linux.sh 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #!/bin/bash
  2. project_dir=$(pwd)
  3. # Complain when not in Travis environment
  4. if [ -z ${TRAVIS_COMMIT+x} ]; then
  5. echo "This script is intended to be used only in Travis CI environment."
  6. echo "To build VNote from source, please see the [documentation](https://tamlok.github.io/vnote/en_us/#!docs/Developers/Build%20VNote.md)."
  7. exit 1
  8. fi
  9. # Install qt5.9
  10. sudo add-apt-repository ppa:george-edison55/cmake-3.x -y
  11. sudo add-apt-repository ppa:beineri/opt-qt597-trusty -y
  12. sudo apt-get update -qq
  13. sudo apt-get -y install qt59base qt59webengine qt59webchannel qt59svg qt59location qt59tools qt59translations
  14. source /opt/qt*/bin/qt*-env.sh
  15. # Compile qt5ct
  16. wget -c https://excellmedia.dl.sourceforge.net/project/qt5ct/qt5ct-0.37.tar.bz2
  17. tar xf qt5ct-0.*.tar.bz2
  18. cd qt5ct-0.*/
  19. QT_SELECT=5 qmake
  20. make -j$(nproc) && sudo make install
  21. # Compile newer version fcitx-qt5
  22. sudo apt-get -y install fcitx-libs-dev libgl1-mesa-dev bison
  23. sudo apt-get -y install cmake
  24. wget http://xkbcommon.org/download/libxkbcommon-0.5.0.tar.xz
  25. tar xf libxkbcommon-0.5.0.tar.xz
  26. cd libxkbcommon-0.5.0
  27. ./configure -prefix=/usr -libdir=/usr/lib/x86_64-linux-gnu -disable-x11
  28. make -j$(nproc) && sudo make install
  29. git clone git://anongit.kde.org/extra-cmake-modules
  30. cd extra-cmake-modules
  31. mkdir build && cd build
  32. cmake ..
  33. make -j$(nproc) && sudo make install
  34. git clone https://github.com/fcitx/fcitx-qt5
  35. cd fcitx-qt5
  36. git checkout 1.0.5
  37. cmake .
  38. make -j$(nproc) && sudo make install
  39. # Copy fcitx-qt5 files to qt
  40. sudo cp /usr/local/lib/libFcitxQt5DBusAddons.so* /opt/qt*/lib/
  41. sudo cp /usr/local/lib/libFcitxQt5WidgetsAddons.so* /opt/qt*/lib/
  42. tree /opt/qt59/lib/
  43. cd ${project_dir}
  44. mkdir build
  45. cd build
  46. qmake -v
  47. qmake CONFIG+=release -spec linux-g++-64 ../VNote.pro
  48. make -j$(nproc)
  49. #
  50. # Pack AppImage using linuxdeployqt
  51. #
  52. mkdir dist
  53. INSTALL_ROOT=${project_dir}/build/dist make install ; tree dist/
  54. # Copy SVG module
  55. mkdir -p ./dist/usr/plugins/iconengines
  56. mkdir -p ./dist/usr/plugins/imageformats
  57. mkdir -p ./dist/usr/plugins/platforminputcontexts
  58. cp /opt/qt59/plugins/iconengines/* ./dist/usr/plugins/iconengines/
  59. cp /opt/qt59/plugins/imageformats/* ./dist/usr/plugins/imageformats/
  60. cp /opt/qt59/plugins/platforminputcontexts/* ./dist/usr/plugins/platforminputcontexts/
  61. # Copy other project files
  62. cp "${project_dir}/README.md" "dist/README.md"
  63. cp "${project_dir}/LICENSE" "dist/LICENSE"
  64. echo ${version} > ./dist/version
  65. echo "${TRAVIS_COMMIT}" >> ./dist/version
  66. # Get linuxdeployqt tool
  67. git clone https://github.com/tamlok/vnote-utils.git vnote-utils.git
  68. cp vnote-utils.git/linuxdeployqt-continuous-x86_64.AppImage ./linuxdeployqt-continuous-x86_64.AppImage
  69. # wget -c "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage"
  70. chmod a+x linuxdeployqt*.AppImage
  71. unset QTDIR; unset QT_PLUGIN_PATH ; unset LD_LIBRARY_PATH
  72. ./linuxdeployqt*.AppImage ./dist/usr/share/applications/*.desktop -bundle-non-qt-libs -exclude-libs=libnss3,libnssutil3 -extra-plugins=platformthemes/libqt5ct.so,styles/libqt5ct-style.so
  73. # Copy translations
  74. cp /opt/qt59/translations/*_zh_CN.qm ./dist/usr/translations/
  75. # Package it for the second time.
  76. ./linuxdeployqt*.AppImage ./dist/usr/share/applications/*.desktop -appimage -exclude-libs=libnss3,libnssutil3 -extra-plugins=platformthemes/libqt5ct.so,styles/libqt5ct-style.so
  77. tree dist/
  78. ls -l *.AppImage
  79. mv VNote-*.AppImage VNote-${version}-x86_64.AppImage
  80. cd ..
  81. exit 0