Page MenuHomeFreeBSD

devel/arcanist: Add slave to avoid conflicting with archivers/arc
ClosedPublic

Authored by crees on Apr 16 2019, 9:11 AM.

Details

Summary

archivers/arc predates arcanist by decades, and security/clamav installs it by default, which causes a conflict with arcanist. Not installing the symlink solves this problem, and making an alias for arc in shell configuration gives a useful solution, given that it's unlikely that archivers/arc is useful in any interactive session.

Test Plan

I have installed this flavour and it works fine. Package creation and orphans work well

Diff Detail

Repository
rP FreeBSD ports repository
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

crees created this revision.Apr 16 2019, 9:11 AM
crees updated this revision to Diff 56238.Apr 16 2019, 9:13 AM

Just realised, the CONFLICTS line should have [0-9] in it.

crees updated this revision to Diff 56239.Apr 16 2019, 9:15 AM

Nope, CONFLICTS has changed its behaviour, so remove the globs entirely.

grembo requested changes to this revision.Apr 16 2019, 11:52 AM

I like the idea of this - unfortunately this approach kills the existing flavours:

# pkg search arcanist
arcanist-php71-20181231_1      Command line interface for Phabricator
arcanist-php72-20181231_1      Command line interface for Phabricator
arcanist-php73-20181231_1      Command line interface for Phabricator

After applying the patch, building those flavours isn't possible any more:

# poudriere testport -j112amd64 -p builder devel/arcanist@php71
[00:00:00] Creating the reference jail... done
[00:00:01] Mounting system devices for 112amd64-builder
[00:00:01] Mounting ports/packages/distfiles
[00:00:01] Using packages from previously failed build
[00:00:01] Mounting packages from: /usr/local/poudriere/data/packages/112amd64-builder
[00:00:01] Copying /var/db/ports from: /usr/local/etc/poudriere.d/112amd64-builder-options  
/etc/resolv.conf -> /usr/local/poudriere/data/.m/112amd64-builder/ref/etc/resolv.conf
[00:00:01] Starting jail 112amd64-builder
[00:00:01] Ports supports: FLAVORS SELECTED_OPTIONS
[00:00:02] Error: Invalid FLAVOR 'php71' for devel/arcanist
[00:00:02] Cleaning up
[00:00:02] Unmounting file systems

An alternative approach would be to create a meta port that only does the symlink (thus, splitting the port in two) - similar to what lang/python2 does.

This revision now requires changes to proceed.Apr 16 2019, 11:52 AM

Yeah, I wondered what would happen about the php flavours :(

I'll look into the meta port idea, seems a good one! Or perhaps just a slave? They'll have the same effect.

Yeah, I wondered what would happen about the php flavours :(
I'll look into the meta port idea, seems a good one! Or perhaps just a slave? They'll have the same effect.

Just make sure to take the fact that devel/phabricator also depends on devel/arcanist into account.

So, assuming that phabricator doesn't need the arc binary in PATH (something to be verified), we would ideally have a port devel/arcanist-dep (or maybe a better name), which phabricator can depend on and a port called devel/arcanist, which also depends on arcanist-dep(/base/whatever) and brings in the symlink. So "normal" users would be able to install arcanist by calling pkg install arcanist.

mat added a comment.Apr 18 2019, 12:56 PM

You are trying to coerce subpackages into flavors, so no.

linimon retitled this revision from Add flavour to avoid conflicting with archivers/arc to devel/arcanist: Add flavour to avoid conflicting with archivers/arc.Apr 19 2019, 4:57 PM
crees updated this revision to Diff 56599.Apr 24 2019, 7:25 PM

Create slave port -lib to install everything except the symlink, and change devel/arcanist to only install the bin symlink

I think this does as expected. My poudriere instance is currently out of order, so I'm not able to test it yet, but is there anything you'd like to change about this before I get testing?

Harbormaster completed remote builds in B23875: Diff 56599.
crees retitled this revision from devel/arcanist: Add flavour to avoid conflicting with archivers/arc to devel/arcanist: Add slave to avoid conflicting with archivers/arc.Apr 25 2019, 12:39 AM
crees updated this revision to Diff 56616.Apr 25 2019, 12:52 AM

NO_FETCH isn't actually a thing of course.

mat requested changes to this revision.Apr 30 2019, 1:52 PM

Could you please not rename the port so that pkg upgrade keeps on working.

This revision now requires changes to proceed.Apr 30 2019, 1:52 PM
mat added a comment.Apr 30 2019, 3:50 PM
In D19920#432640, @mat wrote:

Could you please not rename the port so that pkg upgrade keeps on working.

Mmm, I just saw that the SLAVE_PKGNAMESUFFIX was only set in the "lib" case.

devel/arcanist-lib/Makefile
45 ↗(On Diff #56616)

Instead of this, globally set:

PLIST=  ${.CURDIR}/pkg-plist
52 ↗(On Diff #56616)

Could you please use ${RLN} instead of ${LN} -sf.

grembo added a comment.EditedMay 2 2019, 7:20 PM
In D19920#432741, @mat wrote:
In D19920#432640, @mat wrote:

Could you please not rename the port so that pkg upgrade keeps on working.

Mmm, I just saw that the SLAVE_PKGNAMESUFFIX was only set in the "lib" case.

@mat Not sure if you received my email that described that (no feedback)

Anyway, besides what @mat said (setting PLIST) I would prefer to to simplify the structure a bit (less details about devel/arcanist in the master port), but frankly, I could also do these changes later on myself as the maintainer, as they're non-functional.

@crees I'm grateful you picked this one up, thanks!

crees updated this revision to Diff 56982.May 2 2019, 7:56 PM

OK, Mat's feedback incorporated.

Hope this is OK now?

grembo accepted this revision.May 2 2019, 8:04 PM

Assuming this builds correctly in poudriere (didn't test myself). Thanks!

Would be great to do automatic poudriere runs using harbormaster for reviews of ports.

mat removed reviewers: portmgr, mat.May 13 2019, 11:09 AM

no flavors any more.

This revision is now accepted and ready to land.May 13 2019, 11:09 AM
This revision was automatically updated to reflect the committed changes.