Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rework the guile ecosystem #25319

Merged
merged 34 commits into from
Sep 2, 2024
Merged

Rework the guile ecosystem #25319

merged 34 commits into from
Sep 2, 2024

Conversation

graywolf
Copy link
Contributor

Description

Move guile18 to guile-1.8, guile to guile-2.2, create new port guile-3.0. Update all ports accordingly and add guile_select port.

Type(s)
  • bugfix
  • enhancement
  • security fix
Tested on

macOS 14.6
Xcode x.y / Command Line Tools x.y.z

Verification

Have you

  • followed our Commit Message Guidelines?
  • squashed and minimized your commits?
    I think there is a value in preserving individual commits. But I can squash it if you insist.
  • checked that there aren't other open pull requests for the same change?
  • referenced existing tickets on Trac with full URL in commit message?
  • checked your Portfile with port lint --nitpick?
  • tried existing tests with sudo port test?
  • tried a full install with sudo port -vst install?
  • tested basic functionality of all binary files?
  • checked that the Portfile's most important variants haven't been broken?

@macportsbot
Copy link

Notifying maintainers:
@nerdling for port lilypond.
@Schamschula for port gnutls.
@cardi for port weechat.
@mascguy for port graphviz-devel, graphviz.
@ryandesign for port graphviz-devel, graphviz, mdk.
@ra1nb0w for port mu.
@mklein-de for port drgeo1.
@markemer for port geda-gaf.
@michaelld for port swig, swig3.
@drkp for port gnucash.

@Schamschula
Copy link
Contributor

Why did you revision bump gnutls, but not gnutls-devel? Both need it. Please fix this.

@graywolf
Copy link
Contributor Author

Why did you revision bump gnutls, but not gnutls-devel? Both need it. Please fix this.

I did not notice there are two revision fields in the file. Fixed.

@markemer
Copy link
Member

These are failing with:

Failed to parse file lang/guile-3.0/Portfile: invalid command name "configure.checks.implicit_int"

@graywolf
Copy link
Contributor Author

graywolf commented Aug 12, 2024

These are failing with:

Failed to parse file lang/guile-3.0/Portfile: invalid command name "configure.checks.implicit_int"

Hm. Any idea why? I am sure I built the Portfile just fine locally. And `port lint' does not complain.

@reneeotten
Copy link
Contributor

thanks @graywolf for working on this. I suppose you looked at the relevant Trac tickets, for example https://trac.macports.org/ticket/60139 ?

There appear to be / have been issues in making sure that none of the "guile-x.y" ports install overlapping files and thus would conflict. Is all of this resolved?

I haven't looked in detail but it appears that much of the indentation in the Portfiles is messed up: indentations should be with spaces in multiples of four - that is something (admittedly cosmetic) that will need to be resolved.

But maIn question is whether all these ports can be installed side-by-side and whether dependents are verified to find/link with the correct version.

@graywolf
Copy link
Contributor Author

thanks @graywolf for working on this. I suppose you looked at the relevant Trac tickets, for example https://trac.macports.org/ticket/60139 ?

There appear to be / have been issues in making sure that none of the "guile-x.y" ports install overlapping files and thus would conflict. Is all of this resolved?

Yes.

I haven't looked in detail but it appears that much of the indentation in the Portfiles is messed up: indentations should be with spaces in multiples of four - that is something (admittedly cosmetic) that will need to be resolved.

Hm, is that something I broke? I tried to match the style of each specific Portfile I modified, but it is well possible I did not do that well in few places.

But maIn question is whether all these ports can be installed side-by-side

I currently have all 3 guile ports (guile-1.8, guile-2.2, guile-3.3) installed on my macbook. The guile_select provides a mechanism to pick a default guile to provide binaries, info and manual pages under non-versioned name.

and whether dependents are verified to find/link with the correct version.

I made sure all ports I modified build. In case guile is used in a variant, I verified that variant. There were 2 or 3 ports (I should have take notes) I did not manage to build at all, but the failures did not seem related to guile changes. So I hoped CI will have more lack for those.

Copy link
Contributor

@lemzwerg lemzwerg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very nice, thanks!

lang/guile-1.8/Portfile Outdated Show resolved Hide resolved
@barracuda156
Copy link
Contributor

@graywolf I will test this in a day or two.

Copy link
Contributor

@barracuda156 barracuda156 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some things to change in the portfile, mostly non-functional.

lang/guile-3.0/Portfile Outdated Show resolved Hide resolved
lang/guile-3.0/Portfile Outdated Show resolved Hide resolved
lang/guile-3.0/Portfile Outdated Show resolved Hide resolved
@barracuda156
Copy link
Contributor

barracuda156 commented Aug 13, 2024

These are failing with:

Failed to parse file lang/guile-3.0/Portfile: invalid command name "configure.checks.implicit_int"

Hm. Any idea why? I am sure I built the Portfile just fine locally. And `port lint' does not complain.

@graywolf I can confirm that it fails to parse for the said reason.

P. S. Or is it something added in 2.10.0? I have 2.9.99 on this machine. Let me update and try again.

@barracuda156
Copy link
Contributor

barracuda156 commented Aug 13, 2024

@graywolf guile-1.8 fails at destroot on:

ts_lang_guile-1.8/guile-1.8/work/guile-1.8.8/srfi'
Making install in doc
make[1]: Entering directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_guile-1.8/guile-1.8/work/guile-1.8.8/doc'
Making install in ref
make[2]: Entering directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_guile-1.8/guile-1.8/work/guile-1.8.8/doc/ref'
restore=: && backupdir=".am$$" && \
	am__cwd=`pwd` && CDPATH="${ZSH_VERSION+.}:" && cd . && \
	rm -rf $backupdir && mkdir $backupdir && \
	if (/bin/sh /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_guile-1.8/guile-1.8/work/guile-1.8.8/build-aux/missing --run makeinfo --version) >/dev/null 2>&1; then \
	  for f in guile.info guile.info-[0-9] guile.info-[0-9][0-9] guile.i[0-9] guile.i[0-9][0-9]; do \
	    if test -f $f; then mv $f $backupdir; restore=mv; else :; fi; \
	  done; \
	else :; fi && \
	cd "$am__cwd"; \
	if /bin/sh /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_guile-1.8/guile-1.8/work/guile-1.8.8/build-aux/missing --run makeinfo   -I . \
	 -o guile.info guile.texi; \
	then \
	  rc=0; \
	  CDPATH="${ZSH_VERSION+.}:" && cd .; \
	else \
	  rc=$?; \
	  CDPATH="${ZSH_VERSION+.}:" && cd . && \
	  $restore $backupdir/* `echo "./guile.info" | sed 's|[^/]*$||'`; \
	fi; \
	rm -rf $backupdir; exit $rc
api-compound.texi:908: encoding error at byte 0xa0
gh.texi:1000: must be after `@deftypefun' to use `@deftypefunx'
fdl.texi:411: raising the section level of @appendixsubsec which is too low
make[2]: *** [guile.info] Error 1
make[2]: Leaving directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_guile-1.8/guile-1.8/work/guile-1.8.8/doc/ref'
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_guile-1.8/guile-1.8/work/guile-1.8.8/doc'
make: *** [install-recursive] Error 1
make: Leaving directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_guile-1.8/guile-1.8/work/guile-1.8.8'
Command failed:  cd "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_guile-1.8/guile-1.8/work/guile-1.8.8" && /usr/bin/make -w install pkgconfigdir=/opt/local/lib/pkgconfig DESTDIR=/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_guile-1.8/guile-1.8/work/destroot 
Exit code: 2
Error: Failed to destroot guile-1.8: command execution failed

UPD. If this is not something easy to fix, can we just move docs to a non-default variant? Or disable them for old systems/powerpc. Perhaps not worth spending time to fix this, but it is desirable to have the port building. Local docs are not an essential thing.

@graywolf
Copy link
Contributor Author

These are failing with:

Failed to parse file lang/guile-3.0/Portfile: invalid command name "configure.checks.implicit_int"

Hm. Any idea why? I am sure I built the Portfile just fine locally. And `port lint' does not complain.

@graywolf I can confirm that it fails to parse for the said reason.

P. S. Or is it something added in 2.10.0? I have 2.9.99 on this machine. Let me update and try again.

I just installed 2.9.3 from source, and portindex processed the Portfile fine. So I have to admit I have no idea what is wrong. I can change it, is there any other recommended way to suppress

Warning: Configuration logfiles contain indications of -Wimplicit-int; check that features were not accidentally disabled:
  found in guile-3.0.10/config.log

warnings from configure phase?

@markemer
Copy link
Member

markemer commented Aug 13, 2024

These are failing with:

Failed to parse file lang/guile-3.0/Portfile: invalid command name "configure.checks.implicit_int"

Hm. Any idea why? I am sure I built the Portfile just fine locally. And `port lint' does not complain.

@graywolf I can confirm that it fails to parse for the said reason.
P. S. Or is it something added in 2.10.0? I have 2.9.99 on this machine. Let me update and try again.

I just installed 2.9.3 from source, and portindex processed the Portfile fine. So I have to admit I have no idea what is wrong. I can change it, is there any other recommended way to suppress

Warning: Configuration logfiles contain indications of -Wimplicit-int; check that features were not accidentally disabled:
  found in guile-3.0.10/config.log

warnings from configure phase?

Yeah, 2.10.0 was my theory, and now it's shot. It seems like it should be valid.

Edit: Yeah, it got added in 2.10:
macports/macports-base@cfacb20

Probably should re-enable it and we can either wave off the failure, or 2.10 will be hitting the CI shortly.

@barracuda156
Copy link
Contributor

This is bit concerning, thanks for taking the time to report it upstream. However be prepared for possibly slightly frustrating experience, the project is bit under-staffed.

@graywolf Do you have any guess what may be causing a failure? Could it potentially be related to any configure arguments that are passed?

For reporting, I get it correctly, that the only way is to subscribe to guile mailing list? No proper bugzilla and no GitHub issues which get responded to?
Mailing list is a bit of a pain, but if that is the only way, I will do it. PowerPC should be fixed eventually.

@barracuda156
Copy link
Contributor

Mostly for old unsupported x86_64 machines, if it doesn't break on normal machines, no harm in adding it.

Since we only need legacysupport for dprintf (and possibly getline), it can be restricted to 10.6 (since 10.7 has both natively).

PortGroup legacysupport 1.1

legacysupport.newest_darwin_requires_legacy 10

(This is not arch-specific.)

Copy link
Contributor

@reneeotten reneeotten left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@graywolf formatting issues in the guile* Portfiles has not been fixed yet. If you check the CI port lint (or run that locally as is part of the PR checklist), will warn about that (i.e., you're using tabs instead of spaces).

@graywolf
Copy link
Contributor Author

graywolf commented Aug 21, 2024 via email

@pmetzger
Copy link
Member

Even if the others already had tabs instead of spaces, this would be a good opportunity to fix it. You can (and indeed should!) do it in a separate commit of course.

@graywolf
Copy link
Contributor Author

graywolf commented Aug 21, 2024 via email

@graywolf
Copy link
Contributor Author

graywolf commented Aug 21, 2024 via email

@barracuda156
Copy link
Contributor

I do not think you need to subscribe. While mailing list is used for bug reporting[0], any mail that is received on the mailing list is converted into a bug report in debbugs (for example like this[1]). You will get the bug number back by email response. People usually CC when reacting on the bug, so subscribing is not necessary (and not even common as far as I know).

Sounds good. I will do that once back to the PowerMac (so that I can attach the whole log), perhaps tomorrow.

@lemzwerg
Copy link
Contributor

Regarding the multi-hour bootstrapping process of Guile: Maybe the tiny patch in

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=69314

helps (if it does please reply to this bug report so that there is more incentive to the Guile people to react).

@barracuda156
Copy link
Contributor

Regarding the multi-hour bootstrapping process of Guile: Maybe the tiny patch in

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=69314

helps (if it does please reply to this bug report so that there is more incentive to the Guile people to react).

@lemzwerg The problem is that their prebuilt binaries are broken and using them breaks the build (already at the onset of stage0). So we have to avoid using them. (Well, perhaps I might be able to use my earlier binaries, which worked correctly.)

@graywolf
Copy link
Contributor Author

Even if the others already had tabs instead of spaces, this would be a good opportunity to fix it. You can (and indeed should!) do it in a separate commit of course.

I have tried to resolve lint warnings. In few hours we will see if that works. One that I know will remain is:

port test libctl: Warning: libctl is configured to build for the architecture(s) 'x86_64', but did not install any Mach-O files.

I have no idea what to do regarding that. Any suggestions?

@graywolf graywolf force-pushed the guile branch 2 times, most recently from 542ae3b to cc19f33 Compare August 25, 2024 22:15
@reneeotten
Copy link
Contributor

@graywolf where are we on this - the PR and comments have become a bit unwieldy and thus harder to keep up with.

Warnings like:

port test libctl: Warning: libctl is configured to build for the architecture(s) 'x86_64', but did not install any Mach-O files.

could occur when ports don't compile stuff and/or not install architecture-dependent files; that doesn't seem to apply to libtcl so I am not sure. You can ignore these for the purpose of this PR.

@reneeotten
Copy link
Contributor

are there any other substantial concerns here? If not, let's try and get this merged.

@graywolf
Copy link
Contributor Author

graywolf commented Aug 28, 2024 via email

@barracuda156
Copy link
Contributor

are there any other substantial concerns here? If not, let's try and get this merged.

Nothing from my side: powerpc is broken at the moment with 3.0.10 (3.0.9 worked fine), but no time right now to fix it (and no real urgency with guile). I will return to this in a while in a separate PR.

@reneeotten
Copy link
Contributor

reneeotten commented Aug 29, 2024

@graywolf none of the commits to resolve the lint issues actually do so in the preferred way. The Portfile should be aligned the same throughout if possible (typically one would do so at 20 spaces, so starting at "21" "value" of the fields). Right now it's all over the place... the diff should be a small as possible just with removal of the tabs in favor of spaces.

I can take care of these smaller details if you prefer before merging.

@graywolf
Copy link
Contributor Author

graywolf commented Aug 29, 2024 via email

@barracuda156
Copy link
Contributor

@graywolf I got in touch with Guile devs. As of now, Guile 3.0.10 appears to be broken on 32-bit platforms, including x86.

See: https://issues.guix.gnu.org/72215
Also builds status on Debian: https://buildd.debian.org/guile-3.0

@graywolf
Copy link
Contributor Author

graywolf commented Sep 1, 2024

@graywolf none of the commits to resolve the lint issues actually do so in the preferred way. The Portfile should be aligned the same throughout if possible (typically one would do so at 20 spaces, so starting at "21" "value" of the fields). Right now it's all over the place... the diff should be a small as possible just with removal of the tabs in favor of spaces.

I amended the three last commits, hopefully they are to your satisfaction now.

I can take care of these smaller details if you prefer before merging.

I would have prefer it, but is seems edits to the comments are not sent via the email, so I have read your offer too late (now). :)

@reneeotten
Copy link
Contributor

thanks @graywolf I'll merge this now. We can keep an eye on the buildbots and if anything fails to build take a look at fixing that. Thank you for all the work!

@reneeotten reneeotten merged commit 0bf6cff into macports:master Sep 2, 2024
0 of 3 checks passed
@graywolf graywolf deleted the guile branch September 2, 2024 21:32
@graywolf
Copy link
Contributor Author

graywolf commented Sep 2, 2024

Thank you cooperation and for merging it :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

Successfully merging this pull request may close these issues.