Opened 4 years ago

Last modified 6 months ago

#60139 new update

Guile 3 is out

Reported by: casouri (Yuan Fu) Owned by:
Priority: Normal Milestone:
Component: ports Version: 2.6.2
Keywords: Cc: dsedivec, szhorvat (Szabolcs Horvát), dglb
Port: guile

Description

Could someone update guile to version 3.0.0?

Change History (9)

comment:1 Changed 4 years ago by mf2k (Frank Schima)

Can you submit a GitHub pull request to update it and increase the revision of all dependents? Since this port has no maintainer and has many dependents, it is not likely to get updated until an interested and knowledgable person does this. All of the dependents need to be checked to make sure they don't break.

$ port echo depends:guile
autogen                         
denemo                          
drgeo1                          
g-wrap                          
geda-gaf                        
gnotime                         
gnucash                         
gnucash-devel                   
harminv                         
libctl                          
lilypond                        
lilypond-devel                  
mdk                             
slib-guile                      
swig-guile                      
swig3-guile                     
TeXmacs                         
libmatheval                     

comment:2 Changed 4 years ago by dsedivec

Cc: dsedivec added

comment:3 Changed 3 years ago by szhorvat (Szabolcs Horvát)

@mf2k, what would be the procedure here? Perhaps rename the current port to guile22 and let guile be version 3.0? Note that there is already a guile18 port and it should be possible to have several versions installed concurrently.

comment:4 Changed 3 years ago by szhorvat (Szabolcs Horvát)

Cc: szhorvat added

comment:5 Changed 3 years ago by szhorvat (Szabolcs Horvát)

For reference, these are the direct dependent of the guile port (not including dependents of guile18):

$ port echo 'depends:(^|\W)guile(\W|$)'
autogen
denemo
g-wrap
geda-gaf
gnotime
gnucash
gnucash-devel
harminv
libctl
mdk
slib-guile
swig-guile
swig3-guile

Thanks to @neverpanic for the search expression!

Last edited 3 years ago by szhorvat (Szabolcs Horvát) (previous) (diff)

comment:6 Changed 3 years ago by szhorvat (Szabolcs Horvát)

I gave up on this, but I'll add a few notes in the hope that they'll save others some time.

Several of the current ports do not work with guile 3.0. In many cases, the first problem is that their build system looks specifically for version 2.2. Therefore, it would make sense to provide three versions concurrently: guile18 (existing) guile22 (current version should be renamed) and guile 3.0. Guile supports parallel installations: https://www.gnu.org/software/guile/manual/html_node/Parallel-Installations.html

The --program-suffix=22 configure script option can be used to add 22 to the end of all executable names. It will rename most, but not all things that may conflict. The guile18 port does not use this mechanism, I do not know why. Perhaps guile's configure script didn't support it at that time. But it can be used for version 2.2. Note that not everything will be renamed accordingly. Notably, the texinfo documentation pages and guile.m4 need to be renamed manually or deleted (see how guile18 does this).

After this is done, not everything will be working as it should when version 3.0 and 2.2 are installed concurrently. Some dependent ports will detect the guile-2.2 _libraries_, but will pick up the guile (i.e. version 3.0) executable instead of guile22 and throw an error due to the version mismatch. This is possibly because of the installed guile.m4 file, which provides information to the configure script. I don't have enough knowledge about autoconf to be able to patch this, but I note that guile18 patches it extensively.

guile does install version-specific pkgconfig files (guile-2.2.pc and guile-3.0.pc) which contain the correct executable names. Those packages that use pkgconfig to detect guile should work fine. Those that don't can perhaps be patched to use it.

Some dependents are old an unmaintained, e.g. g-wrap had its last release in 2015. I wouldn't hold my breath to see these updated for guile 3.0 compatibility. The build systems of these likely will also need patching do actually pick up version 2.2. g-wrap specifically doesn't even have dependents in MacPorts so it may be a candidate for removal.

Most dependents of guile in MacPorts are nomaintainer, so if you take up this task, you'll be on your own.

Last edited 3 years ago by szhorvat (Szabolcs Horvát) (previous) (diff)

comment:7 in reply to:  6 Changed 2 years ago by barracuda156

Replying to szhorvat:

I gave up on this, but I'll add a few notes in the hope that they'll save others some time.

Several of the current ports do not work with guile 3.0. In many cases, the first problem is that their build system looks specifically for version 2.2.

This problem can be easily solved by patching configure and adding 3.0 into corresponding test.

comment:8 in reply to:  6 Changed 18 months ago by barracuda156

Replying to szhorvat:

I gave up on this, but I'll add a few notes in the hope that they'll save others some time.

Should be soon fixed: https://github.com/macports/macports-ports/pull/14600

comment:9 Changed 6 months ago by dglb

Cc: dglb added
Note: See TracTickets for help on using tickets.