diff --git a/.gitignore b/.gitignore index bedc75f..bc41e5e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,4 @@ Output/ -package/DEBIAN/postinst -package/DEBIAN/copyright -package.deb build/ chocolatey/kos32-gcc*.nupkg chocolatey/install.ps1 diff --git a/CMakeLists.txt b/CMakeLists.txt index 5a36b5e..c33eb8e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,25 +32,43 @@ add_custom_target( ) add_custom_target( - deb - COMMAND mkdir -p ${CMAKE_CURRENT_SOURCE_DIR}/package/usr/lib/x86_64-linux-gnu - COMMAND cp -f ${CMAKE_CURRENT_SOURCE_DIR}/install.sh ${CMAKE_CURRENT_SOURCE_DIR}/package/DEBIAN/postinst - COMMAND cp -f ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE ${CMAKE_CURRENT_SOURCE_DIR}/package/DEBIAN/copyright - COMMAND 7z x ${CMAKE_CURRENT_BINARY_DIR}/libisl.so.10.2.2.7z -o ${CMAKE_CURRENT_SOURCE_DIR}/package/usr/lib/x86_64-linux-gnu/libisl.so.10.2.2 - COMMAND chmod 775 ${CMAKE_CURRENT_SOURCE_DIR}/package/DEBIAN - COMMAND chmod 775 ${CMAKE_CURRENT_SOURCE_DIR}/package/DEBIAN/control - COMMAND chmod 775 ${CMAKE_CURRENT_SOURCE_DIR}/package/DEBIAN/prerm - COMMAND chmod 775 ${CMAKE_CURRENT_SOURCE_DIR}/package/DEBIAN/postinst - COMMAND chmod 775 ${CMAKE_CURRENT_SOURCE_DIR}/package/DEBIAN/postrm - COMMAND chmod 775 ${CMAKE_CURRENT_SOURCE_DIR}/package/DEBIAN/copyright - COMMAND dpkg-deb --build ${CMAKE_CURRENT_SOURCE_DIR}/package ${CMAKE_CURRENT_BINARY_DIR}/package.deb + extract_linux + COMMENT "Extract linux archives" + COMMAND 7z x ${CMAKE_CURRENT_BINARY_DIR}/libisl.so.10.2.2.7z + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} +) + +add_custom_target( + configureDebPackage + COMMENT "Setup debian package" + COMMAND cp -rf ${CMAKE_CURRENT_SOURCE_DIR}/package/ ${CMAKE_CURRENT_BINARY_DIR}/package + COMMAND chmod -R 775 ${CMAKE_CURRENT_BINARY_DIR}/package + COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/package/usr/lib/x86_64-linux-gnu + COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/package/home/autobuild/tools + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + SOURCES + ${CMAKE_CURRENT_SOURCE_DIR}/package/ +) + + +add_custom_target( + debOffline + COMMAND cp -f ${CMAKE_CURRENT_BINARY_DIR}/libisl.so.10.2.2 ${CMAKE_CURRENT_BINARY_DIR}/package/usr/lib/x86_64-linux-gnu/libisl.so.10.2.2 + COMMAND cp -f ${CMAKE_CURRENT_BINARY_DIR}/kos32-toolchain-linux.7z ${CMAKE_CURRENT_BINARY_DIR}/package/home/autobuild/tools + COMMAND dpkg-deb --build ${CMAKE_CURRENT_BINARY_DIR}/package ${CMAKE_CURRENT_BINARY_DIR}/package.deb + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Build deb offline package" +) + +add_custom_target( + debOnline + COMMAND cp -f ${CMAKE_CURRENT_SOURCE_DIR}/install.sh ${CMAKE_CURRENT_BINARY_DIR}/package/DEBIAN/postinst + COMMAND cp -f ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE ${CMAKE_CURRENT_BINARY_DIR}/package/DEBIAN/copyright + COMMAND dpkg-deb --build ${CMAKE_CURRENT_BINARY_DIR}/package ${CMAKE_CURRENT_BINARY_DIR}/package.deb WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMENT "Build deb package" SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/install.sh - ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE - ${CMAKE_CURRENT_SOURCE_DIR}/package/DEBIAN/control - ${CMAKE_CURRENT_SOURCE_DIR}/package/DEBIAN/postrm + ${CMAKE_CURRENT_SOURCE_DIR}/install.sh ) add_custom_target( @@ -74,7 +92,17 @@ add_custom_target( ) add_dependencies( - deb + debOnline + configureDebPackage +) + +add_dependencies( + debOffline + configureDebPackage +) + +add_dependencies( + configureDebPackage download_linux ) diff --git a/package/DEBIAN/postinst b/package/DEBIAN/postinst new file mode 100755 index 0000000..e8d24d5 --- /dev/null +++ b/package/DEBIAN/postinst @@ -0,0 +1,140 @@ +#!/bin/bash + +# Written by turbocat2001 (Maxim Logaev) +# Installation steps described by maxcodehack (Maxim Kuzmitsky) +# modified by Egor00f (Egor) + +set -e +pwd + +DEFAULT_TOOLCHAIN_DIR="/home/autobuild/tools" + +TOOLCHAIN_DIR=$DEFAULT_TOOLCHAIN_DIR + +print_msg(){ + echo -e "\e[34m$1\e[0m" +} + +print_ok(){ + echo -e "\e[32m$1\e[0m" +} + +print_err(){ + echo -e "\e[31m$1\e[0m" + exit +} + +check_utils(){ + printf "%s: " $1 + if command -v $1 &> /dev/null + then + print_ok "ok\r" + else + print_err "no\r" + fi +} + +echo -n -e "\e[0mToolchain install path \e[90m(default is $TOOLCHAIN_DIR)\e[97m: " +read INPUT + +if [[ ! -z "$INPUT" ]]; then + TOOLCHAIN_DIR=$INPUT +fi + +echo -e "\e[0mInstalling toolchain to \e[97m$TOOLCHAIN_DIR\e[0m" + + +print_msg "Checking utilities..." + +check_utils wget +check_utils 7z + + + +print_msg "Create the toolchain folders..." + +sudo mkdir -p $DEFAULT_TOOLCHAIN_DIR +sudo mkdir -p $TOOLCHAIN_DIR + +print_ok "Successfully!" + +print_msg "Extracting files ..." + +sudo 7z x -y /home/autobuild/tools/kos32-toolchain-linux.7z -o$TOOLCHAIN_DIR +sudo rm -rf /home/autobuild/tools/kos32-toolchain-linux.7z + +print_ok "Successfully!" + + + + +print_msg "Downloading libraries..." + +cd $TOOLCHAIN_DIR/win32/mingw32 +sudo 7z x -y -bso0 -bsp0 sdk-28-10-16.7z +sudo rm -rf sdk-28-10-16.7z + +print_ok "Successfully!" + + + +print_msg "Updating libraries" + +cd lib + +print_ok "Successfully!" + + +if ! [ -d /usr/lib/x86_64-linux-gnu/ ]; then + sudo mkdir -p /usr/lib/x86_64-linux-gnu/ +fi + +sudo ln -sf /usr/lib/x86_64-linux-gnu/libisl.so.10.2.2 /usr/lib/x86_64-linux-gnu/libisl.so.10 +sudo ln -sf /usr/lib/x86_64-linux-gnu/libisl.so.10.2.2 /usr/lib/libisl.so.10 +sudo chmod go-w /usr/lib/x86_64-linux-gnu/libisl.so.10 +sudo chmod go-w /usr/lib/x86_64-linux-gnu/libisl.so.10.2.2 + +print_ok "Successfully!" + + +print_msg "Fixing libmpfr..." + +sudo ln -sf /usr/lib/x86_64-linux-gnu/libmpfr.so.6 /usr/lib/x86_64-linux-gnu/libmpfr.so.4 +sudo ln -sf /usr/lib/libmpfr.so.6 /usr/lib/libmpfr.so.4 + +print_ok "Successfully!" + + +if [ "$TOOLCHAIN_DIR" != "$DEFAULT_TOOLCHAIN_DIR" ]; then + sudo ln -sf $TOOLCHAIN_DIR/win32 $DEFAULT_TOOLCHAIN_DIR +fi + + +MESSAGE="PATH=\$PATH:$TOOLCHAIN_DIR/win32/bin" + +EXPORT_MESSSAGE="export $MESSAGE" + +if [ ! "$(id -u)" -ne 0 ] +then + echo $MESSAGE >> /etc/profile + + sudo mkdir -p /etc/kos32-gcc + echo $TOOLCHAIN_DIR > /etc/kos32-gcc/install-path +else + if ! grep -q $EXPORT_MESSSAGE ~/.bashrc; then + print_msg "Adding '$TOOLCHAIN_DIR/win32/bin' to '~/.bashrc'" + echo '$EXPORT_MESSSAGE' >> ~/.bashrc + fi +fi + +sudo chmod 775 $TOOLCHAIN_DIR/win32/bin/* +sudo chmod 774 $TOOLCHAIN_DIR/win32/include/* +sudo chmod 774 $TOOLCHAIN_DIR/win32/lib/* +sudo chmod 774 $TOOLCHAIN_DIR/win32/mingw32/lib/* +sudo chmod -R 775 /home/autobuild/tools/win32/lib/gcc + +cd "$OLDPWD" + +export PATH=$PATH:$TOOLCHAIN_DIR/win32/bin + +print_ok "Installation was successful!"