summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 0f0669d8d83493ba713cf4fffffe40a7ddb9c0ad (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
# Maintainer: Nicolas Iooss (nicolas <dot> iooss <at> m4x <dot> org)

pkgbase=gcc-python-plugin
pkgname=('gcc-python-plugin' 'gcc-python2-plugin' 'gcc-python-plugin-c-api' 'gcc-python-plugin-doc')
pkgver=0.17
pkgrel=1
pkgdesc="GCC plugin that embeds CPython inside the compiler"
arch=('i686' 'x86_64')
url='https://gcc-python-plugin.readthedocs.io/en/latest/'
license=('GPL3')
makedepends=('python-lxml' 'python-pygments' 'python-six' 'python-sphinx'
             'python2-lxml' 'python2-pygments' 'python2-six')
source=("${pkgbase}-${pkgver}.tar.gz::https://github.com/davidmalcolm/gcc-python-plugin/archive/v${pkgver}.tar.gz"
        '0001-Build-on-Python-3.8.patch')
sha256sums=('63ba345fe85973605f215840908930ddf97afcaa4e80228671ab0a543565a83a'
            '6b0898c66c51be374eff06ffafa49f9afbed86757bc2203bb57be58d3e09d7c8')

prepare() {
    cd "$pkgbase-$pkgver"

    # https://github.com/davidmalcolm/gcc-python-plugin/commit/3a4b484eaeda215a086cca967421ca249f7d7b48
    patch -Np1 -i ../0001-Build-on-Python-3.8.patch

    # Duplicate the checkout for the Python2 plugin
    cp -a "../gcc-python-plugin-$pkgver" "../gcc-python2-plugin-$pkgver"
}

build() {
  GCCPLUGINS_DIR="$(${CC:-gcc} --print-file-name=plugin)"

  # Since Python 3.8, python-config --libs no longer includes /usr/lib/libpython3.8.so
  # https://github.com/davidmalcolm/gcc-python-plugin/pull/185
  PYTHON3_LIBNAME="$(/usr/bin/python3 -c 'import sys;print("python%d.%d" % sys.version_info[:2])')"

  make -C "gcc-python-plugin-$pkgver" plugin man html \
    PLUGIN_NAME=python PYTHON=python PYTHON_CONFIG=python-config \
    PYTHON_LIBS="-l${PYTHON3_LIBNAME} $(python-config --libs)" \
    PLUGIN_PYTHONPATH="$GCCPLUGINS_DIR/python"
  make -C "gcc-python2-plugin-$pkgver" plugin man \
    PLUGIN_NAME=python2 PYTHON=python2 PYTHON_CONFIG=python2-config \
    PLUGIN_PYTHONPATH="$GCCPLUGINS_DIR/python2"
}

check() {
  pushd "gcc-python-plugin-$pkgver"
  # This test fails with Python 3. Ignore it.
  LD_LIBRARY_PATH=gcc-c-api PLUGIN_NAME=python python run-test-suite.py || :
  LD_LIBRARY_PATH=gcc-c-api PLUGIN_NAME=python python testcpychecker.py -v
  popd

  pushd "gcc-python2-plugin-$pkgver"
  LD_LIBRARY_PATH=gcc-c-api PLUGIN_NAME=python2 python2 run-test-suite.py
  LD_LIBRARY_PATH=gcc-c-api PLUGIN_NAME=python2 python2 testcpychecker.py -v
  popd
}

package_gcc-python-plugin() {
  depends=('python-lxml' 'python-pygments' 'python-six' 'gcc-python-plugin-c-api')
  optdepends=('graphviz: for examples')

  cd "$pkgname-$pkgver"
  GCCPLUGINS_DIR="$(${CC:-gcc} --print-file-name=plugin)"
  make DESTDIR="$pkgdir" install \
    PLUGIN_NAME=python PYTHON=python PYTHON_CONFIG=python-config \
    PLUGIN_PYTHONPATH="$GCCPLUGINS_DIR/python"

  rm "$pkgdir$(${CC:-gcc} --print-file-name=plugin)/libgcc-c-api.so"
}

package_gcc-python2-plugin() {
  depends=('python2-lxml' 'python2-pygments' 'python2-six' 'gcc-python-plugin-c-api')
  optdepends=('graphviz: for examples')

  cd "$pkgname-$pkgver"
  GCCPLUGINS_DIR="$(${CC:-gcc} --print-file-name=plugin)"
  make DESTDIR="$pkgdir" install \
    PLUGIN_NAME=python2 PYTHON=python2 PYTHON_CONFIG=python2-config \
    PLUGIN_PYTHONPATH="$GCCPLUGINS_DIR/python2"

  rm "$pkgdir$(${CC:-gcc} --print-file-name=plugin)/libgcc-c-api.so"
}

package_gcc-python-plugin-c-api() {
  cd "$pkgbase-$pkgver"

  # Install only once the library which is provided by both versions
  GCCPLUGINS_DIR="$(${CC:-gcc} --print-file-name=plugin)"
  install -Dm755 gcc-c-api/libgcc-c-api.so "$pkgdir$GCCPLUGINS_DIR/libgcc-c-api.so"
}

package_gcc-python-plugin-doc() {
  cd "$pkgbase-$pkgver"

  mkdir -p "$pkgdir/usr/share/doc/$pkgbase"
  cp -r docs/_build/html examples "$pkgdir/usr/share/doc/$pkgbase/"
}