summaryrefslogtreecommitdiffstats
path: root/abs/extra-testing/community/xbmc-svn/PKGBUILD
blob: 74d2b7e535a751ac842e81e01bad19f4b4d6d4f6 (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
# Contributors : Richard Atkinson atkinsonr-at-gmail 
#                Ralf Barth <archlinux dot org at haggy dot org>
#
# Original credits go to Edgar Hucek <gimli at dark-green dot com>
# for his xbmc-vdpau-vdr PKGBUILD at https://archvdr.svn.sourceforge.net/svnroot/archvdr/trunk/archvdr/xbmc-vdpau-vdr/PKGBUILD

pkgname=xbmc-svn
pkgver=21337
pkgrel=1
pkgdesc="XBMC Media Center from SVN (linuxport branch)"
provides=('xbmc')
conflicts=('xbmc' 'xbmc-smoothvideo' 'xbmc-vdpau')
arch=('i686' 'x86_64')
url="http://xbmc.org"
license=('GPL' 'LGPL')
depends=('alsa-lib' 'curl' 'enca' 'faac' 'freetype2' 'fribidi' 'gawk' 'glew'
         'hal' 'jasper' 'libgl' 'libjpeg>=6b-5' 'libmad' 'libmysqlclient'
         'libxinerama' 'libxrandr' 'lzo2' 'sdl_image' 'sdl_mixer' 'sqlite3'
         'tre' 'unzip' 'libcdio' 'libsamplerate' 'python' 'avahi' 'libmad' 
         'a52dec' 'libdca' 'faad2' 'libmpeg2' 'libvorbis' 'libogg' 
         'libmpcdec' 'flac' 'wavpack' 'xorg-utils')
makedepends=('subversion' 'autoconf' 'automake' 'boost' 'cmake' 'gcc' 'gperf' 
             'libtool>=2.2.6a-1' 'make' 'nasm' 'patch' 'pkgconfig' 'zip' 'flex' 'bison')
optdepends=('lirc: remote controller support'
            'pmount: mount removable devices as normal user'
            'smbclient: access windows shares'
            'unrar: access compressed files without unpacking them')
install=("${pkgname}.install")
source=('libcurl-not-in-lib64.patch'
	'Lircmap.xml')
noextract=('libcurl-not-in-lib64.patch'
	   'Lircmap.xml')
md5sums=('ac1244a5b4aad0e7d59e86a0d318df1b'
	 '3f93186f1ea4aad73011d00754c7265a')

options=(!makeflags)

build() {
	
    _svntrunk=http://xbmc.svn.sourceforge.net/svnroot/xbmc/branches/linuxport/XBMC
    _svnmod=XBMC
    _prefix=/usr

    cd ${srcdir}/
    if [ -d $_svnmod/.svn ]; then
        msg "SVN tree found, reverting changes and updating to -r$pkgver"
        (cd $_svnmod && svn revert -R . && svn up -r $pkgver) || return 1
    else
        msg "Checking out SVN tree of -r$pkgver"
        svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod || return 1
    fi

    # Apply patches
    cd "$srcdir/$_svnmod"

    # Arch's libcurl lives in /usr/lib, not /usr/lib64 - fix the path:
    msg "Patching with libcurl-not-in-lib64.patch" 
    patch -p0 < "$srcdir/libcurl-not-in-lib64.patch" || return 1

    # Goom also needs a fixup due to newer autotools
    cd "$srcdir/$_svnmod/xbmc/visualizations/Goom/goom2k4-0"
    aclocal
    libtoolize --copy --force
    ./autogen.sh --enable-static --with-pic

    cd "$srcdir/$_svnmod"

    # Configure XBMC
    #
    # Note on external-libs:
    #   - We cannot use external python because Arch's python was built with
    #     UCS2 unicode support, whereas xbmc expects UCS4 support
    #   - We cannot use external ffmpeg as we would loose VDPAU functionality
    #     because Arch's ffmpeg package does not support VDPAU
    #   - We don't want to rely on AUR packages, so we also don't use libass
    #     as long as it's in AUR
    msg "Configuring XBMC" 
    make clean
    ./configure --prefix=${_prefix} \
                --enable-external-libmad \
                --enable-external-liba52 \
                --enable-external-libdts \
                --enable-external-libfaad \
                --enable-external-libmpeg2 \
                --enable-external-libvorbis \
                --enable-external-libogg \
                --enable-external-libmpcdec \
                --enable-external-libflac \
                --enable-external-libwavpack \
                --disable-external-libass \
                --disable-external-python \
                --disable-external-ffmpeg \
                --disable-debug || return 1
    
    # Fix false negative detections of realloc that happens some times
    msg "Fixing false negative detections of realloc" 
    if grep -q 'HAVE_REALLOC 0' config.h; then
      sed -e 's|#define HAVE_REALLOC 0|#define HAVE_REALLOC 1|' \
          -e 's|#define realloc rpl_realloc|/* #define realloc rpl_realloc */|' \
          -i config.h || return 1
    fi

    # XBMCTex will segfault on systems with nvidia installed if linked to OpenGL
    msg "Fixing XBMCTex on systems using the nvidia driver blob" 
    sed -e 's/-lGLU -lGLEW -lGL//' \
        -i ${srcdir}/$_svnmod/tools/XBMCTex/Makefile

    # Now (finally) build
    msg "Running make" 
    make || return 1
    msg "Running make install" 
    make prefix=${pkgdir}${_prefix} install || return 1

    # Install 
    install -Dm755 ${srcdir}/$_svnmod/xbmc-xrandr \
                   ${pkgdir}${_prefix}/share/xbmc/xbmc-xrandr || return 1

    install -Dm644 ${srcdir}/$_svnmod/tools/Linux/xbmc.desktop \
                   ${pkgdir}${_prefix}/share/applications/xbmc.desktop || return 1

    install -Dm644 ${srcdir}/$_svnmod/tools/Linux/xbmc.png \
                   ${pkgdir}${_prefix}/share/pixmaps/xbmc.png || return 1

    install -Dm755 ${srcdir}/$_svnmod/tools/XBMCTex/XBMCTex \
                   ${pkgdir}${_prefix}/share/xbmc/tools/xbmctex || return 1

    # Skins often use build.sh that looks for /usr/bin/XBMCTex
    ln -s "${_prefix}/share/xbmc/tools/xbmctex" "$pkgdir/usr/bin/XBMCTex"

    install -dm755 ${pkgdir}${_prefix}/share/licenses/${pkgname}
    for licensef in LICENSE.GPL README.linux copying.txt; do
        mv ${pkgdir}${_prefix}/share/xbmc/${licensef} \
           ${pkgdir}${_prefix}/share/licenses/${pkgname} || return 1
    done

    # Use custom Lircmap to support StreamZap remote
    cp ${srcdir}/Lircmap.xml ${pkgdir}${_prefix}/share/xbmc/system/Lircmap.xml
}