> On 2020-12-31, at 10:49, Janosch Peters via macports-users 
> <[email protected]> wrote:
> 
> [1] 
> https://github.com/Janosch/macports-ports/blob/new-port-macpass/security/MacPass/Portfile

Just some comments on the port:

Line 13 (name) is not necessary because github.setup sets the name (second 
argument).

Does the build {} step actually download deps with Carthage? (I am fairly 
certain it does). This should be avoided even if it is difficult. If Carthage 
is downloading dependencies, then a fully offline installation is impossible 
with this port (think of users who suddenly have poor network conditions who 
still have distfiles on their machine and need to reinstall). For Rust and Go 
ports, we set the Portfile to download everything in the fetch phase and then 
build a compatible environment. This allows offline installation and avoids 
potential security issues. I have a Portfile that does a similar thing for an 
Xcode project with submodules: 
https://github.com/Tatsh/ports/blob/master/aqua/Fanny/Portfile#L17

You can do that, or you can make a separate port for each dependency (or 
subports in your port to keep it all in one file). My mas port uses separate 
ports for dependencies and depends on Commandant, which would normally come via 
Carthage: https://github.com/Tatsh/ports/blob/master/sysutils/mas/Portfile, 
Commandant: https://github.com/Tatsh/ports/blob/master/devel/Commandant/Portfile

Probably should add to xcode.destroot.settings:

CODE_SIGN_IDENTITY=- CODE_SIGN_STYLE=Manual ENABLE_HARDENED_RUNTIME=NO

Last one is for future proofing in case the project decides to enable it, which 
it probably will. With the way xcodebuild runs it's not possible to build with 
that option because it requires signing.

The fetch.type git should be removed as you should set the submodules to be 
downloaded in the fetch phase (and remove post-fetch phase). See 
https://github.com/Tatsh/ports/blob/master/aqua/Fanny/Portfile#L17 for an 
example. Then in the pre-configure or some other phase (post-extract is 
probably most appropriate), move the other extracted contents to the 
appropriate place in the source.

The build {} with 'carthage bootstrap' should no longer be necessary once these 
changes are made. And your issue with the home directory not being writable 
would be resolved since you do not need to run the carthage command (and you 
can remove the dependency too).

Your comment about being able to switch to distfiles once a release is made is 
not correct if you are referring to submodules. Tarballs from GitHub do not 
come with submodules but instead just come with empty placeholder directories 
where the submodules would be.

Carthage is much more for development of an app and not for package managers to 
invoke.

--
Andrew

Reply via email to