<pre style='margin:0'>
Perry E. Metzger (pmetzger) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/3eb1c0ac4e40becb49a24a05c557d0798fb4529c">https://github.com/macports/macports-ports/commit/3eb1c0ac4e40becb49a24a05c557d0798fb4529c</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 3eb1c0ac4e40becb49a24a05c557d0798fb4529c
</span>Author: Aaron Madlon-Kay <amake@macports.org>
AuthorDate: Wed Sep 12 12:48:08 2018 +0900
<span style='display:block; white-space:pre;color:#404040;'> Support Bitbucket in golang portgroup
</span>---
_resources/port1.0/group/golang-1.0.tcl | 157 +++++++++++++++++++++++---------
sysutils/go2port/Portfile | 4 +-
2 files changed, 117 insertions(+), 44 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/_resources/port1.0/group/golang-1.0.tcl b/_resources/port1.0/group/golang-1.0.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 3b6f804..d51d630 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/_resources/port1.0/group/golang-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/_resources/port1.0/group/golang-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,15 +1,17 @@
</span> # -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
#
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# This PortGroup accommodates golang projects hosted at GitHub.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# This PortGroup accommodates golang projects. The github-1.0 or bitbucket-1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# portgroups are automatically applied and set up for projects hosted on GitHub
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# or Bitbucket.
</span> #
# Usage:
#
# PortGroup golang 1.0
#
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# github.setup author project 1.0.0 v
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# go.setup example.com/author/project 1.0.0 v
</span> #
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# go.vendors github.com/dep1/foo abcdef123456... \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# github.com/dep2/bar fedcba654321...
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# go.vendors example.com/dep1/foo abcdef123456... \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# example.com/dep2/bar fedcba654321...
</span> #
# checksums-append \
# dep1-foo-${foo.version}.tar.gz \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -29,7 +31,69 @@
</span> # to generate a skeleton portfile with precomputed go.vendors and
# checksums-append values.
<span style='display:block; white-space:pre;background:#ffe0e0;'>-PortGroup github 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+options go.package go.domain go.author go.project go.version go.tag_prefix go.tag_suffix
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc go.setup {go_package go_version {go_tag_prefix ""} {go_tag_suffix ""}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global go.package go.domain go.author go.project go.version go.tag_prefix go.tag_suffix
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ go.package ${go_package}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ go.version ${go_version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set parts [go._translate_package_id ${go_package}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ go.domain [lindex ${parts} 0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ go.author [lindex ${parts} 1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ go.project [lindex ${parts} 2]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ switch -exact ${go.domain} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ github.com {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ uplevel "PortGroup github 1.0"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ github.setup ${go.author} ${go.project} ${go_version} ${go_tag_prefix} ${go_tag_suffix}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bitbucket.org {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ uplevel "PortGroup bitbucket 1.0"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bitbucket.setup ${go.author} ${go.project} ${go_version} ${go_tag_prefix}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ default {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {!([info exists PortInfo(name)] && (${PortInfo(name)} ne ${go.project}))} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ name ${go.project}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ version ${go.version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc go._translate_package_id {package_id} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set parts [split ${package_id} /]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set domain [lindex ${parts} 0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set author [lindex ${parts} 1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set project [lindex ${parts} 2]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ switch -exact ${domain} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ golang.org {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Use GitHub mirror
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set domain github.com
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set author golang
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ gopkg.in {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # gopkg.in redirects to GitHub
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set domain github.com
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${project} eq ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Short format: gopkg.in/foo.v1 -> github.com/go-foo/foo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set project [go._strip_gopkg_version ${author}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set author go-${project}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Long format: gopkg.in/foo/bar.v1 -> github.com/foo/bar
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set project [go._strip_gopkg_version ${project}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return [list ${domain} ${author} ${project}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc go._strip_gopkg_version {str} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return [regsub -- \\..*$ ${str} ""]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span>
options go.bin go.vendors
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -44,7 +108,7 @@ default dist_subdir go
</span> default depends_build port:go
set gopath ${workpath}/gopath
<span style='display:block; white-space:pre;background:#ffe0e0;'>-default worksrcdir {${gopath}/src/github.com/${github.author}/${github.project}}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default worksrcdir {${gopath}/src/${go.package}}
</span>
default build.cmd {"${go.bin} build"}
build.args
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -53,63 +117,72 @@ default build.env {"GOPATH=${gopath} CC=${configure.cc}"}
</span>
# go.vendors name1 ver1 name2 ver2...
# When a Gopkg.lock, glide.lock, etc. is present use go2port to generate values
<span style='display:block; white-space:pre;background:#ffe0e0;'>-set go.vendors._internal {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set go.vendors_internal {}
</span> option_proc go.vendors handle_go_vendors
proc handle_go_vendors {option action {value ""}} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global go.vendors._internal
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global go.vendors_internal
</span> if {${action} eq "set"} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- foreach {imp_name vers} ${value} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set vlist [split ${imp_name} /]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach {vpackage vers} ${value} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set vlist [go._translate_package_id ${vpackage}]
</span>
set vdomain [lindex ${vlist} 0]
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set vuser [lindex ${vlist} 1]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set vname [lindex ${vlist} 2]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- switch -exact ${vdomain} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- github.com { set ghuser ${vuser} }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- golang.org { set ghuser golang }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- gopkg.in {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {$vname eq ""} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set vname [regsub -- \\..*$ ${vuser} ""]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set ghuser go-${vname}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set vname [regsub -- \\..*$ ${vname} ""]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set ghuser ${vuser}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set vauthor [lindex ${vlist} 1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set vproject [lindex ${vlist} 2]
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- # Need to use the 7-character SHA-1 suffix later to identify
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # the package when moving into the GOPATH, because the vuser
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # here may be wrong (renamed on GitHub, etc.).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # The vauthor may be wrong (the project has been renamed/changed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # ownership) so we need to use the SHA-1 suffix later to identify
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # the package when moving into the GOPATH. GitHub uses 7 digits;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Bitbucket uses 12. We take 7 and use globbing.
</span> set sha1_short [string range ${vers} 0 6]
<span style='display:block; white-space:pre;background:#ffe0e0;'>- lappend go.vendors._internal [list ${sha1_short} ${imp_name} ${vers}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend go.vendors_internal [list ${sha1_short} ${vpackage} ${vers}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global ${vproject}.version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set ${vproject}.version ${vers}
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global ${vname}.version
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set ${vname}.version ${vers}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set tag ${vauthor}-${vproject}
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set fname ${ghuser}-${vname}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- master_sites-append https://github.com/${ghuser}/${vname}/tarball/${vers}:${fname}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- distfiles-append ${fname}-${vers}.tar.gz:${fname}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ switch -exact ${vdomain} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ github.com {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ master_sites-append https://github.com/${vauthor}/${vproject}/tarball/${vers}:${tag}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ distfiles-append ${vauthor}-${vproject}-${vers}.tar.gz:${tag}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bitbucket.org {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ master_sites-append https://bitbucket.org/${vauthor}/${vproject}/get:${tag}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ distfiles-append ${vers}.tar.gz:${tag}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ default {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_error "go.vendors can't handle dependencies from ${vdomain}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ error "unsupported dependency domain"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> }
}
}
# Setup build sources in GOPATH style:
# workpath/
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# gopath/src/github.com/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# gopath/src/example.com/
</span> # author1/project1/
# author2/project2/
# :
<span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Danger! These manipulations depend heavily on the filenames resulting from
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# expanding the distfiles. GitHub and Bitbucket are known to work:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# - GitHub: ${author}-${project}-${7-digit hash}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# - Bitbucket: ${author}-${project}-${12-digit hash}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Support for additional hosts not conforming to this pattern will take some
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# work.
</span> post-extract {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- file mkdir ${gopath}/src/github.com/${github.author}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- move [glob ${workpath}/${github.author}-${github.project}-*] ${worksrcpath}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ file mkdir ${gopath}/src/${go.domain}/${go.author}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ move [glob ${workpath}/${go.author}-${go.project}-*] ${worksrcpath}
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- foreach vlist ${go.vendors._internal} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach vlist ${go.vendors_internal} {
</span> set sha1_short [lindex ${vlist} 0]
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set imp_name [lindex ${vlist} 1]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- file mkdir ${gopath}/src/[file dirname ${imp_name}]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- move [glob ${workpath}/*-${sha1_short}] ${gopath}/src/${imp_name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set vpackage [lindex ${vlist} 1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ file mkdir ${gopath}/src/[file dirname ${vpackage}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ move [glob ${workpath}/*-${sha1_short}*] ${gopath}/src/${vpackage}
</span> }
}
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/go2port/Portfile b/sysutils/go2port/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 8caecef..b4941c0 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/sysutils/go2port/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/go2port/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3,7 +3,7 @@
</span> PortSystem 1.0
PortGroup golang 1.0
<span style='display:block; white-space:pre;background:#ffe0e0;'>-github.setup amake go2port 66629b0a45b49873a9554807e2c5426fa02fe3bb
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+go.setup github.com/amake/go2port 66629b0a45b49873a9554807e2c5426fa02fe3bb
</span> version 20180911
categories sysutils macports
platforms darwin
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -14,7 +14,7 @@ description A go tool for creating MacPorts portfiles
</span>
long_description ${description}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums go2port-${github.version}.tar.gz \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums ${distname}${extract.suffix} \
</span> rmd160 3256147a10337a3bf5c83cc468d7e6ffb9343584 \
sha256 110b5870be1e2cb956e7e54ea68ad9165ce6167ae2688972b7306e94239cf611 \
size 3957
</pre><pre style='margin:0'>
</pre>