22 Commits

Author SHA1 Message Date
41474060b3 fix installator and windows install script 2024-11-11 16:09:41 +05:00
23d7d8064d add install path select to windows install script 2024-11-11 10:01:49 +00:00
Егор
876c00a66a Update install.sh 2024-11-11 14:00:19 +05:00
Егор
fd5c312c33 fix access error & use / instead \ in postrm 2024-11-11 08:29:28 +00:00
Егор
e07c12dacc fix adding link to toolchain dir and remove & add copyright to package 2024-11-11 07:47:00 +00:00
Егор
376ae0fa91 fix test.yml 2024-11-10 16:27:46 +05:00
Егор
e08878da61 fix install.sh 2024-11-10 16:23:36 +05:00
Егор
93acd0f1dd Update package test 2024-11-10 16:21:02 +05:00
Егор
d73b2827b1 update install.sh 2024-11-10 11:15:06 +00:00
Егор
5968d5a12b Update install.sh 2024-11-10 15:46:47 +05:00
Егор
a782cd37cd update idk 2024-11-10 10:27:09 +00:00
Егор
2480b1a20b Update install.sh 2024-11-09 23:18:02 +05:00
Егор
f4e741746f Update test.yml 2024-11-09 23:02:36 +05:00
Егор
d7a97891f7 fix upload artifact 2024-11-09 23:01:24 +05:00
Егор
f2ee70e825 Merge pull request #4 from Egor00f/add-installation-path-selection
Add installation path selection
2024-11-09 22:36:59 +05:00
Егор
99f3639668 fix test build 2024-11-09 17:35:08 +00:00
Егор
3dc15f3597 fix upload package 2024-11-09 17:27:22 +00:00
Егор
87c29daf9e add upload artifacts of packages && add github actions extension 2024-11-09 17:21:40 +00:00
Егор
0e3f85c0e3 add installation path selection 2024-11-09 17:16:13 +00:00
Егор
0baa7b470d fix build in github codespaces 2024-11-09 16:44:24 +00:00
Егор
537356d5fe fix devcontainer.json 2024-11-09 16:24:18 +00:00
Егор
6f3187dea8 Create devcontainer.json 2024-11-09 21:09:56 +05:00
13 changed files with 166 additions and 41 deletions

View File

@@ -0,0 +1,19 @@
{
"image": "mcr.microsoft.com/devcontainers/cpp:debian-12",
"features": {
},
"customizations": {
"vscode": {
"extensions": [
"ms-vscode.cmake-tools",
"usernamehw.errorlens",
"streetsidesoftware.code-spell-checker",
"streetsidesoftware.code-spell-checker-russian",
"ibm.output-colorizer",
"chouzz.vscode-innosetup",
"github.vscode-github-actions"
]
}
}
}

View File

@@ -16,7 +16,7 @@ jobs:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Run script - name: Run script
run: ${{ github.workspace }}/./install.sh run: echo '/home/autobuild/tools' | ${{ github.workspace }}/./install.sh
- name: Add toolchain to path - name: Add toolchain to path
run: echo "/home/autobuild/tools/win32/bin" >> $GITHUB_PATH run: echo "/home/autobuild/tools/win32/bin" >> $GITHUB_PATH
@@ -40,15 +40,6 @@ jobs:
- name: Run script - name: Run script
run: ${{ github.workspace }}/install.bat run: ${{ github.workspace }}/install.bat
- name: Add toolchain to path
run: echo "C:\MinGW\msys\1.0\home\autobuild\tools\win32\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: Test run
run: |
kos32-g++ -v
kos32-gcc -v
shell: cmd
#Test Windows Installer #Test Windows Installer
build-Installer: build-Installer:
runs-on: windows-latest runs-on: windows-latest
@@ -60,6 +51,13 @@ jobs:
cmake -B ${{ github.workspace }}/build cmake -B ${{ github.workspace }}/build
cmake --build ${{ github.workspace }}/build --target Installer cmake --build ${{ github.workspace }}/build --target Installer
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: windows-installer
# Upload entire repository
path: './build/installer.exe'
# Test Package # Test Package
package: package:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -71,16 +69,28 @@ jobs:
cmake -B ${{ github.workspace }}/build cmake -B ${{ github.workspace }}/build
cmake --build ${{ github.workspace }}/build --target Package cmake --build ${{ github.workspace }}/build --target Package
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: package
# Upload entire repository
path: './build/package.deb'
- name: Install package - name: Install package
run: sudo apt install ${{ github.workspace }}/build/package.deb run: echo '/kolibrios-toolchain' | sudo apt install ${{ github.workspace }}/build/package.deb -y
- name: Add toolchain to path - name: Add toolchain to path
run: echo "/home/autobuild/tools/win32/bin" >> $GITHUB_PATH run: echo "/kolibrios-toolchain/win32/bin" >> $GITHUB_PATH
- name: Test run - name: Test run
run: | run: |
kos32-g++ -v kos32-g++ -v
kos32-gcc -v kos32-gcc -v
/home/autobuild/tools/win32/bin/kos32-gcc -v
/home/autobuild/tools/win32/bin/kos32-g++ -v
/kolibrios-toolchain/win32/bin/kos32-gcc -v
/kolibrios-toolchain/win32/bin/kos32-g++ -v
- name: Remove package - name: Remove package
run: sudo apt remove kos32-gcc run: sudo apt remove kos32-gcc

1
.gitignore vendored
View File

@@ -1,4 +1,5 @@
Output/ Output/
package/DEBIAN/postinst package/DEBIAN/postinst
package/DEBIAN/copyright
package.deb package.deb
build/ build/

View File

@@ -3,6 +3,7 @@
"chouzz.vscode-innosetup", "chouzz.vscode-innosetup",
"streetsidesoftware.code-spell-checker", "streetsidesoftware.code-spell-checker",
"streetsidesoftware.code-spell-checker-russian", "streetsidesoftware.code-spell-checker-russian",
"ms-vscode.cmake-tools" "ms-vscode.cmake-tools",
"github.vscode-github-actions"
] ]
} }

12
.vscode/tasks.json vendored Normal file
View File

@@ -0,0 +1,12 @@
{
"version": "2.0.0",
"tasks": [
{
"type": "cmake",
"label": "CMake: настроить",
"command": "configure",
"problemMatcher": [],
"detail": "Задача шаблона CMake настроить"
}
]
}

View File

@@ -9,6 +9,13 @@ project(
add_custom_target( add_custom_target(
Package Package
COMMAND cp -f ${CMAKE_CURRENT_SOURCE_DIR}/install.sh ${CMAKE_CURRENT_SOURCE_DIR}/package/DEBIAN/postinst 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 dpkg-deb --build ${CMAKE_CURRENT_SOURCE_DIR}/package ${CMAKE_CURRENT_BINARY_DIR}/package.deb
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
) )

View File

@@ -7,7 +7,7 @@
## Установка ## Установка
Для установки требуются `7z` и `wget` Для установки требуются `7z` и `wget`. При выборе своего пути в любом случае будет создана папка win32 в выбранной папке.
### Linux ### Linux
@@ -15,27 +15,27 @@
Некоторые команды требуют sudo Некоторые команды требуют sudo
Тулчейн устанавливается в папку `/home/autobuild/tools/win32` Тулчейн по умолчанию устанавливается в папку `/home/autobuild/tools/win32`, но скрипт вас спросит перед установкой.
### Windows ### Windows
Желательно чтобы вы перед утсановкой тулчейна установите msys из установщика MinGW. Желательно чтобы вы перед установкой тулчейна установите msys из установщика MinGW.
Для windows есть установщик(посмотрите в релизах) или просто запустите `install.bat`. Рекомендуется запускать с повышенными правами Для windows есть установщик(посмотрите в релизах) или просто запустите `install.bat`. Рекомендуется запускать с повышенными правами
wget для windows можно поискать в GnuWin32 например, 7z Нужно добавить в PATH. wget для windows можно поискать в GnuWin32 например, 7z Нужно добавить в PATH.
Тулчейн устанавливается в папку `C:/MinGW/msys/1.0/home/autobuild/tools/win32` Тулчейн по умолчанию устанавливается в папку `C:/MinGW/msys/1.0/home/autobuild/tools/win32`, но вы можете изменить путь добавив аргумент - путь установки(пустой - путь по умолчанию)
## Сбока установщиков ## Сборка установщиков
Установщики полностью базируются на скриптах установки, так что безразницы что вы будете использовать скрипт или установщик. Установщики полностью базируются на скриптах установки, так что без разницы что вы будете использовать скрипт или установщик, но установщики могут и удалить тулчейн.
Установщики собираются с помощью cmake (cmake просто потому что могу) Установщики собираются с помощью cmake (cmake просто потому что могу)
### Linux ### Linux
Можно собрать deb пакет. Цель для сборки Package. Для сбрки требуется `dpkg-deb` Можно собрать deb пакет. Цель для сборки Package. Для сборки требуется `dpkg-deb`
### Windows ### Windows

View File

@@ -3,8 +3,14 @@
for /f %%a in ('echo prompt $E^| cmd') do set "ESC=%%a" for /f %%a in ('echo prompt $E^| cmd') do set "ESC=%%a"
set TOOLCHAIN_DIR=C:\MinGW\msys\1.0\home\autobuild\tools set DEFAULT_TOOLCHAIN_DIR=C:\MinGW\msys\1.0\home\autobuild\tools
if [%1] == [] (
set TOOLCHAIN_DIR=%DEFAULT_TOOLCHAIN_DIR%
)
else (
set TOOLCHAIN_DIR=%1
)
Call :print_msg Create the %TOOLCHAIN_DIR% folder... Call :print_msg Create the %TOOLCHAIN_DIR% folder...

View File

@@ -30,7 +30,20 @@ check_utils(){
pwd pwd
TOOLCHAIN_DIR="/home/autobuild/tools" DEFAULT_TOOLCHAIN_DIR="/home/autobuild/tools"
TOOLCHAIN_DIR=$DEFAULT_TOOLCHAIN_DIR
MESSAGE="Toolchain install path(default is $TOOLCHAIN_DIR): "
echo -n $MESSAGE
read INPUT
if [[ ! -z "$INPUT" ]]; then
TOOLCHAIN_DIR=$INPUT
fi
echo "Installing toolchain to $TOOLCHAIN_DIR"
print_msg "Checking utilities..." print_msg "Checking utilities..."
@@ -42,8 +55,9 @@ check_utils 7z
print_msg "Create the /home/autobuild folder..." print_msg "Create the toolchain folders..."
sudo mkdir -p $DEFAULT_TOOLCHAIN_DIR
sudo mkdir -p $TOOLCHAIN_DIR sudo mkdir -p $TOOLCHAIN_DIR
print_ok "Successfully!" print_ok "Successfully!"
@@ -123,20 +137,35 @@ sudo ln -sf /usr/lib/libmpfr.so.6 /usr/lib/libmpfr.so.4
print_ok "Successfully!" 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 ] if [ ! "$(id -u)" -ne 0 ]
then then
print_msg "Add" echo $MESSAGE >> /etc/profile
echo 'PATH=$PATH:/home/autobuild/tools/win32/bin' >> /etc/profile
sudo mkdir -p /etc/kos32-gcc
echo $TOOLCHAIN_DIR > /etc/kos32-gcc/install-path
else else
if ! grep -q 'export PATH=$PATH:/home/autobuild/tools/win32/bin' ~/.bashrc; then if ! grep -q $EXPORT_MESSSAGE ~/.bashrc; then
export PATH=$PATH:/home/autobuild/tools/win32/bin
print_msg "Adding '$TOOLCHAIN_DIR/win32/bin' to '~/.bashrc'" print_msg "Adding '$TOOLCHAIN_DIR/win32/bin' to '~/.bashrc'"
echo 'export PATH=$PATH:/home/autobuild/tools/win32/bin' >> ~/.bashrc echo '$EXPORT_MESSSAGE' >> ~/.bashrc
fi fi
fi fi
sudo chmod 775 $TOOLCHAIN_DIR/win32/bin/*
sudo chmod 775 $TOOLCHAIN_DIR/win32/include/*
sudo chmod 775 $TOOLCHAIN_DIR/win32/lib/gcc/mingw32/5.4.0/include/*
sudo chmod 775 $TOOLCHAIN_DIR/win32/lib/gcc/mingw32/5.4.0/include/c++/*
cd "$OLDPWD" cd "$OLDPWD"
export PATH=$PATH:$TOOLCHAIN_DIR/win32/bin
print_ok "Installation was successful!" print_ok "Installation was successful!"

View File

@@ -2,7 +2,7 @@
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "KolibriOS gcc toolchain" #define MyAppName "KolibriOS gcc toolchain"
#define MyAppVersion "0.1.3" #define MyAppVersion "0.1.4"
#define MyAppPublisher "Egor00f" #define MyAppPublisher "Egor00f"
#define MyAppURL "https://github.com/Egor00f/kolibrios-gcc-toolchain" #define MyAppURL "https://github.com/Egor00f/kolibrios-gcc-toolchain"
@@ -16,7 +16,8 @@ AppVersion={#MyAppVersion}
AppPublisher={#MyAppPublisher} AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL} AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL} AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL} AppUpdatesURL={#MyAppURL}\releases
AppReadmeFile=.\README.md
DefaultDirName=C:\MinGW\msys\1.0\home\autobuild\tools DefaultDirName=C:\MinGW\msys\1.0\home\autobuild\tools
DefaultGroupName={#MyAppName} DefaultGroupName={#MyAppName}
AllowNoIcons=yes AllowNoIcons=yes
@@ -57,8 +58,39 @@ Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"
Name: "turkish"; MessagesFile: "compiler:Languages\Turkish.isl" Name: "turkish"; MessagesFile: "compiler:Languages\Turkish.isl"
Name: "ukrainian"; MessagesFile: "compiler:Languages\Ukrainian.isl" Name: "ukrainian"; MessagesFile: "compiler:Languages\Ukrainian.isl"
[Registry]
Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; \
ValueType: expandsz; ValueName: "Path"; ValueData: "{olddata};{app}\win32\bin"; \
Check: NeedsAddPath('{app}\win32\bin')
[Files] [Files]
Source: ".\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs Source: ".\install.bat"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Run] [Run]
Filename: "{app}\install.bat"; description: "install script"; StatusMsg: "Installing toolchain"; Flags: runhidden logoutput Filename: "{app}\install.bat"; description: "install script"; StatusMsg: "Installing toolchain"; Parameters: "{app}"; Flags: runhidden logoutput
[Icons]
Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
[UninstallDelete]
Type: files; Name: "{app}\*"
[Code]
function NeedsAddPath(Param: string): boolean;
var
OrigPath: string;
begin
if not RegQueryStringValue(HKEY_LOCAL_MACHINE,
'SYSTEM\CurrentControlSet\Control\Session Manager\Environment',
'Path', OrigPath)
then begin
Result := True;
exit;
end;
{ look for the path with leading and trailing semicolon }
{ Pos() returns 0 if not found }
Result := Pos(';' + Param + ';', ';' + OrigPath + ';') = 0;
end;

6
package/DEBIAN/control Normal file → Executable file
View File

@@ -1,9 +1,9 @@
Package: kos32-gcc Package: kos32-gcc
Version: 0.1.3 Version: 0.1.4
Architecture: all Architecture: all
Section: devel Section: devel
Depends: libc6-i386:amd64, libmpc3:amd64 Depends: libc6-i386:amd64, libmpc3:amd64
Pre-Depends: p7zip, wget Pre-Depends: p7zip-full, wget
Recommends: fasm Recommends: fasm
Priority: optional Priority: optional
Homepage: https://github.com/Egor00f/kolibrios-gcc-toolchain Homepage: https://github.com/Egor00f/kolibrios-gcc-toolchain
@@ -11,4 +11,4 @@ Origin: http://ftp.kolibrios.org/users/Serge/new/Toolchain
Maintainer: Egor00f <velikiydolbayeb@gmail.com> Maintainer: Egor00f <velikiydolbayeb@gmail.com>
Installed-Size: 131708 Installed-Size: 131708
Description: KolibriOS gcc toolchain installer Description: KolibriOS gcc toolchain installer
This package installing KolibriOS gcc toolchain. This package installing KolibriOS gcc toolchain by Serge.

View File

@@ -1,11 +1,12 @@
#!/bin/bash #!/bin/bash
rm -R /home/autobuild/tools/win32 TOOLCHAIN_DIR=$(head -n 1 /etc/kos32-gcc/install-path)
if grep -q 'PATH=$PATH:/home/autobuild/tools/win32/bin' /etc/profile; then MESSAGE="PATH=\$PATH:$TOOLCHAIN_DIR/win32/bin"
val="PATH=\$PATH:/home/autobuild/tools/win32/bin"
sed -i '/$val/d' /etc/profile if grep -q '$MESSAGE' /etc/profile; then
sudo sed -i '/$MESSAGE/d' /etc/profile
fi fi
rm /etc/kos32-gcc -R

7
package/DEBIAN/prerm Executable file
View File

@@ -0,0 +1,7 @@
#!/bin/bash
TOOLCHAIN_DIR=$(head -n 1 /etc/kos32-gcc/install-path)
rm -R $TOOLCHAIN_DIR
rm -R /home/autobuild