Сборка LO под windows

Автор scheglakov, 28 октября 2022, 14:38

0 Пользователи и 1 гость просматривают эту тему.

scheglakov

Добрый день !
Пытаюсь собрать LO под windows (под cygwin)
При указании опции  --with-package-format=msi для сборки msi пакета, сборка завершается с ошибками:

: *****************************************************************
: ERROR: Reading from filehandle failed at C:/sources/libo-core/solenv/bin/modules/installer/windows/file.pm line 967.
: *****************************************************************

make[1]: *** [C:/sources/libo-core/instsetoo_native/CustomTarget_install.mk:87: C:/sources/libo-core/workdir/CustomTarget/instsetoo_native/install/install.phony] Error 1
make: *** [Makefile:289: build] Error 2


Полный лог сборки добавил.

Без данной опции, сборка проходит отлично.

Подскажите... куда копать ? Всю голову уже сломал (((

mikekaganski

#1
Пока я запустил сборку MSI для проверки и жду результата - вопрос: а для чего Вы собираете MSI мастера? Не проще ли просто запускать программу из instdir?

И ещё - какие параметры Вы передаёте в autogen.sh?

У меня собралось нормально.

Для отладки проблемы (которая, похоже, в расчёте хэша файла) можно добавить вокруг проблемной строки что-то вроде

diff --git a/solenv/bin/modules/installer/windows/file.pm b/solenv/bin/modules/installer/windows/file.pm
index 100002f5ad37..753413c6f1cc 100644
--- a/solenv/bin/modules/installer/windows/file.pm
+++ b/solenv/bin/modules/installer/windows/file.pm
@@ -964,7 +964,11 @@ sub create_files_table
             open(FILE, $path) or die "ERROR: Can't open $path for creating file hash";
             binmode(FILE);
             my $hashinfo = pack("l", 20);
+            $infoline = "Info: Calculating MD% hash of file $path\n";
+            push(@installer::globals::logfileinfo, $infoline);
             $hashinfo .= Digest::MD5->new->addfile(*FILE)->digest;
+            $infoline = "MD5 hash calculated successfully\n";
+            push(@installer::globals::logfileinfo, $infoline);

             my @i = unpack ('x[l]l4', $hashinfo);
             $oneline = $file{'File'} . "\t" .
С уважением,
Михаил Каганский

scheglakov

В autogen передаю:

./autogen.sh --with-external-tar=/cygdrive/c/sources/lo-externalsrc --with-junit=/cygdrive/c/sources/junit-4.10.jar --with-ant-home=/cygdrive/c/sources/apache-ant-1.9.5 --enable-pch --disable-ccache --with-visual-studio=2019 --with-jdk-home="C:\Program Files\Microsoft\jdk-17.0.4.101-hotspot" --with-package-format=msi --with-ucrt-dir=/cygdrive/c/cygwin64/opt/ucrt/

mikekaganski

#3
Цитата: scheglakov от 28 октября 2022, 16:01--with-jdk-home="C:\Program Files\Microsoft\jdk-17.0.4.101-hotspot"

Странно, что это вообще работает. "C:/Program Files/Microsoft/jdk-17.0.4.101-hotspot" было бы корректно (это корректный путь как для Windows, так и для cygwin) ... хотя это не может быть причиной: оно выдало бы ошибку в строке 964... да и считать хэши файлов JDK при сборке инсталлера незачем ...
С уважением,
Михаил Каганский

scheglakov

Подправил путь на --with-jdk-home= "C:/Program Files/Microsoft/jdk-17.0.4.101-hotspot"
Как и ожидалось, ничего не поменялось.

Добавил:
+            $infoline = "Info: Calculating MD% hash of file $path\n";
+            push(@installer::globals::logfileinfo, $infoline);
+            $infoline = "MD5 hash calculated successfully\n";
+            push(@installer::globals::logfileinfo, $infoline);

Пишет что все посчитано успешно...

scheglakov

Точнее он не может подсчитать папку:

Info: Calculating MD% hash of file C:\sources\libo-core\instdir\license.txt
: MD5 hash calculated successfully
: Info: Calculating MD% hash of file C:\sources\libo-core\instdir\share\extensions
:
: Moved directory from C:/sources/libo-core/workdir/installation/LibreOfficeDev/msi/install/en-US_inprogress to C:/sources/libo-core/workdir/installation/LibreOfficeDev/msi/install/en-US_witherror

mikekaganski

Цитата: scheglakov от 28 октября 2022, 16:45Пишет что все посчитано успешно...

Нет, он пишет, что успешно посчитаны первые 11 файлов. А потом:

Цитировать: Info: Calculating MD% hash of file C:\sources\libo-core\instdir\share\extensions

и никакого успеха.
Причём вообще непонятно, почему он вдруг решил считать хэш папки.
С уважением,
Михаил Каганский

mikekaganski

В общем, попробую собрать прямо с Вашими параметрами.
С уважением,
Михаил Каганский

scheglakov


scheglakov

Скорее всего все соберется...
Закомментил блок проверки хэша.
Далее он ругался что extensions не файл.
Создал пустой файл extensions.
Сборка прошла, msi создался. Даже установился. Но ничего не запускается.
Надо понять, почему он эту папку упорно считает файлом.... И думаю все хорошо будет.

mikekaganski

Для себя:

проблема в том, что https://opengrok.libreoffice.org/xref/core/setup_native/Package_packinfo.mk?r=6c487d2d добавляет пустую директорию, а installer::scriptitems::collect_directories_from_filesarray не удаляет её из filesinproductlanguageresolvedarrayref
С уважением,
Михаил Каганский

scheglakov

А как этого избежать ? ...

mikekaganski

#12
Обход - использовать --with-myspell-dicts (это подтянет репозиторий словарей, замедлит сборку и увеличит инсталлер).

Или подождать, пока я исправлю.
С уважением,
Михаил Каганский

mikekaganski

С уважением,
Михаил Каганский

scheglakov

Цитата: mikekaganski от 29 октября 2022, 09:11Обход - использовать --with-myspell-dicts (это подтянет репозиторий словарей, замедлит сборку и увеличит инсталлер).

Или подождать, пока я исправлю.

Добавил в autogen --with-myspell-dicts

В extensions они подтянулись:
ls -la /cygdrive/c/sources/libo-core/instdir/share/extensions/ | wc -l
63

На выходе та же ошибка.

Цитата: mikekaganski от 29 октября 2022, 23:54https://gerrit.libreoffice.org/c/core/+/142026

Завтра попробую Спасибо большое !