Skip to content

Commit

Permalink
Merge remote-tracking branch 'us/develop' into feature/vt-indexes-1211
Browse files Browse the repository at this point in the history
  • Loading branch information
dmpas committed Jan 20, 2024
2 parents 48ed649 + b944a18 commit 03db92a
Show file tree
Hide file tree
Showing 22 changed files with 243 additions and 235 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/sonar.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
if: (github.repository == 'EvilBeaver/OneScript' ) && (github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.event.repository.full_name)
steps:
- name: Set up JDK 17
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
java-version: 17
distribution: temurin
Expand Down
2 changes: 2 additions & 0 deletions Build_Core.csproj → Build.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,7 @@
<RuntimeID Include="osx-x64"/>
<RuntimeID Include="osx-arm64"/>
<RuntimeID Include="linux-x64"/>
<VsixSources Include="$(DebugAdapterDir)/**" Exclude="*.vsix" />
</ItemGroup>

<CreateItem
Expand All @@ -312,6 +313,7 @@

<Exec Command="dotnet &quot;$(Runner)&quot; &quot;$(MSBuildProjectDirectory)\install\unicode-zipper.os&quot; pack &quot;$(ArtifactsRoot)/%(RuntimeID.Identity)/*&quot; &quot;$(ArtifactsRoot)/OneScript-$(ReleaseNumber)-%(RuntimeID.Identity).zip&quot;" UseUtf8Encoding="Always"/>
<RemoveDir Directories="$(ArtifactsRoot)/%(RuntimeID.Identity)" />
<Delete Files="@(VsixSources)" />
</Target>

<!-- Nuget -->
Expand Down
18 changes: 11 additions & 7 deletions Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ pipeline {

bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" src/1Script.sln /t:restore && mkdir doctool"
bat "chcp $outputEnc > nul\r\n dotnet publish src/OneScriptDocumenter/OneScriptDocumenter.csproj -c Release -o doctool"
bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" Build_Core.csproj /t:CleanAll;PrepareDistributionFiles;CreateNuget"
bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" Build.csproj /t:CleanAll;PrepareDistributionFiles;CreateNuget"

stash includes: 'tests, built/**', name: 'buildResults'
}
Expand Down Expand Up @@ -126,7 +126,7 @@ pipeline {
deleteDir()
}
unstash 'buildResults'
bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" Build_Core.csproj /t:Test"
bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" Build.csproj /t:Test"

junit 'tests/*.xml'
}
Expand All @@ -136,7 +136,7 @@ pipeline {
stage('Linux testing') {
agent{
docker {
image 'mcr.microsoft.com/dotnet/sdk:5.0'
image 'mcr.microsoft.com/dotnet/sdk:6.0'
label 'linux'
}
}
Expand Down Expand Up @@ -187,16 +187,20 @@ pipeline {
unstash 'buildResults'
unstash 'nativeApiSo'

bat 'xcopy output\\na-proxy\\*64.so built\\linux-64\\bin\\'
bat '''
chcp 65001 > nul
dir output\\na-proxy
xcopy output\\na-proxy\\*64.so built\\linux-x64\\bin\\ /F
'''.stripIndent()

script
{
if (env.BRANCH_NAME == "preview") {
echo 'Building preview'
bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" Build_Core.csproj /t:PackDistributions /p:Suffix=-pre%BUILD_NUMBER%"
bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" Build.csproj /t:PackDistributions /p:Suffix=-pre%BUILD_NUMBER%"
}
else{
bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" Build_Core.csproj /t:PackDistributions"
bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" Build.csproj /t:PackDistributions"
}
}
archiveArtifacts artifacts: 'built/**', fingerprint: true
Expand All @@ -213,7 +217,7 @@ pipeline {
agent { label 'master' }

steps {

cleanWs()
unstash 'dist'
unstash 'vsix'

Expand Down
49 changes: 48 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,57 @@ OneScript позволяет создавать и выполнять текст
- выполнить команду `mono ovm.exe use stable`
- перезапустить терминал

Донастройка Self-Contained варианта поставки (не требующего инсталляции dotnet)
#### Донастройка Self-Contained варианта поставки (не требующего инсталляции dotnet)

```
chmod +x ./oscript
xattr -d com.apple.quarantine *.dylib oscript
codesign -s - ./oscript
```


# Ручная локальная сборка

## Подготовка

Ниже приведены ссылки на дистрибутивы, однако, учтите, что ссылки могут меняться со временем и их актуальность не гарантируется. Нужен dotnet SDK и компилятор C++, скачать можно из любого места, которое нагуглится.

* Установить [MS BuildTools](https://visualstudio.microsoft.com/ru/thank-you-downloading-visual-studio/?sku=buildtools&rel=16), при установке включить таргетинг на .net6, .net4.8, установить компилятор C++.

## Сборка

Запустить Developer Command Prompt (появится в меню Пуск после установки MSBuildTools или Visual Studio). Перейти в каталог репозитория OneScript. Далее приведены команды в консоли Developer Command Prompt
Сборка выполняется с помощью msbuild. Таргеты:

* CleanAll - очистка результатов предыдущих сборок
* BuildAll - подготовить файлы для поставки
* MakeCPP;MakeFDD;MakeSCD;BuildDebugger - отдельные таргеты сборки для подготовки разных типов поставки
* PrepareDistributionFiles - сборка полных пакетов поставки (включая библиотеки)
* PackDistributions - подготовка ZIP архивов поставки
* CreateNuget - создать пакеты для публикации в NuGet

**Параметры сборки**

* VersionPrefix - префикс номера релиза, его основная часть, например, 2.0.0
* VersionSuffix - суффикс номера, который обычно выступает в качестве произвольного суффикса версионирования по semver, например, beta-786 (необязателен)
* NoCppCompiler - если True - не установлен компилятор C++, в сборку не будут добавлены компоненты C++ (поддержка NativeApi)

Все поставляемые файлы будут размещены в каталоге `built` в корне репозитория 1Script

### Сборка содержимого дистрибутивов в отдельном каталоге

```bat
msbuild Build.csproj /t:CleanAll;PrepareDistributionFiles
```

### Сборка с ручным указанием версии

```bat
msbuild Build.csproj /t:CleanAll;PrepareDistributionFiles /p:VersionPrefix=2.0.0
```

### Сборка ZIP-дистрибутивов

```bat
msbuild Build.csproj /t:CleanAll;PrepareDistributionFiles;PackDistributions /p:VersionPrefix=2.0.0 /p:VersionSuffix=preview223
```
Binary file modified install/opm.ospx
Binary file not shown.
78 changes: 78 additions & 0 deletions install/package-loader.os
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,9 @@
КаталогиМодулей.Добавить(ОбъединитьПути(Путь, "src", "Модули"));
КаталогиМодулей.Добавить(ОбъединитьПути(Путь, "src", "Modules"));

КаталогиВК = Новый Массив;
КаталогиВК.Добавить(ОбъединитьПути(Путь, "Components"));
КаталогиВК.Добавить(ОбъединитьПути(Путь, "Компоненты"));

Для Каждого мКаталог Из КаталогиКлассов Цикл

Expand All @@ -118,6 +121,12 @@
ОбработатьКаталогМодулей(мКаталог, СтандартнаяОбработка, Отказ);

КонецЦикла;

Для Каждого мКаталог Из КаталогиВК Цикл

ОбработатьКаталогВК(мКаталог, СтандартнаяОбработка, Отказ);

КонецЦикла;

КонецПроцедуры

Expand Down Expand Up @@ -161,6 +170,75 @@

КонецПроцедуры

// По соглашению ВК должны лежать в подпапках, названных, как значения перечисления ТипПлатформы.
// Имя файла, являющегося внешней компонентой должно иметь префикс 1script_
// Components
// net4 (фреймворк .net48
// 1script_barcode.dll
// dotnet (.net современных версий, он же netcore)
// 1script_barcode.dll
// NativeApi
// Windows_x86
// 1script_barcode.dll
// Windows_x86_64
// 1script_barcode.dll
// Linux_x86_64
// 1script_barcode.so
// остальные не поддерживаются (ЖВПР)
//
Процедура ОбработатьКаталогВК(Знач Путь, СтандартнаяОбработка, Отказ)

СИ = Новый СистемнаяИнформация();
МажорнаяВерсия = Лев(СИ.Версия,1);

Если МажорнаяВерсия = "1" Тогда
ОбработатьБиблиотекиCLR(ОбъединитьПути(Путь, "net4"));
ИначеЕсли МажорнаяВерсия = "2" Тогда
ОбработатьБиблиотекиCLR(ОбъединитьПути(Путь, "dotnet"));
Иначе
Вывести("Неизвестная мажорная версия системы: " + МажорнаяВерсия);
КонецЕсли;

ОбработатьКомпонентыNativeApi(Путь);

КонецПроцедуры

Процедура ОбработатьБиблиотекиCLR(Путь)
КандидатыВКомпоненты = НайтиФайлы(Путь, "1script_*.dll");
Для Каждого Кандидат Из КандидатыВКомпоненты Цикл
Если Не Кандидат.ЭтоФайл() Тогда
Продолжить;
КонецЕсли;

Вывести("Загружаю файл " + Кандидат.Имя);
ЗагрузитьБиблиотеку(Кандидат.ПолноеИмя);

КонецЦикла;
КонецПроцедуры

Процедура ОбработатьКомпонентыNativeApi(Путь)
СИ = Новый СистемнаяИнформация;
ИмяПодкаталога = ОбъединитьПути(Путь, Строка(СИ.ТипПлатформы));
Вывести("Ищу внешние компоненты в каталоге " + Путь);

#Если Windows Тогда
Расширение = ".dll";
#Иначе
Расширение = ".so";
#КонецЕсли

КандидатыВКомпоненты = НайтиФайлы(ИмяПодкаталога, "1script_*"+Расширение);
Для Каждого Кандидат Из КандидатыВКомпоненты Цикл
Если Не Кандидат.ЭтоФайл() Тогда
Продолжить;
КонецЕсли;

Вывести("Загружаю файл " + Кандидат.Имя);
ПодключитьВнешнююКомпоненту(Кандидат.ПолноеИмя, Кандидат.Имя, ТипВнешнейКомпоненты.Native);

КонецЦикла;
КонецПроцедуры

Процедура ДобавитьКлассЕслиРанееНеДобавляли(ПутьФайла, ИмяКласса)
Вывести("Добавляю класс, если ранее не добавляли " + ИмяКласса);
Если ВыдаватьОшибкуПриЗагрузкеУжеСуществующихКлассовМодулей Тогда
Expand Down
2 changes: 1 addition & 1 deletion src/1Script.sln
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{D14BF321-348C-46B8-B96A-43A22BA7AC10}"
ProjectSection(SolutionItems) = preProject
oscommon.targets = oscommon.targets
..\Build_Core.csproj = ..\Build_Core.csproj
..\Build.csproj = ..\Build.csproj
..\Jenkinsfile = ..\Jenkinsfile
EndProjectSection
EndProject
Expand Down
Loading

0 comments on commit 03db92a

Please sign in to comment.