---
name: "portgen"
section: "1"
platform: "openbsd"
package: "man"
version: "8.0-current-20261101"
release: "OpenBSD 8.0-current (2026-11-01)"
platforms: ["openbsd"]
url: "https://new.carta.tech/portgen"
---

# portgen(1)

port modules on the fly

## NAME

**portgen** – port modules on the fly

## SYNOPSIS

**portgen** \[**-m** *makeopt*\] *type* *module-name*

## DESCRIPTION

The **portgen** utility creates ports for the given *module-name* from *type* module framework. The module is downloaded, analyzed and translated into a port. Any missing dependencies are handled recursively. New ports will land under ${PORTSDIR}/mystuff. The PORTSDIR value will be taken from current user environment, and defaults to */usr/ports*.

The options are as follows:

- **-m** *makeopt*

  Pass *makeopt* to [make(1)](/make/1.md) invocations while resolving missing dependencies, mostly useful with ‘FETCH\_PACKAGES=’ to avoid building everything from scratch.

The **portgen** utility currently supports the following *type* values:

- **p5**

  for Perl modules on CPAN.

- **ruby**

  for Ruby gems.

- **go**

  for Go modules.

A **go** module may be used with an *@version* suffix to specify a tag or branch to port. The default suffix is *@latest*, which is interpreted as the latest release.

The following packages must be installed prior to the invocation of **portgen**:

-

  **sqlports**

-

  **p5-DBI**

-

  **p5-DBD-SQLite**

## EXIT STATUS

The **portgen** utility exits 0 on success, and \>0 if an error occurs.

## EXAMPLES

The following command will download the latest version of Config::AutoConf from CPAN, parse it and create a port for it:

**portgen** p5 Config::AutoConf

## SEE ALSO

[port-modules(5)](/port-modules/5.md), [ports(7)](/ports/7.md)

## HISTORY

The **portgen** utility first appeared in OpenBSD 5.9 as a result of Google Summer of Code 2015.

## AUTHORS

Giannis Tsaraias ⟨*tsg@openbsd.org*⟩

## CAVEATS

Not every module could be converted to a port.
