Closed blackcross86 closed 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 - я удалял эту конструкцию, потом возвращал обратно. Я еще подумаю, в ближайшее время решу, как поменять файл проекта, чтобы больше с этим не сталкиваться.
- К сожалению, xbuild не поддерживает эту самую конструкцию. Поддерживает msbuild, но он есть только в определенной версии Mono, которая у меня устанавливается только в Linux Mint; не разобрался, почему этого нет под другие дистрибутивы. Впрочем, когда я обновился до Linux Mint 20, и установил Mono там - msbuild и там пропал.
Ой,msbuild нужен! В dotnet есть msbuild,через него можно собрать?
Я не экспериментировал со сборками dotnet, т.е. под .NET Core для Mono. Предполагаю, что в рамках упорной борьбы MS как с альтернативными, так и собственными UI-фреймворками, WinForms не будет компилироваться через dotnet.
Ну собственно пока я порезал файл проекта, где использовался DefineConstants.Contains и под Mono сейчас всё собирается и в xbuild. Поэтому и закрыл данный issue.
Обновите у себя копию репозитория. Всё уже залито и должно нормально собираться. Для интереса - сообщите, плиз, под какой дистр Linux собираете?
Для интереса - сообщите, плиз, под какой дистр Linux собираете?
Rosa Linux
Для dotnet будет другая линия развития GEDKeeper - v3x на базе фреймворка EtoForms. EtoForms по идее позволяет делать кроссплатформенные приложения для Windows, Linux и MacOS с нативным внешним видом на каждой платформе. GKv3 уже давно делается, там достаточно хорошая готовность по основному функционалу. Но нужно интерфейс пригладить - он местами какой-то аморфный. И некоторые фичи, например печать в непонятном состоянии. Всё упирается в недостаток тестирования и отладки. Ядро там тоже самое что и у текущего направления. Но вот весь UI... по хорошему то направление нужно брать и постоянно использовать в повседневной работе, тогда всё быстрее будет улучшаться.
Для интереса - сообщите, плиз, под какой дистр 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
Насколько я видел в мануалах, 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 файл нужны ,т.к. он и под федору не собирется.
+ 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?
опять выскочила ошибка.
Когда я отрабатывал сборку под Fedora, три недели назад, всё собиралось. Смогу это перепроверить завтра вечером/ночью.
Проверил сейчас.
На Linux Mint у меня установлен Mono 6.8.0.105. А на Fedora - Mono 6.12.0.122. И там, и там сборка работает без ошибок.
А у вас в сообщениях вижу Mono 4.6.2.0.
А у вас в сообщениях вижу Mono 4.6.2.0. я так и думал что mono старый как мамонт
Когда я отрабатывал сборку под Fedora, три недели назад, всё собиралось. Смогу это перепроверить завтра вечером/ночью.
Значит у вас все собирается ,в Росе просто старый моно
%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
Для данной ошибке со старым Mono я попробую сделать безопасную обертку. Т.к. это не принципиальный код. Это библиотеки подпроекта GKCommunicator - практически дохлой разработки очень узко-специализированного пирингового коммуникатора/мессенджера для GEDKeeper.
Предполагалось основной функцией пользователям программы получать возможность обмениваться поисковой информацией как в генеалогических соц.сетях, только без этих самых соц.сетей. По принципу - связался со знакомыми тебе генеалогами, бросил кусочек информации сразу в конкретной форме, понятной программе, получил отклик от тех, у кого есть что-то на эту тему. Чтобы не нужно было терять время на формирование выписки из своей базы данных, вырезание конфиденциальной информации, оформление, написание обращений и т.п. Своего рода доска объявлений + поисковик. Естественно с явными ограничениями на то, что публикуется и что ищется. И всё это на базе пирингового подхода, никаких серверов. Увы, у меня не хватило ума на разработку пирингового ядра. Точнее оно-то есть и что-то даже работает. Но не могу в аналогичных работающих пиринговых мессенджерах понять как у них работает пробой NAT. У всех это прекрасно работает и есть даже пиринговый мессенджер на базе технологии BitTorrent, но увы - я это не смог.
Так что, если я заверну ошибочное место, чтобы оно на старом Mono выключалось - основная программа нисколько от этого не пострадает.
Так что, если я заверну ошибочное место, чтобы оно на старом Mono выключалось - основная программа нисколько от этого не пострадает.
В данном случае хотя бы так,пока не обновится mono.Спасибо.
У вас spec-файл рассчитан на то, чтобы собирать из github-репозитория. Я свой делал, чтобы в первую очередь формировать эталонный пакет оффлайн, со своего рабочего места в любой момент, независимо от того, что опубликовано на github. Разные направления немного. Но я обязательно учту все расхождения между spec-файлами, чтобы учесть все полезные нюансы. Т.к. я настолько глубоко эту тему не знаю, и мне нужна помощь с такими вещами.
У меня есть по программе 3 чата в Telegram. Два - на русском и английском для общения с пользователями. И еще один - для разработчиков/соавторов. Если вас интересуют обсуждения новых фич и процесса решения проблем, можете присоединиться к чату разработки. Хотя для обсуждения тем кроссплатформенности и разработки пакетов наверное стоит сделать еще один чат. Возможно в него придет еще один участник, который фанатеет от Manjaro. Или еще 2 - которые работают с FreeBSD.
Если вас интересует предложение общения по теме пакетов в специализированном телеграмм-чате и привлечение туда других по этой же теме (если вы используете Telegram конечно), киньте сообщение в чат https://t.me/gedkeeper_dev_ru. Я создам новый чат и приглашу вас туда первым участником.
Если вас интересует предложение общения по теме пакетов в специализированном телеграмм-чате и привлечение туда других по этой же теме (если вы используете Telegram конечно), киньте сообщение в чат https://t.me/gedkeeper_dev_ru. Я создам новый чат и приглашу вас туда первым участником.
По принципу вы можете написать мне в личку по spec файлу,я в ступил в обычный чат где 30 человек.
Я сделал небольшие исправления в связи с отстутствием SetIPProtectionLevel в Mono 4.6. Попробуйте новую сборку. Может не сработать, т.к. я не могу проверить компилируемость исправления. Если не сработает, напишите сюда текст ошибки, буду думать еще.