Call for legacy-support testing

2024-07-24 Thread Fred Wright



The latest legacy-support-devel is an RC for the next release.  Although 
the list of additions and bugfixes is fairly modest, there's been some 
substantial rework of the headers, both to allow full flexibility for SDK 
choice, and to provide the proper __DARWIN_C_LEVEL conditionals matching 
those in the Apple headers.  Its own tests pass on all platforms, 
including in all cases involving CPU-compatible SDKs "not earlier" than 
the target OS, but in view of the extent of the modifications, more 
widespread testing would be a plus.


If no issues are found, this will probably become a release in about a 
week.


Fred Wright


Re: Git-devel has broken git-credential-osxkeychain.c for older systems

2024-04-20 Thread Fred Wright


On Sat, 20 Apr 2024, Saagar Jha wrote:

Wait, I use osxkeychain. It’s basically a requirement if you’re pushing 
to an authenticated server over HTTPS and don’t want to have to deal 
with storing keys yourself. I suspect it is used a lot for this.


I have yet to see a Git repo that didn't allow you to push via SSH 
(git://) rather than HTTPS, and that's preferable, anyway.  I usually 
configure repos to use git:// in both directions, though git allows you to 
configure fetch and push separately if you want.


I avoid Keychain as much as I possibly can, after reading in some 
documentation somewhere that it stores all your passwords on the disk in 
cleartext the entire time you're logged in.


I have no objection to having the osxkeychain feature, but I don't 
recommend actually using it.


Fred Wright


On Apr 19, 2024, at 23:52, Kirill A. Korinsky  wrote:

On Sat, 20 Apr 2024 00:25:47 +0200,
Sergio Had wrote:


What do we do? :)


To fix the build you have two options:
1. Revert that patch for system before 10.7
2. Remove folder contrib/credential/osxkeychain

I suggest to follow (2) as simpler thay and the good news that osxkeychain
is something that isn't often used.

Re: livecheck and curl 8.7.1

2024-04-20 Thread Fred Wright



On Fri, 19 Apr 2024, René J.V. Bertin wrote:


On Friday April 19 2024 22:10:40 Kirill A.  Korinsky wrote:


Because MacPorts download distfiles and packages from HTTP, not HTTPS
because it contains checksums for that it downloads :)


Nope. Maybe for distfiles that are hosted on the own servers, but the past few 
years more and more ports have had their `master_sites` converted to https URLs.

(With good reason: pure http sites are disappearing little by little.)

A random bit of proof:

DEBUG: fetch phase started at Fri Apr 19 23:04:39 CEST 2024
--->  Fetching distfiles for pulseaudio
DEBUG: Executing org.macports.fetch (pulseaudio)
--->  pulseaudio-17.0.tar.xz does not exist in 
/opt/local/var/macports/distfiles/pulseaudio
--->  Attempting to fetch pulseaudio-17.0.tar.xz from 
https://www.freedesktop.org/software/pulseaudio/releases/
 % Total% Received % Xferd  Average Speed   TimeTime Time  Current
Dload  Upload   Total   SpentLeft  Speed
100 1529k  100 1529k0 0   977k  0  0:00:01  0:00:01 --:--:--  977k


That "proof" is completely (well, almost) irrelevant for end users.  It 
matters for port developers, but once a port is "published", its distfiles 
are copied to the MacPorts mirrors, where they can be fetched by the 
system curl on any OS.


The "almost" is because the primary distfile source is still included as a 
candidate for fetching, and in some cases may be chosen ahead of the 
mirrors.  In the non-working curl case, this at the very least adds delay, 
but there was a case a couple of years ago where MacPorts decided to 
prefer python.org to the mirrors (at my location), and the fetch (on 10.9) 
would hang in a way that wasn't subject to a timeout, so it never gave up 
and never moved on to the mirrors.  The response when I reported this was 
"gee, it's supposed to have timeouts".  I don't know exactly what got 
fixed, but I haven't seen this lately.


Livecheck is completely different, since there's no mirroring of the 
content that livecheck is looking at.


Fred Wright

Re: how to handle 'internal' logs for failed builds

2024-04-04 Thread Fred Wright



On Thu, 4 Apr 2024, Chris Jones wrote:

[...]
The problem is the contents of that log are, of course, not in the macports 
build log, so I cannot see what it is that is causing it, and as it works for 
me I cannot look locally myself. I've tried looking at my versions of the 
logs, and just guess what might be wrong, missing new deps for instance, but 
that hasn't worked, so I really need to see whats in that log from the build 
bots...

[...]

In one sense, it seems rather dumb not to keep logs from failed builds. 
But since testing isn't the intended purpose of the buildbots, maybe that 
makes sense.  Perhaps it wouldn't be too difficult to add a feature to the 
buildbots where one could manually trigger a build with a "keeplogs" 
option.


Meanwhile, do the CI testers keep logs of failed builds?  I would think 
that the answer is yes.  If so, you should be able to get such a log just 
by submitting a dummy PR, provided that the failure occurs in one of the 
OS versions covered by the CI tests.



Speaking of buildbot logs, commit a269bae01e9 for legacy-support 
referenced a build log (as a comment in the Portfile) as the reason for 
disabling parallel builds, but that's now a broken link.  If a buildbot 
log is to be referenced in such a way, it should be copied to a more 
permanent location.  I can *sometimes* see a parallel build failure 
locally, which may or may not be the same bug, and there's no way to tell. 
Usually, those are caused by missing dependencies in the Makefile.


Fred Wright


Re: Create new version of legacy-support

2024-04-03 Thread Fred Wright



On Wed, 3 Apr 2024, Marcus Calhoun-Lopez wrote:


Are there any objections to creating version 1.3.0 of legacy-support?
legacy-support-devel seems to be working, and some of the features are
needed for the latest version of Rust.


It looks like this has already happened (though as 1.2.2, not 1.3.0).

Fred Wright


Re: XZ Utils Compromised Releases

2024-03-29 Thread Fred Wright


On Fri, 29 Mar 2024, Blair Zajac wrote:


I’m seeing it at 5.6.1 in our GitHub repoisory: 
https://github.com/macports/macports-ports/blob/master/archivers/xz/Portfile


Ah, OK.  The 5.4.6 was based on a selfupdate from two days ago.


On Mar 29, 2024, at 10:40 AM, Fred Wright  wrote:



CCing the users list so they don't panic. :-)


That didn't work since I don't subscribe to that list.  Someone should 
post something there, since the original message was.


Fred Wright

Re: XZ Utils Compromised Releases

2024-03-29 Thread Fred Wright



On Fri, 29 Mar 2024, Frank Dean wrote:


I received a security announcement on the Debian mailing list [1].  It appears 
versions 5.6.0 of XY Utils and later may be compromised.  I also found a 
discussion on Openwall [2].


[1]: https://lists.debian.org/debian-security-announce/2024/msg00057.html 
<https://lists.debian.org/debian-security-announce/2024/msg00057.html>

[2]: https://www.openwall.com/lists/oss-security/2024/03/29/4 
<https://www.openwall.com/lists/oss-security/2024/03/29/4>


I'm afraid that's all I know.  Just a heads-up.


In [1] they mention reverting to 5.4.5 to fix it.  It's not 100% clear 
from that whether 5.4.6 is affected, but it sounds like it's not.  Since 
MacPorts is currently at 5.4.6, the port is probably OK as long as it 
doesn't do any overzealous upgrading.


CCing the users list so they don't panic. :-)

Fred Wright


Re: Ruby question: solution for dependency version specs?

2024-03-23 Thread Fred Wright



On Sun, 17 Mar 2024, Sergio Had wrote:

I have no idea what is going on with archaic versions, but Ruby 3.1+ 
through ruby-devel (3.4) should work on every system.


Please stop posting falsehoods. Ruby 3.1-3.3 most certainly do *not* work 
on every system (yet), and I posted a list of the failing cases in another 
thread where you were a participant.  I haven't looked at 3.4.


They are, and everything relevant is rb33-* etc. Unversioned one which 
use rb18 should re updated or removed: we have no reason to keep Ruby 
versions prior to 3.0, since 3.0 works on Tiger, and 3.1+ work on 
Leopard through Sonoma. That also includes PowerPC systems.


Again, false.

For at least the past few years, no version of Ruby has worked on all 
systems until I personally fixed it, and I haven't had a chance to fix 
anything later than 3.0 yet.  And contrary to popular belief, Ruby 3.0 
isn't (quite) EOL yet.


As far as having multiple versions goes, Ruby is just like many other 
things, where having multiple versions is useful for (at least):


1) Testing code against multiple versions.

2) Using a textbook that is based on a particular version.

3) Avoiding brokenness in one or more versions.

No too long ago, the instructions for building the RaspberryPi docs stated 
that asciidoctor needed to be run with Ruby 2.7 because it didn't work 
properly with 3.0 (at least for their files).  While that no longer seems 
to be the case, it does serve to illustrate that newer isn't always 
better, and that it's best to give users a choice as to what version to 
use, rather than inflicting someone else's notion of the one true best 
version on them.


On Sat, 16 Mar 2024, Austin Ziegler wrote:


I also think that the `ruby` port needs to be renamed to `ruby18` and `port
install ruby` should *either* fail (like `port install python` or `port
install python3` does) or it should install the latest stable version
(updated on Christmas Day every year).


Agreed.  Presumably this came about because having multiple versions 
wasn't initially anticipated.  It's unfortunate that (unlike some other 
packaging systems) MacPorts doesn't have a way to directly make multiple 
versions of something available without resorting to the kludge of 
building the version number into the name.


Fred Wright


Re: Testing a modified portgroup

2024-02-10 Thread Fred Wright



On Mon, 5 Feb 2024, Joshua Root wrote:


On 5/2/2024 14:58, Austin Ziegler wrote:
I think I have found a bug in the golang portgroup, and I think I have an 
idea on how to fix it, but I'm not sure how to test such a modification.


You'd make the change in your local copy of the ports tree and check that a 
port affected by the bug now works correctly, and that some existing ports 
still work correctly.


That's a nice theory, but it often doesn't work.  A while back, I tried 
doing something of that form, but my change was ignored.  My setup is that 
I have a sparse overlay of the ports tree, containing any locally modified 
files, listed ahead of the normal mirror location in sources.conf.  That 
works fine for testing port changes (as long as the complete directory for 
any modified port is in the overlay), but it didn't work for a PortGroup 
change.  Looking in debug mode, I could see that it was fetching the 
PortGroup from the usual mirror source, rather than from the local 
overlay.  At the time, I just gave up.


Later, I ran across some evidence that it chooses the PortGroup source 
based on the source of the port that's including it.  Since I wasn't 
modifying the including port, that explains the behavior, though it most 
certainly violates the principle of least surprise.  So it may be 
necessary to make a dummy change to the including Portfile to test a 
PortGroup change.


I'm not sure why MacPorts obsesses so much over the location of a Portfile 
rather than its content.  The insanely long build-tree paths differ not 
only based on whether the Portfile is local or not, but also based on 
which particular mirror was used to fetch it in the "published" case. 
Since some build and/or test procedures may choke on the long pathnames, 
and since even the length of the pathname is mirror-dependent, that means 
that in some cases the success of a build and/or test may depend on which 
mirror provided the Portfile.  Sheesh.


Fred Wright


Re: ldid-procursus: new port review request

2023-08-28 Thread Fred Wright


On Mon, 28 Aug 2023, Blair Zajac wrote:


To reduce friction for reviewers, what’s the link to the PR?


At least it included the port name, which often isn't the case.  It 
shouldn't be necessary to follow the PR link (when provided) just to see 
what port is being referenced.


It might not even be an unreasonable practice to include the output of 
"port info --description " in such emails.


Fred Wright

Re: Xcode PortGroup: Xcode compiles code twice?

2023-08-15 Thread Fred Wright




On Tue, 15 Aug 2023, Jason Liu wrote:


Yes, you're right that clearing the build phase doesn't prove anything, but
I'm not sure I'm following your other point. Are you saying that "make
install" will compile the source code? I was under the impression that you
need to manually run "make" in order to actually compile the source code,
hence the traditional magic formula of './configure ; make ; make install'.
Without the first make, the "make install" shouldn't have anything to
install. Or am I wrong about that?


Normally, "make install" implies "make" via dependencies, since with 
properly constructed dependencies, make will notice that it's trying to 
install something that hasn't been built, and correct that.  The main 
advantage of doing them separately is that "make" doesn't require sudo, 
while "make install" usually does.  If you skip the separate "make" 
without sudo, then the implied build products wind up owned by root, and 
even "make clean" requires sudo.


Fred Wright


Re: Qt5 on <= 10.6

2023-07-29 Thread Fred Wright


On Sat, 29 Jul 2023, Sergio Had wrote:


Does Qt5 work on 10.5–10.6 Intel?

It looks that at least earlier 5.x versions installed on 10.6: 
https://ports.macports.org/port/qt53/stats
Presumably that should be fixable for 10.5 and PPC.
(I am not sure if 5.3 is of much use though – do developers of ports depending 
on Qt5 support it still?)

P. S. Given how much efforts it takes every time to fix something for 
Qt4, even if it means just digging out a right version and reverting 
some commits, I start asking a question if it is easier just to fix some 
early 5.x version. There should not be anything arch-specific, it should 
be just C++, I guess. Just find fallbacks for whatever misses in SDK, 
but if it works on 10.6 Intel, it might be pretty feasible.


One shouldn't assume that Qt5 is a drop-in replacement for Qt4.  At one 
point, I'd added an option to gpsd to allow building with Qt5, and it 
worked at the time I created it.  But later on, something changed to break 
the build with Qt5, and I never tracked it down, so for now it's stuck on 
Qt4.  This is unfortunate, since Qt4 seems to think that any processor 
that's not x86 must be ppc, so building against Qt4 on the M1 falls on its 
face trying to include ppc-specific code.  The Qt4 build itself works, 
just not building gpsd against it.


Fred Wright

Re: rldicl / rldicr for 32-bit powerpc?

2023-07-16 Thread Fred Wright



On Sun, 16 Jul 2023, Sergey Fedorov wrote:


The linked code is for an emulator, and is providing a *C*

implementation, not a ppc32 machine-code

Whatever provides the needed functionality, gonna be good enough, I guess.


I can't imagine any context in which you can freely choose whether to 
supply C code or assembler code, so using the code you linked in this 
context is virtually guaranteed not to "provide the needed functionality".


It also occurs to me that any code using rldicX instructions must be 
assuming 64-bit registers.  But ppc32 doesn't have 64-bit registers, so a 
couple of missing opcodes may be just the tip of the iceberg.


That being said, if the code *knows* it's dealing with 32-bit registers, 
then using rldicX instructions is just a bug.


If it supports both i386 and x86_64, it might be instructive to look at 
how it handles the differences.  If it doesn't support i386, that might be 
a clue that 32-bit support would be significant work.


Fred Wright


Re: rldicl / rldicr for 32-bit powerpc?

2023-07-15 Thread Fred Wright



On Sat, 15 Jul 2023, Ken Cunningham wrote:

Adding it into cctools for the standard assembler to use whenever it 
might be needed would be something of a project, to be sure...


I think it would be highly unusual for an assembler to replace 
instructions for one architecture with instructions for another 
architecture, even when the two are related.  Anything generating actual 
machine instructions should know what architecture it's targeting, and 
generate appropriate code.


However, patching it into a source file that needs it on a case-by-case 
basis is probably a fairly trivial thing to do.


Probably so, once one works out the appropriate instructions.  That's not 
hard in principle (though trickier for the "dotted" versions), but I'm 
busy with other stuff right now (and don't currently have a working ppc64 
machine for comparison testing).  The linked code is for an emulator, and 
is providing a *C* implementation, not a ppc32 machine-code 
implementation.


Fred Wright


Re: Commit Messages

2023-07-15 Thread Fred Wright


On Sat, 15 Jul 2023, David Gilman wrote:


I imagine this can be linted in the git local commit-msg hook. It
won't stop a dedicated offender who can push directly to master but it
wouldn't hurt to ship it in the macports-ports repo and promote it in
the guidelines.


It would be fairly straightforward to catch this in a pre-commit hook, and 
those apply at the time commits are created, and hence don't care about 
whether the commits will eventually be pushed directly or submitted as 
PRs.  But hooks don't propagate across repos, so such a hook would only 
apply to users who'd explicitly installed it.


Another possibility would be a receiver-side hook on GitHub, but those 
aren't intended for this sort of purpose, so constructing such a hook 
would be more complicated.


Fred Wright


On Sat, Jul 15, 2023 at 2:58 PM Fred Wright  wrote:



In recent times, commit messages failing to conform to the guidelines have
been becoming more common - specifically, the failure to include a blank
line after the summary.  The guidelines even state briefly why this
matters, though perhaps not emphatically enough.  Recent offenders are:

2d9585490dc87249c189c211a228984b3a3830c7
331c484f0c10d378bcbf011fa14cb7fc0e1768be
f5ce144934601cc243df6e02b2d47b7956acd335
b395f71013212e625fb96051bcc9a31aa0b5bd26

The standard git tools split a commit message into a summary (a.k.a.
subject) and a body, with the first blank line being the division point.
In format strings, these are %s and %b, respectively.  Some third-party
git tools limit the summary to the first line, so people using such tools
may not even notice the error, but such tools shouldn't be the standard.
The output of commands like "git log --oneline" and "git branch -v"
becomes quite annoying with this error.

Fred Wright




--
David Gilman
:DG<



Commit Messages

2023-07-15 Thread Fred Wright



In recent times, commit messages failing to conform to the guidelines have 
been becoming more common - specifically, the failure to include a blank 
line after the summary.  The guidelines even state briefly why this 
matters, though perhaps not emphatically enough.  Recent offenders are:


2d9585490dc87249c189c211a228984b3a3830c7
331c484f0c10d378bcbf011fa14cb7fc0e1768be
f5ce144934601cc243df6e02b2d47b7956acd335
b395f71013212e625fb96051bcc9a31aa0b5bd26

The standard git tools split a commit message into a summary (a.k.a. 
subject) and a body, with the first blank line being the division point. 
In format strings, these are %s and %b, respectively.  Some third-party 
git tools limit the summary to the first line, so people using such tools 
may not even notice the error, but such tools shouldn't be the standard. 
The output of commands like "git log --oneline" and "git branch -v" 
becomes quite annoying with this error.


Fred Wright


Re: rldicl / rldicr for 32-bit powerpc?

2023-07-15 Thread Fred Wright



On Sat, 15 Jul 2023, Sergey Fedorov wrote:


Is there an implementation to replace these on ppc32?

There is some Linux version online which I found:
https://patchwork.kernel.org/project/kvm/patch/1403472217-22263-30-git-send-email-ag...@suse.de/
But since it is a magic code, no idea if it is portable or not.


You'd have to be more specific about the intended context.  AFAIK, 
OSX/macOS didn't have anything like KVM until 10.10, so this specific 
patch wouldn't be relevant.


Fred Wright


Clang Clang Clang Went the Buildbots

2023-04-17 Thread Fred Wright



It probably wasn't a good plan to push simultaneous updates to every clang 
version in sight.  I imagine the buildbots are still struggling to catch 
up, and meanwhile users doing "upgrade outdated" are stuck doing long 
builds from source.  My MacBook Pro alone took almost 19 hours, and the 
whole process took over 24.


BTW, on 10.11, upgrading clang-14 wants clang-11, which fails to build, 
apprently due to building something for i386 and failing to link against 
the non-uiniversal libxslt.


Fred Wright


Re: Buildbots down?

2023-02-07 Thread Fred Wright



On Tue, 7 Feb 2023, Ryan Schmidt wrote:

On Feb 6, 2023, at 14:09, Fred Wright wrote:


Based on a couple of ports where I've had PRs merged recently, it looks 
like the buildbots are mostly back in service, but Mojave and arm64 are 
still out.


Yes. Disk first aid found a minor problem on the Mojave disk that I had 
hoped to correct before putting it back into service by booting from the 
installer and running some fsck commands there, but it is hanging when 
booting from the installer. It is possible I created the installer image 
incorrectly.


Did you do something other than run createinstallmedia from the installer 
app?  If you copy an existing installer, make sure you copy the entire 
drive and not just the volume.  The OS is incapable of fully booting from 
a volume (as I've found out the hard way).


If it was just about running fsck for minor problems, why not just boot 
into single-user mode?


I took the Apple Silicon machine offline in anticipation of upgrading 
it; see https://trac.macports.org/ticket/66637.


Yes, I saw that.

Fred Wright


Re: Buildbots down?

2023-02-06 Thread Fred Wright



On Thu, 2 Feb 2023, Ryan Schmidt wrote:

On Feb 2, 2023, at 18:25, Herby G wrote:


There haven't been any builds for recent commits to master on Github in over 24 
hours at the moment of writing this.

https://build.macports.org/ is also failing to load.

Can someone take a look?


Unfortunately, Winter Storm Mara delivered several days of freezing rain to the 
Austin area. The ice and wind has broken a large number of tree branches which 
has downed a large number of power lines. 30% of the city, including the 
buildbot machines, has been without power, in the case of the buildbot for 38 
hours already. As of four hours ago the power company has stated they are 
unable to provide an estimate for when power will be restored.

https://twitter.com/austinenergy/status/1621235217909383169?cxt=HHwWgoC8zem15P8s

This affects the build.macports.org web page, all build machines*, and also 
updates to rsync.macports.org.

(*The Apple Silicon build machine is off-site and still online but can't get 
anything done without build.macports.org telling it what to do.)


Based on a couple of ports where I've had PRs merged recently, it looks 
like the buildbots are mostly back in service, but Mojave and arm64 are 
still out.


Fred Wright


Re: Maintainer Abuse

2022-12-29 Thread Fred Wright


On Thu, 29 Dec 2022, Joshua Root wrote:

On 2022-12-29 15:59 , Fred Wright wrote:


Twice recently I've had changes made to ports I maintain without respecting 
the maintainer timeout (and not for any urgent security-related reasons). 
The first was py-serial, where the change was merged without waiting for 
the maintainer timeout.  And just now I see that someone abused their write 
access to bypass the PR mechanism entirely for a gpsd update, so that I 
wasn't even notified of the change.  And I've had good reason to hold off 
on updating gpsd, due to its missing dependency on asciidoctor, which is 
currently broken on some platforms due to the insistence on tying it to a 
broken version of ruby, which I've actually been working on fixing.


Is this now the Wild West?


Sorry you've been put out by these commits. Both of these ports are marked as 
openmaintainer, which according to the project policy [1] means that minor 
changes are allowed without obtaining the maintainer's permission first. That 
certainly isn't carte blanche to do whatever you want, but it does mean that 
pushing changes directly isn't necessarily against the rules.


My understanding is that only time-critical changes, or stuff in the 
"cleanup" category, should be pushed without maintainer input.


The definition of a minor update is left somewhat vague, but can probably be 
thought of as synonymous with low-risk. I would say anything beyond simple 
bugfixes, and certainly anything that changes the API or ABI, should be run 
by the maintainer first. And as the policy says, the committer is responsible 
for ensuring that the changes work properly. If you push a change to someone 
else's port, you should consider yourself "on the hook" for fixing anything 
that breaks as a result.


More on "minor" and "low risk" below.


When in doubt, run it by the maintainer.

I'm not familiar enough with gpsd to say whether the recent update was minor 
or not. Marius, please work with Fred to resolve any issues that it may have 
caused.


If the change to py-serial you're referring to was mine of Dec 13, that was 
part of a mass update to adopt a new feature in MacPorts 2.8.0, which only 
touched openmaintainer and nomaintainer ports. IMO it was well within the 
definition of a minor change.


That isn't the change I was referring to (but see below); I was referring 
to 66c7d25d427.  I had no objection to adding the py310 subport (though 
checking still would have been appropriate), but I strongly object to the 
removal of the py34-py36 subports.  And no change that removes a 
capability can be considered "low risk" by any stretch of the imagination.


I'm a firm believer in maximum compatibility, and one of the things I like 
about MacPorts is its support for a wide range of OS versions (though 
adequate testing is often lacking).  But for some reason, that same 
courtesy isn't extended to older Python versions, and some even think that 
it's a good idea to engage in rampages of ethnic cleansing of older Python 
subports.


One shouldn't look to the python.org folks for guidance on this issue; 
those are the same folks that (initially) expected everyone to immediately 
migrate to Python 3, and explicitly discouraged making code simultaneously 
compatible with both Python 2 and Python 3 at all.  But Python versions 
can't be mixed within a single execution of a single program, so a given 
program and all its imported modules have to be compatible with at least 
one Python version.  Similarly, every module needs to have at least one 
Python version compatible with itself and every program that uses it. 
This creates a massive interconnected web of Python code that needs to be 
simultaneously compatible with at least one Python version.  Denying 
simultaneous Python 2/3 compatibility was tantamount to expecting the 
majority of all Python code in the entire world to be converted in 
lockstep from Python 2 to Python 3, which was utterly insane (particularly 
given that a lot of that code is maintained by volunteers 
working in their spare time).


Once the pitchfork-carrying mobs appeared at the gates, the python.org 
folks relented and provided documentation and recommendations for 
"polyglot" code that works with both Python 2 and Python 3.  They also 
extended the support period for Python 2.7, but even the extended period 
was woefully inadequate.  There are substantial incompatibilities between 
Python 2 and Python 3, and it takes real work to fix existing Python 2 
code to handle Python 3.  I know of at least one project that was still 
fixing bugs related to Python 3 many months after dropping support for 
Python 2, so that running it with Python 2 wasn't an available workaround.


Personally, I now try to write all *new* Python code so that it's 
compatible with both, and I've fixed a substantial amount of my existing 
code to do so, but I still have a substantial amount of 

Maintainer Abuse

2022-12-28 Thread Fred Wright



Twice recently I've had changes made to ports I maintain without 
respecting the maintainer timeout (and not for any urgent security-related 
reasons).  The first was py-serial, where the change was merged without 
waiting for the maintainer timeout.  And just now I see that someone 
abused their write access to bypass the PR mechanism entirely for a gpsd 
update, so that I wasn't even notified of the change.  And I've had good 
reason to hold off on updating gpsd, due to its missing dependency on 
asciidoctor, which is currently broken on some platforms due to the 
insistence on tying it to a broken version of ruby, which I've actually 
been working on fixing.


Is this now the Wild West?

Fred Wright


Re: MacPorts 2.8.0-beta1 now available for testing

2022-10-15 Thread Fred Wright


On Sat, 15 Oct 2022, Joshua Root wrote:

On 2022-10-15 13:20 , Fred Wright wrote:


IMO, it should ask before following replaced_by, since replaced_by is 
sometimes a matter of opinion.  For example, sometimes "port X is replaced 
by port Y" really means "We don't want to bother supporting port X any 
more, so you should use port Y instead; if it doesn't meet your needs then 
that's too bad."


Typically a port with replaced_by set will have been converted to a stub that 
does nothing but error out if you try to install it, so the ability to bypass 
this feature doesn't help you much. But there is a --no-replace flag in case 
it's needed.


Sure, but the inverted default is inconsistent with the way dependencies 
are handled.  If one attempts to install a port with missing dependencies, 
it asks about the dependencies, and if one answers no, then the port isn't 
installed, without having to predict this possible scenario in advance and 
providing an extra option.  I don't see why installing a port instead of 
what the user requested should be more aggressive than installing a port 
in addition to what the user requested.


Fred Wright

Re: MacPorts 2.8.0-beta1 now available for testing

2022-10-14 Thread Fred Wright


On Sat, 15 Oct 2022, Joshua Root wrote:

On 2022-10-14 18:13 , Ken Cunningham wrote:
the only other thing I noticed was that these helpful pre-fetch messages 
were no longer being displayed:


https://github.com/macports/macports-ports/blob/c7a8d3cf75b8b48a90139cbb35e385bb7bcbd165/x11/xorg-server/Portfile#L103 
<https://github.com/macports/macports-ports/blob/c7a8d3cf75b8b48a90139cbb35e385bb7bcbd165/x11/xorg-server/Portfile#L103>



Instead there was just a message saying the build was known to fail, but 
try anyway?


But the instructions about what to actually do are gone now…

Perhaps no way around that?


In that particular case, the solution is to set `replaced_by 
xorg-server-legacy` instead of erroring in pre-fetch. As of 2.8, replaced_by 
will be followed when installing as well as when upgrading.


IMO, it should ask before following replaced_by, since replaced_by is 
sometimes a matter of opinion.  For example, sometimes "port X is replaced 
by port Y" really means "We don't want to bother supporting port X any 
more, so you should use port Y instead; if it doesn't meet your needs then 
that's too bad."


I can see why the ability to give an explanation more than "this is broken" 
is appealing, but it can't (easily) be done via pre-fetch messages while 
still resolving <https://trac.macports.org/ticket/54787>. We need to figure 
out that ports are known_fail before processing their dependencies.


One annoyance that I've encountered is when a fetch dependency needs to be 
satisfied even when the distfile archive(s) is/are already present.


Fred Wright

Re: help with a regex please

2022-06-19 Thread Fred Wright


On Sun, 19 Jun 2022, Ken Cunningham wrote:

to fix the universal build of some ports, eg jemalloc, I would like to 
strip out the host bits from these text strings, eg convert this:


echo "--prefix=/opt/local --with-jemalloc-prefix= 
--host=aarch64-apple-darwin21.5.0 host_alias=aarch64-apple-darwin21.5.0 
CC=/usr/bin/clang”

to this:

echo "--prefix=/opt/local --with-jemalloc-prefix= CC=/usr/bin/clang”

however, my regex-fu is not strong.

Anyone know the secret reinplace regex that might do that?


I presume the lack of "--" in front of the "host_alias" is a typo.

I don't know specificlly about reinplace, but here's an example with sed:

MacPro:misc fw$ cat mpregex.txt
echo "--prefix=/opt/local --with-jemalloc-prefix= --host=aarch64-apple-darwin21.5.0 
--host_alias=aarch64-apple-darwin21.5.0 CC=/usr/bin/clang"

MacPro:misc fw$ sed -E 's/ --(host|host_alias)=.* / /g' mpregex.txt
echo "--prefix=/opt/local --with-jemalloc-prefix= CC=/usr/bin/clang"

Fred Wright

Re: PR 14427: 10.14 tester wanted

2022-04-06 Thread Fred Wright


On Tue, 5 Apr 2022, Joshua Root wrote:

On 2022-4-5 15:49 , Fred Wright wrote:


Empirically, it was ignored in this case, probably due to a bug.  The 
sequence was:


 sudo port uninstall qt6-qtbase
 sudo port -sk install qt6-qtbase

The install didn't build anything, unless I explicitly cleaned after the 
uninstall.


What was the state to begin with?


In the very initial state, I'd never installed this port at all.  I first 
did, multiple times (since I was puzzled by the SDK complaint):


sudo port install qt6-qtbase
sudo port uninstall qt6-qtbase

This built each time.

At some point I decided that I wanted the log, so I added -k to the 
install.  I *think* it was after that that the install stopped rebuilding 
(though that was on another day and another boot), even after adding -s.


An existing build directory won't be cleaned by uninstalling an 
installed version.


The uninstall *claims* to clean twice, once after the deactivate and once 
after the uninstall.  But it's insufficient to avoid skipping the build on 
the next install.  Cleaning explicitly after the uninstall seems to fix 
it.  However, it appears that the implicit clean after the install (when 
not suppressed by -k) is sufficient.


Fred Wright

Re: PR 14427: 10.14 tester wanted

2022-04-04 Thread Fred Wright


On Tue, 5 Apr 2022, Joshua Root wrote:

On 2022-4-5 08:23 , Fred Wright wrote:


The fact that you have no 10.15 SDK at all suggests that you're running 
Xcode 10.x, though up through 11.3.1 runs on 10.14.  I usually run the 
latest Xcode for each OS version, which is what the MacPorts documentation 
recommends.


% xcodebuild -version
Xcode 11.3.1
Build version 11C504

However:
% pkgutil 
--pkg-info=com.apple.pkg.{CLTools_Executables,CLTools_Base,DeveloperToolsCLI,DeveloperToolsCLILeo} 
2>/dev/null | sed -n 's/^version: //p'

10.3.0.0.1.1562985497

Newer CLT versions are not offered to me via Software Update on 10.14.


But there's:

https://download.developer.apple.com/Developer_Tools/Command_Line_Tools_for_Xcode_11.3.1/Command_Line_Tools_for_Xcode_11.3.1.dmg

On Tue, 5 Apr 2022, Joshua Root wrote:

The -s option should never be ignored AFAIK, but depending on the action you 
are using and the current state, it may be considered a noop with or without 
-s (like 'port install' when the port is already installed, or 'port 
destroot' when the statefile already shows the destroot phase as completed.)


Empirically, it was ignored in this case, probably due to a bug.  The 
sequence was:


sudo port uninstall qt6-qtbase
sudo port -sk install qt6-qtbase

The install didn't build anything, unless I explicitly cleaned after the 
uninstall.


Fred Wright

Re: PR 14427: 10.14 tester wanted

2022-04-04 Thread Fred Wright



On Mon, 4 Apr 2022, Fred Wright wrote:

Meanwhile, it looks like the update was already pushed, since I had to fight 
the port command's refusal to honor -s during further testing.  It seems that 
an explicit clean is needed to make -s work, in spite of the two alleged 
cleans during the uninstall.


Actually, it doesn't look like the update was pushed, so maybe the -s is 
ignored when the binary archive already exists locally.


Fred Wright


Re: PR 14427: 10.14 tester wanted

2022-04-04 Thread Fred Wright


On Sun, 3 Apr 2022, Joshua Root wrote:

On 2022-4-3 14:05 , Fred Wright wrote:


lrwxr-xr-x  1 root  wheel   15 Sep 26  2020 MacOSX.sdk -> MacOSX10.15.sdk
drwxr-xr-x  7 root  wheel  224 Sep 26  2020 MacOSX.sdk 1
lrwxr-xr-x  1 root  wheel   10 Aug 17  2019 MacOSX10.14.sdk -> MacOSX.sdk
drwxr-xr-x  8 root  wheel  256 Nov  7  2019 MacOSX10.15.sdk

I'm pretty sure I never changed anything there, other than by running Apple 
installers.  I wouldn't be surprised if "MacOSX.sdk 1" is really a 10.14 
SDK, but I didn't dig into it.


Having MacOSX10.14.sdk ultimately pointing to MacOSX10.15.sdk is probably 
going to cause problems. On my 10.14 system it looks like this:


% ls -l /Library/Developer/CommandLineTools/SDKs
total 0
drwxr-xr-x  7 root  wheel  224  9 Jul  2019 MacOSX.sdk
drwxr-xr-x  5 root  wheel  160 12 May  2018 MacOSX10.13.sdk
lrwxr-xr-x  1 root  wheel   10  4 Oct  2019 MacOSX10.14.sdk -> MacOSX.sdk
% plutil -p 
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/SDKSettings.plist | fgrep 
\"Version\"

 "Version" => "10.14"


The fact that you have no 10.15 SDK at all suggests that you're running 
Xcode 10.x, though up through 11.3.1 runs on 10.14.  I usually run the 
latest Xcode for each OS version, which is what the MacPorts documentation 
recommends.


Using the unversioned name for the real directory and the versioned name 
for the symlink is rather backwards, but it seems to be par for the 
course.


On Sun, 3 Apr 2022, Christopher Chavez wrote:

Thank you for testing. However the proposed change is specifically to 
allow building with the 10.14 SDK, and so what I wanted to be sure of is 
whether it actually worked with the 10.14 SDK; I expected there to 
already not be any problems building with the 10.15 SDK on macOS 10.14.


Well, you didn't say that. :-)

I rearranged the SDKs to look like this:

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs:
total 0
drwxr-xr-x  4 fw  wheel  128 Nov  7  2019 DriverKit19.0.sdk
lrwxr-xr-x  1 fw  wheel   15 Apr  4 14:10 MacOSX.sdk -> MacOSX10.14.sdk
lrwxr-xr-x  1 fw  wheel   56 Apr  3 15:47 MacOSX10.14.sdk -> 
/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk
drwxr-xr-x  8 fw  wheel  256 Nov  7  2019 MacOSX10.15.sdk

/Library/Developer/CommandLineTools/SDKs:
total 0
lrwxr-xr-x  1 root  wheel   15 Apr  3 15:30 MacOSX.sdk -> MacOSX10.14.sdk
drwxr-xr-x  7 root  wheel  224 Sep 26  2020 MacOSX10.14.sdk
drwxr-xr-x  9 root  wheel  288 Apr  3 15:30 MacOSX10.15.sdk

So both 10.14 and 10.15 SDKs are available, to both GUI Xcode and CLT, 
with 10.14 as the default.  I still get the warning, though it looks like 
it probably comes from base rather than the port.  The beginning of the 
logfile looks like this:


DEBUG: Starting logging for qt6-qtbase @6.2.1_4+openssl
DEBUG: macOS 10.14.6 (darwin/18.7.0) arch i386
DEBUG: MacPorts 2.7.2
DEBUG: Xcode 11.3.1
DEBUG: SDK 10.14
DEBUG: MACOSX_DEPLOYMENT_TARGET: 10.14
Warning: The macOS 10.14 SDK does not appear to be installed. Ports may not 
build correctly.
Warning: You can install it as part of the Xcode Command Line Tools package by 
running `xcode-select --install'.
DEBUG: epoch: in tree: 0 installed: 0
DEBUG: xz 5.2.5_0 exists in the ports tree

So something isn't right with the SDK check.

Meanwhile, it looks like the update was already pushed, since I had to 
fight the port command's refusal to honor -s during further testing.  It 
seems that an explicit clean is needed to make -s work, in spite of the 
two alleged cleans during the uninstall.


Fred Wright

Re: PR 14427: 10.14 tester wanted

2022-04-02 Thread Fred Wright


On Sun, 3 Apr 2022, Joshua Root wrote:

On 2022-4-3 12:00 , Fred Wright wrote:


I got a warning about the 10.14 SDK not being installed, which I found 
surprising since I know I have the CLTs installed.  Running the suggested 
"xcode-select --install" complains that the CLTs are already installed, and 
suggests Software Update, which doesn't do anything.  Looking in the SDKs 
directory within the Xcode bundle, I see 10.15 but not 10.14, though that 
ought to work and seems to work.  Perhaps the SDK check (which I think is 
separate from the port itself) is overly picky.


I don't know about qt6 specifically, but in the general case, the warning is 
precisely as picky as it should be. Building anything that doesn't handle 
weak-linked symbols correctly (which is most things) against an SDK newer 
than the OS it will be run on will result in runtime crashes. This is why we 
always say to install the Command Line Tools, because Xcode doesn't 
necessarily have the SDK matching the current OS version, whereas the CLTs 
do.


Building against the newer SDK doesn't cause weak-linking issues as long 
as the code uses MIN_REQUIRED instead of MAX_ALLOWED to decide what 
references to make.  MIN_REQUIRED is the correct choice in most cases, but 
code often gets that wrong.  Having them the same mostly sweeps that 
problem under the rug.


Apple seems to think that using the newer SDK is OK, since it's set up (in 
the CLT area) like this:


lrwxr-xr-x  1 root  wheel   15 Sep 26  2020 MacOSX.sdk -> MacOSX10.15.sdk
drwxr-xr-x  7 root  wheel  224 Sep 26  2020 MacOSX.sdk 1
lrwxr-xr-x  1 root  wheel   10 Aug 17  2019 MacOSX10.14.sdk -> MacOSX.sdk
drwxr-xr-x  8 root  wheel  256 Nov  7  2019 MacOSX10.15.sdk

I'm pretty sure I never changed anything there, other than by running 
Apple installers.  I wouldn't be surprised if "MacOSX.sdk 1" is really a 
10.14 SDK, but I didn't dig into it.


SDKs provided by the CLTs would be in 
/Library/Developer/CommandLineTools/SDKs. If you have a 10.14 SDK there but 
qt6 is not finding it, it may only be looking in Xcode, and hopefully it 
knows what it's doing.


Or it's finding it but looking inside to see what version it is.  Whether 
it knows what it's doing is unknown.


Fred Wright

Re: PR 14427: 10.14 tester wanted

2022-04-02 Thread Fred Wright



On Thu, 31 Mar 2022, Christopher Chavez wrote:


Could someone with access to 10.14 please try this PR?

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

Does the port (or output object qapplekeymapper.mm.o more specifically) 
now build with the patch, or does it encounter other errors?


I verified that qt6-qtbase builds on 10.14.  I don't have an easy way to 
test it.


I got a warning about the 10.14 SDK not being installed, which I found 
surprising since I know I have the CLTs installed.  Running the suggested 
"xcode-select --install" complains that the CLTs are already installed, 
and suggests Software Update, which doesn't do anything.  Looking in the 
SDKs directory within the Xcode bundle, I see 10.15 but not 10.14, though 
that ought to work and seems to work.  Perhaps the SDK check (which I 
think is separate from the port itself) is overly picky.


Fred Wright


Re: Policy on `obsolete` ports...

2021-11-19 Thread Fred Wright



On Fri, 19 Nov 2021, Perry E. Metzger wrote:

Howdy! As things stand, we don't explicitly say much in our rules about 
whether people can remove obsolete ports after a year even without a port 
maintainer's say-so. We also have circumstances where people leave 
"maintainer" lines in ports that have been put into `obsolete`.

[...]
4. If a subport is set `obsolete`, the usual rules about the maintainer 
needing to consent to touching the Portfile should not apply for removing 
said subport in a year, as the one year is (again) enough time for them to 
think better on it.


Any edit to a port potentially conflicts with something the maintainer(s) 
may be doing.  The only justification for bypassing the normal maintainer 
timeout is when deploying the change is time-critical.  Removing an 
obsolete port that's been in place for months hardly qualifies.


Fred Wright


Re: Help with testing of PR 7074 - python27-bootstrap: stop using gettext-bootstrap

2021-10-28 Thread Fred Wright


On Thu, 28 Oct 2021, Christopher Nielsen wrote:

Folks, this PR has been open since 5/12/2020, and we’d love to finally 
merge it. Of note, it’s also the key dependency preventing merge of PR 
7399, the latter for a long-awaited update to gettext.


In short, we need someone to test a source-only install of clang-3.4 - 
along with all of its dependencies - for 10.6. I’ve done it twice, both 
via a VM, as well as a physical installation. But it would be 
beneficial to have one other person do this too, as it’s critical that 
we get this right the first time.


In terms of what’s needed:
* Setup a fresh MacPorts 2.7.1 installation on 10.6.
* Update the port file for python27, per the PR.
* Run ‘sudo port -s -N install clang-3.4’
* Wait for everything to build

Depending on your 10.6 setup, this is likely to take at least a few 
hours. But apart from that, it’s essentially a hands-off process.


Alternatively, if folks are comfortable with merging the PR as it is - 
with two rounds of testing, albeit from one individual - we can do that 
as well. But personally, I’d feel better if at least one other person 
validates this.


Thoughts?


To incentivize progress, I’ll give a $50 gift card to the first person 
who’s willing to validate this on 10.6.


Any takers?


I ran this on VMs for 10.6 i386, 10.6 x86_64, and 10.6 server x86_64.  The 
good news is that all the builds succeeded.  The bad news is that the list 
of installed ports afterward included gettext-bootstrap in the 64-bit 
cases, though not the 32-bit case.


The total build time was about 39 minutes, though I think the prep took 
longer than that, due to the requirement to start from a fresh install, 
and my wanting to preserve my existing installs in a restorable state,


Fred Wright

Re: upgrade to openssl 3.0.0

2021-10-05 Thread Fred Wright


On Mon, 4 Oct 2021, Christopher Jones wrote:

On 4 Oct 2021, at 5:54 pm, Ken Cunningham  
wrote:

I was hoping to move this along for the overwhelming benefit of the 
license, but TBH the push-back so far is 99.99% negative about moving 
to openssl 3.0.0 this year, so too controversial for me to get involved 
with. I'll sit back for six to twelve months and see what you guys work 
out over the coming year.


All the more reason to follow my suggested migration path then I would 
say, as it allows an openssl30 port to be made available, and those 
ports that wish to can use it via the new PG, but it doesn’t have to 
become the default until some later date.


The PR thread contained (approximately) the following two statements:

1) Unless v3 is the default, nobody will bother to use it.

2) Everybody is really, *really* anxious to move to v3 for the more 
permissive license.


Clearly those two statements are in conflict.

At Google, we had a process called "canarying".  Although technically a 
misnomer, it referred to the "canary in the coal mine" concept, with the 
idea that rolling out new stuff with possible issues should start small, 
so that problems could be found (and hopefully fixed) before they caused 
large-scale breakage.


If the OpenSSL folks were committed to maintaining backward compatibility, 
then none of this nonsense would be necessary, but it's clear that they're 
not.  And there's no reason to assume that they won't pull the same crap 
again in the future (having done so at least twice already), so having a 
mechanism for multiple coexisting OpenSSL "major" versions could have 
long-term value beyond the v3 transition.



TBH I also was quite dubious of making 3.0.0 the default any time ’soon’


I agree, especially if the only end benefit is the license.  Remember, 
OpenSSL is the poster child for why *not* to assume that that newer is 
more secure. :-)


Fred Wright

Re: OpenSSL GPL conflict (was: Re: License GPL-2 conflicts with OpenSSLException)

2021-04-16 Thread Fred Wright



On Fri, 16 Apr 2021, Ryan Schmidt wrote:

On Apr 16, 2021, at 20:33, Fred Wright wrote:


[...]
For that matter, IMO this whole business of the OpenSSL license 
conflicting with the GPL is a bunch of nonsense (at least in the 
typical MacPorts scenario).  Since when does *dynamically* linking 
against an *unbundled* shared library constitute "redistribution" of 
said library? And if anyone tries to claim that merely including the 
bits necessary to link against the library is "redistribution", the 
recent SCOTUS ruling in Oracle v. Google should put that to rest.


Since you're now asking a different question than what I was asking, 
let's retitle the thread.


I'm not aware of the Oracle / Google ruling.


They ruled in favor of Google, meaning that copying Oracle's Java header 
files to use in conjunction with Google's Java implementation did not 
constitute a violation of Oracle's copyright.  Essentially they said that 
APIs aren't copyrightable.


The reason why the OpenSSL license and GPL conflict, unless an exception 
is granted, when the OpenSSL is not part of the operating system, is 
explained here:


https://people.gnome.org/~markmc/openssl-and-the-gpl


Yes, I'm aware of that alleged explanation.  But the key point is that it 
relates to the *redistribution* of OpenSSL, and I contend that merely 
dynamically linking against a non-bundled OpenSSL library does not 
constitute "redistribution" of said library, and hence the alleged 
conflict is inapplicable.


Fred Wright


Re: License GPL-2 conflicts with OpenSSLException

2021-04-16 Thread Fred Wright



On Fri, 16 Apr 2021, Ryan Schmidt wrote:


https://build.macports.org/builders/ports-10.15_x86_64-builder/builds/55652/steps/gather-archives/logs/stdio

"hydrogen" is not distributable because its license "GPL-2" conflicts 
with license "OpenSSLException" of dependency "qt5-qtbase"


Does this make sense or is there an error in the script? Why would GPL-2 
or anything conflict with OpenSSLException? It's just an exception. It 
lifts some restrictions imposed by the GPL. It shouldn't be imposing 
additional restrictions itself, should it?


For that matter, IMO this whole business of the OpenSSL license 
conflicting with the GPL is a bunch of nonsense (at least in the typical 
MacPorts scenario).  Since when does *dynamically* linking against an 
*unbundled* shared library constitute "redistribution" of said library? 
And if anyone tries to claim that merely including the bits necessary to 
link against the library is "redistribution", the recent SCOTUS ruling in 
Oracle v. Google should put that to rest.


Fred Wright


Re: ARM64 Github CI

2021-03-28 Thread Fred Wright



On Fri, 26 Mar 2021, Ryan Schmidt wrote:

On Mar 24, 2021, at 17:50, Joshua Root wrote:


we would have to set up a self-hosted runner.


People have expressed interest in this (for x86_64) every now and then 
over the years, but as of now we have no ability to do this. Software 
would need to be written to allow this to happen. And then we would 
either need separate hardware to run it on, or the software would need 
to be written in such a way that it could coexist with the existing 
buildbot hardware (for example in a non-root MacPorts installation in 
another prefix, but a subset of ports are not able to be built in 
non-root installations).


Does MacPorts play nicely with chroot?

A VM would be another possibility, but chroot would make more sense if it 
works.


Fred Wright


Re: fun fact about ICU +universal

2021-02-14 Thread Fred Wright



On Sun, 14 Feb 2021, Ken Cunningham wrote:


The i386/x86_64 universal build looks fine too, so far, with all the
muniveral stuff out.

Now -- have to see why it was ever put in there in the first place, I guess.


One of the typical sources of trouble with "natural universal" builds is 
architecture-dependent configure checks, whose results are inherently 
forced to be single-valued across architectures.  Since arm64 and x86_64 
have both the same bitness and the same endianness, it might be a 
non-issue for that combination in many cases, even while being technically 
incorrect.  If i386/x86_64 also works, that suggests that bitness isn't an 
issue, but endianness would be if ppc were included.  Alignment is another 
potential issue, but less likely to be in these cases.


Though another problem with this sort of issue is that merely building 
successfully doesn't verify that the code actually works correctly. 
Remember Apple was shipping Intel Macs to end users before they'd fixed 
all the endian bugs.


Fred Wright


Re: change libcxx +emultated_tls to installing a binary please on < 10.7...

2020-12-03 Thread Fred Wright



On Tue, 1 Dec 2020, Ryan Schmidt wrote:

On Dec 1, 2020, at 00:07, Ken Cunningham wrote:

another reasonably simple option would be to have a manual step, and 
copy what happens with apple-gcc42 +bootstrap.


We make up a non-TLS variant of libcxx, call it libcxx +bootstrap, and 
default to installing that if there is nothing in 
/usr/lib/libc++.dylib.


Then the port notes (like apple-gcc42) would tell people what to do:

require the installation of clang-5.0, then run:

sudo port install libcxx -bootstrap

and that gets the binary installed.

From then on, people would just have to

sudo port install libcxx

and they would get the TLS version.


apple-gcc42's +bootstrap variant is not suitable for the buildbot either 
because of that manual step. The solution would be to change it to a 
apple-gcc42-bootstrap subport that installs its files somewhere else, 
and apple-gcc-42 (non-bootstrap) knows how to use those files to build 
itself.


I've wondered about that variant vs. subport issue myself.  I don't think 
there's a need for "somewhere else" as long as it uses a different name. 
MacPorts compilers already use nonstandard names, so that would just 
require using a different nonstandard name.


In fact, I think it would make sense for bootstrap compilers to be 
full-fledged compilers in the sense of having "MacPorts compiler names", 
with the only abnormality being that they shouldn't be considered to be 
compiler candidates by default.  They're probably also not reasonable 
choices for gcc_select or clang_select.


Fred Wright


Re: Shutting down the Atlas port

2020-11-05 Thread Fred Wright


On Thu, 5 Nov 2020, Ryan Schmidt wrote:

On Nov 3, 2020, at 04:52, Vincent Habchi wrote:


Atlas, the software meant to provide scientific computing tools with a 
high-performance assembly-based library has, IMHO, reached its end of life.

My case is this:

• Last developer (unstable) release is more than two years old;
• Last stable release is twice older (2016);
• Consequently, ASM snippets Atlas relies on might not be up to date with the 
latest Intel processors;
• Atlas will prolly never be ported to the new ARM-based architecture Apple is 
about to unveil;
• The method used by Atlas to select the best assembly snippet (a.k.a “kernel”) 
for a given computation task is defeated by the power saving steps included in 
recent versions of MacOS, namely a gradual lowering of the priority of any 
power consuming task. This can lead to erratic, non-reproducible, and 
sub-optimal choices, rendering Atlas pointless;
• Atlas build time from sources varies around 3 to 4 hours, regardless of the 
number of cores available (the selection process is mono-threaded), which makes 
Atlas cumbersome to build, and still more cumbersome to debug, barring on the 
quickest machines;
• Since Atlas is CPU-based, no precompiled binaries should be available: at 
best, they will be suboptimal; at worse, they could contain unknown 
instructions old CPUs would crash on.

For all these reasons, I’m convinced that pulling the plug on Atlas is a good 
idea. Any thoughts?


Can all of the ports that currently depend on atlas be made to work correctly 
without atlas? If so, that would probably be the first step. You can't remove 
atlas while other ports depend on it.


DSDP
R
esmf
gr-specest
itpp
levmar
lua-numlua
nco
psfex
py-numpy
py-scipy
scamp
shogun
shogun-devel
source-extractor
stimfit
sundials
sundials2


That's an incomplete list.  For example:

MacPro:~ fw$ port installed $(port dependents atlas | awk '{print $1}')
The following ports are currently installed:
  arpack @3.7.0_0+atlas+gfortran (active)
  qrupdate @1.1.2_6+atlas+gcc48 (active)
  SuiteSparse_SPQR @2.0.8_0+atlas
  SuiteSparse_SPQR @2.0.9_0+atlas
  SuiteSparse_SPQR @2.0.9_1+atlas (active)

I believe all three of those ports have alternative variants with similar 
functionality, but one has to be careful to distinguish such cases from 
cases where atlas is the only means of providing its functionality.


Fred Wright

Poisoned Savannah Mirror List

2020-08-04 Thread Fred Wright



I was attempting to install gpsd (prior to an update for the new version), 
and ran afoul of this:


--->  Fetching distfiles for gpsd
--->  Attempting to fetch gpsd-3.20.tar.gz from 
http://babyname.tips/mirrors/nongnu/gpsd
--->  Verifying checksums for gpsd
Error: Checksum (rmd160) mismatch for gpsd-3.20.tar.gz
Error: Checksum (sha256) mismatch for gpsd-3.20.tar.gz
Error: Checksum (size) mismatch for gpsd-3.20.tar.gz
***
The non-matching file appears to be HTML. See this page for possible reasons
for the checksum mismatch:
<https://trac.macports.org/wiki/MisbehavingServers>
***

I don't know how "babyname.tips" got into the mirror list, since the name 
suggests that it's completely inappropriate, but it seems to have been 
there for almost three years, due to commit 49ffee556c1a.  Perhaps that's 
been benign until recently, but now viewing that directory gives:


babyname.tips is for sale on GoDaddy Auctions. Click here for more details.

And a bunch of other crap.

Making it worse is that MacPorts questions it based on its being HTML, but 
stores it anyway, doesn't attempt to fetch it from any other mirrors, and 
doesn't attempt another fetch unless you remove it (even though it was 
renamed).  Hence, it completely blocks a successful distfile fetch (unless 
one does it manually).


There are also quite a lot of other discrepancies between the current 
Savannah mirror list in mirror_sites.tcl and the one published at:


https://download-mirror.savannah.gnu.org/releases/00_MIRRORS.txt

Fred Wright


Re: port "cask" -- installing prebuilt binaries

2020-08-04 Thread Fred Wright



On Wed, 29 Jul 2020, Daniel J. Luke wrote:

On Jul 29, 2020, at 9:30 PM, Fred Wright  wrote:

[...]
Personally, I'd prefer the MacPorts approach if it were less stingy 
with the binary archives.  Ideally, one should be *able* to build from 
source, but not be *required* to do so.


How is it stingy? We have binary archives for everything that the 
buildbots can build that the licenses allow us to distribute, right?


Aside from the usual issues with non-default variants and certain old OS 
versions, the main problem seems to be what appears to be an overly strict 
interpretation of "distributable".


As a random example, consider ffmpeg.  The license for ffmpeg shows as 
GPL-2+.  Although GPL prohibits binary-only distributions at the "meta 
level", it does *not* demand that sources be bundled with the binaries. 
It simply says that if they're not, there has to be clear information 
available to the user on how to obtain the sources.  It doesn't even 
demand a working build procedure, just the sources.  It might get a bit 
fuzzy in cases where the sources are patched, in which case it's not 100% 
clear that providing the original source plus the patches is adequate, or 
whether it's necessary to provide the actual patched sources (though the 
two are certainly morally equivalent), but in any case, MacPorts clearly 
does both.  Anyone can get the upstream source archive(s) via "port 
fetch", get the sources in tree form via "port extract", and get the 
patched sources via "port patch".  I don't see how this fails to meet the 
GPL requirements for any MacPorts user.


Now if one were to be really paranoid, one might consider that providing 
binaries on servers that are accessible by means other than MacPorts could 
constitute a GPL violation, due to not having the "clear path to sources" 
that MacPorts provides.  But if that's a concern, it could be easily 
addressed by including a README.sources file in every directory on the 
archive servers, either pointing to the corresponding source on a distfile 
mirror (or directly upstream if necessary), or perhaps just pointing to 
the MacPorts homepage.


And to pick a random sub-example, Debian offers ffmpeg as a binary 
package.


port, by default, will use the binary archives unless you tell it to 
build from source instead.


BTW, on an only mildly related note, I've seen a number of cases lately 
where it successfully fetches a binary archive and than fails to fetch the 
corresponding checksum file.  It seems that it gets only one chance to do 
this, and only from the same mirror where it fetched the archive.  It's 
become common for me to need a "cleanup pass" after doing "upgrade 
outdated" across my VMs, where I manually retry the failed upgrades.


On Tue, 4 Aug 2020, Ruben Di Battista wrote:


There's is one compelling need for having "binary only" install, and that
is for the port "osxfuse", that is currently broken for 10.14+.

There was a discussion about it on the Github project about the choice of
making it close closed source... Nonetheless it would be useful to have it
in order to provide things like fuse file systems and so on.


Hmm, I hadn't heard about that, but I don't run 10.14+ other than for 
testing.


I was involved in fixing some osxfuse bugs right around the time that 
10.10 came out, making kext signature checking mandatory.  On 10.9, it 
warns you about an unsigned kext, but you can tell it to proceed.  The fix 
at the time (for the relevant OS versions) was to have MacPorts fetch the 
binary distribution and extract the signed prebuilt kext from it, while 
building the rest from sources.  This is done starting with 10.9, to avoid 
the dialog box, even though it's not strictly necessary until 10.10+.


It sounds like some more tightening of the security noose has caused 
additional problems for osxfuse.


On Tue, 4 Aug 2020, Ruben Di Battista wrote:


So my take here is to not provide pre-built binaries packages if not
strictly unavoidable, like for the osxfuse project (since it was open
source before).


Huh?  Are you suggesting *disallowing* the use of precompiled binaries? 
That would be crazy.


The amount of both human and computer time that's wasted rebuilding the 
same binaries from the same sources with the same options is humongous.


Another thing that's often overlooked is that installing precompiled 
binaries, especially when signed, is more secure than building from 
sources.  This is because the attack surface of the tools required to 
install binaries is far smaller than the attack surface of the toolchains 
needed to build them.  If you think this is purely hypothetical, consider 
the early Unix hack that implemented a backdoor that didn't appear in any 
source code.



One of the reasons I chose Macports for is the fact it builds its own tree
from source and it ships basically open source only software.


Anyone is

Re: port "cask" -- installing prebuilt binaries

2020-07-29 Thread Fred Wright


On Wed, 29 Jul 2020, Ken Cunningham wrote:


there seems to be demand for replicating the “binary only” installers of 
homebrew cask.

we have a few ports that do that now, and I see more and more coming in.


From the user's perspective, how does that differ from a port that's 
available as a binary archive?  I presume the idea is that it directly 
uses a precompiled binary from the upstream source, but from the user's 
perspective, does it really matter whether it was a binary from upstream 
or a binary from the buildbots?


Or is this for ports where upstream doesn't provide source at all?

Personally, I'd prefer the MacPorts approach if it were less stingy with 
the binary archives.  Ideally, one should be *able* to build from source, 
but not be *required* to do so.


Fred Wright

Re: Distfile Mirror Issues

2020-07-29 Thread Fred Wright



On Wed, 29 Jul 2020, Ryan Schmidt wrote:

On Jul 28, 2020, at 20:29, Ryan Schmidt wrote:

I'll ask them if they want to enable older algorithms or allow 
non-https access. If they want to do neither, I'll configure MacPorts 
to remove that mirror on OS versions that can't connect to it.


They've reinstated old ciphers so now it'll work back to Mac OS X 10.6. 
I'll get master_sites.tcl and archive_sites.tcl updated to pick this and 
other mirrors only on compatible OS versions.


I'm not sure that's important, since the SSL-related failures are fairly 
quick, and having to maintain a compatibility du jour list for mirrors 
versus OS versions is just an added hassle.  The mirrors that are actually 
down are more annoying, since that involves timeouts, but that's not 
something that one would expect to be reflected in a list (except for 
permanent decommisioning).


Fred Wright


Re: Distfile Mirror Issues

2020-07-28 Thread Fred Wright



On Tue, 28 Jul 2020, Ryan Schmidt wrote:

On Jul 27, 2020, at 18:27, Fred Wright wrote:

[...]

DEBUG: Fetching distfile failed: Unknown SSL protocol error in connection to 
jnb.za.distfiles.macports.org:-9824


It appears they've enabled mandatory SSL on this server, which they weren't 
doing before.

They've forgotten to add the MacPorts hostnames to the SSL certificate, 
so we can't connect. I've asked them to add those hostnames.


When I use their hostname I'm able to connect using /usr/bin/curl on OS 
X 10.11 and later but not 10.10 and earlier. This is probably related to 
which encryption algorithms they've decided to support. Which macOS 
version were you using?


I normally use 10.9 (though I have many other versions for testing).  That 
sometimes has issues as discussed in:


https://trac.macports.org/ticket/51516

But I thought the idea was that MacPorts' own mirrors should be configured 
to be compatible with all OS versions that it supports, which is why the 
compatibility issue usually only arises in connection with port 
development (before the disfiles have been mirrored).


Fred Wright


Distfile Mirror Issues

2020-07-27 Thread Fred Wright



While investigating the distfile fetch problem with the util-linux port, I 
noticed that a couple of the mirrors seem to be misbehaving in ways 
unrelated to the missing file:


DEBUG: Fetching distfile failed: Unknown SSL protocol error in connection to 
jnb.za.distfiles.macports.org:-9824

DEBUG: Fetching distfile failed: Failed connect to 
nou.nc.distfiles.macports.org:80; Operation now in progress

The other mirrors report the expected 404.

Fred Wright


Re: Unable to authorize MacPorts Trac for GitHub auth

2020-07-24 Thread Fred Wright



On Fri, 24 Jul 2020, Jason Liu wrote:


It worked when I tried using a different browser. Apparently GitHub doesn't
like the version of Safari that I was using.


Did it give an "unsupported browser" warning?  I get that all the time 
with Chrome 67 (the last version for 10.9).  Most sites that complain 
still work fine, but some things on GitHub actually don't work, including 
some of the PR features.  I have to switch to Firefox in such cases.


Fred Wright


Re: Big Sur will be both 10.16 and 11.0

2020-07-21 Thread Fred Wright



On Tue, 21 Jul 2020, Herby G wrote:


Not sure if this has been posted previously or elsewhere, but as the title
says:

https://eclecticlight.co/2020/07/21/big-sur-is-both-10-16-and-11-0-its-official/


This is bizarre.  The numeric version appears in the system itself, in 
/System/Library/CoreServices/SystemVersion.plist.  Will SYSTEM_VERSION_COMPAT 
somehow mangle the file contents?


Maybe it should have been code-named "Spinal Tap". :-)

Fred Wright


Re: several messages

2020-07-04 Thread Fred Wright
h files and when.


Yes, the basic problem is that older includes don't have the newer 
definitions.  So in general, if you want to support a wide range of OS 
versions, it's best to stick to the numeric constants.



Question 3:

As you can see from the attached file, I am currently creating a wrapper
for AppKit.h. However, in the projects that I'm trying to package for
MacPorts, their code usually uses '#include '; and the
system Cocoa.h, in turn, has a '#import '. Is this going
to be a problem? Is the MacPorts legacy support package able to intervene
and insert its wrapper files even if a project's source code doesn't
directly #include/#import that specific header file, but instead, the
header to be patched is nested somewhere inside a tree/chain of header
#includes?



This will be — something new. Nobody actually knows how well this will work.


It's also worth noting that this particular kind of fix probably only 
needs include additions and no library additions, which is something the 
PortGroup may not be set up to handle.  Of course some ports may need the 
added library for *other* reasons, and that needs to be handled correctly.


It probably might best be something optionally used rather than a 
default in legacysupport, as the opportunity for unexpected wreckage 
seems high. On the other hand, after year or so, if it helps but doesn’t 
break things, it might be defaultable.


If a year or so sounds long, don’t worry. I wrote up the first version 
of legacysupport as “SnowLeopardFixes” in 2016, and it did not get 
really adopted until several years later, after a great deal of 
discussion.


There are still many opinions that it should not be used, and the issues 
/ fixes sent upstream instead, but I think we’re all coming to realize 
that something like legacysupprt is the only way forward if we’re going 
to support older systems.


In general, direct upstream support seems preferable when possible, but 
some upstream developers refuse to support old OS versions, sometimes 
using "security" as a lame justification.


Fred Wright

Re: shellescape proc

2020-06-28 Thread Fred Wright



On Sun, 28 Jun 2020, Ryan Schmidt wrote:

On Jun 27, 2020, at 23:18, Fred Wright wrote:

On Fri, 26 Jun 2020, Ryan Schmidt wrote:

[...]

Looks like neither shellescape nor quotemeta are documented in the guide.


Perhaps with good reason:

MacML @21:03:49.192:: Error: Failed to extract curl-ca-bundle: invalid command name 
"shellescape"


Whoops, didn't realize that it had only just been made available in the not yet 
released MacPorts 2.7.0 for Portfiles to use. Fixed:

https://github.com/macports/macports-ports/commit/6c5276d315e64e99f0a7e57b6cf9940b83e9eab6



This happens on 10.5, 10.8, and 10.12.  The missing binary archives are 
consistent with this.



That's unrelated.


Actually, it probably is related, though for a different reason than I was 
suggesting. :-) Presumably the only reason that the upgrade didn't fail 
for the other OS versions was because of the availability of the binary 
archives.  The fact that those existed suggests that the buildbots are 
running with a prerelease version of base, which is why they worked 
(except when the buildbots weren't working for other reasons).


I'm not convinced that using a prerelease version of base on the buildbots 
is a good idea, though.  What would make more sense is to have CI jobs 
covering both the prerelease and release versions, but to stick to the 
release version on the buildbots for maximum consistency with what end 
users would see.


Fred Wright


Re: shellescape proc

2020-06-27 Thread Fred Wright



On Fri, 26 Jun 2020, Ryan Schmidt wrote:

Somehow I missed that we have a shellescape proc. This is very exciting! 
I've wanted this function for a long time, and I'm just realizing now 
that it exists and that we've had it for 6 years.


https://github.com/macports/macports-base/commit/494a1feafa2ad46c66f9714b760fb5b50ff5dd48

Thank you, Clemens!

We should be using this everywhere, such as in portextract.tcl.

It looks like it is available for use in portfiles too. Portfiles should 
switch to using this when specifying filenames or paths in a system call 
instead of manually quoting them with 'quotes' (or, more usually, not 
doing anything).


Looks like neither shellescape nor quotemeta are documented in the guide.


Perhaps with good reason:

MacML @21:03:49.192:: Error: Failed to extract curl-ca-bundle: invalid command name 
"shellescape"

This happens on 10.5, 10.8, and 10.12.  The missing binary archives are 
consistent with this.


Fred Wright


Re: problem with linking openssl for mailsend

2020-06-17 Thread Fred Wright



On Wed, 17 Jun 2020, Ryan Schmidt wrote:

On Jun 17, 2020, at 17:15, macpo...@parvis.nl wrote:


my development machine is a macmini. the harddisk failed, so i restored time 
machine to a new disk.


Did you try recovering the disk contents with ddrescue?


but, the time machine backup (using directory hardlinks) had many missing 
directories, so most of my development is gone forever.

so it seems i cannot trust time machine, any suggestions are welcome ;-)


Sorry to hear that...

Time machine does indeed use hard links but that's an implementation detail 
that you probably aren't supposed to need to know or care about.

If you lost data that you thought was backed up to time machine, I hope you'll 
send feedback about your experience to Apple.

https://feedbackassistant.apple.com


Which will probably get a "working as intended".

TimeMachine has always secretly excluded certain "system" directories from 
backups, with no GUI option to change that behavior.  Somewhere along the 
line, I found out about this, resulting my adding the following to its 
preferences file:


MacPro:~ fw$ plutil -p /Library/Preferences/com.apple.TimeMachine.plist
[...]
  "IncludeByPath" => [
0 => "/Applications"
1 => "/Developer"
2 => "/Library"
3 => "/System"
4 => "/bin"
5 => "/private"
6 => "/sbin"
7 => "/usr"
  ]
[...]

Note that this is for 10.9.

Fred Wright


Re: make xorg-server a dependency of x11 ports?

2020-05-22 Thread Fred Wright


On Thu, 21 May 2020, Ken Cunningham wrote:

 On Wed, 20 May 2020, Ken Cunningham wrote:

> /i was imagining just one key port — gtk, or some other always installed 
> />/required supporting lib — would do the test. /

 I don't think gtk is remotely close to being an always-required lib for
 X11 apps.

 Fred Wright


Fill in your fav then, with your extensive x11 experience. If there is no 
such library, well then, let's move on.


I suspect that there is, but that it's provided by the system rather than 
by a port.


New users can segfault, and let them sort it out. It's a litmus test I 
suppose, to see if they are worthy.


Another issue is that an X11 app could be installed purely for remote use 
over an X11 connection from another machine.  In that case, the server 
wouldn't be needed at all.  Again, a warning note would be OK, but not a 
hard dependency.


Fred Wright

Re: make xorg-server a dependency of x11 ports?

2020-05-21 Thread Fred Wright



On Wed, 20 May 2020, Ryan Schmidt wrote:

On May 20, 2020, at 21:09, Fred Wright wrote:



Just because XQuartz is "out of date" doesn't mean that it might not be 
adequate in many cases, and I've found that switching from one X11 to 
another involves wrestling with some poorly documented configuration 
stuff, sometimes unsuccessfully.  So forcing someone who already has 
XQuartz (or Apple's X11, for that matter) installed and working to 
switch to the MacPorts xorg-server could inflict unnecessary pain.


XQuartz and xorg-server are the same software, maintained until a few 
years ago by the same person. He has become unavailable due to other 
commitments and has stopped updating XQuartz and contributing to 
MacPorts. Someone else has taken over keeping the MacPorts ports 
updated. But they are the same software and should require no different 
configuration.


I found my notes on switching.  What I'd found, by trial and error (not 
documentation), is that switching requires using some launchctl commands 
to switch the startx.plist, and it's necessary to reboot since logging out 
and logging in is insufficient (in spite of the classification as an 
"agent" rather than a "daemon").  And that procedure didn't work on the 
PowerBook, so there I wound up going back to XQuartz just to have a 
working X11.


Apple's X11 only exists on Mac OS X 10.6 and earlier so it's not very 
interesting to talk about at this point.


Well, some of us run old systems for testing. :-) And I believe Apple's 
X11 was provided at least as late as 10.7 as well.


"could not open display" is a pretty normal error for an X11 app to 
give when it can't find the X11 server. I don't see an entry in our 
FAQ wiki page for this error. We could add one that tells the user how 
to install and set up the xorg-server port.


That's also the error that one gets when there's a perfectly good X11 
server installed but DISPLAY isn't set appropriately, so a distinction 
needs to be made between those cases.  I've also seen a case where a 
missing DISPLAY results in a segfault from Gtk.


macOS sets DISPLAY properly for you, ever since Mac OS X 10.5. So 
talking about a misconfigured DISPLAY isn't very interesting either; it 
would take a concerted effort on the user's part to deliberately set a 
wrong value.


I assure you that I hadn't engaged in any "concerted effort" to screw 
myself when I got burned by this issue.  And there was a time when it 
mattered whether one was launching from xterm or Terminal, though that 
discrepancy seems to have disappeared for no known reason.


The best approach might be simply to have a conditional port note in 
any X11 app, that checks to see whether *some* X11 server is present, 
and gives a warning with an installation suggestion if not.


What I'm trying to avoid is having to add boilerplate code to hundreds 
of ports. So I guess that means yet another portgroup to do this. But


Sure - doing it in a PortGroup makes sense regardless of what it actually 
does.


even that -- editing hundreds of possibly optionally X11-using portfiles 
to insert the inclusion of that portgroup only when X11 is actually 
going to be used -- is a big effort.


Yup.  And this peripherally relates to the +x11 vs. +quartz issue that 
shows up all over the place.  At one point I started going down the rabbit 
hole of switching to +quartz as much as possible to minimize X11 
dependencies, but that proved to be too much of a nightmare.


On Wed, 20 May 2020, Ken Cunningham wrote:

i was imagining just one key port — gtk, or some other always installed 
required supporting lib — would do the test.


I don't think gtk is remotely close to being an always-required lib for 
X11 apps.


Fred Wright

Re: make xorg-server a dependency of x11 ports?

2020-05-20 Thread Fred Wright


On Wed, 20 May 2020, Ryan Schmidt wrote:

On May 20, 2020, at 08:30, Ken Cunningham wrote:

Should xorg-server should be made a dependency of some key x11 
component, so that when people install an x11 application, xorg-server 
installs and it actually works for them “out-of-the-box”.


For example, CherryTree is apparently a very popular gtk application, 
and there was some pressure for the past few years for a Mac version. I 
just stumbled across it recently — took about 15 minutes to write the 
Portfile (and a couple of minor edits after to get it completely right 
:>).


But when people try "sudo port -v install cherrytree” it delivers a 
broken installation due to no xorg-server (see below).


It’s one more step to go back and explain how to install the server, 
but really, as XQuartz.app is really out of date now, and MacOS no 
longer comes with any X11 window server, I think we could just make our 
xorg-server a dependency of some key part and have it installed 
automatically.


Otherwise, it seems like just one more needless headache for people 
that they should not have to worry about, and we’re all about making 
this work “out of the box” for people, right? — or we should be, if we 
want to recruit keep users.


Just because XQuartz is "out of date" doesn't mean that it might not be 
adequate in many cases, and I've found that switching from one X11 to 
another involves wrestling with some poorly documented configuration 
stuff, sometimes unsuccessfully.  So forcing someone who already has 
XQuartz (or Apple's X11, for that matter) installed and working to switch 
to the MacPorts xorg-server could inflict unnecessary pain.




Ken

— example of cryptic error without xorg-server installed, gives people no clue 
what is wrong.


=
So I've tried to run this using port myself and get the following error:

phillips321@Mac13:~$ cherrytree 
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/gtk-2.0/gtk/__init__.py:57: 
GtkWarning: could not open display



"could not open display" is a pretty normal error for an X11 app to give 
when it can't find the X11 server. I don't see an entry in our FAQ wiki 
page for this error. We could add one that tells the user how to install 
and set up the xorg-server port.


That's also the error that one gets when there's a perfectly good X11 
server installed but DISPLAY isn't set appropriately, so a distinction 
needs to be made between those cases.  I've also seen a case where a 
missing DISPLAY results in a segfault from Gtk.


The best approach might be simply to have a conditional port note in any 
X11 app, that checks to see whether *some* X11 server is present, and 
gives a warning with an installation suggestion if not.


Fred Wright

Re: new naming scheme for llvm/clang will cause wreckage fyi

2020-04-20 Thread Fred Wright




On Mon, 20 Apr 2020, Ken Cunningham wrote:

proposed new naming scheme for llvm & clang 10+ as prev discussed. 
explanation why in PR. Up to group, but will affect everything if it 
goes through. I'm fine either way, leave naming pattern as is or change 
it. Once in, no going back...


see <https://trac.macports.org/ticket/60169>


I thought that the naming scheme change involved how the version suffixing 
is handled, but I don't see how that relates to the ticket referenced 
here.


Fred Wright


Re: [macports-ports] branch master updated: cmake: update to 3.17.1

2020-04-14 Thread Fred Wright


On Tue, 14 Apr 2020, Frank Schima wrote:

[...]

-# Cmake is a depedency of clang
+# CMake is a depedency of clang


“dependency” is still spelled incorrectly here. :)

[...]

Was it really necessary to quote the entire 1400-line patch (3300 lines in 
the HTML version) just to point this out?


Fred Wright

Re: How to set @macports up e-mail alias?

2020-03-17 Thread Fred Wright




On Mon, 16 Mar 2020, Ryan Schmidt wrote:




On Mar 15, 2020, at 21:22, Joshua Root wrote:


On 2020-3-16 04:14 , Eric A. Borisch wrote:

It's been a decade since I set it up previously, and we've moved over to
GitHub Authentication in the interim. Any special directions for how to
set up a committer's @macports.org <http://macports.org> account now?


Are we talking about adding a new committer to the project, or an
existing committer who doesn't have a working @macports.org email alias
for some reason?

If the former, they need to apply to PortMgr as documented at
<https://guide.macports.org/chunked/project.membership.html>.

If the latter, email  and the infrastructure team
should be able to help.


Josh's answer is correct if you were asking about how to configure what email 
address your @macports.org alias forwards to.

But if you were asking how to get Git to associate your commits with 
your @macports.org email address, then instructions for that are here:


https://trac.macports.org/wiki/WorkingWithGit#setup


And *those* instructions are probably not correct if you use git for 
anything other than MacPorts, assuming that you don't want to use your 
MacPorts alias for non-MacPorts uses.


There are both global and per-repo settings in git.  In the general case, 
one would use the per-repo settings for the MacPorts-related repo(s). 
It's the same commands without the --global, but while cd'ed to the 
relevant repo(s).


Fred Wright


Re: gcc won't build i386 with our cctools assembler hack

2020-03-06 Thread Fred Wright



On Wed, 4 Mar 2020, Ken Cunningham wrote:

On Tue, 25 Feb 2020, Ken Cunningham wrote:


building i386, gcc 5,6,7,8 misconfigures when our "as" redirects it to
clang for assembly, following our hack in cctools to do that. the gcc
build then fails.

I have not so far been able to overcome this other than:

1. deactivating all clangs 5+ prior to the build, to get the old gas

or

2. defaulting gcc to use --with-as=/usr/bin/as

Having the built gcc forever use /usr/bin/as as assembler would be
awful, so option 1 looks better than 2. but ugh.

I tried many things. gcc is complicated to build when you want it to do
non-standard stuff. There may be some way to make it work...pls chime
in...but I have likely tried it.


You don't make it clear whether this is solely about building gcc itself,
or about building things *with* gcc.


building gcc itself. I assume you have tried recently. It's been broken 
since the cctools assembler hack went in, AFAICT.


Yes and no.  My only i386 "machine" is my 10.5 VM, which currently has a 
bunch of other broken ports.  Except for that, I only build i386 when it's 
universal, which tends to be an enormous rabbit hole in may cases.



The "forever" might just be "until there's a better solution", and it's
hard to see how option 2 would be more awful than creating yet another "X
can't build while Y is active" abomination.


If we build gcc to default to use /usr/bin/as then all those i386's are 
forever sent to that truly ancient assembler. That is pretty awful -- 
who knows how many things will break doing that. It won't even accept 
the -Q flag.


I'm puzzled.  If this is solely about building gcc itself, doesn't that 
mean that the iuse of /usr/bin/as is only inflicted on gcc itself?  Or is 
it something that would propagate to its targets?  If so, does the gcc 
bootstrap process include building gas, and if so, could it be hacked to 
use /usr/bin/as to build gas and then gas for the real build?


If the concern is just for future gcc versions, then that could be in the 
"cross that bridge when we come to it" category.


I don't know what this "cctools assembler hack is", but if that's breaking 
the gcc build, it should probably be fixed not to.  It's best if all ports 
are fully Hippocratic ("first do no harm").


At least if we conflicts-build it, once it is built (a minor 
inconvenience for the systems we're talking about, (10.4 i386, 10.5 
i386, and 10.6 i386), it will use /opt/local/bin/as, which is current, 
and also can redirect to clang for fancier assemblage (that usually 
works still).


Unless precompiled binaries are offered for all variants, "once it is 
built" will often be per-user in practice.  It's getting to the point 
where "upgrade outdated" needs an AI front end.



Fred, you might have built gcc once or twice I suspect.


More than I'd like to have. :-) Especially on slow machines.  The last 
upgrade of gcc7 on the PowerBook took about 15 hours.


Give an i386 build a try and see if you can come up with something. I 
don't love this plan either.


On Fri, 6 Mar 2020, Ken Cunningham wrote:

I am discussing with the gcc darwin lead to see if any other options are 
available.


Maybe that will help.

Fred Wright


Re: gcc won't build i386 with our cctools assembler hack

2020-03-04 Thread Fred Wright



On Tue, 25 Feb 2020, Ken Cunningham wrote:

building i386, gcc 5,6,7,8 misconfigures when our "as" redirects it to 
clang for assembly, following our hack in cctools to do that. the gcc 
build then fails.


I have not so far been able to overcome this other than:

1. deactivating all clangs 5+ prior to the build, to get the old gas

or

2. defaulting gcc to use --with-as=/usr/bin/as

Having the built gcc forever use /usr/bin/as as assembler would be 
awful, so option 1 looks better than 2. but ugh.


I tried many things. gcc is complicated to build when you want it to do 
non-standard stuff. There may be some way to make it work...pls chime 
in...but I have likely tried it.


You don't make it clear whether this is solely about building gcc itself, 
or about building things *with* gcc.


The "forever" might just be "until there's a better solution", and it's 
hard to see how option 2 would be more awful than creating yet another "X 
can't build while Y is active" abomination.


Fred Wright


Re: Index Broken on 10.5

2019-10-19 Thread Fred Wright


On Sun, 20 Oct 2019, Joshua Root wrote:

On 2019-10-20 02:37 , Fred Wright wrote:


Recently I've been seeing this on 10.5 (both x86 and ppc):

MacXS:~ fw$ sudo port upgrade outdated
Warning: No port clang-9.0 found in the index.
Warning: No port llvm-3.7 found in the index.
Warning: No port libcxx found in the index.
Warning: No port clang_select found in the index.
Warning: No port ld64 found in the index.
Warning: No port perl5 found in the index.

I thought the libc++ change in 2.6 wasn't being applied to 10.5, but the
problem seems to be roughly coincident with the new base.  Perhaps the
index generator script was updated incorrectly?


That's probably not actually the index being broken, but a circular
dependency. See <https://trac.macports.org/ticket/59289>.

The issue causing the circular dependency is that all the system
compilers are blacklisted by whatever port you're building, and the
compiler selection is falling back to macports-clang, which doesn't work
out of the box on libstdc++ platforms. This should be fixed in MacPorts
2.6.2.
<https://github.com/macports/macports-base/commit/48ec1123ad66a71d2ca4c1fe5fe51e7f210dc363>


Will that also fix the problem where -p becomes an infinite loop in the 
presence of this error?


Fred Wright

Index Broken on 10.5

2019-10-19 Thread Fred Wright



Recently I've been seeing this on 10.5 (both x86 and ppc):

MacXS:~ fw$ sudo port upgrade outdated
Warning: No port clang-9.0 found in the index.
Warning: No port llvm-3.7 found in the index.
Warning: No port libcxx found in the index.
Warning: No port clang_select found in the index.
Warning: No port ld64 found in the index.
Warning: No port perl5 found in the index.

I thought the libc++ change in 2.6 wasn't being applied to 10.5, but the 
problem seems to be roughly coincident with the new base.  Perhaps the 
index generator script was updated incorrectly?


Fred Wright


Re: pymol crashing under Qt on Catalina

2019-10-15 Thread Fred Wright


On Sun, 13 Oct 2019, Jack Howarth wrote:


It seems one of the issues that have stymied progress there is that scons
isn't python 3 compatible.

https://github.com/SCons/scons/issues/3299


That issue seems to be about Python 3.8, not 3.x.  SCons has been 
compatible with Python 3 since v3, though 3.0.0 had some rough edges.


That being said, in general I'm not in favor of abandoning 2.7, since 
there's still lots of Python code in the world that doesn't work with 
Python 3.



On Sun, Oct 13, 2019 at 9:31 AM Chris Jones 
wrote:

[...]

On 13 Oct 2019, at 1:52 pm, Jack Howarth 

wrote:



  The +python37 variant of pymol runs fine under its Qt interface

on Catalina, however the stock +python27 variant crashes Qt as follows...


Does pymol use any compiled Python extensions?  If so, there are a couple 
of things to be aware of:


1) Python extensions need to be built against the same version of Python 
that they'll run with.  I've seen symptoms ranging from ImportError to 
segfaults when one gets this wrong.  This isn't just about the Python 
version.  For example, I've seen segfaults resulting from switching 
between the MacPorts Python 2.7 and the Apple Python 2.7.


2) Python extensions need source-level differences between Python 2 and 
Python 3, though most likely getting this wrong would result in a build 
failure, not a runtime failure.


Fred Wright

Re: Perl module Privileges::Drop Portfile Fails to Build on Azure

2019-10-12 Thread Fred Wright


On Sun, 13 Oct 2019, Joshua Root wrote:

On 2019-10-13 02:41 , Ryan Schmidt wrote:



On Oct 12, 2019, at 10:20, Steven Smith wrote:


I see that the build is trying to download CPAN stuff


Add the needed dependencies so that that does not happen.


It would be nice if we could somehow prevent that from happening like we
do with python.


Such as some way to make the non-interactive response "n" rather than "y":

Install Module::Build now from CPAN? [y] y

Fred Wright

Re: haskell 7 world -> moving to 8!

2019-09-12 Thread Fred Wright



On Thu, 12 Sep 2019, Ken Cunningham wrote:

On 2019-09-12, at 7:02 PM, Ken Cunningham wrote:


 ghc is only C code.


Well, C code + haskell of course.

Not c++ . It's primarily the c++ exception handling Darwin ABI issue 
with PPC llvm that limits releasing clang-5+ for PPC to the wild.


At Google, C++ exceptions are considered unreliable enough to be 
completely forbidden, and that's on x86.


Fred Wright


Screwy Fetch Behavior

2019-09-03 Thread Fred Wright



A while back, I noticed that MacPorts was sometimes trying to fetch patch 
files from distfile mirrors.  At the time, it only applied to some ports 
that I keep privately modified, so it was just in the "should look into 
this some time" category.  But now it's biting me in attempting to update 
the ntpsec port.  As usual, I started by just updating the version number 
in the Portfile and doing a "sudo port fetch" (to check the fetch and then 
check the signature on the resulting file).  But it now (unsuccessfully) 
attempts to fetch the patchfile from the distfile mirrors, and then gives 
up without fetching the real distfile at all.  I don't think base has 
changed since the last time I successfully did this, so perhaps there's 
something in the ports tree that changed the fetch behavior.


I don't know if this only applies to locally modified portfiles or not, 
but even if it does, it blocks updating the port.  What's causing this and 
how do I get around it?


Fred Wright


Re: How to enforce a particular Python version during port build

2019-09-01 Thread Fred Wright



On Sun, 1 Sep 2019, Clemens Lang wrote:

On Sat, Aug 31, 2019 at 06:45:09PM -0700, Blair Zajac wrote:

The problem could be scons. It looks like


Re-iterating on that, the problem is likely SCons, because it will
filter all environment variables and thus ignore any settings you do in
configure.env, build.env, destroot.env, unless you patch the SConstruct
file specifically to not remove them from its environment.


True, but the only environment variable at issue was PATH, and changing 
that is almost never the right way to fix a port build problem, since it's 
best to decouple port builds from PATH as much as possible.  I already 
suggested two possible alternatives in this case.


Fred Wright


Re: How to enforce a particular Python version during port build

2019-08-31 Thread Fred Wright


On Sat, 31 Aug 2019, Blair Zajac wrote:


The problem could be scons. It looks like

https://github.com/mongodb/mongo/blob/r4.2.0/SConstruct

requires Python 3.5 but Scons runs against Python 2.7:

$ head /opt/local/bin/scons
#!/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7


Well-designed build procedures allow the Python version to be specified 
distinctly from the SCons Python version.  See if this build procedure has 
some sort of "target python" option.



So try changing python.default_version in scons’ portfile and rebuilding it.


Even if it's necessary to run SCons with the target Python to get around a 
dumb build procedure, there's no reason to alter the SCons installation. 
Just invoke SCons with the desired Python.  I.e., instead of:


scons 

use:

$/bin/pythonX.Y scons 

Fred Wright

Re: Preparing for 2.6.0 beta

2019-08-24 Thread Fred Wright




On Sat, 24 Aug 2019, Joshua Root wrote:


I think we're pretty close to being ready to make a new stable branch
and tag a beta. Clemens is going to make one more change related to
Xcode checking; are there any other changes that really need to go in
before the beta?


Though I wouldn't call a 16-month-old ticket "urgent", it might be nice if 
someone could look at:


https://trac.macports.org/ticket/56437

This might become more significant with the libcxx churn.

Fred Wright


Re: New MacPorts ports database site

2019-08-23 Thread Fred Wright



On Fri, 23 Aug 2019, Chris Jones wrote:

On 23/08/2019 10:54 am, Dmitri Zaitsev wrote:

 I find the list of hundreds qt53-* with (nearly) identical description
 overwhelming and the grouping doesn't seem to work for them either.

 The breadcrumb numbers at the top give me no clue where to click next to
 skip that long list and 83 pages to click through feels quite frustrating
 :)

 I generally prefer infinite scrolls, where I can quickly scroll all the
 way down and then locate the keywords by search. There had been few ux
 designer blogs in the past in support of paginations, whose arguments I
 never understood, but they seem to be largely gone by now.


I don't think making the number per page 'infinite' is a good idea, certainly 
not as the default/only option.


What would be nice is to make the number per page, currently 100, selectable 
by the user. Perhaps then offer 'large number' as an option. But the default 
should be relatively small to prevent potential browser overloading


I expect that what he was referring to is the arrangement that some 
websites use where the page is sized dynamically in response to scrolling. 
Though the naive implementation is nonfunctional if Javascript is 
disabled, which isn't ideal.


Fred Wright


Re: accessing the notes of the active port version

2019-07-16 Thread Fred Wright



On Tue, 16 Jul 2019, Clemens Lang wrote:


On Tue, Jul 16, 2019 at 07:17:02PM +0200, Ren? J.V. Bertin wrote:

This just came up: is there a quick way to get the notes for the
active version of a port?


$> port notes $portname

This will use the notes from the current state of the ports tree. I
don't think we have a simple way to use the notes from the Portfile
stored when installing a port.


Another problem (perhaps more easily fixed) is that if the notes are 
variant-dependent, then the notes reported by the above command will be 
based on the default variants rather than the active variants.  To avoid 
this, one needs to determine the installed variants and then include them 
in the 'notes' command.


Fred Wright


Re: Errors when changing cmake build directory

2019-05-02 Thread Fred Wright



On Thu, 2 May 2019, Michael Dickens wrote:


Why not leave the build directory alone & let the cmake 1.1 PG handle it? Most 
CMake-based ports can handle out-of-source
building these days, and that's the default for the cmake 1.1 PG, and the 
default setting here should work for the vast majority
of cmake-based ports.


But note that CMake's own default is *not* to build out-of-source (with 
extra steps required when you want to), and not all projects build 
correctly out-of-source.  So the PG default behavior is inconsistent with 
CMake itself, as well as just plain not working in some cases, and the 
poor discoverability of the option to change that (as well as the change 
in the default from 1.0) makes that default even more undesirable.


Also note that the benefit of out-of-source builds is negligible in the 
MacPorts environment, anyway.


Fred Wright


Re: GSoC 2019 [Collect build statistics]

2019-03-24 Thread Fred Wright



On Sun, 24 Mar 2019, Mojca Miklavec wrote:

On Sat, 23 Mar 2019 at 17:49, Craig Treleaven wrote:


I see no reason to report inactive ports.


Neither do I. I would remove those as I already mentioned in an earlier email.


But in the spirit of lossless collection, those should be included and 
flagged as inactive, so that what to do with them can be decided later.


There are different reasons for inactive ports.  Sometimes they're just 
leftovers from upgrades without -u.  But sometimes the user is 
intentionally keeping inactive ports, to permit switching fairly quickly 
via activate/deactivate, either to keep multiple variants or to keep 
conflicting ports.


On Sun, 24 Mar 2019, Craig Treleaven wrote:

I?m not familiar with the 2015 work.  ?port? now returns zero for 
successful completion.  Have we considered having port set a return code 
that indicates the general class of an unsuccessful operation?  For 
example, we have 8 port phases defined (fetch through destroot).  We 
could return -1 through -8 to indicate failure in a particular phase. 
More to the point, we could return a specific value for failures such as 
when active_variants determines that a required variant is not 
installed.  Similarly, if the port is not supported on a particular OS 
configuration another specific code could be returned.  I don?t 
contribute to base but that would seem to be a minimally invasive 
modification.


Speaking of return codes, it's not very helpful that "upgrade outdated" 
returns error status if nothing is outdated. :-)


Fred Wright


Re: Auto-Detection of Build Dependencies, Gsoc 2019

2019-03-24 Thread Fred Wright



On Tue, 19 Mar 2019, Clemens Lang wrote:


There are a couple of static rules (which wouldn't change for this task)
and a dynamic component that checks which port installed the file that
the installation is trying to access. At the moment, we allow requests
if the currently built port depends on the port that provides the file
and deny access otherwise.


BTW, the current trace mode is riddled with false positives, so it's 
nowhere near being usable as authoritative information on dependencies.  A 
lot of them might be explained by incorrect dependency analysis, though 
some are just silly, like complaining about "/opt".


This is completely orthogonal to performance issues, of course.

Fred Wright


Re: trying to understand the --no-exec activate option (on by default?)

2018-11-29 Thread Fred Wright



On Thu, 29 Nov 2018, Ren? J.V. Bertin wrote:

The default for this option should be OFF IMHO; there are also ports 
which do important things in the post-activate; the lldb ports remind 
the user that an executable needs to be code-signed for instance. 
Evidently this has to be done each time the port is (re)activated.


In the particular case of code signing, would it be possible to do that in 
the post-destroot phase, so that the signature would remain across 
activations and deactivations, or does the signature mechanism defend 
against that (even though a verbatim copy of signed code should still be 
signed)?


Fred Wright


Re: Issues with clock_gettime(CLOCK_REALTIME, ) pre macOS 10.13

2018-10-27 Thread Fred Wright
riable-rate clock to standard units, it's necessary to know 
not only the current scale factor, but also the last time that the factor 
changed and what the correspondence was at that time.  Since that 
information isn't provided, either the scale is actually constant or the 
API is deficient.  Hopefully it's the former.



My clock_gettime() replacement for ntpsec is defined directly in a header 
file as an inline function.  Although it currently only supports 
CLOCK_REALTIME, it does include a switch() on the clock_id for 
extensibility.  A significant advantage of the inline approach is that 
whenever the clock_id is a compile-time constant (as is almost always the 
case in real use cases), the optimizer can completely remove the switch() 
and degenerate into just the inline code needed (quite simple for 
CLOCK_REALTIME) in the relevant case.  And of course it also avoids 
adding new link-time dependencies.


Fred Wright


Re: RFC: Remove old Python versions

2018-10-21 Thread Fred Wright



On Sun, 21 Oct 2018, Chih-Hsuan Yen wrote:


I'd like to remove old Python version - python{24,25,31,32,33}. I see no
ports depend on python{31,32,33} and no one maintains them, but those
ports are still kept for while. Is there a reason for not deleting them?


Some of us like to test Python code against as many versions as possible. 
It's bad enough to have to maintain locally patched versions of a few 
Python-related ports just to expand the version lists, without having the 
Python versions themselves disappear.


My own philosophy is never to drop anything without a sound technical 
reason, rather than just being "too old".  If the same zeal for 
eliminating Python versions were applied to OS versions, MacPorts wouldn't 
run on anything older than 10.12.


Checking port dependents is inadequate, since it doesn't cover 
"dependents" based on user interest.  If one were to remove all ports 
without dependents, and iterate, there would be no ports at all. :-)


Fred Wright


Re: [macports-ports] branch master updated: py-protobuf3: fix build on older systems

2018-05-25 Thread Fred Wright

On Fri, 25 May 2018, Ryan Schmidt wrote:
> On May 25, 2018, at 11:04, Ken Cunningham wrote:
>
> > On 2018-05-25, at 8:38 AM, Ryan Schmidt wrote:
> >
> >> If this is supposed to help 10.6...
> >>
> >>
> >>> +@@ -197,6 +197,8 @@
> >>> +   v = float('.'.join(v.split('.')[:2]))
> >>> +   if v >= 10.12:
> >>> + extra_compile_args.append('-std=c++11')
> >>> ++extra_compile_args.append('@@MACPORTS_STDLIB@@')
> >>> ++extra_compile_args.append('@@MACPORTS_EXTRAARG@@')
> >>
> >> ...why is it inside an if statement that's for 10.12 and later?
> >
> >
> > Yeah, their logic for the test must be busted.  My guess is that testing 
> > for 10.12 passes everything 10.1 and above,
>
> Right.
>
> > but I defer to someone who can read python. Can you fix that v.float () 
> > business for them?
>
> I've never looked at this code before; I won't presume to know what the 
> correct fix would be.

You don't want to use float() when the '.' is a delimiter rather than a
decimal point.  Python is perfectly capable of comparing lists directly,
but:

1) The lengths of the lists matter, so you may need either padding or
truncation to make the comparison correct.

2) Comparing lists of strings uses a "naive" comparison of the elements.
If they're known to be purely numeric, that can be fixed with int().

In this particular case, you should be able to replace the first two
lines with:

if map(int, v.split('.')[:2]) >= [10, 12]:

Fred Wright


Re: Fixing a bunch of ocaml issues at once

2017-11-18 Thread Fred Wright

On Sat, 18 Nov 2017, Perry E. Metzger wrote:

> So https://github.com/pmetzger/macports-ports/tree/ocaml-update
> has a bunch of fixes that bring the ocaml port up to 4.05, create a
> separate package for ocamlbuild (which was spun out of the main ocaml
> after the last version in macports), updates camlp4 and camlp5 as
> needed, fixes our very backrev findlib (without which you can't build
> a bunch of things), and as a sort of test, brings the coq port up to
> 8.7.0 (it was languishing) -- it builds fine with all these updates
> in place.
>
> My problem is that I didn't really know what I was doing and my
> commit messages on my ocaml-update branch are not really up to
> standard. I realized this when I tried doing a pull request and saw
> the form asked if they were.
>
> What should I do from here to get this stuff committed?

You can update the commit messages with interactive rebase (git rebase
-i), and then force-push the updated branch to your fork.

If you do a "git rebase -i master ocaml-update", it will put you in the
editor with a list of the new commits (in *forward* chronological order),
each prefixed by 'pick'.  Replace 'pick' by 'reword' for any commit whose
message you want to update, then save and quit.  It will then put you in
the editor for the first commit message to be updated.  Update the text,
save, and quit, repeating for all the commits you flagged.  Then
force-push the branch ("git push -f") to your fork.

If you only need to update the single most recent commit on the current
branch, you can just use "git commit --amend" instead of interactive
rebase.

There does seem to be a bug in GitHub related to this sort of thing,
though.  Recently I created a pull request, and in the process noticed a
minor problem with the commit message.  Since there's no 'Cancel' button
for PRs, I just closed the page.  After updating and re-pushing the
commit, the PR page came up with the *old* commit message, presumably due
to some unwanted cacheing.  I worked around it by going to the Compare
page and then using the PR button from there.  Though I expect that
merging the PR would have used the correct commit message, and only the PR
text would have been incorrect.

Fred Wright


Re: Can anybody take a look at the buildbot?

2017-05-02 Thread Fred Wright

On Mon, 1 May 2017, Leonardo Brondani Schenkel wrote:

> Some time ago I submitted a new port (ntpsec) which failed to build on
> pre-10.12 versions:
> https://trac.macports.org/ticket/53928
>
> I reported that to upstream and the conclusion from Eric S. Raymond was
> that it's a buildbot problem:
> https://gitlab.com/NTPsec/ntpsec/issues/261#note_27103442

It's not a buildbot problem.  The clock_gettime()/clock_settime() fallback
is completely broken, and thus ntpsec doesn't work on any OS that doesn't
have those functions, including macOS <10.12.  I have a fix for ntpsec
which I haven't submitted yet since I haven't tested it as well as I'd
like, but I'm in the middle of a major move right now and don't have time.

Fred Wright


2.4.0 Annoyance

2017-01-27 Thread Fred Wright

In doing a selfupdate followed by an upgrade outdated, I got this:

[...]
--->  Computing dependencies for wine
The following dependencies will be installed:
 gstreamer1
 gstreamer1-gst-plugins-base
 libpcap
Continue? [Y/n]:
[...]

While asking about installing dependencies is a good thing in general, in
this case the dependencies were already installed (which is probably
almost always the case with "upgrade outdated").

In this case, the "upgrade" of the dependencies wasn't even due to new
versions - it was just a change in the "universal" variants.  Although
asking before switching variants might make sense, in that case it should
be more informative about what it's actually proposing to change.

Fred Wright


Re: [macports-base] tag release_2_3_4 deleted (was d92ac26)

2017-01-15 Thread Fred Wright

On Sun, 15 Jan 2017, Ryan Schmidt wrote:
> > On Jan 15, 2017, at 07:22, Rainer Müller <rai...@macports.org> wrote:
> >
> > Rainer Müller (raimue) pushed a change to tag release_2_3_4
> > in repository macports-base.
> >
> > *** WARNING: tag release_2_3_4 was deleted! ***
> >
> > was d92ac26  merge https://trac.macports.org/changeset/140724 from 
> > trunk:  2.3.4 release date
> >
> > The revisions that were on this tag are still contained in
> > other references; therefore, this change does not discard any commits
> > from the repository.
> >
>
>
> What happened here?

Probably the removal of a misnamed tag.

> We still seem to have a "v2.3.4" tag in the repo like we should.

But not a "release_2_3_4" tag.

Fred Wright


Re: Central portindex'ing functional at the moment?

2016-12-28 Thread Fred Wright

On Thu, 29 Dec 2016, [windows-1252] Marko Käning wrote:
> On 29 Dec 2016, at 00:05 , Mojca Miklavec <mo...@macports.org> wrote:
[...]
> > Today I'm exercising a somewhat weird practice. I collect just a small
> > number of symlinks to macports-ports from git in my local tree. I'm
> > not too happy about this though, adding and removing symlinks is
> > sometimes a bit annoying.
>
> I have the full clone with all ports. The initial portindex run takes ages, 
> subsequent
> ones are then much faster.
>
> Yet, this makes my default rsync’ed port tree unusable, as the git-clone is 
> shadowing it
> as a whole.
>
> I didn’t want to go for the symlink juggling… But then I seem to have to live 
> with the
> fact that I can forget about
>
>$ sudo port selfupdate && sudo port upgrade outdated
>
> and rather always do a
>
>$ git pull upstream master && portindex && sudo port upgrade outdated

I've been using the symlink approach, even in the subversion days.  It
just means having to create or remove a symlink whenever a given port
changes between locally modified and not locally modified.  It would
probably be possible to create a script to manage the symlinks
automatically, but it hasn't seemed worth the trouble.

The local mods are all on a branch that can be trivially rebased except
when there are actual conflicts.  I'd never use "pull" as an update
mechanism for this.

With this approach, all content except the locally modified ports comes
from rsync as usual, and the local portindex only contains the modified
ports.  The usual selfupdate/upgrade works fine, and mostly doesn't care
whether the git repo is up to date.

Fred Wright