Automatically creates Debian packaging for Go packages

Overview

Build Status

dh-make-golang is a tool to automatically create Debian packaging for Go packages. Its goal is to automate away as much of the work as possible when creating a Debian package for a Go library package or Go program.

Overview

All you need to specify is a Go package name. In your current working directory, a new directory will be created containing a git repository. Inside that repository, you’ll find the Go package’s source code plus the necessary Debian packaging files to build a Debian package. The packaging adheres to the pkg-go packaging guidelines and hence can be placed alongside the other team-maintained packages in pkg-go, hosted on Debian’s salsa.

Usage/example

For an introductory example, see this annotated demonstration of how to use dh-make-golang.

dh-make-golang’s usage of the internet

dh-make-golang makes heavy use of online resources to improve the resulting package. In no particular order and depending on where your package is hosted, dh-make-golang may query:

  • By virtue of using go get, the specified Go package and all of its dependencies will be downloaded. This step can quickly cause dozens of megabytes to be transferred, so be careful if you are on a metered internet connection.
  • The output of filter-packages.sh, hosted on https://people.debian.org/~stapelberg/dh-make-golang/. This is used to figure out whether dependencies are already packaged in Debian, and whether you are about to duplicate somebody else’s work.
  • GitHub’s API, to get the license, repository creator, description and README for Go packages hosted on GitHub.
Comments
  • Allow the use of gccgo on architectures without golang-go

    Allow the use of gccgo on architectures without golang-go

    • Build-Depends on gccgo where golang-go is not available i.e., [!amd64 !arm64 !armel !armhf !i386 !ppc64 !ppc64el]
    • Remove Depends on golang-go

    When the debian/control file of a Go program and its dependencies have this change made, this allows the Go program to be built on more platforms, especially powerpc, sparc64, s390x, mips and mipsel, and hopefully more.

    For example, see https://buildd.debian.org/status/package.php?p=go-md2man for the current build status of go-md2man. Of course, my own personal goal is to have Hugo available on as many platforms as possible. :wink:

    Many thanks!

    opened by anthonyfok 19
  • Replace

    Replace "_" with "-" in program name

    This is to ensure it follow Debian Maintainer Guide in regard to package name

    Issue appeared when trying to build a repo with _.

    root@cb38face0702:~# ./bin/dh-make-golang github.com/bitly/oauth2_proxy
    2016/09/12 23:07:22 Downloading "github.com/bitly/oauth2_proxy/..."
    2016/09/12 23:07:49 Determining upstream version number
    2016/09/12 23:07:49 WARNING: Lightweight tag "v2.1" found, but the most recent annotated tag is "v0.1"
    2016/09/12 23:07:49     Lightweight tags (created by e.g. "git tag v2.1"
    2016/09/12 23:07:49     with no flag) are problematic because, among other
    2016/09/12 23:07:49     things, they are ignored by "git describe" by default.
    2016/09/12 23:07:49     Please suggest that the upstream replaces the
    2016/09/12 23:07:49     lightweight tags with annotated ones.  See
    2016/09/12 23:07:49     https://github.com/russross/blackfriday/issues/196
    2016/09/12 23:07:49     for details.
    2016/09/12 23:07:49
    2016/09/12 23:07:49 Package version is "2.1+git20160825.15.a9c55bd"
    2016/09/12 23:07:49 Determining package type
    2016/09/12 23:07:49 Assuming you are packaging a program (because "github.com/bitly/oauth2_proxy" defines a main package), use -type to override
    2016/09/12 23:07:49 Determining dependencies
    gbp:error: Couldn't determine upstream package name. Use --interactive.
    2016/09/12 23:07:51 Could not create git repository: exit status 1
    
    opened by sysbot 12
  • gbp:error: Failed to commit tree:  *** Please tell me who you are.

    gbp:error: Failed to commit tree: *** Please tell me who you are.

    $ dh-make-golang -allow_unknown_hoster github.com/zyedidia/micro 
    ...
    gbp:error: Failed to commit tree: 
    *** Please tell me who you are.
    
    Run
    
      git config --global user.email "[email protected]"
      git config --global user.name "Your Name"
    
    to set your account's default identity.
    Omit --global to set the identity only in this repository.
    

    Is it possible to run it without writing global config? Thanks.

    opened by techtonik 11
  • dh-make-golang no longer able to calculate dependencies of package with vendoring (as of golang-1.6.2?)

    dh-make-golang no longer able to calculate dependencies of package with vendoring (as of golang-1.6.2?)

    I discovered yesterday that the command:

    dh-make-golang github.com/kardianos/govendor
    

    is no longer able to calculate the necessary dependent Go packages in debian/control. The govender repository contains vendoring in the vendor/ directory.

    But I remember that it worked back on 2016-05-01 (a little more than a month ago) when I created the initial package for govendor, and dh-make-golang has not changed since. Could it have anything to do with recent changes in golang-go packaging, especially the new go1.6.2?

    (I have yet to investigate in depth, but filing an issue so I don't forget.)

    opened by anthonyfok 11
  • Implement `clone` command?

    Implement `clone` command?

    I think it could be great to implement a clone command to dh-make-golang. It would work like this:

    $ dh-make-golang clone golang-github-pkg-term
    

    It would perform the following actions:

    • (gbp or git) clone "[email protected]:go-team/packages/$1.git"
    • apt source --tar-only "$1"

    The motivations behind that are simple:

    • It will make cloning a bit easier (only need the package name, not the whole URL)
    • And most important: It will prevent uploads from being rejected in case of checksum mismatch, by forcing to use the .orig.tar.gz that comes from the archive.

    What everyone think about that?

    enhancement question 
    opened by creekorful 10
  • Invalid version number error

    Invalid version number error

    here is the start of the log:

    2015/11/30 03:23:39 Downloading "github.com/cihub/seelog/..."
    2015/11/30 03:23:42 Determining upstream version number
    2015/11/30 03:23:42 Package version is "go1.1+git20151102.84.0f89bb7"
    

    Further investigation shows that the author is tagging the "go compiler version" along with "vX.y" tags. This library has two tags: go1.1 and v2.5 both on the same commit. Any Idea if it would be possible to pick the 2.5 from the other tag, though it might be easier to be able to specify a version as a command line argument.

    opened by hxw 9
  • Overaggressive pruning (and no configurability)

    Overaggressive pruning (and no configurability)

    I'm trying to use dh-make-golang to package https://getgb.io, but I'm running into trouble right off because https://github.com/constabulary/gb/tree/933576cf5c8367145d3bae615558bac89fda415a/vendor is github.com/constabulary/gb/vendor, but it gets --exclude in the tar invocation, so the orig tarball doesn't have this package.

    My thought for solving this is if the vendor directory exists, let's check if there are *.go files directly inside. If there aren't, we add --exclude, otherwise we leave it in (because it must be a legitimate package). Another way to check for this could be to just do something like go list <gopkg>/vendor and see if it comes back with itself or if it says that's not a valid package.

    For example:

    $ go list github.com/docker/docker/vendor
    can't load package: package github.com/docker/docker/vendor: no buildable Go source files in GOPATH/src/github.com/docker/docker/vendor
    

    Versus:

    $ go list github.com/constabulary/gb/vendor
    github.com/constabulary/gb/vendor
    
    opened by tianon 7
  • Allow to make package from specific upstream tag

    Allow to make package from specific upstream tag

    This new flag allow checkout & usage of a specific git tag.

    The behaviour is different from using the git_revision flag, since we will force the tag being used. Using the tag approach is more convenient than using git_revision in the case of multiple tag being used for the same revision.

    I was packaging the github.com/viant/afs library, and dh-make-golang has failed, because of wrongly named tag. The latest version is being point by two tags named v and v0.16.3. In my case dh-make-golang has picked up the v tag, ending up with error because of the v prefix being removed.

    This would not happen if I was able to choose the tag I want to checkout. So this is my approach.

    This should fix #31 and use a different approach than the one proposed in #34

    Just let me know if you considered another approach.

    Cheers

    opened by creekorful 6
  • Error: 'can't load package: package .: no buildable Go source files in'

    Error: 'can't load package: package .: no buildable Go source files in'

    $ cd $(mktemp -d)
    $ dh-make-golang github.com/agl/ed25519
    $ cd golang-github-agl-ed25519/
    $ git add -A
    $ git commit -m "Initial packaging"
    $ gbp buildpackage
    ...
    dh build --buildsystem=golang --with=golang
       dh_testdir -O--buildsystem=golang
       dh_auto_configure -O--buildsystem=golang
       dh_auto_build -O--buildsystem=golang
    warning: "/..." matched no packages
    can't load package: package .: no buildable Go source files in /tmp/rnd-dir/golang-github-agl-ed25519/obj-x86_64-linux-gnu
    dh_auto_build: go install -v returned exit code 1
    debian/rules:4: recipe for target 'build' failed
    make: *** [build] Error 1
    dpkg-buildpackage: error: debian/rules build gave error exit status 2
    debuild: fatal error at line 1376:
    dpkg-buildpackage -rfakeroot -D -us -uc -i -I failed
    gbp:error: 'debuild -i -I' failed: it exited with 29
    

    It tries to match /... instead of ./... (leading period sign)

    opened by Commenter123 6
  • unexpected HTTP status code: got 500, want 200

    unexpected HTTP status code: got 500, want 200

    Hi, whenever I try to use dh-make-golang make or search I get an error message mentioning a 500 HTTP status code.

    $ dh-make-golang search 'debi.*'                   
    2022/09/23 16:25:04 unexpected HTTP status code: got 500, want 200
    

    This is my first time using dh-make-golang, so I may be doing something wrong.

    opened by Tachi107 5
  • Unmet dependencies: golang-x-text-dev

    Unmet dependencies: golang-x-text-dev

    Hey,

    I'm trying to build a package for our Thola project using dh-make-golang. But after following the given instructions, the command gbp buildpackage --git-pbuilder fails with the following error:

    Need to get 8491 kB/102 MB of archives. After unpacking 575 MB will be used.
    The following packages have unmet dependencies:
     pbuilder-satisfydepends-dummy : Depends: golang-x-text-dev which is a virtual package and is not provided by any available package
    
    Unable to resolve dependencies!  Giving up...
    

    I'm quite unsure if the error is on my side or if it's in the program, so if anyone could help me there or guide me in the right direction that would be very nice!

    opened by TheFireMike 5
  • Bump github.com/mattn/go-isatty from 0.0.14 to 0.0.17

    Bump github.com/mattn/go-isatty from 0.0.14 to 0.0.17

    Bumps github.com/mattn/go-isatty from 0.0.14 to 0.0.17.

    Commits
    • ed75e61 Merge pull request #78 from sthibaul/master
    • f646acc Support GNU/Hurd
    • 13e91bf bump
    • 47c6087 update GitHub Workflow
    • f001b72 Merge pull request #75 from tjni/update-x-sys
    • 89699b9 Update golang.org/x/sys for Go 1.18 on M1 Macs.
    • cdb00f1 Merge pull request #68 from tklauser/fix-go.sum
    • 689cfc2 Update go.sum after golang.org/x/sys update
    • d423e9c Merge pull request #67 from tklauser/fix-go-version-gh-action
    • 65c33a1 Use correct field to specify Go version in GitHub action
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • make for golang.org package fails

    make for golang.org package fails "Could not create git repository: import-orig: exit status 1"

    dh-make-golang make golang.org/x/oauth2 fails.

    It looks like it tries to extract a non-existent tar archive.

    2022/12/18 04:34:50 Starting "dh-make-golang v0.6.0 linux/amd64"
    2022/12/18 04:34:50 Downloading "golang.org/x/oauth2/..."
    2022/12/18 04:34:51 Determining upstream version number
    2022/12/18 04:34:51 Found latest tag "v0.3.0"
    2022/12/18 04:34:51 Latest tag "v0.3.0" matches master
    2022/12/18 04:34:51 Package version is "0.3.0"
    2022/12/18 04:34:51 Determining dependencies
    2022/12/18 04:34:53 INFO: Hoster does not provide release tarball
    2022/12/18 04:34:53 WARNING: A package called "golang-golang-x-oauth2-google-dev" is already in Debian! See https://tracker.debian.org/pkg/golang-golang-x-oauth2-google-dev
    2022/12/18 04:34:53 Moving tempfile to "golang-golang-x-oauth2_0.3.0.orig.tar.gz"
    2022/12/18 04:34:53 Adding remote "origin" with URL "[email protected]:go-team/packages/golang-golang-x-oauth2.git"
    2022/12/18 04:34:53 Adding remote "golang" with URL "https://go.googlesource.com/oauth2"
    2022/12/18 04:34:53 Running "git fetch golang"
    remote: Total 2166 (delta 835), reused 2166 (delta 835)
    Receiving objects: 100% (2166/2166), 1.32 MiB | 3.33 MiB/s, done.
    Resolving deltas: 100% (835/835), done.
    From https://go.googlesource.com/oauth2
     * [new branch]      master     -> golang/master
     * [new tag]         v0.3.0     -> v0.3.0
     * [new tag]         v0.1.0     -> v0.1.0
     * [new tag]         v0.2.0     -> v0.2.0
    tar: This does not look like a tar archive
    
    gzip: stdin: unexpected end of file
    tar: Child returned status 1
    tar: Error is not recoverable: exiting now
    gbp:error: Couldn't unpack '/home/matt/golang-golang-x-oauth2_0.3.0.orig.tar.gz': it exited with 2
    2022/12/18 04:34:54 Could not create git repository: import-orig: exit status 1
    
    opened by hickford 0
  • Bump golang.org/x/mod from 0.5.1 to 0.7.0

    Bump golang.org/x/mod from 0.5.1 to 0.7.0

    Bumps golang.org/x/mod from 0.5.1 to 0.7.0.

    Commits
    • 7c05a44 sumdb/note: remove dependency on golang.org/x/crypto/ed25519
    • b3066c3 go.mod: update golang.org/x dependencies
    • e3c1277 go.mod: update to tagged x/tools version
    • aac77cd all: fix a few function names on comments
    • 2666ed6 go.mod: ignore cyclic dependency for tagging
    • 2adab6b zip: expand logging and use t.TempDir and t.Cleanup in test helpers
    • 02c9913 sumdb: remove redundant type conversion
    • 8f535f7 sumdb/note: fix some typos
    • ed83ed6 modfile: remove duplicate words from comments
    • f994a2a zip: set PWD consistently for commands in subdirectories
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • no Go files in /tmp/dh-make-golangXXXXXXXX

    no Go files in /tmp/dh-make-golangXXXXXXXX

    here is my system info

    Distributor ID: Debian
    Description:    Debian GNU/Linux bookworm/sid
    Release:        unstable
    Codename:       sid
    

    when i make a deb go package with this command

     dh-make-golang github.com/helm/helm/tree/main/cmd/helm
    

    it complains:

    package github.com/helm/helm: no Go files in /tmp/dh-make-golang65739910/src/github.com/helm/helm 2022/09/29 21:54:32 Could not create a tarball of the upstream source: find mains: ["go" "list" "-f" "{{.ImportPath}} {{.Name}}" "github.com/helm/helm"]: exit status 1

    the full output is here

    2022/09/29 21:54:08 Starting "dh-make-golang v0.6.0 linux/amd64"
    2022/09/29 21:54:08 Continuing with repository root "github.com/helm/helm" instead of specified import path "github.com/helm/helm/tree/main/cmd/helm" (repositories are the unit of packaging in Debian)
    2022/09/29 21:54:08 Downloading "github.com/helm/helm/..."
    2022/09/29 21:54:32 Determining upstream version number
    2022/09/29 21:54:32 Found latest tag "v3.9.0-rc.1"
    2022/09/29 21:54:32 INFO: master is ahead of "v3.9.0-rc.1" by 84 commits
    2022/09/29 21:54:32 Package version is "3.9.0~rc1"
    code in directory /tmp/dh-make-golang65739910/src/github.com/helm/helm/cmd/helm expects import "helm.sh/helm/v3/cmd/helm"
    code in directory /tmp/dh-make-golang65739910/src/github.com/helm/helm/internal/ignore expects import "helm.sh/helm/v3/internal/ignore"
    code in directory /tmp/dh-make-golang65739910/src/github.com/helm/helm/internal/version expects import "helm.sh/helm/v3/internal/version"
    code in directory /tmp/dh-make-golang65739910/src/github.com/helm/helm/pkg/chartutil expects import "helm.sh/helm/v3/pkg/chartutil"
    code in directory /tmp/dh-make-golang65739910/src/github.com/helm/helm/pkg/engine expects import "helm.sh/helm/v3/pkg/engine"
    code in directory /tmp/dh-make-golang65739910/src/github.com/helm/helm/pkg/kube expects import "helm.sh/helm/v3/pkg/kube"
    code in directory /tmp/dh-make-golang65739910/src/github.com/helm/helm/pkg/lint expects import "helm.sh/helm/v3/pkg/lint"
    code in directory /tmp/dh-make-golang65739910/src/github.com/helm/helm/pkg/lint/rules expects import "helm.sh/helm/v3/pkg/lint/rules"
    code in directory /tmp/dh-make-golang65739910/src/github.com/helm/helm/pkg/lint/support expects import "helm.sh/helm/v3/pkg/lint/support"
    code in directory /tmp/dh-make-golang65739910/src/github.com/helm/helm/pkg/plugin expects import "helm.sh/helm/v3/pkg/plugin"
    code in directory /tmp/dh-make-golang65739910/src/github.com/helm/helm/pkg/plugin/cache expects import "helm.sh/helm/v3/pkg/plugin/cache"
    code in directory /tmp/dh-make-golang65739910/src/github.com/helm/helm/pkg/plugin/installer expects import "helm.sh/helm/v3/pkg/plugin/installer"
    code in directory /tmp/dh-make-golang65739910/src/github.com/helm/helm/pkg/provenance expects import "helm.sh/helm/v3/pkg/provenance"
    code in directory /tmp/dh-make-golang65739910/src/github.com/helm/helm/pkg/registry expects import "helm.sh/helm/v3/pkg/registry"
    code in directory /tmp/dh-make-golang65739910/src/github.com/helm/helm/pkg/releaseutil expects import "helm.sh/helm/v3/pkg/releaseutil"
    code in directory /tmp/dh-make-golang65739910/src/github.com/helm/helm/pkg/repo expects import "helm.sh/helm/v3/pkg/repo"
    code in directory /tmp/dh-make-golang65739910/src/github.com/helm/helm/pkg/storage expects import "helm.sh/helm/v3/pkg/storage"
    code in directory /tmp/dh-make-golang65739910/src/github.com/helm/helm/pkg/storage/driver expects import "helm.sh/helm/v3/pkg/storage/driver"
    2022/09/29 21:54:32 WARNING: In findMains: ["go" "list" "-f" "{{.ImportPath}} {{.Name}}" "github.com/helm/helm/..."]: exit status 1
    2022/09/29 21:54:32 Retrying without appending "/..." to repo
    package github.com/helm/helm: no Go files in /tmp/dh-make-golang65739910/src/github.com/helm/helm
    2022/09/29 21:54:32 Could not create a tarball of the upstream source: find mains: ["go" "list" "-f" "{{.ImportPath}} {{.Name}}" "github.com/helm/helm"]: exit status 1```
    
    some package (ie.https://github.com/toorop/go-dkim)can be translated to debian package successfully, while some others failed, I can't find what's wrong.
    opened by sunmin89 1
  • Need to test

    Need to test "dh-make-golang make" with actual repos

    This is to check that dh-make-golang make is actually working with:

    • GitHub, GitLab, Salsa, etc.
    • repos with or without releases or tags
    • Files-Excluded for both "release pristine .tar.gz tarballs" and "compress our own .tar.xz" mode

    Test cases include (but not limited to) repos reported in e.g. the following issues:

    • #135
    • #164
    • #180
    opened by anthonyfok 0
Releases(v0.6.0)
  • v0.6.0(Nov 25, 2021)

    [ Aloïs Micard ]

    • New upstream version 0.6.0.
    • Add myself as Uploader.
    • Implement clone command to allow easily cloning from Salsa and download of upstream .orig.tar.gz from FTP archive. This ensure a clean upstream tarball will be use.
    • Implement check-depends command to compare dependencies between go.mod and d/control.
    • Use new Gitlab CI template.
    • Add software.sslmate.com to knownHosts.

    [ Anthony Fok ]

    • Add go.cypherpunks.ru as "cypherpunks" to knownHosts.
    • Switch description renderer to goldmark/Glamour.
    • Template: Fix errors in debian/watch track git HEAD comment.

    [ Shengjing Zhu ]

    • Add go.opentelemetry.io to knownHosts.
    Source code(tar.gz)
    Source code(zip)
  • v0.5.0(Aug 26, 2021)

    [ Guillem Jover ]

    • Update default upstream gitignore directories. Add _build as that's the default build directory. Anchor both _build and .pc under the root source by prefixing with «/». Mark them as directories by suffixing with «/».
    • Place license location on the filesystem in a Comment field. This is not part of the license statement, it's rather an ancillary comment about where to find it.

    [ Peymaneh Nejad ]

    • Add step (go.step.sm) to knownHosts

    [ Federico Grau ]

    • Check for and move upstream debian dir if it exists (Closes: #983241)

    [ Arnaud Rebillout ]

    • Make sure to call normalizeDebianProgramName() on the whole name, not on parts.
    • Renaming: normalizeDebian{Program,Package}Name
    • Add testcases to nameFromGoPkg: golang.org/x/term and two others.
    • Update debian-policy link url
    • Set debianBranch in execMake(), use it in createGitRepository() This minor refactoring prepares the code for the next commit, where we will need to know the Debian branch in execMake().
    • Fix make output: run 'git push' before 'gbp push' As mentioned in #107, running 'gbp push' when there's no debian tag is not the right thing to do, as it will only push the upstream branch. Consequences are:
      1. The default gitlab branch is set to the upstream branch instead of the debian branch.
      2. The debian branch is not pushed and needs to be pushed manually anyway. I believe that the best thing to do instead is just to run 'git push origin ' first, and then run 'gbp push'.
    • Keep compatibility with Git below 2.28. Thanks to Alois Micard for pointing that out

    [ Aleksey Morarash ]

    • Extend .gitignore with vim temporary files
    • Annotate errors with context. This will prevent situations when program terminates with bare error leaving the user without any clue of where the error was occurred.

    [ Anthony Fok ]

    • Set GO111MODULE=off when calling go list etc. to keep dh-make-golang make and estimate working with Go 1.16 and 1.17
    • Add "Multi-Arch: foreign" to library packages in debian/control
    • Add Expat (MIT) license text template
    • Update Standards-Version to 4.6.0
    • Recognize upstream pre-release versions so that tilde ~ instead of - is used in upstream tarball and in debian/changelog, e.g. 1.0.0~rc1 instead of 1.0.0-rc.1. Thanks to nicoo (Closes: #981421)
    • Workaround go list error when upstream uses ../.. in import path (Closes: #992610)
    • make: Add -program_package_name flag. This allows overriding the program package name, and the source package name too when appropriate, e.g. to name github.com/cli/cli as gh. See discussion at #951374
    • make: Change -force_prerelease and -upstream_git_history flags to use underscore instead of hyphen
    • make: Change some wordings in help and instruction, especially the use of git commit -S for signing the commit
    • Add fyne.io as "fyne" to knownHosts
    • Add filippo.io as "filippo" to knownHosts
    • Fix SA1006 and ST1005 reported by staticcheck
      • ST1005 Incorrectly formatted error string
      • SA1006 Printf with dynamic first argument and no further arguments
    • Migrate from Travis CI to GitHub Actions workflow for CI tests
    • Bump dependencies: Go >= 1.13 and github.com/google/go-github to v38
    Source code(tar.gz)
    Source code(zip)
  • v0.4.0(Nov 13, 2020)

    • Normalize every part of a Gopkg's name (#128) Closes #127. (by @ThreeFx, reviewed by @zhsj, commit b1321ff)
    • template.go: bump debhelper-compat version to 13 (#142) (by @lucaskanashiro, commit d492b3a)
    • Add travis jobs on ppc64le (#143) (by @dineshks1, commit b184ad3)
    • Change section to golang (by @zhsj, commit 34a37c9)
    • Bump go-github to v32 (by @zhsj, commit 5570a05)
    • Set timezone to UTC in TestSnapshotVersion (by @zhsj, commit 9f8aadb)
    • Add rsc.io as "rsc" to knownHosts (commit 3bdaee6)
    • template: Generate debian/upstream/metadata too. Fixes #144 (commit 2412963)
    • Move debian/man/dh-make-golang.md from Debian packaging to this upstream repository. Fixes #129 (commit adbf657)
    • Add support for upstream tag that is not <version> or v<version>, e.g. github.com/lxc/lxd with tag lxd-4.8. Fixes #139 (commit 581a5e8)
    Source code(tar.gz)
    Source code(zip)
  • v0.3.3(Feb 27, 2020)

    • Remove unneeded golang-*-dev dependency for program This fixes a bug that I introduced in commit 8ed6b21 for v0.1.0

    • Fix erroneous reference to --include-upstream-history in the instruction; should be --upstream-git-history instead.

    • Remove "# TODO: publish under debian-go-team/ci" from debian/gitlab-ci.yml, as I believe that has already been done, and so that its TODO would not confuse the packager.

    • Add "Upstream-Contact: TODO" to generated debian/copyright as mentors.debian.net seems to require this field, and if missing, would display the following warning:

      RFS: author info missing Upstream-Contact: was not found in d/copyright. RFS will not autocomplete the Upstream author.

    • Move Build-Depends-{Arch,Indep} back into Build-Depends. For Go packages, golang-any and dependencies are always needed regardless of whether we are building a program or a library, and it is not like we need e.g. texinfo to build *-doc packages, so the use Build-Depends-Arch and Build-Depends-Indep served no purpose other than unnecessarily complicating things.

    • template: Add "dversionmangle=s/\+ds\d*$//,repacksuffix=+ds1" to debian/watch if Files-Excluded is added to debian/copyright

    • Add honnef.co as "honnef" to knownHosts

    • Print dh-make-golang version at the start of make

    Source code(tar.gz)
    Source code(zip)
  • v0.3.2(Feb 23, 2020)

    This release includes contributions from, in alphabetical order, @anthonyfok, @creekorful, @kataras, @ThreeFx and @zhsj.

    • Refactor shortHostName: Move knownHosts to a map to simplify the code, and fix the publicsuffix guess, input should be fqdn.
    • Sort the knownHosts list in alphabetical order
    • Add {sigs,}k8s.io, "gocloud" (gocloud.dev), sourcehut (git.sr.ht), and "uber" (go.uber.org) to knownHosts.
    • Fix version detection for multi-module repo.
    • Download upstream tarball from GitHub or GitLab if so resolved by vcs.RepoRootForImportPath().
    • Update Standards-Version to 4.5.0
    • Fix ineffectual assignment to err in tarballFromHoster()
    • Manage MIT (Expat) license too
    • Remove unneeded golang-*-dev dependency for program. Fixes a bug that was introduced in commit 8ed6b21 for v0.1.0
    Source code(tar.gz)
    Source code(zip)
  • v0.3.1(Dec 31, 2019)

    • Generate debian/gitlab-ci.yml too.
    • Add remote "origin" to point to Salsa in .git/config to save the user from doing so manually.
    • Preconfigure git branches just as "git clone" and "gbp clone" would do.
    • List full path of /usr/sbin/sendmail in final instructions so that the end developer can copy-and-paste to send ITP mail without using sudo.
    • Fix empty host var before slicing. Fixes #120 "slice bounds out of range" error with -allow_unknown_hoster. Thanks @utkarsh2102 and @montj2!
    • Sort dependency list like wrap-and-sort, i.e. place variables like ${misc:Depends} and ${shlibs:Depends} at the end of the list. Fixes #121. Thanks @elboulangero!
    Source code(tar.gz)
    Source code(zip)
  • v0.3.0(Dec 1, 2019)

    New feature:

    • "dh-make-golang" now includes the full upstream git history as recommended by Debian Go Packaging Team’s new workflow, see https://go-team.pages.debian.net/workflow-changes.html.

    This is still somewhat experimental, so all feedback is welcome!

    Source code(tar.gz)
    Source code(zip)
  • v0.2.0(Nov 29, 2019)

    • Prefer upstream tagged release version over master (HEAD), and download upstream release tarball if available, just like what uscan would do with our default debian/watch.
    • Add -force-prerelease flag to revert to old behaviour of always choosing @master (git HEAD) over @latest tagged version.
    • Generate debian/watch to track git HEAD if upstream has never tagged any release.
    • Fix missing long description for non-GitHub import path when "go-source" meta tag actually resolves to GitHub.
    • Add gitlab.com hoster as "gitlab", and blitiri.com.ar hoster as "blitiri".
    Source code(tar.gz)
    Source code(zip)
  • v0.1.1(Nov 25, 2019)

    • Fix gbp import-orig call for -pristine-tar=true so that the pristine-tar branch is actually created if requested
    • Stop adding Files-Excluded: Godeps/_workspace to debian/copyright if no such directory exists upstream
    • Suppress Switched to a new branch 'debian/sid' message
    • Use fmt.Printf() instead of log.Printf() for final instructions
    Source code(tar.gz)
    Source code(zip)
  • v0.1.0(Nov 22, 2019)

    Start of semantic versioning, starting with v0.1.0

    New flags -dep14, -pristine-tar and -wrap-and-sort have been added, and the -type flag has been extended to support packages with both library and program. Run dh-make-golang make -help for details.

    Source code(tar.gz)
    Source code(zip)
Owner
The Universal OS
See https://github.com/Debian/README.Debian for details
The Universal OS
Monitoring changes in the source file and automatically compile and run (restart).

dogo Monitoring changes in the source file and automatically compile and run (restart). 中文 Install go get github.com/liudng/dogo Create config Here's

null 254 Dec 28, 2022
Automatically creates & tiles .tmx format maps from a world map interface

Autotile Create tiled maps for an arbitrarily large world space from a simple interface, then add larger objects randomly with simple rules (eg. place

null 2 Aug 19, 2022
Creates a linux group of users synced to your Google Workspace users and automatically imports their public SSH keys.

Creates a linux group of users synced to your Google Workspace users and automatically imports their public SSH keys.

Dane Tuso 1 Jan 27, 2022
debiman generates a static manpage HTML repository out of a Debian archive

debiman Goals debiman makes (Debian) manpages accessible in a web browser. Its goals are, in order: completeness: all manpages in Debian should be ava

The Universal OS 145 Jan 4, 2023
a build tool for Go, with a focus on cross-compiling, packaging and deployment

goxc NOTE: goxc has long been in maintenance mode. Ever since Go1.5 supported simple cross-compilation, this tool lost much of its value. There are st

Am Laher 1.7k Dec 9, 2022
Go implementation of the Open Packaging Conventions (OPC)

opc Package opc implements the ISO/IEC 29500-2, also known as the Open Packaging Convention. The Open Packaging specification describes an abstract mo

Quim Muntal 74 Oct 14, 2022
a build tool for Go, with a focus on cross-compiling, packaging and deployment

goxc NOTE: goxc has long been in maintenance mode. Ever since Go1.5 supported simple cross-compilation, this tool lost much of its value. There are st

Am Laher 1.7k Dec 9, 2022
Packaging and encrypting/decrypting your files for Golang

?? Paket – A vault to packaging and encrypt/decrypt your files in golang! pkg.go.dev | Table of Contents ?? Informations ??‍?? ??‍?? What does it do ?

null 19 Aug 19, 2022
Nomad Pack is a templating and packaging tool used with HashiCorp Nomad.

Nomad Pack is a templating and packaging tool used with HashiCorp Nomad.

HashiCorp 296 Jan 4, 2023
Docker For Go Application Packaging And Pushing To Docker Hub

DOCKER-FOR-GO-APPLICATION-PACKAGING-AND-PUSHING-TO-DOCKER-HUB ##DOCKER COMMANDS: (Don't forget to navigate to the directory that contains the app and

ANDRÉS R. BUCHELI (Andrés F. Regalado Bucheli) 1 Jan 22, 2022
Ubuntu packaging of conainerd. :D

containerd is an industry-standard container runtime with an emphasis on simplicity, robustness and portability. It is available as a daemon for Linux

Utkarsh Gupta 0 Nov 14, 2021
Tanzu Framework provides a set of building blocks to build atop of the Tanzu platform and leverages Carvel packaging

Tanzu Framework provides a set of building blocks to build atop of the Tanzu platform and leverages Carvel packaging and plugins to provide users with a much stronger, more integrated experience than the loose coupling and stand-alone commands of the previous generation of tools.

VMware Tanzu 188 Dec 16, 2022
Source code related to an on-site demonstration (for Ardan Labs) of packaging Go applications with Nix

Ardan Labs Nix Demo High-Level Overview We bumbled the scheduling of an earlier presentation about git worktree that a few co-workers attended. In eff

John Rinehart 5 Oct 12, 2022
Tools for the Gio project, most notably gogio for packaging Gio programs

Gio Tools Tools for the Gio project, most notably gogio for packaging Gio programs. Issues File bugs and TODOs through the issue tracker or send an em

Gio 4 Oct 5, 2022
progress_bar creates a single customizable progress bar for Linux terminal.

progress_bar Go Progress Bar Features progress_bar creates a single customizable progress bar for Linux terminal. Installation go get -u github.com/er

erman imer 127 Aug 12, 2022
Creates Prometheus Metrics for PolicyReports and ClusterPolicyReports. It also sends PolicyReportResults to different Targets like Grafana Loki or Slack

PolicyReporter Motivation Kyverno ships with two types of validation. You can either enforce a rule or audit it. If you don't want to block developers

Frank Jogeleit 0 Aug 6, 2021
A Go program that takes an image, uses pigo to detect a face, and creates a gif that zooms in on the face

ok-zoomer Every GIF is a gift. How it works face detection with esimov/pigo color quantization / dithering with esimov/colorquant image resizing with

Justin Birmingham 248 Nov 27, 2022
A simple API written in Go that creates badges in SVG format, based on the requested route.

A simple API written in Go that creates badges in SVG format, based on the requested route. Those graphics can be used to style README.md files, or to add tags to webpages.

Toby 3 Jul 2, 2021
ClickHouse Operator creates, configures and manages ClickHouse clusters running on Kubernetes

ClickHouse Operator ClickHouse Operator creates, configures and manages ClickHouse clusters running on Kubernetes. Features The ClickHouse Operator fo

RadonDB 23 Dec 29, 2022
A Terraform module that creates AWS alerts billing for your resources.

terraform-aws-billing-alarms terraform-aws-billing-alarms for project Replace name project to New Project agr 'terraform-aws-billing-alarms' 'new-pr

hadenlabs 1 Oct 20, 2021