Serg-Norseman / GEDKeeper

GEDKeeper - program for work with personal genealogical database
https://gedkeeper.net/
GNU General Public License v3.0
153 stars 44 forks source link

Ошибка сборки,в чем может быть причина. #335

Closed blackcross86 closed 2 years ago

blackcross86 commented 2 years ago
+ xbuild ./projects/GEDKeeper2.linux.sln /p:Configuration=Debug /p:Platform=x86 /p:MonoCS=true /p:TargetFrameworkVersion=v4.5 /v:quiet
XBuild Engine Version 14.0
Mono, Version 4.6.2.0
Copyright (C) 2005-2013 Various Mono authors
/builddir/build/BUILD/GEDKeeper-2.19.0/projects/GEDKeeper2.linux.sln:  warning : /builddir/build/BUILD/GEDKeeper-2.19.0/projects/GKv2/GKPedigreeImporterPlugin/GKPedigreeImporterPlugin.csproj: Can not evaluate " !$(DefineConstants.Contains(';CI_MODE')) And !$(DefineConstants.Contains(';__MonoCS__')) " to bool.
/builddir/build/BUILD/GEDKeeper-2.19.0/projects/GEDKeeper2.linux.sln:  warning : /builddir/build/BUILD/GEDKeeper-2.19.0/projects/GKTests/GKTests.csproj: Can not evaluate "!$(DefineConstants.Contains(';__MonoCS__'))" to bool.
/builddir/build/BUILD/GEDKeeper-2.19.0/projects/GEDKeeper2.linux.sln:  warning : /builddir/build/BUILD/GEDKeeper-2.19.0/projects/GKCore/GKCore.csproj: Can not evaluate "!$(DefineConstants.Contains(';__MonoCS__'))" to bool.
/builddir/build/BUILD/GEDKeeper-2.19.0/projects/GEDKeeper2.linux.sln:  warning : /builddir/build/BUILD/GEDKeeper-2.19.0/projects/GKv2/GKComponents/GKComponents.csproj: Can not evaluate "!$(DefineConstants.Contains(';__MonoCS__'))" to bool.
/builddir/build/BUILD/GEDKeeper-2.19.0/projects/GKv2/GKPedigreeImporterPlugin/GKPedigreeImporterPlugin.csproj: error : /builddir/build/BUILD/GEDKeeper-2.19.0/projects/GKv2/GKPedigreeImporterPlugin/GKPedigreeImporterPlugin.csproj: Can not evaluate " !$(DefineConstants.Contains(';CI_MODE')) And !$(DefineConstants.Contains(';__MonoCS__')) " to bool.
error: Bad exit status from /var/tmp/rpm-tmp.BgAfmf (%build)
    Bad exit status from /var/tmp/rpm-tmp.BgAfmf (%build)
Serg-Norseman commented 2 years ago

1) Вы какую-то старую версию репозитория загрузили: сейчас конструкция DefineConstants.Contains имеется только в одном файле проекта - GKMap.Core.csproj, в остальных её не осталось; 2) К сожалению, xbuild не поддерживает эту самую конструкцию. Поддерживает msbuild, но он есть только в определенной версии Mono, которая у меня устанавливается только в Linux Mint; не разобрался, почему этого нет под другие дистрибутивы. Впрочем, когда я обновился до Linux Mint 20, и установил Mono там - msbuild и там пропал. 3) В GKMap.Core.csproj я еще не решил с последним DefineConstants.Contains. По идее, он там не очень нужен, с другой стороны в будущем может всё поменяться. Для сборки дистров программы под Manjaro и Fedora - я удалял эту конструкцию, потом возвращал обратно. Я еще подумаю, в ближайшее время решу, как поменять файл проекта, чтобы больше с этим не сталкиваться.

blackcross86 commented 2 years ago
  1. К сожалению, xbuild не поддерживает эту самую конструкцию. Поддерживает msbuild, но он есть только в определенной версии Mono, которая у меня устанавливается только в Linux Mint; не разобрался, почему этого нет под другие дистрибутивы. Впрочем, когда я обновился до Linux Mint 20, и установил Mono там - msbuild и там пропал.

Ой,msbuild нужен! В dotnet есть msbuild,через него можно собрать?

Serg-Norseman commented 2 years ago

Я не экспериментировал со сборками dotnet, т.е. под .NET Core для Mono. Предполагаю, что в рамках упорной борьбы MS как с альтернативными, так и собственными UI-фреймворками, WinForms не будет компилироваться через dotnet.

Ну собственно пока я порезал файл проекта, где использовался DefineConstants.Contains и под Mono сейчас всё собирается и в xbuild. Поэтому и закрыл данный issue.

Serg-Norseman commented 2 years ago

Обновите у себя копию репозитория. Всё уже залито и должно нормально собираться. Для интереса - сообщите, плиз, под какой дистр Linux собираете?

blackcross86 commented 2 years ago

Для интереса - сообщите, плиз, под какой дистр Linux собираете?

Rosa Linux

Serg-Norseman commented 2 years ago

Для dotnet будет другая линия развития GEDKeeper - v3x на базе фреймворка EtoForms. EtoForms по идее позволяет делать кроссплатформенные приложения для Windows, Linux и MacOS с нативным внешним видом на каждой платформе. GKv3 уже давно делается, там достаточно хорошая готовность по основному функционалу. Но нужно интерфейс пригладить - он местами какой-то аморфный. И некоторые фичи, например печать в непонятном состоянии. Всё упирается в недостаток тестирования и отладки. Ядро там тоже самое что и у текущего направления. Но вот весь UI... по хорошему то направление нужно брать и постоянно использовать в повседневной работе, тогда всё быстрее будет улучшаться.

Serg-Norseman commented 2 years ago

Для интереса - сообщите, плиз, под какой дистр Linux собираете?

Rosa Linux

Насколько я видел в мануалах, spec-файлы позволяют делать условную сборку пакетов в зависимости от дистра Linux, под которым собираются. Вы можете проверить цепочку файлов make_gk2_linux_fedora_pack.sh -> deploy/gk2_linux_rpm_fedora_package.sh -> rpm/gedkeeper.spec и предложить исправления (если они нужны), чтобы можно было собирать пакеты и для Rosa? Сделать в такую же цепочку, скажем make_gk2_linux_rosa_pack.sh -> deploy/gk2_linux_rpm_rosa_package.sh -> rpm/gedkeeper.spec

blackcross86 commented 2 years ago

Насколько я видел в мануалах, spec-файлы позволяют делать условную сборку пакетов в зависимости от дистра Linux, под которым собираются. Вы можете проверить цепочку файлов make_gk2_linux_fedora_pack.sh -> deploy/gk2_linux_rpm_fedora_package.sh -> rpm/gedkeeper.spec и предложить исправления (если они нужны), чтобы можно было собирать пакеты и для Rosa? Сделать в такую же цепочку, скажем make_gk2_linux_rosa_pack.sh -> deploy/gk2_linux_rpm_rosa_package.sh -> rpm/gedkeeper.spec

Да ,если честно исправления в spec файл нужны ,т.к. он и под федору не собирется.

blackcross86 commented 2 years ago
+ xbuild ./projects/GEDKeeper2.linux.sln /p:Configuration=Debug /p:Platform=x86 /p:MonoCS=true /p:TargetFrameworkVersion=v4.5 /v:quiet
XBuild Engine Version 14.0
Mono, Version 4.6.2.0
Copyright (C) 2005-2013 Various Mono authors
GKCore/MVP/Views/UIContracts.cs(515,18): warning CS0108: `GKCore.MVP.Views.ISourceEditDlg.Title' hides inherited member `BSLib.Design.MVP.IView.Title'. Use the new keyword if hiding was intended
GDModel/Providers/FamilyShow/FamilyXProvider.cs(50,17): warning CS0219: The variable `formats' is assigned but its value is never used
GDModel/Providers/GedML/GedMLProvider.cs(65,21): warning CS0219: The variable `strTok' is assigned but its value is never used
GDModel/Providers/GedML/GedMLProvider.cs(67,24): warning CS0219: The variable `curTag' is assigned but its value is never used
GKCore/GKUtils.cs(2776,65): error CS0117: `System.Net.SecurityProtocolType' does not contain a definition for `Tls11'
/usr/lib/mono/xbuild/14.0/bin/Microsoft.Common.targets:  warning : Reference 'System.Data.SQLite' not resolved
CacheProviders/SQLitePureImageCache.cs(530,33): warning CS0219: The variable `x' is assigned but its value is never used
CacheProviders/SQLitePureImageCache.cs(555,33): warning CS0219: The variable `x' is assigned but its value is never used
MapCore.cs(39,23): warning CS0649: Field `GKMap.MapCore.fSizeOfMapArea' is never assigned to, and will always have its default value
MapCore.cs(60,23): warning CS0649: Field `GKMap.MapCore.MouseCurrent' is never assigned to, and will always have its default value
DHT/DHTClient.cs(226,32): warning CS0168: The variable `ex' is declared but never used
DHT/DHTClient.cs(235,36): warning CS0168: The variable `ex' is declared but never used
DHT/DHTClient.cs(420,17): warning CS0219: The variable `port' is assigned but its value is never used
PeerProfile.cs(46,17): warning CS0219: The variable `s' is assigned but its value is never used
TCP/TCPDuplexClient.cs(55,21): error CS1061: Type `System.Net.Sockets.Socket' does not contain a definition for `SetIPProtectionLevel' and no extension method `SetIPProtectionLevel' of type `System.Net.Sockets.Socket' could be found. Are you missing an assembly reference?

опять выскочила ошибка.

Serg-Norseman commented 2 years ago

Когда я отрабатывал сборку под Fedora, три недели назад, всё собиралось. Смогу это перепроверить завтра вечером/ночью.

Serg-Norseman commented 2 years ago

Проверил сейчас.

На Linux Mint у меня установлен Mono 6.8.0.105. А на Fedora - Mono 6.12.0.122. И там, и там сборка работает без ошибок.

А у вас в сообщениях вижу Mono 4.6.2.0.

blackcross86 commented 2 years ago

А у вас в сообщениях вижу Mono 4.6.2.0. я так и думал что mono старый как мамонт

blackcross86 commented 2 years ago

Когда я отрабатывал сборку под Fedora, три недели назад, всё собиралось. Смогу это перепроверить завтра вечером/ночью.

Значит у вас все собирается ,в Росе просто старый моно

blackcross86 commented 2 years ago
%define         rname GEDKeeper
%define         summary GEDKeeper - program for work with personal genealogical database
%define     commit f2498e497c7c033a058ed10c776957ab8095357e
%define     shortcommit %(c=%{commit}; echo ${c:0:7})
%define     git_date 06102021
# package source GKCommunicator
%define     GKC_commit cbd3a63437d8c0bd430404bd68b6ca86ddba1f94
%define     GKC_short %(c=%{commit}; echo ${c:0:7})

Name:       gedkeeper
Version:    2.19.0
Release:    1.git%{shortcommit}.%{git_date}.0
Summary:    %{summary}
License:    GPLv3
Group:      Editors
Url:        https://github.com/serg-norseman/gedkeeper
Source0:        https://github.com/serg-norseman/gedkeeper/archive/%{commit}/%{rname}-%{shortcommit}.tar.gz
Source1:    https://github.com/Serg-Norseman/GKCommunicator/archive/%{GKC_commit}/GKCommunicator-%{GKC_short}.tar.gz
BuildRequires:  mono
BuildRequires:  pkgconfig(mono)
Requires:   mono-core
Requires:   mono-data
Requires:   mono-winforms
Requires:   lua
Requires:   sqlite3

%description
%{summary}.

%files
%doc LICENSE
%{_bindir}/gk2_run.sh
%{_libdir}/%{name}
%{_datadir}/mime/*.xml
%{_datadir}/applications/%{name}.desktop
%{_datadir}/pixmaps/%{name}.png

%prep
%autosetup -n %{rname}-%{commit} -b1
find . -type f -iname "*.dll" -exec chmod -x {} \;

%if 0
find ./locales -type f -exec chmod -x '{}' \;
find ./plugins -type f -exec chmod -x '{}' \;
find ./scripts -type f -exec chmod -x '{}' \;
find ./samples -type f -exec chmod -x '{}' \;
%endif

rmdir projects/GKCommunicator
mv ../GKCommunicator-%{GKC_commit} projects/GKCommunicator

%build
xbuild ./projects/GEDKeeper2.linux.sln /p:Configuration=Debug /p:Platform="x86" /p:MonoCS=true /p:TargetFrameworkVersion=v4.5 /v:quiet

%install
install -Dm 0755 gk2_run.sh %{buildroot}%{_bindir}/gk2_run.sh
install -d 0755 %{buildroot}%{_libdir}/%{name}
install -Dm 0644 application-x-%{name}.xml %{buildroot}%{_datadir}/mime/application-x-%{name}.xml
install -Dm 0644 %{name}.desktop %{buildroot}%{_datadir}/applications/%{name}.desktop
install -Dm 0644 %{name}.png %{buildroot}%{_datadir}/pixmaps/%{name}.png
cp -r bin \
    locales \
    plugins \
    samples \
    scripts %{buildroot}%{_libdir}/%{name}

## E: zero-length
rm -rf %{buildroot}%{_libdir}/%{name}/scripts/readme.txt

%changelog
* Tue Oct 19 2021 GEDKeeper - 2.19.0
- New upstream release

Вот как у меня в данный момент выглядит spec

Serg-Norseman commented 2 years ago

Для данной ошибке со старым Mono я попробую сделать безопасную обертку. Т.к. это не принципиальный код. Это библиотеки подпроекта GKCommunicator - практически дохлой разработки очень узко-специализированного пирингового коммуникатора/мессенджера для GEDKeeper.

Предполагалось основной функцией пользователям программы получать возможность обмениваться поисковой информацией как в генеалогических соц.сетях, только без этих самых соц.сетей. По принципу - связался со знакомыми тебе генеалогами, бросил кусочек информации сразу в конкретной форме, понятной программе, получил отклик от тех, у кого есть что-то на эту тему. Чтобы не нужно было терять время на формирование выписки из своей базы данных, вырезание конфиденциальной информации, оформление, написание обращений и т.п. Своего рода доска объявлений + поисковик. Естественно с явными ограничениями на то, что публикуется и что ищется. И всё это на базе пирингового подхода, никаких серверов. Увы, у меня не хватило ума на разработку пирингового ядра. Точнее оно-то есть и что-то даже работает. Но не могу в аналогичных работающих пиринговых мессенджерах понять как у них работает пробой NAT. У всех это прекрасно работает и есть даже пиринговый мессенджер на базе технологии BitTorrent, но увы - я это не смог.

Так что, если я заверну ошибочное место, чтобы оно на старом Mono выключалось - основная программа нисколько от этого не пострадает.

blackcross86 commented 2 years ago

Так что, если я заверну ошибочное место, чтобы оно на старом Mono выключалось - основная программа нисколько от этого не пострадает.

В данном случае хотя бы так,пока не обновится mono.Спасибо.

Serg-Norseman commented 2 years ago

У вас spec-файл рассчитан на то, чтобы собирать из github-репозитория. Я свой делал, чтобы в первую очередь формировать эталонный пакет оффлайн, со своего рабочего места в любой момент, независимо от того, что опубликовано на github. Разные направления немного. Но я обязательно учту все расхождения между spec-файлами, чтобы учесть все полезные нюансы. Т.к. я настолько глубоко эту тему не знаю, и мне нужна помощь с такими вещами.

Serg-Norseman commented 2 years ago

У меня есть по программе 3 чата в Telegram. Два - на русском и английском для общения с пользователями. И еще один - для разработчиков/соавторов. Если вас интересуют обсуждения новых фич и процесса решения проблем, можете присоединиться к чату разработки. Хотя для обсуждения тем кроссплатформенности и разработки пакетов наверное стоит сделать еще один чат. Возможно в него придет еще один участник, который фанатеет от Manjaro. Или еще 2 - которые работают с FreeBSD.

Serg-Norseman commented 2 years ago

Если вас интересует предложение общения по теме пакетов в специализированном телеграмм-чате и привлечение туда других по этой же теме (если вы используете Telegram конечно), киньте сообщение в чат https://t.me/gedkeeper_dev_ru. Я создам новый чат и приглашу вас туда первым участником.

blackcross86 commented 2 years ago

Если вас интересует предложение общения по теме пакетов в специализированном телеграмм-чате и привлечение туда других по этой же теме (если вы используете Telegram конечно), киньте сообщение в чат https://t.me/gedkeeper_dev_ru. Я создам новый чат и приглашу вас туда первым участником.

По принципу вы можете написать мне в личку по spec файлу,я в ступил в обычный чат где 30 человек.

Serg-Norseman commented 2 years ago

Я сделал небольшие исправления в связи с отстутствием SetIPProtectionLevel в Mono 4.6. Попробуйте новую сборку. Может не сработать, т.к. я не могу проверить компилируемость исправления. Если не сработает, напишите сюда текст ошибки, буду думать еще.