summaryrefslogtreecommitdiff
path: root/pcr/acmetool/PKGBUILD
blob: 85e642104aa1a27303fffd38cd440033d41332eb (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
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
# 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=2
arch=(x86_64 i686)
depends=(libcap)
makedepends=(go)
optdepends=('dialog')

# When updating this package, my process is:
#  - download the "official" binary from https://github.com/hlandau/acme/releases
#  - run `$dir/bin/acmetool --version|sed -n 's/^git //p'|column -t`
#  - paste that into the _source table below
#  - move the `github.com/hlandau/acme` line to the top, change the git-describe to `v$pkgver`
#  - insert/update the license info for each
_source=(
  #import-path                       commit                                    git-describe  license
  "github.com/hlandau/acme           296b3f53761540e9808965e37d363ff722d8b0cc  v$pkgver      MIT"

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

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

  local ver
  vre='^(tags/)?v[^-]+$'
  if [[ $desc =~ $vre ]]; then
    commit="${desc#tags/}"
    ver="${commit#v}"
  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 commit desc lic <<<"$spec"
    printf '%s\n' ${lic//,/ }
  done | sort -u
))
source=($(
  for spec in "${_source[@]}"; do
    read name ver url <<<"$(_specparse "$spec")"
    echo "$name-$ver.tar.gz::$url"
  done
)
  acmetool-redirector.service
  acmetool.sysusers
)
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'
         '4a173e4c8b5208cc0c31b16216a88206'
         'a7663eb89e3a52c129d5061c3c173ce3')

prepare() {
  cd "$srcdir"
  local spec
  for spec in "${_source[@]}"; do
    local import commit desc lic
    read import commit desc lic <<<"$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() {
  local buildinfo="$pkgname $pkgver"'$\n'"built for Parabola GNU/Linux-libre"

  cd "$srcdir/gopath"
  GOPATH=$PWD go build \
        -ldflags "-X github.com/hlandau/degoutils/buildinfo.RawBuildInfo=$(base64 -w 0 <<< "$buildinfo")" \
        github.com/hlandau/acme/cmd/acmetool

  cd "$srcdir"
  gopath/acmetool --help-man > acmetool.8
}

package() {
  cd "$srcdir"
  install -Dm755 gopath/acmetool "$pkgdir"/usr/bin/acmetool
  install -Dm644 acmetool.8  "$pkgdir"/usr/share/man/man8/acmetool.8
  install -Dm644 acmetool-redirector.service  "$pkgdir"/usr/lib/systemd/system/acmetool-redirector.service
  install -Dm644 acmetool.sysusers  "$pkgdir"/usr/lib/sysusers.d/acmetool.conf

  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 commit desc lic
    read import commit desc lic <<<"$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
}