[Cc'ing the gnucash maintainer. As a summary, the downgrade of the guile-3.0 packages to upstream's 3.0.9 with 3.0.10+really3.0.9-1 prevents gnucash from using the compiled files, with consequences: lots of warnings and slowness.]
On 2024-09-08 16:26:57 -0500, Rob Browning wrote: > Vincent Lefevre <vinc...@vinc17.net> writes: > > > The current gnucash version is > > > > gnucash (1:5.8-1) unstable; urgency=medium > > > > * New upstream release. > > + fixed FTBFS in "gtest-gnc-int128.cpp" (Closes: #1077415). > > > > -- Dmitry Smirnov <only...@debian.org> Thu, 01 Aug 2024 19:40:30 +1000 > > > > so guile-3.0 3.0.10 was in unstable at that time. > > Ahh, OK, then I suspect this may be a gnucash package issue, i.e. needs > a rebuild/upload after the downgrade (if it's including compiled files). I can see in libguile/loader.c: uint16_t major = dyn[i].d_un.d_val >> 16; uint16_t minor = dyn[i].d_un.d_val & 0xffff; switch (major) { case 0x0300: bytecode_kind = BYTECODE_KIND_GUILE_3_0; if (minor < SCM_OBJCODE_MINIMUM_MINOR_VERSION) return "incompatible bytecode version"; if (minor > SCM_OBJCODE_MINOR_VERSION) return "incompatible bytecode version"; break; default: return "incompatible bytecode kind"; } break; I suppose that the compatiblity of gnucash with the major version is ensured by the dependency on guile-3.0-libs. There can still be issues if * gnucash is upgraded by the user while guile-3.0-libs has not been upgraded yet (e.g. due to a major bug or a dependency that blocks the guile-3.0-libs upgrade); * if SCM_OBJCODE_MINIMUM_MINOR_VERSION is increased, and gnucash is not upgraded at the same time as guile-3.0-libs. So, to ensure that everything is fine in the future, shouldn't gnucash depend on the exact guile-3.0-libs version against which it has been built? Alternatively, if SCM_OBJCODE_MINOR_VERSION doesn't change often, shouldn't guile-3.0-libs provide virtual packages that correspond to the supported bytecode versions (so that packages that distribute compiled files could depend on the one that corresponds to the build)? Thus this dependency would ensure that the above conditions on minor are satisfied, without being too strict. -- Vincent Lefèvre <vinc...@vinc17.net> - Web: <https://www.vinc17.net/> 100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/> Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)