Opened 2 years ago

Closed 2 years ago

Last modified 2 years ago

#65716 closed defect (fixed)

gramps: Failed to destroot gramps: app.executable gramps does not exist

Reported by: ryandesign (Ryan Carsten Schmidt) Owned by: mascguy (Christopher Nielsen)
Priority: Normal Milestone:
Component: ports Version: 2.7.2
Keywords: Cc: dbevans (David B. Evans)
Port: gramps

Description

gramps doesn't destroot:

Error: Failed to destroot gramps: app.executable gramps does not exist

https://build.macports.org/builders/ports-12_x86_64-builder/builds/39400/steps/install-port/logs/stdio

Change History (5)

comment:1 Changed 2 years ago by mascguy (Christopher Nielsen)

Cc: dbevans added; mascguy removed
Owner: changed from dbevans to mascguy

Weird, a symlink should be created in ${prefix}/bin, to the python script. And indeed, that's occurring for me locally, when installing. (Tested both with and without trace mode, and it's properly created in both cases.)

$ port installed gramps
The following ports are currently installed:
  gramps @5.1.5_1+python39 (active)

$ port contents gramps | ggrep "/opt/local/bin/"
  /opt/local/bin/gramps

$ ll /opt/local/bin/gramps
lrwxr-xr-x  1 root  admin  -   62B Aug 24 07:39:09 2022 /opt/local/bin/gramps -> ../Library/Frameworks/Python.framework/Versions/3.9/bin/gramps

Worst-case, I'll update the portfile to create the symlink, if needed. But first I'll take a look at the python build, to see if we're missing something.

comment:2 Changed 2 years ago by ryandesign (Ryan Carsten Schmidt)

The question is: does that symlink exist when the app portgroup is looking for it? I think it does not. What creates the symlink? I think it's the post-destroot block created by the python portgroup. The problem is that post-destroot blocks run in the order in which they're created. The app portgroup's post-destroot block is created the moment the app portgroup is included, so it runs first. The python portgroup's post-destroot block is created the moment python.versions is set, which is after the app portgroup is included.

You could tell the app portgroup that the executable is wherever that symlink would point to.

Last edited 2 years ago by ryandesign (Ryan Carsten Schmidt) (previous) (diff)

comment:3 in reply to:  2 Changed 2 years ago by mascguy (Christopher Nielsen)

Replying to ryandesign:

The question is: does that symlink exist when the app portgroup is looking for it? I think it does not. What creates the symlink? I think it's the post-destroot block created by the python portgroup. The problem is that post-destroot blocks run in the order in which they're created. The app portgroup's post-destroot block is created the moment the app portgroup is included, so it runs first. The python portgroup's post-destroot block is created the moment python.versions is set, which is after the app portgroup is included.

Ideally the app pg should use a callback, to delay such setup until after previous inclusions. Are you aware of any ports/scenarios that might be problematic, if we were to go that route?

comment:4 Changed 2 years ago by Christopher Nielsen <mascguy@…>

Resolution: fixed
Status: assignedclosed

In 1ff27a89d57f37c9b28272681b8f2da90b48a9d3/macports-ports (master):

gramps: set python.versions; delay app pg inclusion
Fixes: #65716

comment:5 Changed 2 years ago by Christopher Nielsen <mascguy@…>

In 6af0398e413b36ae4063fee7777dd1584328ebed/macports-ports (master):

gramps: remove python36 variant
See: #65716

Note: See TracTickets for help on using tickets.