blob: 7fa4de2a2b5049f46712979e47cd8f2460616b78 (
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
|
# Maintainer: Score_Under <seejay 11@gmail com>
# Configuration:
#####
build_pyc=false
build_pyo=true
build_cython=false
remove_py=false
remove_help=false
#####
$build_cython || options=(!strip) # Don't strip libs because there aren't any; this wastes time
DOC_DIRS=(opt/hydrus/help)
pkgname=hydrus
pkgver=161
pkgrel=1
pkgdesc="Danbooru-like image tagging and searching system for the desktop"
arch=(any)
license=(WTFPL)
url=http://hydrusnetwork.github.io/hydrus/
depends=(python2 wxpython opencv python2-beautifulsoup4 python2-yaml
hsaudiotag python2-pypdf2 python2-pafy python2-lz4 python2-numpy
python2-twisted python2-pillow python2-potr python2-flvlib python2-socks)
makedepends=(git)
$build_cython && makedepends+=(cython2 parallel)
optdepends=('ffmpeg: show duration and other information on video thumbnails'
'miniupnpc: automatic port forwarding')
source=("${pkgname}::git+https://github.com/hydrusnetwork/${pkgname}.git#commit=bb64ceb77b0f97edf7c415f8aded12088c539d3e"
paths-in-opt.patch
running-the-server.patch
cython-workarounds.patch
hydrus-client
hydrus-server
hydrus.desktop)
sha256sums=('SKIP'
'11b50515f06e9e74cf689353cbc39e82ff3d0f4321c416cc19a95fdfb8bf2fe6'
'b4cd358402ac8f225fe77a60aeb89dde88ba8ad050c5b04f11c1ffd44242e9d8'
'21164d22827456ecf70fca090c94af38d4bff6e128c60709437e24f031a8ae64'
'b2bf66b1068969e9598742d5c128cb04fd609512b0cff0ad5e25ecb6cdd35678'
'ac7254e3cdb359ebae302655b72b9f74b85d9e817c326fa28173791b3fb4f114'
'9ba3942ac1a37f6b39c98ae6592573402bf08d8376f64554d0696c0fed6fd0e2')
install=hydrus.install
prepare() {
cd "$pkgname"
patch -Np1 -i ../paths-in-opt.patch
patch -Np1 -i ../running-the-server.patch
# Cython patches if applicable
$build_cython && patch -Np1 -i ../cython-workarounds.patch
# Fix permissions
chmod a-x include/*.py
# Remove strange file
rm -f "include/pyconfig.h"
# Remove unit tests
rm -f "include/Test"*.py
rm -rf "static/testing"
}
build() {
cd "$pkgname"
# Compile .py files
$build_pyc && python2 -m compileall .
$build_pyo && python2 -OO -m compileall .
if $build_cython; then
cd include
local -a files_to_compile
files_to_compile=()
for file in *.py; do
# ClientGUICommon.py and ClientController.py have problems when built under Cython
[ "$file" == ClientGUICommon.py -o "$file" == ClientController.py ] && continue
files_to_compile+=("${file%.py}")
done
cython2 -2 --fast-fail -Werror "${files_to_compile[@]/%/.py}"
parallel --bar '${CCLD:-gcc} -Os -s -fpic -shared -o {}.so {}.c $(python2-config --libs --includes) $LDFLAGS' ::: "${files_to_compile[@]}"
rm -f -- "${files_to_compile/%/.c}"
fi
}
package() {
cd "$pkgname"
# Create /opt/hydrus and copy hydrus sources to there
install -m755 -d "${pkgdir}/opt/hydrus"
cp -r help include static client.pyw server.pyw "${pkgdir}/opt/hydrus/"
# Remove .py files
$remove_py && find "${pkgdir}/opt/hydrus" -name '*.py' -delete
# Remove help
$remove_help && rm -rf "${pkgdir}/opt/hydrus/help"
# Fix permissions
chown -R root:root "${pkgdir}/opt/hydrus"
# Create and populate /opt/hydrus/bin
install -d -m755 "${pkgdir}/opt/hydrus/bin"
ln -s /usr/bin/upnpc "${pkgdir}/opt/hydrus/bin/upnpc_linux"
ln -s /usr/bin/ffmpeg "${pkgdir}/opt/hydrus/bin/ffmpeg"
# Install hydrus-client and hydrus-server executables
install -d -m755 "${pkgdir}/usr/bin"
install -m755 ../hydrus-{client,server} "${pkgdir}/usr/bin/"
# Install license files
install -d -m755 "${pkgdir}/usr/share/licenses/${pkgname}"
install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
install -m644 license.txt "${pkgdir}/usr/share/licenses/${pkgname}/"
# Install .desktop shortcut
install -d -m755 "${pkgdir}/usr/share/applications"
install -m644 ../hydrus.desktop "${pkgdir}/usr/share/applications/${pkgname}.desktop"
}
|