summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: d684f9f2cad189a5440957002bcbbb1b2c83cf04 (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
# Maintainer:
# Contributor: Michał Wojdyła < micwoj9292 at gmail dot com >
# Contributor: Fredrick R. Brennan <copypaste@kittens.ph>
# Contributor: nyorain <nyorain at gmail dot com>

pkgname=('skia-git')
pkgver=r74066.d746d5faaa
pkgrel=1
pkgdesc="Chromiums high-performance rendering library"
arch=('x86_64')
url="https://github.com/google/skia"
license=('BSD')
depends=('zlib' 'libglvnd' 'freetype2' 'expat' 'libpng' 'libjpeg-turbo' 'fontconfig' 'harfbuzz' 'gcc-libs' 'libwebp' 'glibc')
makedepends=('git' 'rsync' 'python' 'procps-ng' 'ninja' 'depot-tools-git')
pkgver() {
    cd "$srcdir/skia"
    printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
}

#TODO:
# skia-git W: ELF file ('usr/lib/libskia.so') lacks FULL RELRO, check LDFLAGS.
# use system gn, if even possible...
# try not to use rsync
# clean up package()
# recheck deps + makedeps

prepare() {
    # to make sure depot tools are in path
    cd "$srcdir"
    SRC_DIR="$(readlink -f "$srcdir")"
#    [ ! -d "/opt/depot_tools/.git" ] && {
#        tput bold
#        echo $'depot_tools not found, cloning just for this AUR build of Skia!!!\nSee https://aur.archlinux.org/packages/depot-tools-git#comment-941904'
#        tput sgr0
#        [ -d ./depot_tools ] && {
#            pushd depot_tools
#            git switch main
#            git pull
#            popd
#        } || {
#            git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
#        }
#    } || {
        rsync -Pa /opt/depot_tools/ "$SRC_DIR/depot_tools/"
#    }

    export PATH="$SRC_DIR/depot_tools:$PATH"

    #git config --global --add safe.directory /opt/depot_tools

    # download/sync skia
    cd "$srcdir"
    gclient config https://skia.googlesource.com/skia.git < <(yes)
    gclient sync < <(yes)
    gclient runhooks < <(yes)

    # generate the ninja build files using gn
    cd skia
    tools/git-sync-deps
    bin/gn gen out/Debug --args='is_official_build=true is_component_build=true'
}

build() {
    cd skia
    export PATH="$srcdir/depot_tools:$PATH"
    ninja -C ./out/Debug
}

package() {
    local cxxfindheaders='-type f -and -( -name "*.h" -or -name "*.hh" -or -name "*.hpp" -or -name "*.hxx" -or -name "*.inc" -)'
    cd "$srcdir/skia"

    # License
    install -D -m644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"

    # Library
    install -D -m644 out/Debug/libskia.so "$pkgdir/usr/lib/libskia.so"

    # Headers
    find include $cxxfindheaders \
        -exec install -v -D -m644 {} "$pkgdir/usr/include/skia/"{} \; -print
}