GOPHIAN-MAKE(1)

NAME

gophian-make - Prepare a Go module for packaging in Debian

SYNOPSIS

gophian make <IMPORTPATH> [OPTIONS]

DESCRIPTION

This subcommand prepares a Debian package for Go software, producing a DEP-14 and Go team compliant Git repository that has the latest appropriate upstream source imported, and initial packaging files that have been filled out intelligently as best as possible.

Before starting, Gophian will check if the IMPORTPATH passed has already been packaged for Debian. This makes use of the same functionality used by gophian-show(1) and gophian-search(1), which makes use of the XS-Go-Import-Path field specified in Debian source packages. If found, Gophian will warn you, and unless the --no-warn-packaged option was passed, the program will exit.

If Gophian finds binary programs (files that start with "package 'main'") in the upstream code, it will prompt you to choose what type of package you intend to create. The prompt can be skipped ahead of time by setting the --type option.

•   Library only - Package is only intended to be imported by other programs. The source package will be named after the library. This is most Go packages depended on by other projects.

•   Library and accompanying binaries - Package is intended to be imported by other programs, with a helper or side program(s), usually meant to be used alongside the library. The source package will be named after the library. For example, the main purpose of github.com/go-git/go-git is to be used by other code, but also includes a proof-of-concept CLI called go-git.

•   Binaries and accompanying library - Package is intended to be used by the end user as a program, but also supplies a library to programs that want to consume it. The source package will be named after the binary. For example, Docker is mainly used as a CLI, but is also intentionally developed by upstream in such a way that it is reusable to other projects, and so is also available as a library.

•   Binary only - Package is only intended to be used as a program by the end user, and no library package should be created. The source package will be named after the binary. This is most end-user programs written in Go.

If no binary packages are found, the "Library only" package type is chosen automatically without prompting you.

If you selected one of the package types that include one or more binaries, you will then be prompted to select which binaries you'd like to include in the generated d/control template. You should use this opportunity to check for and exclude any example programs that are not intended to be built.

If you selected one of the package types "Binaries and accompanying library" or "Binary only", you will be prompted to choose which binary to name the source package after. This should usually be the name of the primary program intended to be used by the end user, which is often also the name of the upstream project itself.

Following this, Gophian will check for any existing Salsa repos under the Go team with this name of source package, and warn you if one has been found. The program will then exit unless the --no-warn-salsa flag was passed.

Gophian will also check for any open Intent to Package (ITP) or Request for Package (RFP) bugs matching the source package name and warn you. If found, this will be filled in the generated d/changelog for you.

Gophian will now prepare the packaging Git repository, importing the latest upstream source and generating the initial packaging files. It will also check for any unpackaged dependencies and test dependencies and warn you about them.

Once this is complete, it is strongly recommended you review all the Debian packaging files generated by Gophian and ensure all information is correct, and then fill in any missing information and complete any additional packaging work required.

ARGUMENTS

IMPORTPATH - The import path of the Go package being Debianized.

OPTIONS

--type [l|l+b|b+l|b] - Select the type of software being packaged. Can be one of "Library only", "Library and accompanying binaries", "Binaries and accompanying library", or "Binaries only", denoted by "l", "l+b", "b+l", or "b" respectively.

--name <NAME> - Name of package maintainer. Uses DEBFULLNAME environment variable by default. (required)

--email <EMAIL> - Email of package maintainer. Uses DEBEMAIL environment variable by default. (required)

--[no-]quiet - Don't print warnings.

--[no-]warn-packaged - Warn if the given Go package has already been packaged for Debian. (default: true)

--[no-]warn-salsa - Warn if the package already has a repo under the Go team namespace on Salsa. (default: true)

--[no-]itp - Generate an ITP template as well. (default: false)

--[no-]todo - Generate a debian/TODO file. (default: false)

--[no-]pristine-tar - Create a pristine-tar branch and delta file. (default: false)

--[no-]gpg-sign - GPG sign the commit that merges the upstream tarball into the packaging branch. If not passed to Gophian, then it will not be passed to git nor gbp and they will use their configured defaults.

--[no-]include-upstream-history - Include upstream git history. Upstream will be tracked with the 'upstreamvcs' remote, and commits that import new package versions will include the upstream commit or tag as a parent. (default: false)

--git-remote [ssh|https] - Protocol to use when setting Git remote. (default: ssh)

--debian-branch <BRANCH> - Name of Debian packaging branch. (default: debian/unstable)

--upstream-branch <BRANCH> - Name of upstream branch. (default: upstream/latest)

--source-name <NAME> - Manually set name of source package.

--help - Show help message and exit.

ENVIRONMENT

DEBFULLNAME - Used for --name.

DEBEMAIL - Used for --email.

GOPHIAN_ITP - Used for --[no-]itp.

GOPHIAN_TODO - Used for --[no-]todo.

GOPHIAN_PRISTINE_TAR - Used for --[no-]pristine-tar.

GOPHIAN_REMOTE - Used for --git-remote.

GOPHIAN_GPG_SIGN - Used for --[no-]gpg-sign.

GOPHIAN_DEBIAN_BRANCH - Used for --debian-branch.

GOPHIAN_UPSTREAM_BRANCH - Used for --upstream-branch.

SEE ALSO

gophian(1), gophian-license-text(1)