summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 748582f2c5fefe840e55a138a78e73d0fa991f16 (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
# Maintainer:  Vitalii Kuzhdin <vitaliikuzhdin@gmail.com>

_pkgname="sngrep"
pkgname="${_pkgname}-bin"
pkgver=1.8.2
pkgrel=2
pkgdesc="A tool for displaying SIP call message flows from a terminal"
arch=('i686' 'x86_64')
url="https://github.com/irontec/${_pkgname}"
license=('GPL-3.0-or-later')
makedepends=('xxd')
provides=("${_pkgname}")
conflicts=("${_pkgname}")
backup=("etc/${_pkgname}/${_pkgname}rc")
_pkgsrc="${_pkgname}-${pkgver}"
source=("${_pkgsrc}-README.md::${url}/raw/refs/tags/v${pkgver}/README.md"
        "${_pkgsrc}-LICENSE::${url}/raw/refs/tags/v${pkgver}/LICENSE"
        "${_pkgsrc}.man.8::${url}/raw/refs/tags/v${pkgver}/doc/${_pkgname}.8"
        "${_pkgsrc}-${_pkgname}rc::${url}/raw/refs/tags/v${pkgver}/config/${_pkgname}rc")
source_i686=("${_pkgsrc}-i686::https://packages.irontec.com/binaries/${_pkgname}-static-i386-linux-gnu-${pkgver}")
source_x86_64=("${_pkgsrc}-x86_64::https://packages.irontec.com/binaries/${_pkgname}-static-amd64-linux-gnu-${pkgver}")
md5sums=('c47c7c7383225ab55ff591cb59c41e6b'
         'd32239bcb673463ab874e80d47fae504'
         '3fd6ccca40ec9086a061ca221e5d375b'
         '5650c8a266261a831642112138129566')
md5sums_i686=('8f460d1e77e3f8578ab4d529f0d0d873')
md5sums_x86_64=('354b230c6c426973cbd289c8bedfd914')
sha256sums=('2b7814d3fca2e99e56c51b6ff2aa313ea6e9da6424804240aa8ad891fdfe0900'
            '8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903'
            'e5cf742a5051339c33d8c91c1a8ec7fa9f06ba2fba34a90d81847073e2be7e29'
            'e7eb8897f6facdaf67eb013b000f8f4443c86b19d29cb66aa8ad1b5e7ec2d633')
sha256sums_i686=('744ac6185b988aedb2c60981197fcdd27afa474905b794a99cb7fb2a5151aa2a')
sha256sums_x86_64=('89e3292e4a04d96d9f3ac74852b757019f5a4f76da991cc0493ab0261bd47c1c')

# https://everydaywithlinux.blogspot.com/2012/11/patch-strings-in-binary-files-with-sed.html
_patch_strings_in_file() {
  local FILE="$1"
  local PATTERN="$2"
  local REPLACEMENT="$3"
  
  STRINGS=$(strings ${FILE} | grep ${PATTERN} | sort -u -r)
  if [ "${STRINGS}" != "" ] ; then
    echo "Patching file '${FILE}'"
    for OLD_STRING in ${STRINGS} ; do
      NEW_STRING=${OLD_STRING//${PATTERN}/${REPLACEMENT}}
      OLD_STRING_HEX="$(echo -n "${OLD_STRING}" | xxd -g 0 -u -ps -c 256 | tr -d '\n')"
      NEW_STRING_HEX="$(echo -n "${NEW_STRING}" | xxd -g 0 -u -ps -c 256 | tr -d '\n')"
      if [ ${#NEW_STRING_HEX} -le ${#OLD_STRING_HEX} ] ; then
        while [ ${#NEW_STRING_HEX} -lt ${#OLD_STRING_HEX} ] ; do
          NEW_STRING_HEX="${NEW_STRING_HEX}00"
        done
        echo -n "Replacing ${OLD_STRING} with ${NEW_STRING}... "
        hexdump -ve '1/1 "%.2X"' ${FILE} | \
          sed "s/${OLD_STRING_HEX}/${NEW_STRING_HEX}/g" | \
          xxd -r -p > ${FILE}.tmp
        chmod --reference ${FILE} ${FILE}.tmp
        mv ${FILE}.tmp ${FILE}
        echo "Done!"
      else
        echo "New string '${NEW_STRING}' is longer than old string '${OLD_STRING}'. Skipping."
      fi
    done
  fi
}

prepare() {
  cd "${srcdir}"
  _patch_strings_in_file "${_pkgsrc}-${CARCH}" "/usr/local/etc/${_pkgname}rc" "/etc/${_pkgname}/${_pkgname}rc"
}

package() {
  cd "${srcdir}"
  install -vDm755 "${_pkgsrc}-${CARCH}" "${pkgdir}/usr/bin/${_pkgname}"
  install -vDm644 "${_pkgsrc}-README.md" "${pkgdir}/usr/share/doc/${_pkgname}/README.md"
  install -vDm644 "${_pkgsrc}-LICENSE" "${pkgdir}/usr/share/licenses/${_pkgname}/LICENSE"
  install -vDm644 "${_pkgsrc}.man.8" "${pkgdir}/usr/share/man/man8/${_pkgname}.8"
  install -vDm644 "${_pkgsrc}-${_pkgname}rc" "${pkgdir}/etc/${_pkgname}/${_pkgname}rc"
}