[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