[GNC-dev] Windows Build VM
Manfred Usselmann
manfred at usselmann.de
Sun Nov 12 21:13:25 EST 2023
Am 2023-11-12 05:55, schrieb john:
>> On Nov 11, 2023, at 17:47, Manfred Usselmann <manfred at usselmann.de>
>> wrote:
>>
>> Am 2023-11-11 18:46, schrieb john:
>>>> On Nov 11, 2023, at 04:18, Manfred Usselmann <manfred at usselmann.de>
>>>> wrote:
>>>> # Next issue:
>>>> #
>>>> -------------------------------------------------------------------------------
>>>> *** Checking out gnucash-git *** [12/14]
>>>> [...]
>>>> CMake Error at CMakeLists.txt:345 (message):
>>>> Neither guile 3.0, guile 2.2, nor guile 2.0 were found GnuCash can't
>>>> run
>>>> without one of them. Ensure that one is installed and can be found
>>>> with
>>>> pkg-config.
>>>> -- Configuring incomplete, errors occurred!
>>>> *** Error during phase configure of gnucash-git: ########## Error
>>>> running cmake
>>>> -DCMAKE_INSTALL_PREFIX=/C/users/mu/Entwicklung/GnuCash/gcdev64/gnucash/stable/inst
>>>> -DCMAKE_INSTALL_LIBDIR=lib -G Ninja -DCMAKE_PREFIX_PATH=$MSYS2ROOT
>>>> -DPERL_EXECUTABLE=/usr/bin/perl -DGNC_DBD_DIR=$PREFIX/lib/dbd
>>>> -DGTEST_ROOT=$SRCROOT/googletest/ -DCMAKE_BUILD_TYPE=Debug
>>>> /C/users/mu/Entwicklung/GnuCash/gcdev64/gnucash/stable/src/gnucash-git
>>>> *** [12/14]
>>>> #
>>>> -------------------------------------------------------------------------------
>>>> Not sure what this one is. I believe there was already a long
>>>> running build of guile2.
>>>> *** Checking out guile2 *** [10/14]
>>>> *** Skipping guile2 (package and dependencies not updated) ***
>>>> [10/14]
>>>> Any hint for me?
>>> You probably need at least
>>> mingw-w64-i686-webkitgtk3-2.4.11-999.5-any. WebKit is a long-running
>>> sore point. MSYS2 periodically updates one of the webkit dependencies
>>> and I have to build another one, a process that can take several
>>> days. Another wrinkle is that Derek's windows VM and my windows VM
>>> sometimes diverge. Getting them back is another manual process that I
>>> have to make time to do carefully so as not to break the nightly
>>> builds; keeping those working is the top priority for
>>> gnucash-on-windows.
>>
>> Completely understandable.
>>
>>> With a new installation you're likely out of sync with both of those
>>> reference MSYS2 installations. Having a mismatch will cause link
>>> errors with libgnc-html.dll.
>>
>> We'll see...
>>
>>
>>> For guile, make sure that $PREFIX/lib/pkgconfig/guile-2.2.pc exists;
>>> if it does make sure that PKG_CONFIG_PATH contains
>>> $PREFIX/lib/pkgconfig.
>>
>> It does.
>>
>> $ pkg-config --list-all
>> aqbanking AqBanking - A library for online
>> banking functions and financial data import/export
>> atomic_ops The atomic_ops library - Atomic memory
>> update operations portable implementation
>> bdw-gc Boehm-Demers-Weiser Conservative
>> Garbage Collector - A garbage collector for C and C++
>> guile-2.2 GNU Guile - GNU's Ubiquitous
>> Intelligent Language for Extension
>> [...]0
>>
>> But for cmake / pkg_check_modules only the packages from
>> gcdev64/msys2/mingw32/lib/pkgconfig are visible.
>>
>> Strange...
>
> Dunno if it's strange. jhbuildrc should add $PREFIX/lib/pkgconfig/ to
> PKG_CONFIG_PATH. Maybe that's gotten messed up?
>
PKG_CONFIG_PATH eventually contains 7 path elements.
4)
/c/Users/mu/Entwicklung/GnuCash/gcdev64/gnucash/stable/inst/lib/pkgconfig
4)
/c/Users/mu/Entwicklung/GnuCash/gcdev64/gnucash/stable/inst/share/pkgconfig
1) /mingw64/lib/pkgconfig
1) /mingw64/share/pkgconfig
2)
/c/Users/mu/Entwicklung/GnuCash/gcdev64/gnucash/stable/inst/lib/pkgconfig
3) /c/Users/mu/Entwicklung/GnuCash/gcdev64/msys2/mingw32/lib/pkgconfig
4)
/c/Users/mu/Entwicklung/GnuCash/gcdev64/gnucash/stable/inst/lib/pkgconfig
1) Set by msys2 in
C:\Users\mu\Entwicklung\GnuCash\gcdev64\msys2\etc\profile (bash.bashrc:
source /etc/profile)
MINGW_MOUNT_POINT="${MINGW_PREFIX}"
PKG_CONFIG_PATH="${MINGW_MOUNT_POINT}/lib/pkgconfig:${MINGW_MOUNT_POINT}/share/pkgconfig"
2) I added it to
C:\Users\mu\Entwicklung\GnuCash\gcdev64\msys2\home\Manfred\.bashrc
export
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/c/Users/mu/Entwicklung/GnuCash/gcdev64/gnucash/stable/inst/lib/pkgconfig
3) Set by jhbuildrc
_mingw_base = os.path.join(_basedir, 'msys2', _arch)
_mingw_libs = os.path.join(_mingw_base, 'lib')
add_to_path_var('PKG_CONFIG_PATH', os.path.join(_mingw_libs,
'pkgconfig'))
4) After jhbuildrc, but I didn't find where exactly. But makes 2)
superfluous.
-------------------------------------------------------------------------------------------
For testing purposes I extended CMakeLists.txt a little bit around the
Guile check to see what is found and what not:
-------------------------------------------------------------------------------------------
# guile library and include dir
message(STATUS "PKG_CONFIG_PATH=$ENV{PKG_CONFIG_PATH}")
pkg_check_modules (AQB_DUMMY_TEST aqbanking)
pkg_check_modules (GWGUI_DUMMY_TEST gwengui-gtk3)
pkg_check_modules (GOBJECT_DUMMY_TEST gobject-2.0)
pkg_check_modules (GMP_DUMMY_TEST gmp)
pkg_check_modules (GUILE3 guile-3.0)
pkg_check_modules (GUILE22 guile-2.2)
pkg_check_modules (GUILE2 guile-2.0>=2.0.9)
execute_process(
COMMAND pkg-config --path guile-3.0
OUTPUT_VARIABLE GUILE_PKG_RESULT
OUTPUT_STRIP_TRAILING_WHITESPACE
)
execute_process(
COMMAND pkg-config --exists guile-3.0
RESULT_VARIABLE GUILE_EXISTS_RESULT
)
if (${GUILE_EXISTS_RESULT} EQUAL 0)
execute_process(
COMMAND pkg-config --validate guile-3.0
RESULT_VARIABLE GUILE_VALID_RESULT
)
else()
set(GUILE_VALID_RESULT 1)
endif()
message(STATUS "guile-3.0 exists: ${GUILE_EXISTS_RESULT}, path:
${GUILE_PKG_RESULT}, valid: ${GUILE_VALID_RESULT}")
execute_process(
COMMAND pkg-config --path guile-2.2
OUTPUT_VARIABLE GUILE_PKG_RESULT
OUTPUT_STRIP_TRAILING_WHITESPACE
)
execute_process(
COMMAND pkg-config --exists guile-2.2
RESULT_VARIABLE GUILE_EXISTS_RESULT
)
if (${GUILE_EXISTS_RESULT} EQUAL 0)
execute_process(
COMMAND pkg-config --validate guile-2.2
RESULT_VARIABLE GUILE_VALID_RESULT
)
else()
set(GUILE_VALID_RESULT 1)
endif()
message(STATUS "guile-2.2 exists: ${GUILE_EXISTS_RESULT}, path:
${GUILE_PKG_RESULT}, valid: ${GUILE_VALID_RESULT}")
execute_process(
COMMAND pkg-config --path guile-2.0
OUTPUT_VARIABLE GUILE_PKG_RESULT
OUTPUT_STRIP_TRAILING_WHITESPACE
)
execute_process(
COMMAND pkg-config --exists guile-2.0
RESULT_VARIABLE GUILE_EXISTS_RESULT
)
if (${GUILE_EXISTS_RESULT} EQUAL 0)
execute_process(
COMMAND pkg-config --validate guile-2.0
RESULT_VARIABLE GUILE_VALID_RESULT
)
else()
set(GUILE_VALID_RESULT 1)
endif()
message(STATUS "guile-2.0 exists: ${GUILE_EXISTS_RESULT}, path:
${GUILE_PKG_RESULT}, valid: ${GUILE_VALID_RESULT}")
execute_process(
COMMAND pkg-config --path gmp
OUTPUT_VARIABLE GUILE_PKG_RESULT
OUTPUT_STRIP_TRAILING_WHITESPACE
)
execute_process(
COMMAND pkg-config --exists gmp
RESULT_VARIABLE GUILE_EXISTS_RESULT
)
if (${GUILE_EXISTS_RESULT} EQUAL 0)
execute_process(
COMMAND pkg-config --validate gmp
RESULT_VARIABLE GUILE_VALID_RESULT
)
else()
set(GUILE_VALID_RESULT 1)
endif()
message(STATUS "gmp exists: ${GUILE_EXISTS_RESULT}, path:
${GUILE_PKG_RESULT}, valid: ${GUILE_VALID_RESULT}")
-------------------------------------------------------------------------------------------
Output:
-------------------------------------------------------------------------------------------
--
PKG_CONFIG_PATH=C:\Users\mu\Entwicklung\GnuCash\gcdev64\gnucash\stable\inst\lib\pkgconfig;C:\Users\mu\Entwicklung\GnuCash\gcdev64\gnucash\stable\inst\share\pkgconfig;C:\Users\mu\Entwicklung\GnuCash\gcdev64\msys2\mingw64\lib\pkgconfig;C:\Users\mu\Entwicklung\GnuCash\gcdev64\msys2\mingw64\share\pkgconfig;C:\Users\mu\Entwicklung\GnuCash\gcdev64\msys2\mingw32\lib\pkgconfig
-- Checking for module 'aqbanking'
-- Package 'aqbanking', required by 'virtual:world', not found
-- Checking for module 'gwengui-gtk3'
-- Package 'gwengui-gtk3', required by 'virtual:world', not found
-- Checking for module 'gobject-2.0'
-- Found gobject-2.0, version 2.78.1
-- Checking for module 'gmp'
-- Found gmp, version 6.3.0
-- Checking for module 'guile-3.0'
-- Package 'guile-3.0', required by 'virtual:world', not found
-- Checking for module 'guile-2.2'
-- Package 'guile-2.2', required by 'virtual:world', not found
-- Checking for module 'guile-2.0>=2.0.9'
-- Package 'guile-2.0', required by 'virtual:world', not found
-- guile-3.0 exists: 1, path: , valid: 1
-- guile-2.2 exists: 0, path:
C:\Users\mu\Entwicklung\GnuCash\gcdev64\gnucash\stable\inst\lib\pkgconfig\guile-2.2.pc,
valid: 0
-- guile-2.0 exists: 1, path: , valid: 1
-- gmp exists: 0, path:
C:\Users\mu\Entwicklung\GnuCash\gcdev64\msys2\mingw32\lib\pkgconfig\gmp.pc,
valid: 0
-------------------------------------------------------------------------------------------
Result:
-------------------------------------------------------------------------------------------
==> Packages with .pc files in
/c/Users/mu/Entwicklung/GnuCash/gcdev64/msys2/mingw32/lib/pkgconfig are
found by pkg_check_modules(), those in
/c/Users/mu/Entwicklung/GnuCash/gcdev64/gnucash/stable/inst/lib/pkgconfig
are not.
==> Although pkg-config seems to be fine with both of them.
???
Regards,
Manfred
More information about the gnucash-devel
mailing list