summaryrefslogtreecommitdiff
path: root/pcr/acmetool/PKGBUILD
blob: 46d1cac702c96021d6875ea4993b260d8560e4f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
# Maintainer: Luke Shumaker <lukeshu@parabola.nu>

pkgname=acmetool
pkgver=0.0.54
url=https://github.com/hlandau/acme
pkgdesc="Automatic certificate acquisition tool for ACME (Let's Encrypt)"

pkgrel=1
arch=(x86_64 i686)
depends=(libcap)
makedepends=(go)

# When updating this package, my process is:
#  - run `GOPATH=$PWD go get -d -u github.com/hlandau/acme/cmd/acmetool`
#  - run this one-liner: find src -name .git | while read -r dir; do (cd $dir/.. && git log --pretty="$dir %H $(git describe --tags --always) %ci" -n1); done|sed -r 's|src/(.*)/\.git |\1 |'|while read -r dir hash desc date; do printf '%s %s %s %s\n' "$(date --rfc-3339=seconds -u --date="$date")" "$dir" "$desc" "$hash"; done|column -t|sort -n
#    * verify that no timestamps are newer than that of github.com/hlandau/acme
#      > roll back anything that is newer (be careful of commits that weren't yet merged!)
#    * anything that has changed since PKGBUILD, verify that the license is the same
_source=(
  #import-path                       license     git-describe       commit
  "github.com/hlandau/acme           MIT         v$pkgver           296b3f53761540e9808965e37d363ff722d8b0cc"

  'github.com/alecthomas/template    BSD3        a0175ee            a0175ee3bccc567396460bf5acd36800cb10c49c'
  'github.com/alecthomas/units       MIT         2efee85            2efee857e7cfd4f3d0138cc3cbb1b4966962b93a'
  'github.com/coreos/go-systemd      Apache      v9-4-ga523235      a52323565816dee4d2f8dc5fdf1299f48757b848'
  'github.com/godbus/dbus            BSD2        v4.0.0-5-g32c6cc2  32c6cc29c14570de4cf6d7e7737d68fb2d01ad15'
  'github.com/hlandau/degoutils      MIT         389a847            389a84765529fb80bf6fff3cdcdf814cbc42ee47'
  'github.com/hlandau/xlog           MIT         v1.0.0             197ef798aed28e08ed3e176e678fda81be993a31'
  'github.com/hlandauf/gspt          MIT         25f3bd3            25f3bd3f5948489aa5f31c949310ae9f2b0e956c'
  'github.com/jmhodges/clock         MIT         v1.0-4-g880ee4c    880ee4c335489bc78d01e4d0a254ae880734bc15'
  'github.com/mattn/go-isatty        MIT         56b76bd            56b76bdf51f7708750eac80fa38b952bb9f32639'
  'github.com/mitchellh/go-wordwrap  MIT         ad45545            ad45545899c7b13c020ea92b2072220eefad42b8'
  'github.com/ogier/pflag            BSD3        v0.0.1-7-g45c278a  45c278ab3607870051a2ea9040bb85fcb8557481'
  'github.com/peterhellberg/link     MIT         v1.0.0             d1cebc7ea14a5fc0de7cb4a45acae773161642c6'
  'github.com/satori/go.uuid         MIT         v1.1.0             879c5887cd475cd7864858769793b2ceb0d44feb'
  'github.com/shiena/ansicolor       MIT         a422bbe            a422bbe96644373c5753384a59d678f7d261ff10'
  'golang.org/x/crypto               BSD3        f3241ce            f3241ce8505855877cc8a9717bd61a0f7c4ea83c'
  'golang.org/x/net                  BSD3        8bf2b39            8bf2b39827dbadfd566c4fae7a8790d12be8b23c'
  'gopkg.in/alecthomas/kingpin.v2    MIT         v2.1.11            8cccfa8eb2e3183254457fb1749b2667fbc364c7'
  'gopkg.in/cheggaaa/pb.v1           BSD3        v1.0.3             8808370bf63524e115da1371ba42bce6739f3a6b'
  'gopkg.in/hlandau/configurable.v1  MIT         v1.0.1             41496864a1fe3e0fef2973f22372b755d2897402'
  'gopkg.in/hlandau/easyconfig.v1    MIT         v1.0.14            bc5afaa18a1a72fe424da647d6bb57ca4d7f83c4'
  'gopkg.in/hlandau/service.v2       ISC         v2.0.15            601cce2a79c1e61856e27f43c28ed4d7d2c7a619'
  'gopkg.in/hlandau/svcutils.v1      MIT,Apache  v1.0.7             09c5458e23bda3b8e4d925fd587bd44fbdb5950e'
  'gopkg.in/square/go-jose.v1        Apache      v1.0.2             e3f973b66b91445ec816dd7411ad1b6495a5a2fc'
  'gopkg.in/tylerb/graceful.v1       MIT         v1.2.7             84177357ab104029f9237abcb52339a7b80760ef'
  'gopkg.in/yaml.v2                  MIT,LGPL3   a83829b            a83829b6f1293c91addabc89d0571c246397bbf4'
)
_specparse() {
  local import lic desc commit
  read import lic desc commit <<<"$1"

  local name=${import##*/}; name=${name%%.v*}

  local ver
  vre='^v[^-]+$'
  if [[ $desc =~ $vre ]]; then
    ver="${desc#v}"
    commit="$desc"
  else
    ver="$commit"
  fi

  local url pkg
  case "$import" in
    github.com/*)
      url=https://$import/archive/${commit}.tar.gz
      ;;
    gopkg.in/*)
      pkg=${import#gopkg.in/}
      pkg=${pkg%%.v*}
      [[ $pkg = */* ]] || pkg=go-${pkg}/${pkg}
      url=https://github.com/${pkg}/archive/${commit}.tar.gz
      ;;
    golang.org/x/*)
      url=https://github.com/golang/${import#golang.org/x/}/archive/${commit}.tar.gz
      ;;
    *)
      error "You need to update the _specparse() function to support import: %q" "$import"
      exit 3
      ;;
  esac
  echo "${name} ${ver} ${url}"
}

license=($(
  for spec in "${_source[@]}"; do
    read import lic desc commit <<<"$spec"
    printf '%s\n' ${lic//,/ }
  done | sort -u
))
source=($(
  for spec in "${_source[@]}"; do
    local name ver url
    read name ver url <<<"$(_specparse "$spec")"
    echo "$name-$ver.tar.gz::$url"
  done
))
md5sums=('10b9e98a923f8fa0c864f8bdd35fbecd'
         '46654457851ef6e7f795df572a710fb5'
         'fef2a852aab48bbfd89cd872b315ce11'
         'e3a029e3c62796fdff8fc61ffe888235'
         'fa01f0cee040b8307cdc989ef95144be'
         '11651a53b4e33190c230e12d9af41d1a'
         'd15021ff2511e28417c4c0891c15a595'
         '5112b44c1dce49d44059c5fd20689aa6'
         '785505b477269cfec6069918a1876497'
         'eaed246cf927a4aa2cd2c01959ccd632'
         '123bc1f8f3dc842fc1dfccf65e4ffe6b'
         'bea03fee4cabfb602555e6b3ec4091f0'
         'a100c218269357217b8619e5acff83e6'
         'd0cd15432cf30fae3d6594f3f0839171'
         '4f1ce87e11abc3da157a380bce08a256'
         '86c7c12e82422cbbe4c5378642b73ae8'
         'da6e0a74b19c40839fd8e9b3cc2673ed'
         '50ba53846f917bc2d7dbde289d257891'
         'e1e375f2bed8df78d0f39dfb224ac137'
         'b08b85ab86aa2bc685b0345f60709db3'
         'c2565474cb007f1952be9c066ccfa286'
         '429d0652cb564b90691ee2be617c514b'
         'a364243349d387c8a639f9b44db7b6e8'
         'a2bdbf2c9ec7c0c70aedc85dfdbb8b33'
         '0aef876f153e0b862c3918fe0de88ce6'
         'ed07a5ae129a7203d7f5c1d68472d394')

prepare() {
  cd "$srcdir"
  local spec
  for spec in "${_source[@]}"; do
    local import lic desc commit
    read import lic desc commit <<<"$spec"
    local name ver url
    read name ver url <<<"$(_specparse "$spec")"

    mkdir -p "$(dirname "gopath/src/$import")"
    ln -srTf "${name}-${ver}" "gopath/src/$import"
  done
}

build() {
  cd "$srcdir/gopath"
  GOPATH=$PWD go install github.com/hlandau/acme/cmd/acmetool
}

package() {
  cd "$srcdir"
  install -Dm755 gopath/bin/acmetool "$pkgdir"/usr/bin/acmetool
  install -d "$pkgdir"/usr/share/doc/$pkgname
  install -Dm644 acme-$pkgver/README.md acme-$pkgver/_doc/* -t "$pkgdir"/usr/share/doc/$pkgname

  install -d "$pkgdir"/usr/share/licenses/$pkgname
  local spec
  for spec in "${_source[@]}"; do
    local import lic desc commit
    read import lic desc commit <<<"$spec"
    local name ver url
    read name ver url <<<"$(_specparse "$spec")"

    local base=$name
    [[ $name == acme ]] || base=lib-$base
    base="$pkgdir"/usr/share/licenses/$pkgname/$base
    case $name in
      acme)
        install -m644 $name-$ver/_doc/COPYING.MIT $base.COPYING.txt
        ;;
      yaml)
        install -m644 $name-$ver/LICENSE         $base-primary.LICENSE.txt
        install -m644 $name-$ver/LICENSE.libyaml $base-libyaml.LICENSE.txt
        ;;
      kingpin|units)
        install -m644 $name-$ver/COPYING $base.COPYING.txt
        ;;
      net|crypto)
        install -m644 $name-$ver/LICENSE $base.LICENSE.txt
        install -m644 $name-$ver/PATENTS $base.PATENTS.txt
        ;;
      ansicolor|clock|dbus|degoutils|go-isatty|go-jose|go-systemd|go.uuid|graceful|gspt|pb|pflag|template)
        install -m644 $name-$ver/LICENSE $base.LICENSE.txt
        ;;
      go-wordwrap)
        install -m644 $name-$ver/LICENSE.md $base.LICENSE.txt
        ;;
      svcutils)
        grep -h © $name-$ver/README.md           > $base-primary.txt
        grep -h © $name-$ver/systemd/* | sort -u > $base-systemd.txt
        ;;
      xlog|link)
        sed -n '/## License/,$p' $name-$ver/README.md > $base.txt
        ;;
      service)
        sed -n '/ISC License/,${s/^\s*//p}' $name-$ver/README.md > $base.txt
        ;;
      configurable)
        grep © $name-$ver/README.md > $base.txt
        ;;
      easyconfig)
        sed -n '/^License$/,$p' $name-$ver/README.md > $base.txt
        ;;
      *)
        error 'No rule for license of package %s' $name
        false
        ;;
    esac
  done
}