Developer mode

Ralph Seichter abbot at
Mon Nov 18 20:32:07 UTC 2019

* Ryan Schmidt:

> I wonder if we should add a "developer mode" to MacPorts -- something
> that developers could enable in macports.conf.

I for one would like to be able to peek into what is happening under the
hood when working with Portfiles, so increased logging of technical
details sounds useful to me. That includes deprecation warnings,
suggested update paths, etc.

> In "developer mode", "port lint" or other checks could be run as part
> of every install.

Gentoo Linux provides a tool called 'repoman' [1] that is similar to
'port lint' in some aspects. It also provides convenience functions like
updating manifests (mostly source tarball checksums) and a wrapper for
VCS commits that pre-populates commit messages with the ebuild name
(similar to Port name), sign-off lines, and links to referenced/closed
issues in Gentoo's Bugzilla. I find repoman to be very useful, and if
the developer mode you suggested comes with similar utility, I would
welcome it.



P.S.: Output of 'repoman --help' in the current version:

usage: repoman [options] [mode]

Modes: ci | commit | fix | full | help | manifest | manifest-check | scan

optional arguments:
  -h, --help            show this help message and exit
  -a, --ask             Request a confirmation before commiting
  -b <BUG-NO|BUG-URL>, --bug <BUG-NO|BUG-URL>
                        Mention a Gentoo or upstream bug in the commit footer;
                        takes either Gentoo bug number or full bug URL
  -c <PR-NO|PR-URL>, --closes <PR-NO|PR-URL>
                        Adds a Closes footer to close GitHub pull request (or
                        compatible); takes either GitHub PR number or full PR
  -m COMMITMSG, --commitmsg COMMITMSG
                        specify a commit message on the command line
                        specify a path to a file that contains a commit
  --digest <y|n>        Automatically update Manifest digests for modified
  -p, --pretend         don't commit or fix anything; just show what would be
  -q, --quiet           do not print unnecessary messages
  --echangelog <y|n|force>
                        for commit mode, call echangelog if ChangeLog is
                        unmodified (or regardless of modification if 'force'
                        is specified)
  --experimental-inherit <y|n>
                        Enable experimental inherit.missing checks which may
                        misbehave when the internal eclass database becomes
  --experimental-repository-modules <y|n>
                        Enable experimental repository modules
  -f, --force           Commit with QA violations
  -S, --straight-to-stable
                        Allow committing straight to stable
  --vcs VCS             Force using specific VCS instead of autodetection
  -v, --verbose         be very verbose in output
  -V, --version         show version info
  -x, --xmlparse        forces the metadata.xml parse check to be carried out
  --if-modified <y|n>   only check packages that have uncommitted
  -i, --ignore-arches   ignore arch-specific failures (where arch != host)
                        do not use the REPOMAN_DEFAULT_OPTS environment
  -I, --ignore-masked   ignore masked packages (not allowed with commit mode)
  --include-arches ARCHES
                        A space separated list of arches used to filter the
                        selection of profiles for dependency checks
  -d, --include-dev     include dev profiles in dependency checks
  -e <y|n>, --include-exp-profiles <y|n>
                        include exp profiles in dependency checks
  --unmatched-removal   enable strict checking of package.mask and
                        package.unmask files for unmatched removal atoms
  --without-mask        behave as if no package.mask entries exist (not
                        allowed with commit mode)
  --output-style {column,default}
                        select output type
  --mode {ci,commit,fix,full,help,manifest,manifest-check,scan}
                        specify which mode repoman will run in (default=full)

For more help consult the man page.

More information about the macports-dev mailing list