Index | Thread | Search

From:
David Uhden Collado <daviduhden@gmail.com>
Subject:
Re: [IMPROVEMENT] patch survey directly in devel/github-cli
To:
stu@spacehopper.org
Cc:
ports@openbsd.org, kn@openbsd.org
Date:
Tue, 29 Sep 2026 13:25:00 +0000

Download raw body.

Thread
Stuart Henderson wrote:
> On 2026/09/28 16:09, David Uhden Collado wrote:
>> It should also make future github-cli updates easier. When the survey
>> dependency changes, the patches can be tested directly against the new
>> upstream version and refreshed or removed if they are no longer needed,
>> without having to maintain and update a separate fork first.
> 
> survey is abandoned upstream so this isn't really a consideration.
> (and if it wasn't abandoned we'd probably be able to get this fix
> committed upstream anyway..)
> 
>> +post-extract:
>> +	${UNZIP} -oq ${DISTDIR}/go_modules/${SURVEY_MOD}/@v/${SURVEY_V}.zip \
>> +	    -d ${WRKDIR}/survey-extract
>> +	mv ${WRKDIR}/survey-extract/github.com/AlecAivazis/survey/v2@${SURVEY_V} \
>> +	    ${WRKDIR}/survey
>> +	rm -rf ${WRKDIR}/survey-extract
>> +
>> +post-patch:
>> +	patch -d ${WRKDIR}/survey -p0 \
>> +	    < ${FILESDIR}/patch-survey_terminal_runereader_posix_go
>> +	patch -d ${WRKDIR}/survey -p0 \
>> +	    < ${FILESDIR}/patch-survey_go_mod
> 
> it would indeed be nice to have a proper way to patch go modules
> and, if we had that, moving from the fork to port patches would make
> sense. that would be useful for much more than just github-cli.
> but this approach with ${FILESDIR} and these custom targets isn't
> really a sustainable properly-integrated way to do this.

I agree. In this particular case, if survey is abandoned upstream, then 
the argument about making future upstream updates easier does not really 
apply.

More generally, though, I think it would be useful to improve the ports 
infrastructure for languages with their own package managers, and 
perhaps make the different modules behave a bit more consistently.

For example, the Go module can generate its .inc files without mixing 
unrelated output into the generated data. With Cargo, the equivalent 
workflow is less clean and often requires working through temporary 
files rather than writing the generated information directly where it 
belongs. Cabal is further behind in this regard, since there is no 
equivalent mechanism in the ports infrastructure at all; you currently 
need an external tool such as cabal-bundler, and parts of that workflow 
can end up using and modifying the user's home directory instead of 
keeping everything contained under places such as /usr/obj or 
/usr/distfiles.

So I agree that the custom ${FILESDIR} plus post-extract/post-patch 
approach is not a good general solution. A properly integrated mechanism 
for patching vendored Go modules would be much better, and I think there 
is also a broader opportunity to make the Go, Cargo, and Cabal module 
workflows more homogeneous where that makes sense.