summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 66b9d6c374db259a79798d6ad027668eb19f56d5 (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
# Maintainer: dreieck

_pkgname=keyboardlayouteditor
pkgname="${_pkgname}"-git
pkgver=1.1+r84.g742101b
pkgrel=3
pkgdesc="PyGTK programme that helps create or edit XKB keyboard layouts."
arch=('any')
url="http://github.com/simos/keyboardlayouteditor"
license=('GPL3')
# To run the application, you need the python UI binding packages. For Ubuntu 14.04, the packages below are already pre-installed.
# * Cairo
# * Pango
# * GObject
# * lxml
depends=(
  'pygtk'
  'python2'
  'python2-antlr3=3.1.2'
  'python2-cairo'
  'python2-gobject2'
  'python2-lxml'
)
makedepends=(
  'antlr3=3.1.2'
  'git'
)
optdepends=()
provides=(
  "${_pkgname}=${pkgver}"
)
source=(
  "${_pkgname}::git+git://github.com/simos/${_pkgname}.git"
  "keyboardlayouteditor.sh"
)
sha256sums=(
  "SKIP"
  "349b12f237a19f76af16082d58bf443892190faa5f741aced92e10f6e79d8761"
)

_cmd() {
  # Prints out what to be run to stdout, and then executes it.
  # The command and it's arguments is passed as argument(s).

  printf '%s' '> '; cat <<< "$@"
  "$@"
}

pkgver() {
  cd "${srcdir}/${_pkgname}"

  _ver="$(grep '__version__' KeyboardLayoutEditor | tail -n 1 | awk -F '=' '{print $2}' | tr -d "[[:space:]]'\"")"
  _rev="$(git rev-list --count HEAD)"
  _githash="$(git rev-parse --short HEAD)"

  if [ -z "${_ver}" ]; then
    msg2 "Error in 'pkgver()': Could not determine version."
    return 11
  fi
  if [ -z "${_rev}" ]; then
    msg2 "Error in 'pkgver()': Could not determine commit count."
    return 12
  fi
  if [ -z "${_githash}" ]; then
    msg2 "Error in 'pkgver()': Could not determine git commit hash."
    return 13
  fi

  echo "${_ver}+r${_rev}.g${_githash}"
}

prepare() {
  cd "${srcdir}"

  cat <<< "${url}" > website.url
}

build() {

  _patch_for_python2() {
    # Arguments: Tiles to check if the shabeng line needs patching.
    # It patches the shabeng-line from 'python' to 'python2', if not already done.

    ls -1 "$@" | while read _f; do
      if head -n1 "${_f}" | grep -Eq '^#!.*python[[:space:]]*$'; then
        _cmd sed -E '1s|python[[:space:]]*$|python2|' -i "${_f}"
      fi
    done
  }

  cd "${srcdir}/${_pkgname}"

  _cmd antlr3 *.g
  # _cmd java -classpath /usr/share/java/antlr-3.1.2.jar org.antlr.Tool *.g

  ### This takes too long, since each call of 'antlr3' starts a java environment. Use the 'antlr3 *.g'-call instead.
  # ls -1 *.g | while read _g; do
  #   _cmd antlr3 "${_g}"
  # done

  _patch_for_python2 *.py KeyboardLayoutEditor


  _cmd cd utils
  _cmd antlr3 *.g

  _patch_for_python2 *.py
}

package() {
  _instbase="/opt/${_pkgname}"
  _instdir="${pkgdir}/${_instbase}"

  cd "${srcdir}/${_pkgname}"

  _cmd install -d -m755 "${_instdir}"

  _cmd cp -a * "${_instdir}/"
  _cmd rm -Rf "${_instdir}"/{.[a-zA-Z0-9_]*,utils/*.g,*.g,COPYING,README.md,TODO}

  _cmd install -D -m755 "${srcdir}/keyboardlayouteditor.sh" "${pkgdir}/usr/bin/keyboardlayouteditor"

  for _docfile in 'README.md' 'TODO'; do
    _cmd install -D -m644 "${_docfile}" "${pkgdir}/usr/share/doc/${_pkgname}/${_docfile}"
  done
  _cmd install -D -m644 "${srcdir}/website.url" "${pkgdir}/usr/share/doc/${_pkgname}/website.url"

  _cmd install -D -m644 'COPYING' "${pkgdir}/usr/share/licenses/${pkgname}/COPYING"
}