Merge pull request #15 from Egor00f/make-offile-installers

Make offline installers
This commit is contained in:
Егор
2025-02-06 14:59:58 +03:00
committed by GitHub
11 changed files with 283 additions and 30 deletions

View File

@@ -1,8 +1,13 @@
name: Test
name: Test packages
on:
push:
branches: [ "main" ]
paths-ignore:
- '.vscode/**'
- '.devcontainer/**'
- '.gitignore'
- 'CONTRIBUTING.md'
pull_request:
branches: [ "main" ]
workflow_dispatch:
@@ -11,6 +16,7 @@ jobs:
#Test linux install script
linux-install:
name: linux(sh) script install test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
@@ -28,6 +34,7 @@ jobs:
#Test Batch install script
batch-install:
name: Batch script install test
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
@@ -42,6 +49,7 @@ jobs:
#Test PowerShell install script
PowerShell-install:
name: PowerShell install script test
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
@@ -61,6 +69,7 @@ jobs:
#Test Windows Installer
build-Installer:
name: Build windows installer test
runs-on: windows-latest
needs: PowerShell-install
steps:
@@ -80,8 +89,8 @@ jobs:
# Test deb package build
deb-package-build:
name: Debian package build test
runs-on: ubuntu-latest
needs: linux-install
steps:
- uses: actions/checkout@v4
@@ -99,6 +108,7 @@ jobs:
# Test deb package install/remove
deb-package-test:
name: Debian package install/remove test
runs-on: ubuntu-latest
needs: deb-package-build
steps:
@@ -129,6 +139,7 @@ jobs:
#Test chocolatey package build
chocolatey-package-build:
name: Chocolatey build package test
runs-on: windows-latest
needs: PowerShell-install
steps:
@@ -148,6 +159,7 @@ jobs:
# Test chocolatey package install/remove
chocolatey-package-test:
name: chocolatey install test
runs-on: windows-latest
needs: chocolatey-package-build
steps:

4
.gitignore vendored
View File

@@ -1,9 +1,7 @@
Output/
package/DEBIAN/postinst
package/DEBIAN/copyright
package.deb
build/
chocolatey/kos32-gcc*.nupkg
chocolatey/install.ps1
chocolatey/tools/install.ps1
bat/builds.kolibrios.org
*.7z

View File

@@ -1,9 +1,6 @@
{
"recommendations": [
"chouzz.vscode-innosetup",
"streetsidesoftware.code-spell-checker",
"streetsidesoftware.code-spell-checker-russian",
"ms-vscode.cmake-tools",
"github.vscode-github-actions"
]
}

10
.vscode/settings.json vendored
View File

@@ -6,5 +6,13 @@
"msys",
"kolibrios",
"Egor"
]
],
"cSpell.ignorePaths": [
"vscode-extension",
".git/objects",
".vscode",
".vscode-insiders",
"package/DEBIAN"
],
"cmake.parallelJobs": 1
}

View File

@@ -1,36 +1,124 @@
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12)
CMAKE_MINIMUM_REQUIRED(VERSION 3.2)
project(
KolibriOS-gcc-Toolchain-installer
DESCRIPTION "Installer of gcc toolchain for KolibriOS"
)
add_custom_target(
download_libraries
COMMAND wget -q -N http://ftp.kolibrios.org/users/Serge/new/Toolchain/sdk-28-10-16.7z -O ${CMAKE_CURRENT_BINARY_DIR}/sdk-28-10-16.7z
COMMAND wget -r --no-parent -q http://builds.kolibrios.org/en_US/data/contrib/sdk/lib/
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/lib
COMMAND mv ${CMAKE_CURRENT_BINARY_DIR}/builds.kolibrios.org/en_US/data/contrib/sdk/lib/* ${CMAKE_CURRENT_BINARY_DIR}/lib
COMMAND rm -R ${CMAKE_CURRENT_BINARY_DIR}/builds.kolibrios.org
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Download libraries"
BYPRODUCTS
${CMAKE_CURRENT_BINARY_DIR}/lib
${CMAKE_CURRENT_BINARY_DIR}/sdk-28-10-16.7z
)
add_custom_target(
archive_libraries
COMMAND 7z x -y -bso0 -bsp0 ${CMAKE_CURRENT_BINARY_DIR}/sdk-28-10-16.7z -o${CMAKE_CURRENT_BINARY_DIR}
COMMAND 7z a -bso0 -bsp0 ${CMAKE_CURRENT_BINARY_DIR}/lib.7z ${CMAKE_CURRENT_BINARY_DIR}/lib
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
BYPRODUCTS
${CMAKE_CURRENT_BINARY_DIR}/lib.7z
DEPENDS
${CMAKE_CURRENT_BINARY_DIR}/sdk-28-10-16.7z
)
add_custom_target(
download_linux
COMMAND wget http://ftp.kolibrios.org/users/Serge/new/Toolchain/x86_64-linux-kos32-5.4.0.7z -q -O ${CMAKE_CURRENT_BINARY_DIR}/kos32-toolchain-linux.7z
COMMAND wget http://board.kolibrios.org/download/file.php?id=8301libisl.so.10.2.2.7z -q -O ${CMAKE_CURRENT_BINARY_DIR}/libisl.so.10.2.2.7z
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Download linux toolchain"
BYPRODUCTS
${CMAKE_CURRENT_BINARY_DIR}/kos32-toolchain-linux.7z
${CMAKE_CURRENT_BINARY_DIR}/libisl.so.10.2.2.7z
)
add_custom_target(
download_windows
COMMAND wget http://ftp.kolibrios.org/users/Serge/new/Toolchain/msys-kos32-5.4.0.7z -q -O ${CMAKE_CURRENT_BINARY_DIR}/kos32-toolchain-win.7z
COMMENT "Download windows toolchain"
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
BYPRODUCTS
${CMAKE_CURRENT_BINARY_DIR}/kos32-toolchain-win.7z
)
add_custom_target(
extract_linux
COMMENT "Extract linux archives"
COMMAND 7z x -y -bso0 -bsp0 ${CMAKE_CURRENT_BINARY_DIR}/libisl.so.10.2.2.7z
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
BYPRODUCTS
${CMAKE_CURRENT_BINARY_DIR}/libisl.so.10.2.2
DEPENDS
${CMAKE_CURRENT_BINARY_DIR}/libisl.so.10.2.2.7z
)
add_custom_target(
configureDebPackage
COMMAND
COMMENT "Setup debian package"
COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_CURRENT_BINARY_DIR}/package
COMMAND cp -rf ${CMAKE_CURRENT_SOURCE_DIR}/package/ ${CMAKE_CURRENT_BINARY_DIR}/package
COMMAND chmod -R 775 ${CMAKE_CURRENT_BINARY_DIR}/package
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/package/usr/lib/x86_64-linux-gnu
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/package/home/autobuild/tools
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/package/
BYPRODUCTS
${CMAKE_CURRENT_BINARY_DIR}/package
)
add_custom_target(
deb
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 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
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 cp -f ${CMAKE_CURRENT_BINARY_DIR}/lib.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 package"
BYPRODUCTS
${CMAKE_CURRENT_BINARY_DIR}/package.deb
DEPENDS
${CMAKE_CURRENT_BINARY_DIR}/libisl.so.10.2.2
${CMAKE_CURRENT_BINARY_DIR}/kos32-toolchain-linux.7z
${CMAKE_CURRENT_BINARY_DIR}/lib.7z
)
add_custom_target(
Installer
COMMAND 7z x ${CMAKE_CURRENT_BINARY_DIR}/kos32-toolchain-win.7z -o ${CMAKE_CURRENT_BINARY_DIR}
COMMAND iscc /O"${CMAKE_CURRENT_BINARY_DIR}" ${CMAKE_CURRENT_SOURCE_DIR}/installator.iss
COMMENT "Build windows installer"
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/installator.iss
${CMAKE_CURRENT_SOURCE_DIR}/LICENSE
${CMAKE_CURRENT_SOURCE_DIR}/README.md
)
add_custom_target(
choco
COMMAND cp -f ${CMAKE_CURRENT_SOURCE_DIR}/install.ps1 ${CMAKE_CURRENT_SOURCE_DIR}/chocolatey/tools
COMMAND cp -f ${CMAKE_CURRENT_BINARY_DIR}/kos32-toolchain-win.7z ${CMAKE_CURRENT_SOURCE_DIR}/chocolatey/tools
COMMAND choco pack
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/chocolatey
COMMENT "Build chocolatey package"
SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/chocolatey/kos32-gcc.nuspec
${CMAKE_CURRENT_SOURCE_DIR}/chocolatey/tools/chocolateyInstall.ps1
${CMAKE_CURRENT_SOURCE_DIR}/chocolatey/tools/chocolateyUninstall.ps1
)
add_dependencies(
deb
configureDebPackage
)

View File

@@ -10,7 +10,10 @@
### Linux
Просто запустите `install.sh`.
Просто запустите `install.sh`:
```
./install.sh
```
Некоторые команды требуют sudo.
@@ -22,7 +25,7 @@
Желательно чтобы вы перед установкой тулчейна установите msys из установщика MinGW.
Для windows есть установщик(посмотрите в релизах) или просто запустите `install.bat`. Рекомендуется запускать с повышенными правами.
Для windows есть установщик(посмотрите в релизах) или просто запустите `install.bat`. Нужно запускать с повышенными правами.
wget для windows можно поискать в GnuWin32 например, 7z Нужно добавить в PATH.
@@ -32,11 +35,22 @@ wget для windows можно поискать в GnuWin32 например, 7z
install.bat Path
```
Так же вы можете установить тулчейн с помощью установщика(можете найти его в [релизах](https://git.kolibrios.org/Egor00f/-/packages/debian/kos32-gcc/))
## Сборка установщиков
Установщики полностью базируются на скриптах установки, так что без разницы что вы будете использовать скрипт или установщик, но установщики могут и удалить тулчейн.
Установщики базируются на скриптах установки, так что без разницы что вы будете использовать скрипт или установщик, но установщики могут и удалить тулчейн.
Установщики собираются с помощью cmake (cmake просто потому что могу).
Установщики собираются с помощью cmake.
Просто запустите:
```
mkdir build
cd build
cmake ..
make <установщик>
```
### Linux
@@ -44,6 +58,8 @@ install.bat Path
### Windows
Для сборки установщиков необходимы `CoreUtils` и `wget` из `GnuWin32` или ещё откуда то.
Установщик собирается с помощью Inno Setup. Цель для сборки Installer. Для сборки требуется компилятор Inno Setup.
Если сборка не работает, добавьте папку Inno Setup (например: `C:\Programs Files\Inno Setup 6`) в PATH.

View File

@@ -3,7 +3,7 @@
<metadata>
<id>kos32-gcc</id>
<title>KolibriOS gcc toolchain installer</title>
<version>0.1.5</version>
<version>0.1.6</version>
<authors>Egor00f</authors>
<owners>Egor00f</owners>
<summary>idk</summary>

View File

@@ -8,7 +8,8 @@ $packageName = 'kos32-gcc' # arbitrary name for the package, used in messages
$INSTALL_PATH = Read-Host 'Path to install toolchain(Enter - default)'
C:\ProgramData\Chocolatey\lib\kos32-gcc\tools\install.ps1
Expand-7Zip -ArchiveFileName C:\ProgramData\Chocolatey\lib\kos32-gcc\tools\kos32-toolchain-win.7z -TargetPath $INSTALL_PATH
Out-File -FilePath C:\ProgramData\Chocolatey\lib\kos32-gcc\install-path -InputObject $INSTALL_PATH

133
package/DEBIAN/postinst Executable file
View File

@@ -0,0 +1,133 @@
#!/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 toolchain ..."
sudo 7z x -y -bso0 -bsp0 /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 "Extracting libraries..."
cd $TOOLCHAIN_DIR/win32/mingw32
sudo 7z x -y -bso0 -bsp0 /home/autobuild/tools/lib.7z
sudo rm -rf /home/autobuild/tools/lib.7z
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!"

View File

@@ -6,7 +6,7 @@ TOOLCHAIN_DIR=$(head -n 1 /etc/kos32-gcc/install-path)
MESSAGE="PATH=\$PATH:$TOOLCHAIN_DIR/win32/bin"
sudo sed -i '/$MESSAGE/d' /etc/profile
sudo sed -i -e '/$MESSAGE/d' /etc/profile
rm /etc/kos32-gcc -R
rm -R /etc/kos32-gcc

View File

@@ -2,6 +2,6 @@
TOOLCHAIN_DIR=$(head -n 1 /etc/kos32-gcc/install-path)
rm -R $TOOLCHAIN_DIR
rm -Rf $TOOLCHAIN_DIR
rm -R /home/autobuild
rm -Rf /home/autobuild