Re: Unable to access macports-infrastructure.git

2024-03-12 Thread Ryan Schmidt


> On Mar 12, 2024, at 19:46, Dave Allured wrote:
> 
> 
> I am getting an unusual builder error that is blocking my recent port update 
> on all of the builders.  Go to console view on build.macports.org, find port 
> `gjs-devel`, and look at the stdio logs below the commit message.
> 
> `fatal: unable to access 
> 'https://github.com/macports/macports-infrastructure.git/': Server aborted 
> the SSL handshake`
> 
> Now I know they put Dave detectors in all the traffic lights.  I thought 
> maybe that was the problem here, but Ryan has one too.  Please let me know 
> how to get my build started, and whether I owe money or something.  Thank you.

The build server has been under heavy load. Not completely sure why yet. It 
took me minutes to even pull up a buildbot web site. It's possible builds are 
failing as a result and will have to be retried once things calm down. I will 
try to make a change to reduce CPU use shortly. 

Unable to access macports-infrastructure.git

2024-03-12 Thread Dave Allured - NOAA Affiliate via macports-dev
I am getting an unusual builder error that is blocking my recent port
update on all of the builders.  Go to console view on build.macports.org,
find port `gjs-devel`, and look at the stdio logs below the commit message.

`fatal: unable to access '
https://github.com/macports/macports-infrastructure.git/': Server aborted
the SSL handshake`

Now I know they put Dave detectors in all the traffic lights.  I thought
maybe that was the problem here, but Ryan has one too.  Please let me know
how to get my build started, and whether I owe money or something.  Thank
you.


Re: inserting -stdlib=libstdc++ into cxxflags

2024-03-12 Thread Sergio Had


> On Mar 13, 2024, at 4:07 AM, René J.V. Bertin  wrote:
> 
>> Building against libstdc++ is broken for Intel
> 
> Not from what I can tell; I test built an OLD libxmlxx copy against libstdc++ 
> from GCC13 and that works.

What I rather meant is that Macports cannot handle that properly, since it is 
kinda hardcoded to use clang and libc++ on anything besides powerpc.
I think we have a few older ports broken now, which required libstdc++.

> Yes, gcc 13 isn't yet compatible with libc++, but the current -stdlib=libc++ 
> implementation also fails (for me) on Qt5 (5.9) projects because libc++ has 
> its own version of (IIRC) cstddef and raises an error if the one from GCC has 
> already been included. To avoid that the c++/v1 directory must be before the 
> GCC C header dirs in the search list, and not after as GCC currently does it. 
> I've signalled that, and you can achieve the same thing with the traditional 
> recipe to use libc++ with GCC: `-nostdinc++ -isystem/path/to/c++/v1`.

AFAIK nobody tested GCC with libc++, neither in upstream nor in Macports, so it 
is not overly surprising that it does not work :) 

It is worth opening a ticket on GCC Bugzilla, if there is none yet for this 
issue.

> FWIW, I patched GCC 6 and 7 back in the day to add a `-stdlib=` argument. I 
> don't really know why I didn't use it, probably because the concurrent clang 
> versions were still faster. That's no longer the case; GCC 12 is about as 
> slow as clang 12 (but a lot more modern, with full, non-buggy C++20 support, 
> and apparently less resource hungry).

On a side note, for older Intel systems it is not even clear if libc++ is a 
better choice.

Re: inserting -stdlib=libstdc++ into cxxflags

2024-03-12 Thread René J . V . Bertin
On Wednesday March 13 2024 03:44:17 Sergio Had wrote:
>Which OS are we talking about?

10.9.5 but that what matters here is that it's a libc++-based OS version.

>Building against libstdc++ is broken for Intel

Not from what I can tell; I test built an OLD libxmlxx copy against libstdc++ 
from GCC13 and that works. Of course it's easy to break the application if you 
end up mixing libstdc++ with libc++. 

In fact, if libstdc++ were broken GCC itself wouldn't work: it can only be 
built against that C++ runtime. (You can imagine how complex my bootstrap flags 
are to build a gcc that uses libc++ by default ;) )

Yes, gcc 13 isn't yet compatible with libc++, but the current -stdlib=libc++ 
implementation also fails (for me) on Qt5 (5.9) projects because libc++ has its 
own version of (IIRC) cstddef and raises an error if the one from GCC has 
already been included. To avoid that the c++/v1 directory must be before the 
GCC C header dirs in the search list, and not after as GCC currently does it. 
I've signalled that, and you can achieve the same thing with the traditional 
recipe to use libc++ with GCC: `-nostdinc++ -isystem/path/to/c++/v1`.

FWIW, I patched GCC 6 and 7 back in the day to add a `-stdlib=` argument. I 
don't really know why I didn't use it, probably because the concurrent clang 
versions were still faster. That's no longer the case; GCC 12 is about as slow 
as clang 12 (but a lot more modern, with full, non-buggy C++20 support, and 
apparently less resource hungry).

I've caved and activated gcc12+stdlib_flag (i.e. the stock MP build) which will 
do what I want ATM without need for additional flags. I'm now rebuilding lld-17 
with its minimal libLLVM & family. That build failed with -stdlib=libc++ (so 
gcc12 isn't perfectly compatible with any of our libc++ implementations I 
tested either) but the initial estimate is that the build would have completed 
in about 2/3 of the time as it would take with clang 16. Lld looks to depend on 
libc++ only through port:icu via libxml2 which is pure C afaik so the C++ 
runtimes should remain separated in this case. We'll see... anyway the only 
reason I'd keep the build is if it's a lot faster or a lot more compact than 
the one with clang 16. I mostly just want to compare build times on a hefty 
project.

R.



Re: inserting -stdlib=libstdc++ into cxxflags

2024-03-12 Thread Sergio Had
Which OS are we talking about?

Building against libstdc++ is broken for Intel and arm64, I believe, though it 
should be fixable. But the problem is not passing the flag, but broken Apple 
headers, it seems.
I managed to build some ports like CMake and a few others against libstdc++ on 
Sonoma arm64, but kinda gave up, since too much stuff is broken, and there is 
no immediate advantage in the switch.
I have this in macports.conf: `cxx_stdlib macports-libstdc++` (on Sonoma). 
However you may need to pass both cxxflags and ldflags manually.

On PowerPC it is the reverse: building against libstdc++ is the default and 
works fine, building against libc++ is very experimental and will likely need 
fixups. Also, it requires enabling stdlib_flag variant for gcc and making it 
use libcxx-powerpc port instead of clangs.

P. S. There is a bug in gcc13 which prevents it working correctly with libc++ 
headers (regardless of the arch, I think), should be fixed in upstream but 
perhaps not in Macports, but gcc12 should be fine.



> On Mar 13, 2024, at 3:32 AM, René J.V. Bertin  wrote:
> 
> Hi,
> 
> I've been tinkering a bit with a personal GCC12 build patched to use libc++ 
> by default, and now find myself unable to build against libstdc++.
> 
> `configure.cxxflags-append -stdlib=libstdc++` appears to be filtered out 
> somewhere in the "base" bowels, and `configure.cxx_stdlib libstdc++` appears 
> not to have any effect either. I'm not seeing any warnings in the logfile, 
> which is surprising (and rather bad practise IMHO).
> 
> What am I missing here, and what backdoor(s) could I use? I notice that 
> CXXFLAGS (aka Env(CXXFLAGS)) isn't yet set in `pre-configure`; I haven't yet 
> checked if "base" preserves its settings when initialising it (have been 
> assuming it won't). With autoconf-based projects one can set `configure.cxx 
> ${configure.cxx} -stdlib=libstdc++` but that doesn't fly for cmake-based 
> projects...
> 
> Thanks,
> R.



inserting -stdlib=libstdc++ into cxxflags

2024-03-12 Thread René J . V . Bertin
Hi,

I've been tinkering a bit with a personal GCC12 build patched to use libc++ by 
default, and now find myself unable to build against libstdc++.

`configure.cxxflags-append -stdlib=libstdc++` appears to be filtered out 
somewhere in the "base" bowels, and `configure.cxx_stdlib libstdc++` appears 
not to have any effect either. I'm not seeing any warnings in the logfile, 
which is surprising (and rather bad practise IMHO).

What am I missing here, and what backdoor(s) could I use? I notice that 
CXXFLAGS (aka Env(CXXFLAGS)) isn't yet set in `pre-configure`; I haven't yet 
checked if "base" preserves its settings when initialising it (have been 
assuming it won't). With autoconf-based projects one can set `configure.cxx 
${configure.cxx} -stdlib=libstdc++` but that doesn't fly for cmake-based 
projects...

Thanks,
R.


Re: jupytext port build cannot find jlpm

2024-03-12 Thread Ryan Schmidt
On Mar 12, 2024, at 10:00, Jonathan Stickel wrote:
> 
> command not found: jlpm
> 
> Recommendations for how to resolve this issue?

One solution is to figure out where this program is being called in the source 
code, then patch it to use the program name as it appears in MacPorts (e.g. in 
this case to add the python version to the end).


> Is there a way to set an alias during the build phase?
> 
> alias jlpm="jlpm-${python.branch}"

I can't recall seeing a port that sets a shell alias so that may not be 
possible.

Some ports do create a directory in workpath (e.g. ${workpath}/bin), then 
create symlinks in there having the desired names, and add ${workpath}/bin to 
PATH. But that's probably not needed in this case since you already have a 
directory that contains the files with the desired names (below).


> Or add 
> "${prefix}/Library/Frameworks/Python.framework/Versions/${python.branch}/bin" 
> to the path? I haven't been successful implementing either approach.

You can find examples of how to do that by running:

port file all|sort -u|xargs grep '\sPATH='

Note that you want ${frameworks_dir}; don't assume its value is 
${prefix}/Library/Frameworks


> I've been wondering if it is worth the trouble to create and maintain ports 
> for some of these python packages. These days they are often using advanced 
> python-internal build tools that are difficult to configure, while `pip 
> install ` often just works. By comparison, there is a port for Julia 
> but none of its packages, instead relying entirely on Julia's package 
> manager. I'm curious about the thoughts of others on this matter.

I don't think it's been the intention to add all python modules to MacPorts. 
Rather, we add modules that are dependencies of other ports or are useful on 
their own (especially if requested by a user). 

The python portgroup was enhanced to support many of the new build systems. 
Check out the python.pep517_backend option.


Re: CI are forcing tests for ports where tests are disabled

2024-03-12 Thread grey
I think I may have run into a similar issue with how tests have
changed in CI with 2.9.x MacPorts and the OpenSSH 9.7p1 PR I submitted
yesterday:

https://github.com/macports/macports-ports/pull/22981

Going back to reverting to 9.6p1 locally and running port -d -v test I
see that it fails with the same error; whereas when the CI checks for
that ran with my PR in December of 2023, the CI checks passed.

The man page for port test is pretty slim:
  test
   Tests portname.

So I am guessing this is the spot to reference for more descriptive
explanations of test.cmd and test.args
https://guide.macports.org/#reference.phases.test

Whereas the net/openssh Portfile just has these defined at the moment:

test.runyes
test.target tests

I've include the output of manually invoking "make test" in the
following Trac issue I opened regarding this CI buildbot failure:

https://trac.macports.org/ticket/69478#comment:2

Which, as you can see, ends with "all tests passed"; so I don't think
this is an issue with upstream/OpenSSH's tests. Not to mention,
running make tests from the OpenSSH tarball is really quite time
consuming and probably not the best use of CI buildbot resources?

I can't make heads or tails of this commit from 2.9.0 which introduced
the "simple default tests for all ports"
https://github.com/macports/macports-base/commit/ddc26554e6ed49ce8501069b967284739fa6d34e

But, I am guessing, it's either not that simple, or at a minimum, I
might need some additional insights into how to placate it.

Thanks!


jupytext port build cannot find jlpm

2024-03-12 Thread Jonathan Stickel
I'm trying to update the port `py-jupytext` since the recent updates to 
Jupyterlab. The jupytext package now uses node.js and jlpm to build. The 
port `py-jupyterlab` provides jlpm, but it is in the path as 
`jlpm-{python.branch}`, and consequently jupytext cannot find it. I 
tried patching `${worksrcpath}/pyproject.toml` to have


npm = ["jlpm-${python.branch}"]

This is similar to the Portfile for py-notebook. It helps get past the 
first use of jlpm, but a later step fails:


command not found: jlpm

Recommendations for how to resolve this issue? Is there a way to set an 
alias during the build phase?


alias jlpm="jlpm-${python.branch}"

Or add 
"${prefix}/Library/Frameworks/Python.framework/Versions/${python.branch}/bin" 
to the path? I haven't been successful implementing either approach.


Thanks,
Jonathan

P.S.
I've been wondering if it is worth the trouble to create and maintain 
ports for some of these python packages. These days they are often using 
advanced python-internal build tools that are difficult to configure, 
while `pip install ` often just works. By comparison, there is 
a port for Julia but none of its packages, instead relying entirely on 
Julia's package manager. I'm curious about the thoughts of others on 
this matter.