mirror of
https://github.com/LibreELEC/LibreELEC.tv
synced 2025-09-24 19:46:01 +07:00
Compare commits
475 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e377852a3e | ||
|
|
3ea0d883d3 | ||
|
|
d5ed603e20 | ||
|
|
b44e14c34b | ||
|
|
db4e1e629d | ||
|
|
682039e1f0 | ||
|
|
b0ddde0463 | ||
|
|
57b084560d | ||
|
|
90375d89e4 | ||
|
|
1f2b668d48 | ||
|
|
14c4113e9e | ||
|
|
5c60b12739 | ||
|
|
12073d0bc1 | ||
|
|
ce4abb247a | ||
|
|
aa46b8159e | ||
|
|
320762e06d | ||
|
|
85dee53e91 | ||
|
|
41a616e906 | ||
|
|
83ca4c02da | ||
|
|
7c47121777 | ||
|
|
fe939566b8 | ||
|
|
f9d475464a | ||
|
|
5f2bb33511 | ||
|
|
c1fb05d4fa | ||
|
|
f632d7c7bd | ||
|
|
71a8541bb4 | ||
|
|
9430ad0172 | ||
|
|
2f590e018d | ||
|
|
c738195b34 | ||
|
|
6c0f8ae280 | ||
|
|
99b8c84e6c | ||
|
|
94e3fd5298 | ||
|
|
ea8ab3ac3a | ||
|
|
4a0531a6a6 | ||
|
|
ae8f7703e9 | ||
|
|
1289d81d5d | ||
|
|
fe040604e4 | ||
|
|
47394d3a64 | ||
|
|
59daaddd04 | ||
|
|
9b7c164b32 | ||
|
|
6857c82f7b | ||
|
|
319b02f643 | ||
|
|
9506cf652f | ||
|
|
d1781f4f58 | ||
|
|
5d11e65dd6 | ||
|
|
c023881f58 | ||
|
|
b2cd28a922 | ||
|
|
a61ad190a1 | ||
|
|
7a64ea21b3 | ||
|
|
7e0714feb7 | ||
|
|
347828fd9e | ||
|
|
a08694a23d | ||
|
|
9ba19fcb42 | ||
|
|
822087da02 | ||
|
|
c33a560544 | ||
|
|
4173481b4b | ||
|
|
d90305e027 | ||
|
|
a5b35e1b44 | ||
|
|
5668f98de0 | ||
|
|
5168f2ac8a | ||
|
|
ffbcb3c694 | ||
|
|
a9f0bce9b1 | ||
|
|
773aac378d | ||
|
|
2bdf638ff5 | ||
|
|
33b84bd170 | ||
|
|
cb1d8a0756 | ||
|
|
91ba059f9a | ||
|
|
06e0649cfc | ||
|
|
714238a163 | ||
|
|
659c700521 | ||
|
|
3e4208803c | ||
|
|
fb440c9f21 | ||
|
|
cb8d0e462b | ||
|
|
e1e26f9fce | ||
|
|
2885409990 | ||
|
|
d815596348 | ||
|
|
4efcece54f | ||
|
|
c5b59eef8a | ||
|
|
ca8f7f091c | ||
|
|
640dfe0681 | ||
|
|
85d6137cfc | ||
|
|
eb4cdd8186 | ||
|
|
de4f502026 | ||
|
|
b512b5573b | ||
|
|
20ffbfd1b2 | ||
|
|
72b616100b | ||
|
|
3f4e9b5fce | ||
|
|
f98660e205 | ||
|
|
4a56c2736f | ||
|
|
9d86a27683 | ||
|
|
42ccebcf9e | ||
|
|
ce937bb74a | ||
|
|
eb769979c6 | ||
|
|
978d37579c | ||
|
|
e5bcaaac64 | ||
|
|
495f863856 | ||
|
|
114bf18b4e | ||
|
|
8618bcbb54 | ||
|
|
6ef5db468b | ||
|
|
7b85e70ebe | ||
|
|
3a0b20ba80 | ||
|
|
cd14999372 | ||
|
|
7565ff5062 | ||
|
|
faee944ee5 | ||
|
|
eb91434183 | ||
|
|
e81d1f19ec | ||
|
|
f5938435b8 | ||
|
|
b0a403e5f7 | ||
|
|
b98bf418ee | ||
|
|
766af101fb | ||
|
|
608114cbb6 | ||
|
|
c7c9516d97 | ||
|
|
a148475238 | ||
|
|
c8b18b7881 | ||
|
|
8d35215acf | ||
|
|
4a35f9437e | ||
|
|
9dce4aa43e | ||
|
|
a0f4a8c307 | ||
|
|
7b3555a441 | ||
|
|
64cd573bb5 | ||
|
|
5f4824528a | ||
|
|
ec93b6cecd | ||
|
|
5f12644d7e | ||
|
|
9dd4e7ee50 | ||
|
|
050d9f2297 | ||
|
|
41d8e6f875 | ||
|
|
7aa14b5668 | ||
|
|
4fdd94aaa4 | ||
|
|
aab854c087 | ||
|
|
a3fe66c5e0 | ||
|
|
d5bd70db70 | ||
|
|
6bd655000b | ||
|
|
f6ba39741d | ||
|
|
46f9fa6da9 | ||
|
|
573cb65e9a | ||
|
|
1be50aa391 | ||
|
|
ff016e0934 | ||
|
|
8819fa2d54 | ||
|
|
ac64672839 | ||
|
|
0b2510166c | ||
|
|
bcc0ef6506 | ||
|
|
aae9acfe7c | ||
|
|
92823333c1 | ||
|
|
eeb6f012fb | ||
|
|
833ca5bea1 | ||
|
|
fd8fa2ee21 | ||
|
|
fedada20bd | ||
|
|
0932197e5e | ||
|
|
1eccdf9b3f | ||
|
|
5296184c9a | ||
|
|
2ba6ca234c | ||
|
|
636fe081e1 | ||
|
|
9a4edb226e | ||
|
|
39ce790146 | ||
|
|
7e9cd4a7a3 | ||
|
|
e83bdae340 | ||
|
|
22157a49b4 | ||
|
|
a17f5a13f1 | ||
|
|
b98b326ea3 | ||
|
|
7d7d40d4d8 | ||
|
|
1b5a1ab8ea | ||
|
|
6fa73db650 | ||
|
|
879921fb89 | ||
|
|
ab419fcc3b | ||
|
|
cc663e6bda | ||
|
|
a9bb981b86 | ||
|
|
6d487a521c | ||
|
|
4fd9d79002 | ||
|
|
7d1caea56b | ||
|
|
cd5f42c2ef | ||
|
|
4c41dd5830 | ||
|
|
d224757a50 | ||
|
|
4dfd19fd7d | ||
|
|
612763e8c0 | ||
|
|
079f817e3b | ||
|
|
e2484b09e5 | ||
|
|
b496914b31 | ||
|
|
f60889b387 | ||
|
|
dd862c5047 | ||
|
|
f92e4e6d8b | ||
|
|
31724f6800 | ||
|
|
77fd0d6b77 | ||
|
|
77e0cd2ea5 | ||
|
|
d49244082a | ||
|
|
6788154e07 | ||
|
|
b91b623c43 | ||
|
|
50b81a0686 | ||
|
|
3c68fe9947 | ||
|
|
d5da603132 | ||
|
|
1cf28d6a6b | ||
|
|
5096004835 | ||
|
|
19bf1f3c1d | ||
|
|
8ccbd4c7ef | ||
|
|
cef4eddba6 | ||
|
|
74bc1d6fb4 | ||
|
|
067c51a82a | ||
|
|
ca72183568 | ||
|
|
74f641c52f | ||
|
|
d7c4549aff | ||
|
|
c030abe5c0 | ||
|
|
8216d83201 | ||
|
|
9c1b0526a6 | ||
|
|
fec555173c | ||
|
|
135e76566a | ||
|
|
6e42a18924 | ||
|
|
e6ccd30789 | ||
|
|
aa25d20637 | ||
|
|
f983e02b9a | ||
|
|
5abc30299f | ||
|
|
baaa54b38a | ||
|
|
1ef63e8c28 | ||
|
|
3a9b1067fb | ||
|
|
d251c554f6 | ||
|
|
963662fc53 | ||
|
|
7f2866c5da | ||
|
|
912e3794db | ||
|
|
dc27f1ad64 | ||
|
|
ed161f9fd2 | ||
|
|
b4f044e4bd | ||
|
|
a12cb24851 | ||
|
|
03444341f1 | ||
|
|
d1880689d9 | ||
|
|
d47409ce1c | ||
|
|
10ef21d3f8 | ||
|
|
719a0e6fd5 | ||
|
|
caaf6ff27d | ||
|
|
4f050cc243 | ||
|
|
e7dedb6e6c | ||
|
|
5278f57941 | ||
|
|
a4e3845b91 | ||
|
|
2d9fc82796 | ||
|
|
cf55b2e446 | ||
|
|
60be736d7c | ||
|
|
da48eab9b6 | ||
|
|
305789f7f5 | ||
|
|
18d70a1a36 | ||
|
|
f8519f839e | ||
|
|
3fcd79ce7c | ||
|
|
685134ffef | ||
|
|
6c38a52a25 | ||
|
|
8382c54f31 | ||
|
|
79d9ff1c67 | ||
|
|
8a0a88c45c | ||
|
|
84bd75d9bd | ||
|
|
40225b9ef9 | ||
|
|
521df499e1 | ||
|
|
37728af595 | ||
|
|
6c353d3142 | ||
|
|
20d60164cd | ||
|
|
bb1082c2bb | ||
|
|
6640f3dc8d | ||
|
|
99496f656c | ||
|
|
727692604a | ||
|
|
e651d993c5 | ||
|
|
02fbd280a5 | ||
|
|
9ee5b04b40 | ||
|
|
7f4b55a4a1 | ||
|
|
b228b408d5 | ||
|
|
920305961c | ||
|
|
670dcd611a | ||
|
|
f796f8bbdb | ||
|
|
73d6987c06 | ||
|
|
40201f49a3 | ||
|
|
db33a7a98d | ||
|
|
0013d42deb | ||
|
|
5f2d6bad75 | ||
|
|
2ac8b9cfe8 | ||
|
|
7fbfe11a5e | ||
|
|
d6f4ef6d85 | ||
|
|
6009676903 | ||
|
|
3ecbf910cc | ||
|
|
a7d2c2bf52 | ||
|
|
708b1c0be0 | ||
|
|
c07940e3bb | ||
|
|
66dff3776f | ||
|
|
d3fc839e8b | ||
|
|
a0d63b96be | ||
|
|
9cbd29574d | ||
|
|
b80e616268 | ||
|
|
89a9eea999 | ||
|
|
08f937ac87 | ||
|
|
9d86201373 | ||
|
|
5bb143cc2c | ||
|
|
b2ccdeb88f | ||
|
|
0d0d5d14ad | ||
|
|
1aac0e3e1f | ||
|
|
c29bb6edc9 | ||
|
|
189841c54b | ||
|
|
bddb577ede | ||
|
|
1aaa369786 | ||
|
|
e6aaa7b903 | ||
|
|
4cde019d1e | ||
|
|
6895e7ef43 | ||
|
|
b9cf818bce | ||
|
|
311350443e | ||
|
|
a06f3d0d30 | ||
|
|
1a1dd1fbe0 | ||
|
|
1f3b368b3d | ||
|
|
8e4e0be55a | ||
|
|
8b6b81ef45 | ||
|
|
3a0626aad5 | ||
|
|
37d3bde303 | ||
|
|
57ea8754b6 | ||
|
|
5a207ca188 | ||
|
|
895ebf578c | ||
|
|
915b15ca7d | ||
|
|
2d1585e8fe | ||
|
|
04484133aa | ||
|
|
5426ba5e9c | ||
|
|
9435a272a2 | ||
|
|
945c1cab95 | ||
|
|
7d9ea5f98d | ||
|
|
cd6f188dbd | ||
|
|
9ac640b3f3 | ||
|
|
93f0f86848 | ||
|
|
2cc4fe23e7 | ||
|
|
53c876f44a | ||
|
|
60c0006307 | ||
|
|
ebcb3e8d10 | ||
|
|
4a8d677218 | ||
|
|
2535fcd9f7 | ||
|
|
594a413820 | ||
|
|
aa13c0829d | ||
|
|
99af1e0038 | ||
|
|
5b8f39d581 | ||
|
|
33fd9dda82 | ||
|
|
3ccdbc2507 | ||
|
|
dfabbd188d | ||
|
|
f6fa495e35 | ||
|
|
67b7e7fae2 | ||
|
|
6fba93b85d | ||
|
|
2e427a5fc4 | ||
|
|
68d24ada1c | ||
|
|
e253a9a765 | ||
|
|
6184cb86b7 | ||
|
|
e76a2d73d3 | ||
|
|
1aa0f6a63a | ||
|
|
15e76e7de2 | ||
|
|
3bd9a030e7 | ||
|
|
27a962409b | ||
|
|
f986fb0c37 | ||
|
|
d8ab0b654b | ||
|
|
07592d1e8b | ||
|
|
feb31df3b4 | ||
|
|
c931a3510d | ||
|
|
1672676b87 | ||
|
|
21e21878d6 | ||
|
|
096ba5e26e | ||
|
|
27445b4f8a | ||
|
|
de94bf7c3b | ||
|
|
151d9918ff | ||
|
|
c57bf7318e | ||
|
|
1fb2681772 | ||
|
|
e814ca5972 | ||
|
|
8003914943 | ||
|
|
03f6db3269 | ||
|
|
448a0279be | ||
|
|
2a2e30d38d | ||
|
|
0e933bb5b4 | ||
|
|
e290fc492a | ||
|
|
669021932b | ||
|
|
473676705d | ||
|
|
e3a6fba417 | ||
|
|
9d5803fe1d | ||
|
|
5389274ed1 | ||
|
|
d21b436002 | ||
|
|
30ec9c2a11 | ||
|
|
2acd7d8021 | ||
|
|
340229b925 | ||
|
|
4efcf42da2 | ||
|
|
aefcbe0672 | ||
|
|
f8a8d878a5 | ||
|
|
d60a579dfc | ||
|
|
0d3512d492 | ||
|
|
c34104feed | ||
|
|
3585439653 | ||
|
|
926ed98ad4 | ||
|
|
243886e415 | ||
|
|
8744b4876c | ||
|
|
1b99a105fc | ||
|
|
6d192350c3 | ||
|
|
094be53b37 | ||
|
|
48cb2b7581 | ||
|
|
86f796d618 | ||
|
|
62ede1ba96 | ||
|
|
5703acd71f | ||
|
|
b147dc33ab | ||
|
|
a1047be164 | ||
|
|
ff9b487fe9 | ||
|
|
b4a494f231 | ||
|
|
885cb9c2f2 | ||
|
|
1ba716ff1a | ||
|
|
2b45337f3b | ||
|
|
0dfe65f0b2 | ||
|
|
313060e13e | ||
|
|
f4eb2af766 | ||
|
|
93987c3c2e | ||
|
|
1af41effbc | ||
|
|
1fecfa9bcb | ||
|
|
3cbed0708e | ||
|
|
83163d7603 | ||
|
|
94b5be6fc3 | ||
|
|
8dc105dc43 | ||
|
|
32d9edfa4e | ||
|
|
f7e1f6702d | ||
|
|
f98750943c | ||
|
|
3a164d0a84 | ||
|
|
ad1e4fb8fe | ||
|
|
04600bf444 | ||
|
|
89aabaaf9f | ||
|
|
f0187ecbfe | ||
|
|
2d2557f31b | ||
|
|
815f2e7547 | ||
|
|
752cfd01f0 | ||
|
|
d282b30f4e | ||
|
|
917501c9b7 | ||
|
|
c1b70632ba | ||
|
|
54db1b3339 | ||
|
|
8e2b320b99 | ||
|
|
cc9335d6e5 | ||
|
|
4145cfe956 | ||
|
|
4a3bd93539 | ||
|
|
f107fee66f | ||
|
|
aa9b78065d | ||
|
|
aaa2c58989 | ||
|
|
d37c22d61f | ||
|
|
0f820b3068 | ||
|
|
b0482f422b | ||
|
|
792a28b64b | ||
|
|
cb4f28a577 | ||
|
|
7a30bdab0d | ||
|
|
8cc3a30690 | ||
|
|
8e4c355a16 | ||
|
|
a3cc43c4ef | ||
|
|
d90ad6a0af | ||
|
|
3a844a56af | ||
|
|
4e8086843a | ||
|
|
7f8f2e09c3 | ||
|
|
81e511484d | ||
|
|
28493a0ecb | ||
|
|
0f1e2130e6 | ||
|
|
8fe7fb4eaf | ||
|
|
1a3380a66f | ||
|
|
cc49129ea6 | ||
|
|
dbe59534c6 | ||
|
|
171e9da663 | ||
|
|
273585c995 | ||
|
|
9ef4973efa | ||
|
|
9999a2a864 | ||
|
|
7e4ab7250f | ||
|
|
e92c0b39d6 | ||
|
|
e423e70267 | ||
|
|
261b9f041b | ||
|
|
ed84d28cb3 | ||
|
|
e152b81ec6 | ||
|
|
233710a48f | ||
|
|
0908a504c9 | ||
|
|
769122992d | ||
|
|
2ba5ddac6c | ||
|
|
0fca33726d | ||
|
|
adfcd74f37 | ||
|
|
6408e17a5d | ||
|
|
3b96de2f8a | ||
|
|
091ae119ad | ||
|
|
dd83d899f5 | ||
|
|
6690b7360e | ||
|
|
b52a555a22 | ||
|
|
76f4e6db01 | ||
|
|
e0dc3d7e9e | ||
|
|
4fcc3ce6d9 | ||
|
|
443b4fd6a6 | ||
|
|
8e45336ea0 | ||
|
|
3bffa1bf6c | ||
|
|
07407b98f3 | ||
|
|
f3b9188ac1 |
@@ -35,6 +35,12 @@ Feature requests are great, but they usually end up lying around the issue
|
||||
tracker indefinitely. Sending a pull request is a much better way of getting a
|
||||
particular feature into OpenELEC.
|
||||
|
||||
Please dont ask us to add 3rdparty drivers unless you are the maintainer/developer of the driver,
|
||||
we have no manpower to support a non-mainlined kernel driver for your hardware.
|
||||
However, OpenELEC comes with minimal set of kernel drivers enabled, if you are sure that your hardware
|
||||
is supported in mainline kernel, feel free to send us a Pull Request to enable it in our
|
||||
kernel defconfigs. We are always happy to support known-working hardware.
|
||||
|
||||
### Reporting build failures
|
||||
|
||||
As buildsystem / core packages (toolchain) / random libraries change from time to time, it is required
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<addon id="@PKG_ADDON_ID@"
|
||||
name="@PKG_NAME@"
|
||||
name="@ADDON_NAME@"
|
||||
version="@ADDON_VERSION@"
|
||||
provider-name="@PROVIDER_NAME@">
|
||||
<requires>
|
||||
@@ -8,11 +8,8 @@
|
||||
<import addon="xbmc.python" version="2.1.0"/>
|
||||
@REQUIRES@
|
||||
</requires>
|
||||
<extension point="@PKG_ADDON_TYPE@"
|
||||
library="default.py">
|
||||
<provides>executable</provides>
|
||||
<extension point="xbmc.python.module" library="lib/">
|
||||
</extension>
|
||||
@EXTENSIONS@
|
||||
<extension point="xbmc.addon.metadata">
|
||||
<summary>@PKG_SHORTDESC@</summary>
|
||||
<description>
|
||||
24
config/addon/xbmc.python.script.xml
Normal file
24
config/addon/xbmc.python.script.xml
Normal file
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<addon id="@PKG_ADDON_ID@"
|
||||
name="@ADDON_NAME@"
|
||||
version="@ADDON_VERSION@"
|
||||
provider-name="@PROVIDER_NAME@">
|
||||
<requires>
|
||||
<import addon="os.openelec.tv" version="@OS_VERSION@"/>
|
||||
<import addon="xbmc.python" version="2.1.0"/>
|
||||
@REQUIRES@
|
||||
</requires>
|
||||
<extension point="xbmc.python.script" library="default.py">
|
||||
<provides>executable</provides>
|
||||
</extension>
|
||||
<extension point="xbmc.addon.metadata">
|
||||
<summary>@PKG_SHORTDESC@</summary>
|
||||
<description>
|
||||
@PKG_LONGDESC@
|
||||
</description>
|
||||
<disclaimer>
|
||||
@PKG_DISCLAIMER@
|
||||
</disclaimer>
|
||||
<platform>all</platform>
|
||||
</extension>
|
||||
</addon>
|
||||
24
config/addon/xbmc.service.xml
Normal file
24
config/addon/xbmc.service.xml
Normal file
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<addon id="@PKG_ADDON_ID@"
|
||||
name="@ADDON_NAME@"
|
||||
version="@ADDON_VERSION@"
|
||||
provider-name="@PROVIDER_NAME@">
|
||||
<requires>
|
||||
<import addon="os.openelec.tv" version="@OS_VERSION@"/>
|
||||
<import addon="xbmc.python" version="2.1.0"/>
|
||||
@REQUIRES@
|
||||
</requires>
|
||||
<extension point="xbmc.service" library="default.py">
|
||||
<provides>executable</provides>
|
||||
</extension>
|
||||
<extension point="xbmc.addon.metadata">
|
||||
<summary>@PKG_SHORTDESC@</summary>
|
||||
<description>
|
||||
@PKG_LONGDESC@
|
||||
</description>
|
||||
<disclaimer>
|
||||
@PKG_DISCLAIMER@
|
||||
</disclaimer>
|
||||
<platform>all</platform>
|
||||
</extension>
|
||||
</addon>
|
||||
@@ -277,6 +277,9 @@ dashes="==========================="
|
||||
}
|
||||
|
||||
show_config() {
|
||||
# load graphic configuration
|
||||
get_graphicdrivers
|
||||
|
||||
dashes="==========================="
|
||||
config_message="$config_message\n $dashes$dashes$dashes"
|
||||
config_message="$config_message\n Configuration for $DISTRONAME ($([ "$OFFICIAL" = "yes" ] && echo "official" || echo "unofficial"))"
|
||||
@@ -312,6 +315,7 @@ show_config() {
|
||||
config_message="$config_message\n - OpenGLES support (provider):\t\t $OPENGLES_SUPPORT ($OPENGLES)"
|
||||
config_message="$config_message\n - WindowManager:\t\t\t $WINDOWMANAGER"
|
||||
config_message="$config_message\n - Xorg Graphic Drivers:\t\t $GRAPHIC_DRIVERS"
|
||||
config_message="$config_message\n - uvesafb support:\t\t\t $UVESAFB_SUPPORT"
|
||||
|
||||
# Hardware decoder support
|
||||
|
||||
@@ -319,8 +323,8 @@ show_config() {
|
||||
config_message="$config_message\n $dashes$dashes"
|
||||
|
||||
config_message="$config_message\n - Kodi Player driver:\t\t\t $KODIPLAYER_DRIVER"
|
||||
config_message="$config_message\n - VAAPI Support:\t\t\t $VAAPI"
|
||||
config_message="$config_message\n - VDPAU Support:\t\t\t $VDPAU"
|
||||
config_message="$config_message\n - VAAPI Support:\t\t\t $VAAPI_SUPPORT"
|
||||
config_message="$config_message\n - VDPAU Support:\t\t\t $VDPAU_SUPPORT"
|
||||
|
||||
# Input device configuration
|
||||
|
||||
@@ -340,7 +344,6 @@ show_config() {
|
||||
|
||||
config_message="$config_message\n - ALSA support:\t\t\t $ALSA_SUPPORT"
|
||||
config_message="$config_message\n - Pulseaudio support:\t\t\t $PULSEAUDIO_SUPPORT"
|
||||
config_message="$config_message\n - Blu-Ray support:\t\t\t $BLURAY_SUPPORT"
|
||||
config_message="$config_message\n - Bluetooth support:\t\t\t $BLUETOOTH_SUPPORT"
|
||||
config_message="$config_message\n - Hardware Sensors support:\t\t $SENSOR_SUPPORT"
|
||||
config_message="$config_message\n - LCD drivers:\t\t\t\t $LCD_DRIVER"
|
||||
@@ -353,23 +356,22 @@ show_config() {
|
||||
config_message="$config_message\n - Include firmware:\t\t\t $config_firmware"
|
||||
done
|
||||
|
||||
for config_modules in $INITRAMFS_MODULES; do
|
||||
config_message="$config_message\n - Initramfs modules:\t\t\t $config_modules"
|
||||
done
|
||||
|
||||
# Network service configuration
|
||||
|
||||
config_message="$config_message\n\n Network service configuration:"
|
||||
config_message="$config_message\n $dashes$dashes"
|
||||
|
||||
config_message="$config_message\n - Avahi (Zeroconf) support:\t\t $AVAHI_DAEMON"
|
||||
config_message="$config_message\n - NFS mounting support:\t\t $NFS_SUPPORT"
|
||||
config_message="$config_message\n - SAMBA mounting support:\t\t $SAMBA_SUPPORT"
|
||||
config_message="$config_message\n - SAMBA server support:\t\t $SAMBA_SERVER"
|
||||
config_message="$config_message\n - SFTP server support:\t\t\t $SFTP_SERVER"
|
||||
config_message="$config_message\n - PPTP support:\t\t\t $PPTP_SUPPORT"
|
||||
config_message="$config_message\n - OpenVPN support:\t\t\t $OPENVPN_SUPPORT"
|
||||
config_message="$config_message\n - Kodi Airplay support:\t\t $AIRPLAY_SUPPORT"
|
||||
config_message="$config_message\n - Kodi Airtunes support:\t\t $AIRTUNES_SUPPORT"
|
||||
config_message="$config_message\n - Kodi AFP support:\t\t\t $AFP_SUPPORT"
|
||||
config_message="$config_message\n - Kodi NFS support:\t\t\t $NFS_SUPPORT"
|
||||
config_message="$config_message\n - Kodi SAMBA client support:\t\t $SAMBA_SUPPORT"
|
||||
config_message="$config_message\n - Kodi UPNP support:\t\t\t $UPNP_SUPPORT"
|
||||
config_message="$config_message\n - Kodi Webserver support:\t\t $WEBSERVER"
|
||||
|
||||
# OS configuration
|
||||
|
||||
@@ -405,8 +407,21 @@ fi
|
||||
config_message="$config_message\n $dashes$dashes"
|
||||
|
||||
config_message="$config_message\n - Kodi version:\t\t\t $MEDIACENTER"
|
||||
config_message="$config_message\n - Kodi nonfree support:\t\t $NONFREE_SUPPORT"
|
||||
config_message="$config_message\n - Kodi DVDCSS support:\t\t\t $DVDCSS_SUPPORT"
|
||||
config_message="$config_message\n - Kodi nonfree support:\t\t $KODI_NONFREE_SUPPORT"
|
||||
config_message="$config_message\n - Kodi Blu-Ray support:\t\t $KODI_BLURAY_SUPPORT"
|
||||
config_message="$config_message\n - Bluray BD+ support:\t\t\t $BLURAY_BDPLUS_SUPPORT"
|
||||
config_message="$config_message\n - Bluray AACS support:\t\t\t $BLURAY_AACS_SUPPORT"
|
||||
config_message="$config_message\n - Kodi DVDCSS support:\t\t\t $KODI_DVDCSS_SUPPORT"
|
||||
config_message="$config_message\n - Kodi Airplay support:\t\t $KODI_AIRPLAY_SUPPORT"
|
||||
config_message="$config_message\n - Kodi Airtunes support:\t\t $KODI_AIRTUNES_SUPPORT"
|
||||
config_message="$config_message\n - Kodi NFS support:\t\t\t $KODI_NFS_SUPPORT"
|
||||
config_message="$config_message\n - Kodi MySQL support:\t\t\t $KODI_MYSQL_SUPPORT"
|
||||
config_message="$config_message\n - Kodi Optical Drive support:\t\t $KODI_OPTICAL_SUPPORT"
|
||||
config_message="$config_message\n - Kodi SAMBA client support:\t\t $KODI_SAMBA_SUPPORT"
|
||||
config_message="$config_message\n - Kodi SSH client support:\t\t $KODI_SSHLIB_SUPPORT"
|
||||
config_message="$config_message\n - Kodi UPNP support:\t\t\t $KODI_UPNP_SUPPORT"
|
||||
config_message="$config_message\n - Kodi Webserver support:\t\t $KODI_WEBSERVER_SUPPORT"
|
||||
|
||||
|
||||
for config_skin in $SKINS; do
|
||||
config_message="$config_message\n - Include Skin:\t\t\t $config_skin"
|
||||
|
||||
@@ -40,12 +40,14 @@ get_graphicdrivers() {
|
||||
DRI_DRIVERS="$DRI_DRIVERS,i915"
|
||||
XORG_DRIVERS="$XORG_DRIVERS intel"
|
||||
COMPOSITE_SUPPORT="yes"
|
||||
VAAPI_SUPPORT="yes"
|
||||
fi
|
||||
|
||||
if [ "$drv" = "i965" ]; then
|
||||
DRI_DRIVERS="$DRI_DRIVERS,i965"
|
||||
XORG_DRIVERS="$XORG_DRIVERS intel"
|
||||
COMPOSITE_SUPPORT="yes"
|
||||
VAAPI_SUPPORT="yes"
|
||||
fi
|
||||
|
||||
if [ "$drv" = "nouveau" ]; then
|
||||
@@ -56,15 +58,16 @@ get_graphicdrivers() {
|
||||
GALLIUM_DRIVERS="$GALLIUM_DRIVERS,nouveau"
|
||||
XORG_DRIVERS="$XORG_DRIVERS nouveau"
|
||||
COMPOSITE_SUPPORT="yes"
|
||||
# LLVM_SUPPORT="yes"
|
||||
fi
|
||||
|
||||
if [ "$drv" = "nvidia" ]; then
|
||||
XORG_DRIVERS="$XORG_DRIVERS nvidia"
|
||||
VDPAU_SUPPORT="yes"
|
||||
fi
|
||||
|
||||
if [ "$drv" = "nvidia-legacy" ]; then
|
||||
XORG_DRIVERS="$XORG_DRIVERS nvidia-legacy"
|
||||
VDPAU_SUPPORT="yes"
|
||||
fi
|
||||
|
||||
if [ "$drv" = "r200" ]; then
|
||||
@@ -78,6 +81,7 @@ get_graphicdrivers() {
|
||||
XORG_DRIVERS="$XORG_DRIVERS ati"
|
||||
LLVM_SUPPORT="yes"
|
||||
COMPOSITE_SUPPORT="yes"
|
||||
VDPAU_SUPPORT="yes"
|
||||
fi
|
||||
|
||||
if [ "$drv" = "r600" ]; then
|
||||
@@ -85,6 +89,7 @@ get_graphicdrivers() {
|
||||
XORG_DRIVERS="$XORG_DRIVERS ati"
|
||||
LLVM_SUPPORT="yes"
|
||||
COMPOSITE_SUPPORT="yes"
|
||||
VDPAU_SUPPORT="yes"
|
||||
fi
|
||||
|
||||
if [ "$drv" = "radeonsi" ]; then
|
||||
@@ -92,6 +97,7 @@ get_graphicdrivers() {
|
||||
XORG_DRIVERS="$XORG_DRIVERS ati"
|
||||
LLVM_SUPPORT="yes"
|
||||
COMPOSITE_SUPPORT="yes"
|
||||
VDPAU_SUPPORT="yes"
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"partitions": [
|
||||
{
|
||||
"label": "System",
|
||||
"label": "@DISTRONAME@System",
|
||||
"filesystem_type": "FAT",
|
||||
"partition_size_nominal": 160,
|
||||
"want_maximised": false,
|
||||
@@ -9,7 +9,7 @@
|
||||
"mkfs_options": ""
|
||||
},
|
||||
{
|
||||
"label": "Storage",
|
||||
"label": "@DISTRONAME@Storage",
|
||||
"filesystem_type": "ext4",
|
||||
"partition_size_nominal": 864,
|
||||
"want_maximised": true,
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
# set default language for buildsystem
|
||||
export LC_ALL=C
|
||||
|
||||
# determines DISTRO, if not forced by user
|
||||
# default is OpenELEC
|
||||
if [ -z "$DISTRO" ]; then
|
||||
DISTRO="OpenELEC"
|
||||
else
|
||||
DISTRO="$DISTRO"
|
||||
fi
|
||||
|
||||
# determines PROJECT, if not forced by user
|
||||
# default is Generic
|
||||
if [ -z "$PROJECT" ]; then
|
||||
@@ -18,20 +26,26 @@ else
|
||||
fi
|
||||
|
||||
ROOT=`pwd`
|
||||
DISTRO_DIR="$ROOT/distributions"
|
||||
PROJECT_DIR="$ROOT/projects"
|
||||
LINUX_DEPENDS="$PROJECT_DIR/$PROJECT/linux/linux.$TARGET_ARCH.conf $ROOT/packages/linux/package.mk"
|
||||
|
||||
# include versioning
|
||||
. config/version
|
||||
|
||||
# read project options if available
|
||||
if [ -f "$PROJECT_DIR/$PROJECT/options" ]; then
|
||||
. $PROJECT_DIR/$PROJECT/options
|
||||
# read distro versioning if available
|
||||
if [ -f "$DISTRO_DIR/$DISTRO/version" ]; then
|
||||
. $DISTRO_DIR/$DISTRO/version
|
||||
fi
|
||||
|
||||
# read distro options if available
|
||||
if [ -f "$PROJECT_DIR/options.$DISTRO" ]; then
|
||||
. $PROJECT_DIR/options.$DISTRO
|
||||
if [ -f "$DISTRO_DIR/$DISTRO/options" ]; then
|
||||
. $DISTRO_DIR/$DISTRO/options
|
||||
fi
|
||||
|
||||
# read project options if available
|
||||
if [ -f "$PROJECT_DIR/$PROJECT/options" ]; then
|
||||
. $PROJECT_DIR/$PROJECT/options
|
||||
fi
|
||||
|
||||
# Need to point to your actual cc
|
||||
@@ -51,7 +65,9 @@ LINUX_DEPENDS="$PROJECT_DIR/$PROJECT/linux/linux.$TARGET_ARCH.conf $ROOT/package
|
||||
# Concurrency make level (-j option)
|
||||
# Try value 1 (default) to 4 on single CPU computer, or more on
|
||||
# multi-processor computer (like hyperthreading SMP CPU)
|
||||
CONCURRENCY_MAKE_LEVEL=`cat /proc/cpuinfo | grep -c '^processor[[:cntrl:]]*:'`
|
||||
if test -z "${CONCURRENCY_MAKE_LEVEL}"; then
|
||||
CONCURRENCY_MAKE_LEVEL=`cat /proc/cpuinfo | grep -c '^processor[[:cntrl:]]*:'`
|
||||
fi
|
||||
|
||||
# cache size for ccache
|
||||
# Set the maximum size of the files stored in the cache. You can specify a
|
||||
|
||||
@@ -20,6 +20,10 @@ HOST_NAME=`$LOCAL_CC -dumpmachine`
|
||||
TARGET_NAME=$(echo $TARGET_SUBARCH | sed -e "s,-,,")-openelec-linux-gnu${TARGET_ABI}
|
||||
|
||||
BUILD=$BUILD_BASE.$DISTRONAME-$PROJECT.$TARGET_ARCH-$OPENELEC_VERSION
|
||||
if [ -n "$BUILD_SUFFIX" ]; then
|
||||
BUILD=$BUILD-$BUILD_SUFFIX
|
||||
fi
|
||||
|
||||
TARGET_IMG=$ROOT/$TARGET
|
||||
TARGET_ADDONS="$TARGET_IMG/$ADDONS/$ADDON_PATH"
|
||||
ADDON_BUILD="$BUILD/$ADDONS/$1"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# VERSION: set full version, use "devel" for development version
|
||||
OPENELEC_VERSION="devel"
|
||||
OPENELEC_VERSION="5.0.1"
|
||||
|
||||
# OS_VERSION: OS Version
|
||||
OS_VERSION="5.0"
|
||||
|
||||
236
distributions/OpenELEC/options
Normal file
236
distributions/OpenELEC/options
Normal file
@@ -0,0 +1,236 @@
|
||||
# Name of the Distro to build (full name, without special characters)
|
||||
DISTRONAME="OpenELEC"
|
||||
|
||||
# short project description
|
||||
DESCRIPTION="OpenELEC is a fast and userfriendly Kodi Entertainment Center distribution."
|
||||
|
||||
# Welcome Message for e.g. SSH Server (up to 5 Lines)
|
||||
GREETING0="##############################################"
|
||||
GREETING1="# OpenELEC - The living room PC for everyone #"
|
||||
GREETING2="# ...... visit http://www.openelec.tv ...... #"
|
||||
GREETING3="##############################################"
|
||||
GREETING4=""
|
||||
|
||||
# Root password to integrate in the target system
|
||||
ROOT_PASSWORD="openelec"
|
||||
|
||||
# Mediacenter to use (kodi / no)
|
||||
MEDIACENTER="kodi"
|
||||
|
||||
# Skins to install (Confluence)
|
||||
# Space separated list is supported,
|
||||
# e.g. SKINS="Confluence"
|
||||
SKINS="Confluence"
|
||||
|
||||
# Default Skin (Confluence)
|
||||
SKIN_DEFAULT="Confluence"
|
||||
|
||||
# install extra subtitle Fonts for KODI (yes / no)
|
||||
KODI_EXTRA_FONTS="yes"
|
||||
|
||||
# build and install 'RSXS' Screensaver (yes / no)
|
||||
KODI_SCR_RSXS="yes"
|
||||
|
||||
# build and install 'ProjectM' Visualization (yes / no)
|
||||
KODI_VIS_PROJECTM="yes"
|
||||
|
||||
# build and install 'GOOM' Visualization (yes / no)
|
||||
KODI_VIS_GOOM="yes"
|
||||
|
||||
# build and install 'Waveform' Visualization (yes / no)
|
||||
KODI_VIS_WAVEFORM="yes"
|
||||
|
||||
# build and install 'Spectrum' Visualization (yes / no)
|
||||
KODI_VIS_SPECTRUM="yes"
|
||||
|
||||
# build and install 'FishBMC' Visualization (yes / no)
|
||||
# does not work on RPi
|
||||
KODI_VIS_FISHBMC="yes"
|
||||
|
||||
# build and install PulseAudio support (yes / no)
|
||||
PULSEAUDIO_SUPPORT="no"
|
||||
|
||||
# build and install espeak support (yes / no)
|
||||
ESPEAK_SUPPORT="yes"
|
||||
|
||||
# build and install with non-free support
|
||||
# (RAR compression support in KODI) (yes / no)
|
||||
KODI_NONFREE_SUPPORT="yes"
|
||||
|
||||
# build and install with BluRay support (yes / no)
|
||||
KODI_BLURAY_SUPPORT="yes"
|
||||
|
||||
# build and install with BD+ support
|
||||
# (BD+ decryption support in KODI) (yes / no)
|
||||
BLURAY_BDPLUS_SUPPORT="yes"
|
||||
|
||||
# build and install with AACS support
|
||||
# (BD decryption support in KODI) (yes / no)
|
||||
BLURAY_AACS_SUPPORT="yes"
|
||||
|
||||
# build and install with DVDCSS support
|
||||
# (DVD decryption support in KODI) (yes / no)
|
||||
KODI_DVDCSS_SUPPORT="yes"
|
||||
|
||||
# additional drivers to install:
|
||||
# for a list of additinoal drivers see packages/linux-drivers
|
||||
# Space separated list is supported,
|
||||
# e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2"
|
||||
ADDITIONAL_DRIVERS="RTL8192CU RTL8192DU RTL8188EU RTL8812AU dvbhdhomerun"
|
||||
|
||||
# build and install bluetooth support (yes / no)
|
||||
BLUETOOTH_SUPPORT="yes"
|
||||
|
||||
# build and install with KODI webfrontend (yes / no)
|
||||
KODI_WEBSERVER_SUPPORT="yes"
|
||||
|
||||
# build and install Avahi (Zeroconf) daemon (yes / no)
|
||||
AVAHI_DAEMON="yes"
|
||||
|
||||
# build with UPnP support (yes / no)
|
||||
KODI_UPNP_SUPPORT="yes"
|
||||
|
||||
# build with MySQL support (yes / no)
|
||||
KODI_MYSQL_SUPPORT="yes"
|
||||
|
||||
# build xbmc with sshlib support (yes / no)
|
||||
KODI_SSHLIB_SUPPORT="yes"
|
||||
|
||||
# build xbmc with optical drive support (yes / no)
|
||||
KODI_OPTICAL_SUPPORT="yes"
|
||||
|
||||
# KODI Audio encoders for usage with optical drive support
|
||||
# Space separated list is supported,
|
||||
# e.g. KODI_AUDIOENCODER_ADDONS="ENCODER1 ENCODER2"
|
||||
KODI_AUDIOENCODER_ADDONS="flac lame vorbis wav"
|
||||
|
||||
# build with AirPlay support (stream videos from iDevices to KODI) (yes / no)
|
||||
KODI_AIRPLAY_SUPPORT="yes"
|
||||
|
||||
# build with AirTunes support (stream music from iDevices to KODI) (yes / no)
|
||||
KODI_AIRTUNES_SUPPORT="yes"
|
||||
|
||||
# build with libnfs support (mounting nfs shares with KODI) (yes / no)
|
||||
KODI_NFS_SUPPORT="yes"
|
||||
|
||||
# build with Samba Client support (mounting SAMBA shares with KODI) (yes / no)
|
||||
KODI_SAMBA_SUPPORT="yes"
|
||||
|
||||
# build with NFS support (mounting nfs shares via the OS) (yes / no)
|
||||
NFS_SUPPORT="yes"
|
||||
|
||||
# build with Samba Client support (mounting samba shares via the OS) (yes / no)
|
||||
SAMBA_SUPPORT="yes"
|
||||
|
||||
# build and install Samba Server (yes / no)
|
||||
SAMBA_SERVER="yes"
|
||||
|
||||
# build and install SFTP Server (yes / no)
|
||||
SFTP_SERVER="yes"
|
||||
|
||||
# build and install PPP support (yes / no)
|
||||
PPTP_SUPPORT="yes"
|
||||
|
||||
# build and install OpenVPN support (yes / no)
|
||||
OPENVPN_SUPPORT="yes"
|
||||
|
||||
# build and install diskmounter support (udevil)
|
||||
# this service provide auto mounting support for external drives in the
|
||||
# mediacenter also automount internally drives at boottime via udev (yes / no)
|
||||
UDEVIL="yes"
|
||||
|
||||
# build and install exFAT fuse support (yes / no)
|
||||
EXFAT="yes"
|
||||
|
||||
# build and install NTFS-3G fuse support (yes / no)
|
||||
NTFS3G="yes"
|
||||
|
||||
# build and install hfs filesystem utilities (yes / no)
|
||||
HFSTOOLS="yes"
|
||||
|
||||
# Windowmanager to use (ratpoison / fluxbox / none)
|
||||
WINDOWMANAGER="fluxbox"
|
||||
|
||||
# Xorg Graphic drivers to use (all / i915,i965,r200,r300,r600,nvidia,nouveau)
|
||||
# Space separated list is supported,
|
||||
# e.g. GRAPHIC_DRIVERS="i915 i965 r300 r600 radeonsi nvidia nouveau"
|
||||
if [ "$TARGET_ARCH" = "i386" ]; then
|
||||
# TODO: create Legacy build with OpenELEC-4.2
|
||||
# install legacy drivers to i386 ARCH
|
||||
GRAPHIC_DRIVERS="r200 r300 r600 i915 i965 nvidia-legacy"
|
||||
elif [ "$TARGET_ARCH" = "x86_64" ]; then
|
||||
GRAPHIC_DRIVERS="r300 r600 radeonsi i915 i965 nvidia"
|
||||
fi
|
||||
|
||||
# build and install remote support (yes / no)
|
||||
REMOTE_SUPPORT="yes"
|
||||
|
||||
# build and install ATV IR remote support (yes / no)
|
||||
ATVCLIENT_SUPPORT="yes"
|
||||
|
||||
# build and install IRServer IR/LCD support (yes / no)
|
||||
IRSERVER_SUPPORT="yes"
|
||||
|
||||
# build and install Joystick support (yes / no)
|
||||
JOYSTICK_SUPPORT="yes"
|
||||
|
||||
# build and install CEC adapter support (yes / no)
|
||||
CEC_SUPPORT="yes"
|
||||
|
||||
# build and install iSCSI support - iscsistart (yes / no)
|
||||
ISCSI_SUPPORT="yes"
|
||||
|
||||
# LCD driver to Use - Possible drivers are ( Comma seperated:
|
||||
# bayrad,CFontz,CFontz633,CFontzPacket,curses,CwLnx,dm140,
|
||||
# ea65,EyeboxOne,g15,glcdlib,glk,hd44780,i2500vfd,
|
||||
# icp_a106,imon,imonlcd,IOWarrior,irman,irtrans,
|
||||
# joy,lb216,lcdm001,lcterm,lirc,lis,MD8800,mdm166a,
|
||||
# ms6931,mtc_s16209x,MtxOrb,mx5000,NoritakeVFD,
|
||||
# picolcd,pyramid,sed1330,sed1520,serialPOS,
|
||||
# serialVFD,shuttleVFD,sli,stv5730,SureElec,svga,vlsys_m428
|
||||
# 'all' compiles all drivers;
|
||||
# 'all,!xxx,!yyy' de-selects previously selected drivers
|
||||
# "none" for disable LCD support
|
||||
LCD_DRIVER="irtrans,imon,imonlcd,mdm166a,MtxOrb,lis,dm140,hd44780,CFontz,SureElec,vlsys_m428,serialVFD,shuttleVFD"
|
||||
|
||||
# Support for partitioning and formating disks in initramfs (yes / no)
|
||||
# This adds support for parted and mkfs.ext3/4 to initramfs for OEM usage
|
||||
INITRAMFS_PARTED_SUPPORT="no"
|
||||
|
||||
# build with swap support (yes / no)
|
||||
SWAP_SUPPORT="no"
|
||||
|
||||
# swap support enabled per default (yes / no)
|
||||
SWAP_ENABLED_DEFAULT="no"
|
||||
|
||||
# swapfile size if SWAP_SUPPORT=yes in MB
|
||||
SWAPFILESIZE="256"
|
||||
|
||||
# build with installer (yes / no)
|
||||
INSTALLER_SUPPORT="yes"
|
||||
|
||||
# Testpackages for development (yes / no)
|
||||
TESTING="no"
|
||||
|
||||
# OEM packages for OEM's (yes / no)
|
||||
OEM_SUPPORT="no"
|
||||
|
||||
# build and install nano text editor (yes / no)
|
||||
NANO_EDITOR="yes"
|
||||
|
||||
# cron support (yes / no)
|
||||
CRON_SUPPORT="yes"
|
||||
|
||||
# Perf support in development builds (yes / no)
|
||||
PERF_SUPPORT="yes"
|
||||
|
||||
# Distribution Specific source location
|
||||
DISTRO_MIRROR="http://sources.openelec.tv/mirror"
|
||||
DISTRO_SRC="http://sources.openelec.tv/$OPENELEC_VERSION"
|
||||
|
||||
# Addon Server Url
|
||||
ADDON_SERVER_URL="http://addons.openelec.tv"
|
||||
|
||||
# set the addon dirs
|
||||
ADDON_PATH="$ADDON_VERSION/$PROJECT/$TARGET_ARCH"
|
||||
ADDON_URL="$ADDON_SERVER_URL/$ADDON_PATH"
|
||||
|
Before Width: | Height: | Size: 207 KiB After Width: | Height: | Size: 207 KiB |
|
Before Width: | Height: | Size: 439 KiB After Width: | Height: | Size: 439 KiB |
2
packages/3rdparty/lib/cxxtools/package.mk
vendored
2
packages/3rdparty/lib/cxxtools/package.mk
vendored
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="cxxtools"
|
||||
PKG_VERSION="2.2"
|
||||
PKG_VERSION="2.2.1"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL-2"
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
4.3.2
|
||||
allow running scripts from addon settings
|
||||
4.3.1
|
||||
rebuild for addon api bump
|
||||
4.3.0
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
PKG_NAME="hdhomerun"
|
||||
PKG_VERSION="4.3"
|
||||
PKG_REV="1"
|
||||
PKG_REV="2"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.silicondust.com/products/hdhomerun/dvbt/"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2013 Stephan Raue (stephan@openelec.tv)
|
||||
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
|
||||
#
|
||||
# OpenELEC is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@@ -15,18 +15,3 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
import os
|
||||
import sys
|
||||
import xbmcaddon
|
||||
|
||||
__settings__ = xbmcaddon.Addon(id = 'driver.dvb.hdhomerun')
|
||||
__cwd__ = __settings__.getAddonInfo('path')
|
||||
__resources_lib__ = xbmc.translatePath(os.path.join(__cwd__, 'resources', 'lib'))
|
||||
__settings_xml__ = xbmc.translatePath(os.path.join(__cwd__, 'resources', 'settings.xml'))
|
||||
|
||||
if __name__ == "__main__" and len(sys.argv) == 2 and sys.argv[1] == 'refresh_tuners':
|
||||
sys.path.append(__resources_lib__)
|
||||
from functions import refresh_hdhomerun_tuners
|
||||
refresh_hdhomerun_tuners(__settings_xml__)
|
||||
__settings__.openSettings()
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
#!/bin/sh
|
||||
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
|
||||
@@ -18,27 +16,17 @@
|
||||
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
. /etc/profile
|
||||
import os
|
||||
import sys
|
||||
import xbmcaddon
|
||||
|
||||
oe_setup_addon service.multimedia.tvheadend
|
||||
__settings__ = xbmcaddon.Addon(id = 'driver.dvb.hdhomerun')
|
||||
__cwd__ = __settings__.getAddonInfo('path')
|
||||
__resources_lib__ = xbmc.translatePath(os.path.join(__cwd__, 'resources', 'lib'))
|
||||
__settings_xml__ = xbmc.translatePath(os.path.join(__cwd__, 'resources', 'settings.xml'))
|
||||
|
||||
SERVICE="service.multimedia.tvheadend"
|
||||
|
||||
case "$1" in
|
||||
pre)
|
||||
if systemctl is-active "$SERVICE" &>/dev/null ; then
|
||||
systemctl stop "$SERVICE"
|
||||
for module in $REMOVE_MODULES ; do
|
||||
rmmod $module
|
||||
done
|
||||
fi
|
||||
;;
|
||||
post)
|
||||
if systemctl is-enabled "$SERVICE" &>/dev/null ; then
|
||||
for module in $REMOVE_MODULES ; do
|
||||
modprobe $module
|
||||
done
|
||||
systemctl start "$SERVICE"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
if len(sys.argv) == 2 and sys.argv[1] == 'refresh_tuners':
|
||||
sys.path.append(__resources_lib__)
|
||||
from functions import refresh_hdhomerun_tuners
|
||||
refresh_hdhomerun_tuners(__settings_xml__)
|
||||
__settings__.openSettings()
|
||||
@@ -37,36 +37,39 @@ def _usage(this_file):
|
||||
return """SYNOPSIS: pretty print an XML document
|
||||
USAGE: python %s <filename> \n""" % this_file
|
||||
|
||||
def _pprint_line(indent_level, line, width=100, output=_sys.stdout):
|
||||
def _pprint_line(indent_level, line, width=100, output=_sys.stdout, ignore_contents = False):
|
||||
if line.strip():
|
||||
start = ""
|
||||
number_chars = 0
|
||||
for l in range(indent_level):
|
||||
start = start + " "
|
||||
number_chars = number_chars + 1
|
||||
try:
|
||||
elem_start = _re.findall("(\<\W{0,1}\w+:\w+) ?", line)[0]
|
||||
elem_finished = _re.findall("([?|\]\]/]*\>)", line)[0]
|
||||
#should not have *
|
||||
attrs = _re.findall("(\S*?\=\".*?\")", line)
|
||||
output.write(start + elem_start)
|
||||
number_chars = len(start + elem_start)
|
||||
for attr in attrs:
|
||||
if (attrs.index(attr) + 1) == len(attrs):
|
||||
number_chars = number_chars + len(elem_finished)
|
||||
if (number_chars + len(attr) + 1) > width:
|
||||
output.write("\n")
|
||||
for i in range(len(start + elem_start) + 1):
|
||||
if not ignore_contents:
|
||||
try:
|
||||
elem_start = _re.findall("(\<\W{0,1}\w+:\w+) ?", line)[0]
|
||||
elem_finished = _re.findall("([?|\]\]/|\-\-]*\>)", line)[0]
|
||||
#should not have *
|
||||
attrs = _re.findall("(\S*?\=\".*?\")", line)
|
||||
output.write(start + elem_start)
|
||||
number_chars = len(start + elem_start)
|
||||
for attr in attrs:
|
||||
if (attrs.index(attr) + 1) == len(attrs):
|
||||
number_chars = number_chars + len(elem_finished)
|
||||
if (number_chars + len(attr) + 1) > width:
|
||||
output.write("\n")
|
||||
for i in range(len(start + elem_start) + 1):
|
||||
output.write(" ")
|
||||
number_chars = len(start + elem_start) + 1
|
||||
else:
|
||||
output.write(" ")
|
||||
number_chars = len(start + elem_start) + 1
|
||||
else:
|
||||
output.write(" ")
|
||||
number_chars = number_chars + 1
|
||||
output.write(attr)
|
||||
number_chars = number_chars + len(attr)
|
||||
output.write(elem_finished + "\n")
|
||||
except IndexError:
|
||||
#give up pretty print this line
|
||||
number_chars = number_chars + 1
|
||||
output.write(attr)
|
||||
number_chars = number_chars + len(attr)
|
||||
output.write(elem_finished + "\n")
|
||||
except IndexError:
|
||||
#give up pretty print this line
|
||||
output.write(start + line + "\n")
|
||||
else:
|
||||
output.write(start + line + "\n")
|
||||
|
||||
|
||||
@@ -80,7 +83,8 @@ def _get_next_elem(data):
|
||||
start_pos = data.find("<")
|
||||
end_pos = data.find(">") + 1
|
||||
retval = data[start_pos:end_pos]
|
||||
stopper = retval.rfind("/")
|
||||
stopper = retval.rfind("/")
|
||||
ignore_contents = False
|
||||
if stopper < retval.rfind("\""):
|
||||
stopper = -1
|
||||
single = (stopper > -1 and ((retval.find(">") - stopper) < (stopper - retval.find("<"))))
|
||||
@@ -89,11 +93,19 @@ def _get_next_elem(data):
|
||||
ignore_question = retval.find("<?") > -1
|
||||
|
||||
if ignore_excl:
|
||||
ignore_contents = True
|
||||
cdata = retval.find("<![CDATA[") > -1
|
||||
if cdata:
|
||||
end_pos = data.find("]]>")
|
||||
if end_pos > -1:
|
||||
end_pos = end_pos + len("]]>")
|
||||
stopper = end_pos
|
||||
else:
|
||||
end_pos = data.find("-->")
|
||||
if end_pos > -1:
|
||||
end_pos = end_pos + len("-->")
|
||||
stopper = end_pos
|
||||
retval = data[start_pos:end_pos]
|
||||
|
||||
elif ignore_question:
|
||||
end_pos = data.find("?>") + len("?>")
|
||||
@@ -101,11 +113,12 @@ def _get_next_elem(data):
|
||||
|
||||
no_indent = ignore or single
|
||||
|
||||
#print retval, end_pos, start_pos, stopper > -1, no_indent
|
||||
|
||||
return start_pos, \
|
||||
end_pos, \
|
||||
stopper > -1, \
|
||||
no_indent
|
||||
no_indent, \
|
||||
ignore_contents
|
||||
|
||||
def get_pprint(xml, indent=4, width=80):
|
||||
"""Returns the pretty printed xml """
|
||||
@@ -116,6 +129,8 @@ def get_pprint(xml, indent=4, width=80):
|
||||
self.output += string
|
||||
out = out()
|
||||
pprint(xml, output=out, indent=indent, width=width)
|
||||
|
||||
|
||||
|
||||
return out.output
|
||||
|
||||
@@ -126,7 +141,7 @@ def pprint(xml, output=_sys.stdout, indent=4, width=80):
|
||||
Use indent to select indentation level. Default is 4 """
|
||||
data = xml
|
||||
indent_level = 0
|
||||
start_pos, end_pos, is_stop, no_indent = _get_next_elem(data)
|
||||
start_pos, end_pos, is_stop, no_indent, ignore_contents = _get_next_elem(data)
|
||||
while ((start_pos > -1 and end_pos > -1)):
|
||||
_pprint_elem_content(indent_level, data[:start_pos].strip(),
|
||||
output=output)
|
||||
@@ -136,7 +151,8 @@ def pprint(xml, output=_sys.stdout, indent=4, width=80):
|
||||
_pprint_line(indent_level,
|
||||
data[:end_pos - start_pos],
|
||||
width=width,
|
||||
output=output)
|
||||
output=output,
|
||||
ignore_contents=ignore_contents)
|
||||
data = data[end_pos - start_pos:]
|
||||
if not is_stop and not no_indent :
|
||||
indent_level = indent_level + indent
|
||||
@@ -144,7 +160,7 @@ def pprint(xml, output=_sys.stdout, indent=4, width=80):
|
||||
if not data:
|
||||
break
|
||||
else:
|
||||
start_pos, end_pos, is_stop, no_indent = _get_next_elem(data)
|
||||
start_pos, end_pos, is_stop, no_indent, ignore_contents = _get_next_elem(data)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
@@ -11,6 +11,6 @@
|
||||
<category label="9000">
|
||||
<setting type="sep" />
|
||||
<setting id="ENABLE_TUNER_TYPES" type="bool" label="9005" default="true" />
|
||||
<setting label="9010" option="close" type="action" action="RunScript($ID, refresh_tuners)" />
|
||||
<setting label="9010" option="close" type="action" id="refresh_tuners" action="RunScript($CWD/resources/actions.py, refresh_tuners)" />
|
||||
</category>
|
||||
</settings>
|
||||
|
||||
@@ -1,13 +1,21 @@
|
||||
4.3.1
|
||||
fix keymaps path
|
||||
|
||||
4.3.0
|
||||
rebuild for addon api bump
|
||||
|
||||
4.1.0
|
||||
rebuild for addon api bump
|
||||
|
||||
4.0.1
|
||||
rebuild
|
||||
|
||||
4.0.0
|
||||
rebuild for OpenELEC-4.0
|
||||
|
||||
3.1.1
|
||||
rebuild for OpenELEC-3.2
|
||||
|
||||
3.0.1
|
||||
- bump addon version
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
PKG_NAME="imon-mce"
|
||||
PKG_VERSION="4.3"
|
||||
PKG_REV="0"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="OSS"
|
||||
PKG_SITE="http://www.openelec.tv"
|
||||
|
||||
@@ -21,4 +21,4 @@
|
||||
. /etc/profile
|
||||
|
||||
sleep 1 && \
|
||||
ir-keytable -p rc6 -w /etc/rc_keymaps/imon_mce &
|
||||
ir-keytable -p rc6 -w /usr/lib/udev/rc_keymaps/imon_mce &
|
||||
@@ -1,3 +1,9 @@
|
||||
4.3.4
|
||||
fixed xbmc/kodi rebranding error
|
||||
some fixes
|
||||
4.3.3
|
||||
addon transformed to service addon
|
||||
new addon settings option to enable to check for new driver at boot
|
||||
4.3.2
|
||||
new addon settings option to enable to update driver from web with latest version
|
||||
4.3.1
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
PKG_NAME="sundtek-mediatv"
|
||||
PKG_VERSION="4.3"
|
||||
PKG_REV="2"
|
||||
PKG_REV="4"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="nonfree"
|
||||
PKG_SITE="http://support.sundtek.com/"
|
||||
@@ -29,7 +29,7 @@ PKG_SECTION="driver/dvb"
|
||||
PKG_SHORTDESC="Sundtek USB Stick DVB userspace driver"
|
||||
PKG_LONGDESC="Driver for Sundtek MediaTV Pro (DVB-C, DVB-T, AnalogTV, Composite, S-Video, FM-Radio USB Stick) and Sundtek SkyTV Ultimate (DVB-S/S2 USB)."
|
||||
PKG_IS_ADDON="yes"
|
||||
PKG_ADDON_TYPE="xbmc.python.script"
|
||||
PKG_ADDON_TYPE="xbmc.service"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
make_target() {
|
||||
@@ -47,11 +47,18 @@ make_target() {
|
||||
INSTALLER_URL="http://sundtek.de/media/netinst/armsysvhf/installer.tar.gz"
|
||||
;;
|
||||
esac
|
||||
|
||||
wget -O installer.tar.gz $INSTALLER_URL
|
||||
|
||||
tar -xzf installer.tar.gz
|
||||
# we run this via wrapper
|
||||
mv opt/bin/mediaclient opt/bin/mediaclient.bin
|
||||
chmod 755 opt/bin/*
|
||||
|
||||
chmod -R 755 opt/ etc/
|
||||
|
||||
rm -f opt/bin/getinput.sh
|
||||
rm -f opt/bin/lirc.sh
|
||||
rm -fr opt/lib/pm/
|
||||
|
||||
wget -O version.used http://sundtek.de/media/latest.phtml
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
@@ -64,4 +71,5 @@ addon() {
|
||||
cp -P $PKG_DIR/settings-default.xml $ADDON_BUILD/$PKG_ADDON_ID/
|
||||
cp -Pa $PKG_BUILD/opt/bin $ADDON_BUILD/$PKG_ADDON_ID/
|
||||
cp -Pa $PKG_BUILD/opt/lib $ADDON_BUILD/$PKG_ADDON_ID/
|
||||
cp $PKG_BUILD/version.used $ADDON_BUILD/$PKG_ADDON_ID/
|
||||
}
|
||||
|
||||
@@ -17,4 +17,5 @@
|
||||
<setting id="DEVICE4_NUM" value="1" />
|
||||
<setting id="DEVICE5_IP" value="" />
|
||||
<setting id="DEVICE5_NUM" value="1" />
|
||||
<setting id="CHECK_BOOT" value="false" />
|
||||
</settings>
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/sh
|
||||
LD_PRELOAD=/storage/.xbmc/addons/driver.dvb.sundtek-mediatv/lib/libmediaclient.so exec mediaclient.bin "$@"
|
||||
@@ -0,0 +1,247 @@
|
||||
#!/bin/sh
|
||||
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
|
||||
#
|
||||
# OpenELEC is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# OpenELEC is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
. /etc/profile
|
||||
|
||||
net_tuner_num_fix() {
|
||||
local num=$1
|
||||
|
||||
[ -z "$num" ] && num=1
|
||||
num=$(( $num *1 ))
|
||||
[ $num -lt 1 ] && num=1
|
||||
num=$(( $num -1 ))
|
||||
echo $num
|
||||
}
|
||||
|
||||
SUNDTEK_ADDON_DIR="$HOME/.kodi/addons/driver.dvb.sundtek-mediatv"
|
||||
SUNDTEK_ADDON_HOME="$HOME/.kodi/userdata/addon_data/driver.dvb.sundtek-mediatv"
|
||||
SUNDTEK_ADDON_SETTINGS="$SUNDTEK_ADDON_HOME/settings.xml"
|
||||
|
||||
mkdir -p $SUNDTEK_ADDON_HOME
|
||||
|
||||
if [ ! -f "$SUNDTEK_ADDON_HOME/sundtek.conf" ]; then
|
||||
cp $SUNDTEK_ADDON_DIR/config/* $SUNDTEK_ADDON_HOME/
|
||||
else
|
||||
# in case of missing entries in addon home's sundtek.conf
|
||||
entry_set="$(grep use_hwpidfilter $SUNDTEK_ADDON_HOME/sundtek.conf 2>/dev/null)"
|
||||
if [ -z "$entry_set" ]; then
|
||||
sed -i 's|^device_attach=.*|# device_attach not used anymore\n\n# enable HW PID filter\nuse_hwpidfilter=off\n\n# enable listening on network\nenablenetwork=off|g' $SUNDTEK_ADDON_HOME/sundtek.conf
|
||||
sed -i 's|^#first_adapter=.*|first_adapter=0|g' $SUNDTEK_ADDON_HOME/sundtek.conf
|
||||
|
||||
sed -i 's|.*network tuner IP address (OpenELEC specific).*||g' $SUNDTEK_ADDON_HOME/sundtek.conf
|
||||
sed -i 's|.*network_tuner_ip=.*||g' $SUNDTEK_ADDON_HOME/sundtek.conf
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -f "$SUNDTEK_ADDON_SETTINGS" ]; then
|
||||
cp $SUNDTEK_ADDON_DIR/settings-default.xml $SUNDTEK_ADDON_SETTINGS
|
||||
fi
|
||||
|
||||
[ ! -f $SUNDTEK_ADDON_HOME/rc_key_enter.map ] && mv $SUNDTEK_ADDON_HOME/rc_key_enter $SUNDTEK_ADDON_HOME/rc_key_enter.map
|
||||
[ ! -f $SUNDTEK_ADDON_HOME/rc_key_ok.map ] && mv $SUNDTEK_ADDON_HOME/rc_key_ok $SUNDTEK_ADDON_HOME/rc_key_ok.map
|
||||
|
||||
mkdir -p /var/config
|
||||
cat "$SUNDTEK_ADDON_SETTINGS" | awk -F\" '{print $2"=\""$4"\""}' | sed '/^=/d' > /var/config/sundtek-addon.conf
|
||||
. /var/config/sundtek-addon.conf
|
||||
|
||||
# check if there is new driver on web
|
||||
if [ "$CHECK_BOOT" = "true" ]; then
|
||||
if [ ! -f /var/run/sundtek.checked ]; then
|
||||
# only once after boot
|
||||
touch /var/run/sundtek.checked
|
||||
|
||||
(
|
||||
# wait some time before checking
|
||||
sleep 20
|
||||
cd $SUNDTEK_ADDON_DIR
|
||||
|
||||
wget -O version.latest http://sundtek.de/media/latest.phtml
|
||||
|
||||
version_used=$(cat version.used)
|
||||
version_latest=$(cat version.latest)
|
||||
if [ "$version_used" != "$version_latest" ]; then
|
||||
# new version exist
|
||||
kodi-send -a "Notification(Sundtek, \"New driver version exist, update manually\", 4000, $SUNDTEK_ADDON_DIR/icon.png)"
|
||||
fi
|
||||
)&
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "$(pidof mediasrv)" ]; then
|
||||
rm -f /var/log/mediasrv.log
|
||||
rm -f /var/log/mediaclient.log
|
||||
|
||||
SUNDTEK_CONF_TMP=/tmp/sundtek.conf
|
||||
cp $SUNDTEK_ADDON_HOME/sundtek.conf $SUNDTEK_CONF_TMP
|
||||
|
||||
[ -z "$LOWEST_ADAPTER_NUM" ] && LOWEST_ADAPTER_NUM=0
|
||||
sed -i "s|^first_adapter=.*|first_adapter=$LOWEST_ADAPTER_NUM|g" $SUNDTEK_CONF_TMP
|
||||
|
||||
# enable HW PID filter
|
||||
if [ "$ENABLE_HW_PID_FILTER" = "true" ]; then
|
||||
sed -i 's|^use_hwpidfilter=.*|use_hwpidfilter=on|g' $SUNDTEK_CONF_TMP
|
||||
else
|
||||
sed -i 's|^use_hwpidfilter=.*|use_hwpidfilter=off|g' $SUNDTEK_CONF_TMP
|
||||
fi
|
||||
|
||||
# enable IR receiver
|
||||
if [ "$ENABLE_IR_RECEIVER" = "true" ]; then
|
||||
sed -i 's|^ir_disabled=.*|ir_disabled=0|g' $SUNDTEK_CONF_TMP
|
||||
else
|
||||
sed -i 's|^ir_disabled=.*|ir_disabled=1|g' $SUNDTEK_CONF_TMP
|
||||
fi
|
||||
|
||||
if [ "$ALLOW_NET_USE" = "true" ]; then
|
||||
sed -i 's|^enablenetwork=.*|enablenetwork=on|g' $SUNDTEK_CONF_TMP
|
||||
else
|
||||
sed -i 's|^enablenetwork=.*|enablenetwork=off|g' $SUNDTEK_CONF_TMP
|
||||
fi
|
||||
|
||||
[ "$DEVICE1_IP" = "0.0.0.0" ] && DEVICE1_IP=""
|
||||
[ "$DEVICE2_IP" = "0.0.0.0" ] && DEVICE2_IP=""
|
||||
[ "$DEVICE3_IP" = "0.0.0.0" ] && DEVICE3_IP=""
|
||||
[ "$DEVICE4_IP" = "0.0.0.0" ] && DEVICE4_IP=""
|
||||
[ "$DEVICE5_IP" = "0.0.0.0" ] && DEVICE5_IP=""
|
||||
DEVICE1_NUM=$(net_tuner_num_fix $DEVICE1_NUM)
|
||||
DEVICE2_NUM=$(net_tuner_num_fix $DEVICE2_NUM)
|
||||
DEVICE3_NUM=$(net_tuner_num_fix $DEVICE3_NUM)
|
||||
DEVICE4_NUM=$(net_tuner_num_fix $DEVICE4_NUM)
|
||||
DEVICE5_NUM=$(net_tuner_num_fix $DEVICE5_NUM)
|
||||
|
||||
if [ "$USE_NET_TUNERS" = "true" -a -n "$DEVICE1_IP" ]; then
|
||||
# delete all network tuner entries
|
||||
awk '/^\[NETWORK\]/{flag=1; next} /^device=|^#|^$/{if (flag==1) next} /.*/{flag=0; print}' $SUNDTEK_CONF_TMP >${SUNDTEK_CONF_TMP}-net
|
||||
mv ${SUNDTEK_CONF_TMP}-net $SUNDTEK_CONF_TMP
|
||||
echo "" >>$SUNDTEK_CONF_TMP
|
||||
# remove empty lines at the end of file
|
||||
sed -i -e ':a' -e '/^\n*$/{$d;N;};/\n$/ba' $SUNDTEK_CONF_TMP
|
||||
# add entries
|
||||
echo -e "\n[NETWORK]" >>$SUNDTEK_CONF_TMP
|
||||
for dev in $(seq 0 $DEVICE1_NUM); do
|
||||
echo "device=$DEVICE1_IP:$dev" >>$SUNDTEK_CONF_TMP
|
||||
done
|
||||
if [ -n "$DEVICE2_IP" ]; then
|
||||
for dev in $(seq 0 $DEVICE2_NUM); do
|
||||
echo "device=$DEVICE2_IP:$dev" >>$SUNDTEK_CONF_TMP
|
||||
done
|
||||
if [ -n "$DEVICE3_IP" ]; then
|
||||
for dev in $(seq 0 $DEVICE3_NUM); do
|
||||
echo "device=$DEVICE3_IP:$dev" >>$SUNDTEK_CONF_TMP
|
||||
done
|
||||
if [ -n "$DEVICE4_IP" ]; then
|
||||
for dev in $(seq 0 $DEVICE4_NUM); do
|
||||
echo "device=$DEVICE4_IP:$dev" >>$SUNDTEK_CONF_TMP
|
||||
done
|
||||
if [ -n "$DEVICE5_IP" ]; then
|
||||
for dev in $(seq 0 $DEVICE5_NUM); do
|
||||
echo "device=$DEVICE5_IP:$dev" >>$SUNDTEK_CONF_TMP
|
||||
done
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
else
|
||||
# delete all network tuner entries
|
||||
awk '/^\[NETWORK\]/{flag=1; next} /^device=|^#|^$/{if (flag==1) next} /.*/{flag=0; print}' $SUNDTEK_CONF_TMP >${SUNDTEK_CONF_TMP}-net
|
||||
mv ${SUNDTEK_CONF_TMP}-net $SUNDTEK_CONF_TMP
|
||||
echo "" >>$SUNDTEK_CONF_TMP
|
||||
# remove empty lines at the end of file
|
||||
sed -i -e ':a' -e '/^\n*$/{$d;N;};/\n$/ba' $SUNDTEK_CONF_TMP
|
||||
fi
|
||||
|
||||
if [ "$ENABLE_TUNER_TYPES" = "true" ]; then
|
||||
# get tuner serial numbers
|
||||
SERIALS=$(cat /var/config/sundtek-addon.conf | sed -n 's|^ATTACHED_TUNER_\(.*\)_DVBMODE=.*|\1|gp' | sort | uniq)
|
||||
. /var/config/sundtek-addon.conf
|
||||
|
||||
for SERIAL in $SERIALS; do
|
||||
DVBMODE=$(eval echo \$ATTACHED_TUNER_${SERIAL}_DVBMODE)
|
||||
IRPROT=$(eval echo \$ATTACHED_TUNER_${SERIAL}_IRPROT)
|
||||
KEYMAP=$(eval echo \$ATTACHED_TUNER_${SERIAL}_KEYMAP)
|
||||
|
||||
if [ "$DVBMODE" = "DVB-T" ]; then
|
||||
# only set DVB-T because default is DVB-C (and DVB-S is not set either)
|
||||
DVBMODE="DVBT"
|
||||
else
|
||||
DVBMODE=""
|
||||
fi
|
||||
|
||||
[ "$IRPROT" = "NEC" -o "$IRPROT" = "auto" ] && IRPROT=""
|
||||
|
||||
[ ! -f $KEYMAP ] && KEYMAP=""
|
||||
|
||||
# remove setttings for this tuner
|
||||
awk -v val="[$SERIAL]" '$0 == val {flag=1; next} /^ir_protocol=|^rcmap=|^initial_dvb_mode=|^#|^$/{if (flag==1) next} /.*/{flag=0; print}' $SUNDTEK_CONF_TMP >${SUNDTEK_CONF_TMP}-types
|
||||
mv ${SUNDTEK_CONF_TMP}-types $SUNDTEK_CONF_TMP
|
||||
echo "" >>$SUNDTEK_CONF_TMP
|
||||
# remove empty lines at the end of file
|
||||
sed -i -e ':a' -e '/^\n*$/{$d;N;};/\n$/ba' $SUNDTEK_CONF_TMP
|
||||
|
||||
ADDNEW=true
|
||||
if [ -n "$DVBMODE" ]; then
|
||||
[ $ADDNEW = true ] && ADDNEW=false && echo -e "\n[$SERIAL]" >>$SUNDTEK_CONF_TMP
|
||||
echo "initial_dvb_mode=$DVBMODE" >>$SUNDTEK_CONF_TMP
|
||||
fi
|
||||
if [ -n "$IRPROT" ]; then
|
||||
[ $ADDNEW = true ] && ADDNEW=false && echo -e "\n[$SERIAL]" >>$SUNDTEK_CONF_TMP
|
||||
echo "ir_protocol=$IRPROT" >>$SUNDTEK_CONF_TMP
|
||||
fi
|
||||
if [ -n "$KEYMAP" ]; then
|
||||
[ $ADDNEW = true ] && ADDNEW=false && echo -e "\n[$SERIAL]" >>$SUNDTEK_CONF_TMP
|
||||
echo "rcmap=$KEYMAP" >>$SUNDTEK_CONF_TMP
|
||||
fi
|
||||
|
||||
echo "" >>$SUNDTEK_CONF_TMP
|
||||
done
|
||||
fi
|
||||
|
||||
md5_1=$(md5sum -b $SUNDTEK_CONF_TMP | awk '{print $1}')
|
||||
md5_2=$(md5sum -b $SUNDTEK_ADDON_HOME/sundtek.conf | awk '{print $1}')
|
||||
if [ "$md5_1" != "$md5_2" ]; then
|
||||
# file changed - copy to addon home
|
||||
cp $SUNDTEK_CONF_TMP $SUNDTEK_ADDON_HOME/sundtek.conf
|
||||
fi
|
||||
|
||||
chmod +x $SUNDTEK_ADDON_DIR/bin/*
|
||||
mediasrv --wait-for-devices -p $SUNDTEK_ADDON_DIR/bin -c $SUNDTEK_ADDON_HOME/sundtek.conf -d
|
||||
|
||||
# wait few seconds
|
||||
[ -z "$SETTLE_TIME" ] && SETTLE_TIME=0
|
||||
SETTLE_TIME=$(( $SETTLE_TIME *1 ))
|
||||
if [ $SETTLE_TIME -gt 0 ]; then
|
||||
logger -t Sundtek "### Settle for $SETTLE_TIME sec ###"
|
||||
sleep $SETTLE_TIME
|
||||
fi
|
||||
|
||||
if [ "$RUN_USER_SCRIPT" = "true" -a -f "$SUNDTEK_ADDON_HOME/userscript.sh" ]; then
|
||||
logger -t Sundtek "### Running user script $SUNDTEK_ADDON_HOME/userscript.sh ###"
|
||||
cat $SUNDTEK_ADDON_HOME/userscript.sh | dos2unix >/var/run/sundtek-userscript.sh
|
||||
sh /var/run/sundtek-userscript.sh
|
||||
fi
|
||||
|
||||
# save adapter serial number
|
||||
serial_number_old=$(cat $SUNDTEK_ADDON_HOME/adapters.txt 2>/dev/null)
|
||||
serial_number_new=$(mediaclient -e | awk '/device / {print $0} /SERIAL/ {id=1} /ID:/ {if (id==1) print $2}')
|
||||
if [ "$serial_number_old" != "$serial_number_new" ]; then
|
||||
echo "$serial_number_new" >$SUNDTEK_ADDON_HOME/adapters.txt
|
||||
fi
|
||||
fi
|
||||
|
||||
logger -t Sundtek "### Sundtek ready ###"
|
||||
@@ -1,3 +1,5 @@
|
||||
#!/bin/sh
|
||||
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
|
||||
@@ -15,3 +17,10 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
. /etc/profile
|
||||
|
||||
ADDON_DIR="$HOME/.kodi/addons/driver.dvb.sundtek-mediatv"
|
||||
|
||||
logger -t Sundtek "### Sundtek driver stop ###"
|
||||
mediaclient --shutdown
|
||||
@@ -20,18 +20,44 @@
|
||||
|
||||
. /etc/profile
|
||||
|
||||
SUNDTEK_ADDON_DIR="$HOME/.xbmc/addons/driver.dvb.sundtek-mediatv"
|
||||
SUNDTEK_ADDON_HOME="$HOME/.xbmc/userdata/addon_data/driver.dvb.sundtek-mediatv"
|
||||
SUNDTEK_ADDON_DIR="$HOME/.kodi/addons/driver.dvb.sundtek-mediatv"
|
||||
SUNDTEK_ADDON_HOME="$HOME/.kodi/userdata/addon_data/driver.dvb.sundtek-mediatv"
|
||||
SUNDTEK_ADDON_SETTINGS="$SUNDTEK_ADDON_HOME/settings.xml"
|
||||
|
||||
logger -t Sundtek "### Starting updating driver ###"
|
||||
xbmc-send -a "Notification(Sundtek, Starting updating driver, 2000)"
|
||||
trap_exit_install() {
|
||||
kodi-send -a "Notification(Sundtek, Something went wrong. Cleaning..., 8000, $SUNDTEK_ADDON_DIR/icon.png)"
|
||||
cd "$SUNDTEK_ADDON_DIR"
|
||||
rm -fr tmp
|
||||
exit 5
|
||||
}
|
||||
|
||||
# kill process
|
||||
systemctl stop driver.dvb.sundtek-mediatv
|
||||
killall -9 mediaclient &>/dev/null
|
||||
killall -9 mediasrv &>/dev/null
|
||||
|
||||
# exit on errors
|
||||
set -e
|
||||
|
||||
trap trap_exit_install EXIT
|
||||
|
||||
cd "$SUNDTEK_ADDON_DIR"
|
||||
rm -fr tmp
|
||||
mkdir tmp
|
||||
cd tmp
|
||||
|
||||
logger -t Sundtek "### Starting updating driver ###"
|
||||
kodi-send -a "Notification(Sundtek, Starting updating driver, 2000, $SUNDTEK_ADDON_DIR/icon.png)"
|
||||
|
||||
wget -O ../version.used http://sundtek.de/media/latest.phtml
|
||||
if [ $? -ne 0 ]; then
|
||||
logger -t Sundtek "### Can't get latest version ###"
|
||||
kodi-send -a "Notification(Sundtek, Cant get latest version, 8000, $SUNDTEK_ADDON_DIR/icon.png)"
|
||||
cd ..
|
||||
rm -fr tmp/
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ARCH=$(sed -n 's|.*\.\([^-]*\)-.*|\1|p' /etc/release | tr -d '\n')
|
||||
if [ "$ARCH" = "x86_64" ]; then
|
||||
INSTALLER_URL="http://sundtek.de/media/netinst/64bit/installer.tar.gz"
|
||||
@@ -41,33 +67,40 @@ elif [ "$ARCH" = "arm" ]; then
|
||||
INSTALLER_URL="http://sundtek.de/media/netinst/armsysvhf/installer.tar.gz"
|
||||
else
|
||||
logger -t Sundtek "### Unsupported architecture ###"
|
||||
xbmc-send -a "Notification(Sundtek, Unsupported architecture, 5000)"
|
||||
kodi-send -a "Notification(Sundtek, Unsupported architecture, 8000, $SUNDTEK_ADDON_DIR/icon.png)"
|
||||
cd ..
|
||||
rm -fr tmp
|
||||
exit 1
|
||||
fi
|
||||
|
||||
logger -t Sundtek "### Downloading driver archive for $ARCH ###"
|
||||
xbmc-send -a "Notification(Sundtek, Downloading driver archive for $ARCH, 2000)"
|
||||
wget -O installer.tar.gz $INSTALLER_URL
|
||||
logger -t Sundtek "### Extracting archive ###"
|
||||
xbmc-send -a "Notification(Sundtek, Extracting archive, 2000)"
|
||||
tar -xzf installer.tar.gz
|
||||
if [ $? -ne 0 ]; then
|
||||
logger -t Sundtek "### Archive damaged ###"
|
||||
xbmc-send -a "Notification(Sundtek, Archive damaged, 5000)"
|
||||
cd ..
|
||||
rm -fr tmp/
|
||||
exit 2
|
||||
fi
|
||||
|
||||
killall -9 mediaclient.bin &>/dev/null
|
||||
killall -9 mediaclient &>/dev/null
|
||||
killall -9 mediasrv &>/dev/null
|
||||
logger -t Sundtek "### Downloading driver archive for $ARCH ###"
|
||||
kodi-send -a "Notification(Sundtek, Downloading driver archive for $ARCH, 2000, $SUNDTEK_ADDON_DIR/icon.png)"
|
||||
wget -O installer.tar.gz $INSTALLER_URL
|
||||
if [ $? -ne 0 ]; then
|
||||
logger -t Sundtek "### Archive damaged ###"
|
||||
kodi-send -a "Notification(Sundtek, Download failed, 8000, $SUNDTEK_ADDON_DIR/icon.png)"
|
||||
cd ..
|
||||
rm -fr tmp/
|
||||
exit 3
|
||||
fi
|
||||
|
||||
# we run this via wrapper
|
||||
mv opt/bin/mediaclient opt/bin/mediaclient.bin
|
||||
chmod 755 opt/bin/*
|
||||
logger -t Sundtek "### Extracting archive ###"
|
||||
kodi-send -a "Notification(Sundtek, Extracting archive, 2000, $SUNDTEK_ADDON_DIR/icon.png)"
|
||||
tar -xzf installer.tar.gz
|
||||
if [ $? -ne 0 ]; then
|
||||
logger -t Sundtek "### Archive damaged ###"
|
||||
kodi-send -a "Notification(Sundtek, Archive damaged, 8000, $SUNDTEK_ADDON_DIR/icon.png)"
|
||||
cd ..
|
||||
rm -fr tmp/
|
||||
exit 4
|
||||
fi
|
||||
|
||||
# fix permissions
|
||||
chmod -R 755 opt/ etc/
|
||||
|
||||
rm -f opt/bin/getinput.sh
|
||||
rm -f opt/bin/lirc.sh
|
||||
rm -fr opt/lib/pm/
|
||||
|
||||
cp -Pa opt/bin/* ../bin/
|
||||
cp -Pa opt/lib/* ../lib/
|
||||
@@ -75,7 +108,12 @@ cp -Pa opt/lib/* ../lib/
|
||||
cd ..
|
||||
rm -fr tmp
|
||||
|
||||
logger -t Sundtek "### Driver update finished, please reboot ###"
|
||||
xbmc-send -a "Notification(Sundtek, Driver update finished, 2000)"
|
||||
xbmc-send -a "Notification(Sundtek, Please reboot, 5000)"
|
||||
logger -t Sundtek "### Driver update finished ###"
|
||||
kodi-send -a "Notification(Sundtek, Driver update finished, 5000, $SUNDTEK_ADDON_DIR/icon.png)"
|
||||
kodi-send -a "Notification(Sundtek, Please reboot, 5000, $SUNDTEK_ADDON_DIR/icon.png)"
|
||||
|
||||
trap - EXIT
|
||||
|
||||
systemctl start driver.dvb.sundtek-mediatv
|
||||
|
||||
exit 0
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2013 Stephan Raue (stephan@openelec.tv)
|
||||
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
|
||||
#
|
||||
# OpenELEC is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@@ -20,223 +20,11 @@
|
||||
|
||||
. /etc/profile
|
||||
|
||||
# start locking mechanism - allows only one instance to be run at a time
|
||||
SUNDTEK_LOCKFILE="/var/lock/userspace-driver-sundtek.lck"
|
||||
SUNDTEK_LOCKFD=99
|
||||
# obtain an exclusive lock
|
||||
exlock() { eval "exec $SUNDTEK_LOCKFD>\"$SUNDTEK_LOCKFILE\""; flock -x $SUNDTEK_LOCKFD; }
|
||||
# drop a lock
|
||||
unlock() { flock -u $SUNDTEK_LOCKFD; flock -xn $SUNDTEK_LOCKFD && rm -f "$SUNDTEK_LOCKFILE"; }
|
||||
# end locking mechanism
|
||||
SUNDTEK_ADDON_DIR="$HOME/.kodi/addons/driver.dvb.sundtek-mediatv"
|
||||
|
||||
# exclusive lock
|
||||
exlock
|
||||
|
||||
net_tuner_num_fix() {
|
||||
local num=$1
|
||||
|
||||
[ -z "$num" ] && num=1
|
||||
num=$(( $num *1 ))
|
||||
[ $num -lt 1 ] && num=1
|
||||
num=$(( $num -1 ))
|
||||
echo $num
|
||||
}
|
||||
|
||||
SUNDTEK_ADDON_DIR="$HOME/.xbmc/addons/driver.dvb.sundtek-mediatv"
|
||||
SUNDTEK_ADDON_HOME="$HOME/.xbmc/userdata/addon_data/driver.dvb.sundtek-mediatv"
|
||||
SUNDTEK_ADDON_SETTINGS="$SUNDTEK_ADDON_HOME/settings.xml"
|
||||
|
||||
mkdir -p $SUNDTEK_ADDON_HOME
|
||||
|
||||
if [ ! -f "$SUNDTEK_ADDON_HOME/sundtek.conf" ]; then
|
||||
cp $SUNDTEK_ADDON_DIR/config/* $SUNDTEK_ADDON_HOME/
|
||||
if [ -f $SUNDTEK_ADDON_DIR/lib/libmediaclient.so ]; then
|
||||
logger -t Sundtek "### Preloading library ###"
|
||||
export LD_PRELOAD=$SUNDTEK_ADDON_DIR/lib/libmediaclient.so
|
||||
else
|
||||
# in case of missing entries in addon home's sundtek.conf
|
||||
entry_set="$(grep use_hwpidfilter $SUNDTEK_ADDON_HOME/sundtek.conf 2>/dev/null)"
|
||||
if [ -z "$entry_set" ]; then
|
||||
sed -i 's|^device_attach=.*|# device_attach not used anymore\n\n# enable HW PID filter\nuse_hwpidfilter=off\n\n# enable listening on network\nenablenetwork=off|g' $SUNDTEK_ADDON_HOME/sundtek.conf
|
||||
sed -i 's|^#first_adapter=.*|first_adapter=0|g' $SUNDTEK_ADDON_HOME/sundtek.conf
|
||||
|
||||
sed -i 's|.*network tuner IP address (OpenELEC specific).*||g' $SUNDTEK_ADDON_HOME/sundtek.conf
|
||||
sed -i 's|.*network_tuner_ip=.*||g' $SUNDTEK_ADDON_HOME/sundtek.conf
|
||||
fi
|
||||
logger -t Sundtek "### Preloading library doesn't exist ###"
|
||||
fi
|
||||
|
||||
if [ ! -f "$SUNDTEK_ADDON_SETTINGS" ]; then
|
||||
cp $SUNDTEK_ADDON_DIR/settings-default.xml $SUNDTEK_ADDON_SETTINGS
|
||||
fi
|
||||
|
||||
[ ! -f $SUNDTEK_ADDON_HOME/rc_key_enter.map ] && mv $SUNDTEK_ADDON_HOME/rc_key_enter $SUNDTEK_ADDON_HOME/rc_key_enter.map
|
||||
[ ! -f $SUNDTEK_ADDON_HOME/rc_key_ok.map ] && mv $SUNDTEK_ADDON_HOME/rc_key_ok $SUNDTEK_ADDON_HOME/rc_key_ok.map
|
||||
|
||||
mkdir -p /var/config
|
||||
cat "$SUNDTEK_ADDON_SETTINGS" | awk -F\" '{print $2"=\""$4"\""}' | sed '/^=/d' > /var/config/sundtek-addon.conf
|
||||
. /var/config/sundtek-addon.conf
|
||||
|
||||
export LD_PRELOAD=$SUNDTEK_ADDON_DIR/lib/libmediaclient.so
|
||||
|
||||
if [ -z "$(pidof mediasrv)" ]; then
|
||||
rm -f /var/log/mediasrv.log
|
||||
rm -f /var/log/mediaclient.log
|
||||
|
||||
SUNDTEK_CONF_TMP=/tmp/sundtek.conf
|
||||
cp $SUNDTEK_ADDON_HOME/sundtek.conf $SUNDTEK_CONF_TMP
|
||||
|
||||
[ -z "$LOWEST_ADAPTER_NUM" ] && LOWEST_ADAPTER_NUM=0
|
||||
sed -i "s|^first_adapter=.*|first_adapter=$LOWEST_ADAPTER_NUM|g" $SUNDTEK_CONF_TMP
|
||||
|
||||
# enable HW PID filter
|
||||
if [ "$ENABLE_HW_PID_FILTER" = "true" ]; then
|
||||
sed -i 's|^use_hwpidfilter=.*|use_hwpidfilter=on|g' $SUNDTEK_CONF_TMP
|
||||
else
|
||||
sed -i 's|^use_hwpidfilter=.*|use_hwpidfilter=off|g' $SUNDTEK_CONF_TMP
|
||||
fi
|
||||
|
||||
# enable IR receiver
|
||||
if [ "$ENABLE_IR_RECEIVER" = "true" ]; then
|
||||
sed -i 's|^ir_disabled=.*|ir_disabled=0|g' $SUNDTEK_CONF_TMP
|
||||
else
|
||||
sed -i 's|^ir_disabled=.*|ir_disabled=1|g' $SUNDTEK_CONF_TMP
|
||||
fi
|
||||
|
||||
if [ "$ALLOW_NET_USE" = "true" ]; then
|
||||
sed -i 's|^enablenetwork=.*|enablenetwork=on|g' $SUNDTEK_CONF_TMP
|
||||
else
|
||||
sed -i 's|^enablenetwork=.*|enablenetwork=off|g' $SUNDTEK_CONF_TMP
|
||||
fi
|
||||
|
||||
[ "$DEVICE1_IP" = "0.0.0.0" ] && DEVICE1_IP=""
|
||||
[ "$DEVICE2_IP" = "0.0.0.0" ] && DEVICE2_IP=""
|
||||
[ "$DEVICE3_IP" = "0.0.0.0" ] && DEVICE3_IP=""
|
||||
[ "$DEVICE4_IP" = "0.0.0.0" ] && DEVICE4_IP=""
|
||||
[ "$DEVICE5_IP" = "0.0.0.0" ] && DEVICE5_IP=""
|
||||
DEVICE1_NUM=$(net_tuner_num_fix $DEVICE1_NUM)
|
||||
DEVICE2_NUM=$(net_tuner_num_fix $DEVICE2_NUM)
|
||||
DEVICE3_NUM=$(net_tuner_num_fix $DEVICE3_NUM)
|
||||
DEVICE4_NUM=$(net_tuner_num_fix $DEVICE4_NUM)
|
||||
DEVICE5_NUM=$(net_tuner_num_fix $DEVICE5_NUM)
|
||||
|
||||
if [ "$USE_NET_TUNERS" = "true" -a -n "$DEVICE1_IP" ]; then
|
||||
# delete all network tuner entries
|
||||
awk '/^\[NETWORK\]/{flag=1; next} /^device=|^#|^$/{if (flag==1) next} /.*/{flag=0; print}' $SUNDTEK_CONF_TMP >${SUNDTEK_CONF_TMP}-net
|
||||
mv ${SUNDTEK_CONF_TMP}-net $SUNDTEK_CONF_TMP
|
||||
echo "" >>$SUNDTEK_CONF_TMP
|
||||
# remove empty lines at the end of file
|
||||
sed -i -e ':a' -e '/^\n*$/{$d;N;};/\n$/ba' $SUNDTEK_CONF_TMP
|
||||
# add entries
|
||||
echo -e "\n[NETWORK]" >>$SUNDTEK_CONF_TMP
|
||||
for dev in $(seq 0 $DEVICE1_NUM); do
|
||||
echo "device=$DEVICE1_IP:$dev" >>$SUNDTEK_CONF_TMP
|
||||
done
|
||||
if [ -n "$DEVICE2_IP" ]; then
|
||||
for dev in $(seq 0 $DEVICE2_NUM); do
|
||||
echo "device=$DEVICE2_IP:$dev" >>$SUNDTEK_CONF_TMP
|
||||
done
|
||||
if [ -n "$DEVICE3_IP" ]; then
|
||||
for dev in $(seq 0 $DEVICE3_NUM); do
|
||||
echo "device=$DEVICE3_IP:$dev" >>$SUNDTEK_CONF_TMP
|
||||
done
|
||||
if [ -n "$DEVICE4_IP" ]; then
|
||||
for dev in $(seq 0 $DEVICE4_NUM); do
|
||||
echo "device=$DEVICE4_IP:$dev" >>$SUNDTEK_CONF_TMP
|
||||
done
|
||||
if [ -n "$DEVICE5_IP" ]; then
|
||||
for dev in $(seq 0 $DEVICE5_NUM); do
|
||||
echo "device=$DEVICE5_IP:$dev" >>$SUNDTEK_CONF_TMP
|
||||
done
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
else
|
||||
# delete all network tuner entries
|
||||
awk '/^\[NETWORK\]/{flag=1; next} /^device=|^#|^$/{if (flag==1) next} /.*/{flag=0; print}' $SUNDTEK_CONF_TMP >${SUNDTEK_CONF_TMP}-net
|
||||
mv ${SUNDTEK_CONF_TMP}-net $SUNDTEK_CONF_TMP
|
||||
echo "" >>$SUNDTEK_CONF_TMP
|
||||
# remove empty lines at the end of file
|
||||
sed -i -e ':a' -e '/^\n*$/{$d;N;};/\n$/ba' $SUNDTEK_CONF_TMP
|
||||
fi
|
||||
|
||||
if [ "$ENABLE_TUNER_TYPES" = "true" ]; then
|
||||
# get tuner serial numbers
|
||||
SERIALS=$(cat /var/config/sundtek-addon.conf | sed -n 's|^ATTACHED_TUNER_\(.*\)_DVBMODE=.*|\1|gp' | sort | uniq)
|
||||
. /var/config/sundtek-addon.conf
|
||||
|
||||
for SERIAL in $SERIALS; do
|
||||
DVBMODE=$(eval echo \$ATTACHED_TUNER_${SERIAL}_DVBMODE)
|
||||
IRPROT=$(eval echo \$ATTACHED_TUNER_${SERIAL}_IRPROT)
|
||||
KEYMAP=$(eval echo \$ATTACHED_TUNER_${SERIAL}_KEYMAP)
|
||||
|
||||
if [ "$DVBMODE" = "DVB-T" ]; then
|
||||
# only set DVB-T because default is DVB-C (and DVB-S is not set either)
|
||||
DVBMODE="DVBT"
|
||||
else
|
||||
DVBMODE=""
|
||||
fi
|
||||
|
||||
[ "$IRPROT" = "NEC" -o "$IRPROT" = "auto" ] && IRPROT=""
|
||||
|
||||
[ ! -f $KEYMAP ] && KEYMAP=""
|
||||
|
||||
# remove setttings for this tuner
|
||||
awk -v val="[$SERIAL]" '$0 == val {flag=1; next} /^ir_protocol=|^rcmap=|^initial_dvb_mode=|^#|^$/{if (flag==1) next} /.*/{flag=0; print}' $SUNDTEK_CONF_TMP >${SUNDTEK_CONF_TMP}-types
|
||||
mv ${SUNDTEK_CONF_TMP}-types $SUNDTEK_CONF_TMP
|
||||
echo "" >>$SUNDTEK_CONF_TMP
|
||||
# remove empty lines at the end of file
|
||||
sed -i -e ':a' -e '/^\n*$/{$d;N;};/\n$/ba' $SUNDTEK_CONF_TMP
|
||||
|
||||
ADDNEW=true
|
||||
if [ -n "$DVBMODE" ]; then
|
||||
[ $ADDNEW = true ] && ADDNEW=false && echo -e "\n[$SERIAL]" >>$SUNDTEK_CONF_TMP
|
||||
echo "initial_dvb_mode=$DVBMODE" >>$SUNDTEK_CONF_TMP
|
||||
fi
|
||||
if [ -n "$IRPROT" ]; then
|
||||
[ $ADDNEW = true ] && ADDNEW=false && echo -e "\n[$SERIAL]" >>$SUNDTEK_CONF_TMP
|
||||
echo "ir_protocol=$IRPROT" >>$SUNDTEK_CONF_TMP
|
||||
fi
|
||||
if [ -n "$KEYMAP" ]; then
|
||||
[ $ADDNEW = true ] && ADDNEW=false && echo -e "\n[$SERIAL]" >>$SUNDTEK_CONF_TMP
|
||||
echo "rcmap=$KEYMAP" >>$SUNDTEK_CONF_TMP
|
||||
fi
|
||||
|
||||
echo "" >>$SUNDTEK_CONF_TMP
|
||||
done
|
||||
fi
|
||||
|
||||
md5_1=$(md5sum -b $SUNDTEK_CONF_TMP | awk '{print $1}')
|
||||
md5_2=$(md5sum -b $SUNDTEK_ADDON_HOME/sundtek.conf | awk '{print $1}')
|
||||
if [ "$md5_1" != "$md5_2" ]; then
|
||||
# file changed - copy to addon home
|
||||
cp $SUNDTEK_CONF_TMP $SUNDTEK_ADDON_HOME/sundtek.conf
|
||||
fi
|
||||
|
||||
mediasrv --wait-for-devices -p $SUNDTEK_ADDON_DIR/bin -c $SUNDTEK_ADDON_HOME/sundtek.conf -d
|
||||
|
||||
# wait few seconds
|
||||
[ -z "$SETTLE_TIME" ] && SETTLE_TIME=0
|
||||
SETTLE_TIME=$(( $SETTLE_TIME *1 ))
|
||||
if [ $SETTLE_TIME -gt 0 ]; then
|
||||
logger -t Sundtek "### Settle for $SETTLE_TIME sec ###"
|
||||
sleep $SETTLE_TIME
|
||||
fi
|
||||
|
||||
if [ "$RUN_USER_SCRIPT" = "true" -a -f "$SUNDTEK_ADDON_HOME/userscript.sh" ]; then
|
||||
logger -t Sundtek "### Running user script $SUNDTEK_ADDON_HOME/userscript.sh ###"
|
||||
cat $SUNDTEK_ADDON_HOME/userscript.sh | dos2unix >/var/run/sundtek-userscript.sh
|
||||
sh /var/run/sundtek-userscript.sh
|
||||
fi
|
||||
(
|
||||
# save adapter serial number in background
|
||||
sleep 5
|
||||
serial_number_old=$(cat $SUNDTEK_ADDON_HOME/adapters.txt 2>/dev/null)
|
||||
serial_number_new=$(mediaclient.bin -e | awk '/device / {print $0} /ID:/ {print $2}')
|
||||
if [ "$serial_number_old" != "$serial_number_new" ]; then
|
||||
echo "$serial_number_new" >$SUNDTEK_ADDON_HOME/adapters.txt
|
||||
fi
|
||||
)&
|
||||
fi
|
||||
|
||||
logger -t Sundtek "### Sundtek ready ###"
|
||||
|
||||
# unlock the lock
|
||||
unlock
|
||||
|
||||
@@ -15,29 +15,3 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
import os
|
||||
import sys
|
||||
import subprocess
|
||||
import xbmcaddon
|
||||
|
||||
__settings__ = xbmcaddon.Addon(id = 'driver.dvb.sundtek-mediatv')
|
||||
__cwd__ = __settings__.getAddonInfo('path')
|
||||
__resources_lib__ = xbmc.translatePath(os.path.join(__cwd__, 'resources', 'lib'))
|
||||
__settings_xml__ = xbmc.translatePath(os.path.join(__cwd__, 'resources', 'settings.xml'))
|
||||
|
||||
__mediaclient__ = xbmc.translatePath(os.path.join(__cwd__, 'bin', 'mediaclient.bin'))
|
||||
__ld_preload__ = xbmc.translatePath(os.path.join(__cwd__, 'lib', 'libmediaclient.so'))
|
||||
__mediaclient_e__ = 'LD_PRELOAD=' + __ld_preload__ + ' ' + __mediaclient__ + ' -e'
|
||||
__update_sh__ = xbmc.translatePath(os.path.join(__cwd__, 'bin', 'update-driver.sh'))
|
||||
|
||||
if __name__ == "__main__" and len(sys.argv) == 2 and sys.argv[1] == 'refresh_tuners':
|
||||
sys.path.append(__resources_lib__)
|
||||
from functions import refresh_sundtek_tuners
|
||||
refresh_sundtek_tuners(__settings_xml__, __mediaclient_e__)
|
||||
__settings__.openSettings()
|
||||
elif __name__ == "__main__" and len(sys.argv) == 2 and sys.argv[1] == 'update_driver':
|
||||
proc = subprocess.Popen([__update_sh__], shell = True)
|
||||
return_code = proc.wait()
|
||||
print "sundtek update driver rv", return_code
|
||||
__settings__.openSettings()
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
|
||||
#
|
||||
# OpenELEC is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# OpenELEC is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
import os
|
||||
import sys
|
||||
import subprocess
|
||||
import xbmcaddon
|
||||
|
||||
__settings__ = xbmcaddon.Addon(id = 'driver.dvb.sundtek-mediatv')
|
||||
__cwd__ = __settings__.getAddonInfo('path')
|
||||
__resources_lib__ = xbmc.translatePath(os.path.join(__cwd__, 'resources', 'lib'))
|
||||
__settings_xml__ = xbmc.translatePath(os.path.join(__cwd__, 'resources', 'settings.xml'))
|
||||
|
||||
__mediaclient__ = xbmc.translatePath(os.path.join(__cwd__, 'bin', 'mediaclient'))
|
||||
__mediaclient_e__ = __mediaclient__ + ' -e'
|
||||
__update_sh__ = xbmc.translatePath(os.path.join(__cwd__, 'bin', 'sundtek-update-driver.sh'))
|
||||
|
||||
if len(sys.argv) == 2:
|
||||
if sys.argv[1] == 'refresh_tuners':
|
||||
print "sundtek refresh tuners"
|
||||
sys.path.append(__resources_lib__)
|
||||
from functions import refresh_sundtek_tuners
|
||||
refresh_sundtek_tuners(__settings_xml__, __mediaclient_e__)
|
||||
__settings__.openSettings()
|
||||
elif sys.argv[1] == 'update_driver':
|
||||
print "sundtek update driver"
|
||||
proc = subprocess.Popen([__update_sh__], shell = True)
|
||||
return_code = proc.wait()
|
||||
print "sundtek update driver return value " + str(return_code)
|
||||
__settings__.openSettings()
|
||||
@@ -29,5 +29,6 @@
|
||||
<string id="9030"> keymap filename</string>
|
||||
|
||||
<string id="3000">Driver</string>
|
||||
<string id="3020">Check for new driver version at boot</string>
|
||||
<string id="3010">Update from web... (press me)</string>
|
||||
</strings>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2013 Stephan Raue (stephan@openelec.tv)
|
||||
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
|
||||
#
|
||||
# OpenELEC is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@@ -22,7 +22,7 @@ import shutil
|
||||
import xmlpp
|
||||
from xml.dom import minidom
|
||||
|
||||
__sundtek_userspace__ = '/storage/.xbmc/userdata/addon_data/driver.dvb.sundtek-mediatv/'
|
||||
__sundtek_userspace__ = '/storage/.kodi/userdata/addon_data/driver.dvb.sundtek-mediatv/'
|
||||
|
||||
######################################################################################################
|
||||
# backup setting.xml file only if backup doesn't exist
|
||||
|
||||
@@ -37,36 +37,39 @@ def _usage(this_file):
|
||||
return """SYNOPSIS: pretty print an XML document
|
||||
USAGE: python %s <filename> \n""" % this_file
|
||||
|
||||
def _pprint_line(indent_level, line, width=100, output=_sys.stdout):
|
||||
def _pprint_line(indent_level, line, width=100, output=_sys.stdout, ignore_contents = False):
|
||||
if line.strip():
|
||||
start = ""
|
||||
number_chars = 0
|
||||
for l in range(indent_level):
|
||||
start = start + " "
|
||||
number_chars = number_chars + 1
|
||||
try:
|
||||
elem_start = _re.findall("(\<\W{0,1}\w+:\w+) ?", line)[0]
|
||||
elem_finished = _re.findall("([?|\]\]/]*\>)", line)[0]
|
||||
#should not have *
|
||||
attrs = _re.findall("(\S*?\=\".*?\")", line)
|
||||
output.write(start + elem_start)
|
||||
number_chars = len(start + elem_start)
|
||||
for attr in attrs:
|
||||
if (attrs.index(attr) + 1) == len(attrs):
|
||||
number_chars = number_chars + len(elem_finished)
|
||||
if (number_chars + len(attr) + 1) > width:
|
||||
output.write("\n")
|
||||
for i in range(len(start + elem_start) + 1):
|
||||
if not ignore_contents:
|
||||
try:
|
||||
elem_start = _re.findall("(\<\W{0,1}\w+:\w+) ?", line)[0]
|
||||
elem_finished = _re.findall("([?|\]\]/|\-\-]*\>)", line)[0]
|
||||
#should not have *
|
||||
attrs = _re.findall("(\S*?\=\".*?\")", line)
|
||||
output.write(start + elem_start)
|
||||
number_chars = len(start + elem_start)
|
||||
for attr in attrs:
|
||||
if (attrs.index(attr) + 1) == len(attrs):
|
||||
number_chars = number_chars + len(elem_finished)
|
||||
if (number_chars + len(attr) + 1) > width:
|
||||
output.write("\n")
|
||||
for i in range(len(start + elem_start) + 1):
|
||||
output.write(" ")
|
||||
number_chars = len(start + elem_start) + 1
|
||||
else:
|
||||
output.write(" ")
|
||||
number_chars = len(start + elem_start) + 1
|
||||
else:
|
||||
output.write(" ")
|
||||
number_chars = number_chars + 1
|
||||
output.write(attr)
|
||||
number_chars = number_chars + len(attr)
|
||||
output.write(elem_finished + "\n")
|
||||
except IndexError:
|
||||
#give up pretty print this line
|
||||
number_chars = number_chars + 1
|
||||
output.write(attr)
|
||||
number_chars = number_chars + len(attr)
|
||||
output.write(elem_finished + "\n")
|
||||
except IndexError:
|
||||
#give up pretty print this line
|
||||
output.write(start + line + "\n")
|
||||
else:
|
||||
output.write(start + line + "\n")
|
||||
|
||||
|
||||
@@ -80,7 +83,8 @@ def _get_next_elem(data):
|
||||
start_pos = data.find("<")
|
||||
end_pos = data.find(">") + 1
|
||||
retval = data[start_pos:end_pos]
|
||||
stopper = retval.rfind("/")
|
||||
stopper = retval.rfind("/")
|
||||
ignore_contents = False
|
||||
if stopper < retval.rfind("\""):
|
||||
stopper = -1
|
||||
single = (stopper > -1 and ((retval.find(">") - stopper) < (stopper - retval.find("<"))))
|
||||
@@ -89,11 +93,19 @@ def _get_next_elem(data):
|
||||
ignore_question = retval.find("<?") > -1
|
||||
|
||||
if ignore_excl:
|
||||
ignore_contents = True
|
||||
cdata = retval.find("<![CDATA[") > -1
|
||||
if cdata:
|
||||
end_pos = data.find("]]>")
|
||||
if end_pos > -1:
|
||||
end_pos = end_pos + len("]]>")
|
||||
stopper = end_pos
|
||||
else:
|
||||
end_pos = data.find("-->")
|
||||
if end_pos > -1:
|
||||
end_pos = end_pos + len("-->")
|
||||
stopper = end_pos
|
||||
retval = data[start_pos:end_pos]
|
||||
|
||||
elif ignore_question:
|
||||
end_pos = data.find("?>") + len("?>")
|
||||
@@ -101,11 +113,12 @@ def _get_next_elem(data):
|
||||
|
||||
no_indent = ignore or single
|
||||
|
||||
#print retval, end_pos, start_pos, stopper > -1, no_indent
|
||||
|
||||
return start_pos, \
|
||||
end_pos, \
|
||||
stopper > -1, \
|
||||
no_indent
|
||||
no_indent, \
|
||||
ignore_contents
|
||||
|
||||
def get_pprint(xml, indent=4, width=80):
|
||||
"""Returns the pretty printed xml """
|
||||
@@ -116,6 +129,8 @@ def get_pprint(xml, indent=4, width=80):
|
||||
self.output += string
|
||||
out = out()
|
||||
pprint(xml, output=out, indent=indent, width=width)
|
||||
|
||||
|
||||
|
||||
return out.output
|
||||
|
||||
@@ -126,7 +141,7 @@ def pprint(xml, output=_sys.stdout, indent=4, width=80):
|
||||
Use indent to select indentation level. Default is 4 """
|
||||
data = xml
|
||||
indent_level = 0
|
||||
start_pos, end_pos, is_stop, no_indent = _get_next_elem(data)
|
||||
start_pos, end_pos, is_stop, no_indent, ignore_contents = _get_next_elem(data)
|
||||
while ((start_pos > -1 and end_pos > -1)):
|
||||
_pprint_elem_content(indent_level, data[:start_pos].strip(),
|
||||
output=output)
|
||||
@@ -136,7 +151,8 @@ def pprint(xml, output=_sys.stdout, indent=4, width=80):
|
||||
_pprint_line(indent_level,
|
||||
data[:end_pos - start_pos],
|
||||
width=width,
|
||||
output=output)
|
||||
output=output,
|
||||
ignore_contents=ignore_contents)
|
||||
data = data[end_pos - start_pos:]
|
||||
if not is_stop and not no_indent :
|
||||
indent_level = indent_level + indent
|
||||
@@ -144,7 +160,7 @@ def pprint(xml, output=_sys.stdout, indent=4, width=80):
|
||||
if not data:
|
||||
break
|
||||
else:
|
||||
start_pos, end_pos, is_stop, no_indent = _get_next_elem(data)
|
||||
start_pos, end_pos, is_stop, no_indent, ignore_contents = _get_next_elem(data)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
@@ -27,10 +27,11 @@
|
||||
<category label="9000">
|
||||
<setting type="sep" />
|
||||
<setting id="ENABLE_TUNER_TYPES" type="bool" label="9005" default="true" />
|
||||
<setting label="9010" option="close" type="action" action="RunScript($ID, refresh_tuners)" />
|
||||
<setting label="9010" option="close" type="action" id="refresh_tuners" action="RunScript($CWD/resources/actions.py, refresh_tuners)" />
|
||||
</category>
|
||||
<category label="3000">
|
||||
<setting type="sep" />
|
||||
<setting label="3010" option="close" type="action" action="RunScript($ID, update_driver)" />
|
||||
<setting id="CHECK_BOOT" type="bool" label="3020" default="false" />
|
||||
<setting label="3010" option="close" type="action" id="update_driver" action="RunScript($CWD/resources/actions.py, update_driver)" />
|
||||
</category>
|
||||
</settings>
|
||||
|
||||
@@ -25,9 +25,10 @@ oe_setup_addon driver.dvb.sundtek-mediatv
|
||||
if [ "$SUSPEND_DRIVER" = "true" ]; then
|
||||
case "$1" in
|
||||
pre)
|
||||
killall -9 mediasrv &>/dev/null
|
||||
systemctl stop driver.dvb.sundtek-mediatv.service
|
||||
;;
|
||||
post)
|
||||
systemctl start driver.dvb.sundtek-mediatv.service
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
[Unit]
|
||||
Description=Sundtek driver service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=-/bin/sh -c "exec sh /storage/.kodi/addons/driver.dvb.sundtek-mediatv/bin/sundtek-mediatv.start"
|
||||
ExecStop=-/bin/sh -c "exec sh /storage/.kodi/addons/driver.dvb.sundtek-mediatv/bin/sundtek-mediatv.stop"
|
||||
RemainAfterExit=yes
|
||||
|
||||
[Install]
|
||||
WantedBy=kodi.target
|
||||
@@ -19,8 +19,8 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="repository.unofficial.addon.pro"
|
||||
PKG_VERSION="4.3.3"
|
||||
PKG_REV="0"
|
||||
PKG_VERSION="4.3"
|
||||
PKG_REV="4"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://unofficial.addon.pro"
|
||||
@@ -43,6 +43,7 @@ make_target() {
|
||||
-e "s|@PROJECT@|$PROJECT|g" \
|
||||
-e "s|@ARCH@|$TARGET_ARCH|g" \
|
||||
-e "s|@PKG_VERSION@|$PKG_VERSION|g" \
|
||||
-e "s|@PKG_REV@|$PKG_REV|g"\
|
||||
-i addon.xml
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<addon id="repository.unofficial.addon.pro"
|
||||
name="Unofficial [COLOR FF757677]Open[/COLOR][COLOR FF8ABEE2]ELEC[/COLOR] (@PROJECT@/@ARCH@) Add-ons"
|
||||
version="@PKG_VERSION@"
|
||||
version="@PKG_VERSION@.@PKG_REV@"
|
||||
provider-name="unofficial.addon.pro">
|
||||
<extension point="xbmc.addon.repository"
|
||||
name="Unofficial OpenELEC.tv Add-on Repository">
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
4.3.5
|
||||
- added boblight-aml
|
||||
|
||||
4.3.4
|
||||
- update to kodi
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
PKG_NAME="boblightd"
|
||||
PKG_VERSION="478"
|
||||
PKG_REV="4"
|
||||
PKG_REV="5"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://code.google.com/p/boblight"
|
||||
@@ -63,6 +63,7 @@ addon() {
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
cp -P $PKG_BUILD/.$TARGET_NAME/src/boblightd $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
cp -P $PKG_BUILD/.$TARGET_NAME/src/boblight-constant $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
cp -P $PKG_BUILD/.$TARGET_NAME/src/boblight-aml $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
if [ "$DISPLAYSERVER" = "x11" ] ; then
|
||||
cp -P $PKG_BUILD/.$TARGET_NAME/src/boblight-X11 $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
fi
|
||||
|
||||
@@ -0,0 +1,632 @@
|
||||
diff --git a/src/Makefile.am b/src/Makefile.am
|
||||
index 9ba5381..c5a4dc6 100644
|
||||
--- a/src/Makefile.am
|
||||
+++ b/src/Makefile.am
|
||||
@@ -7,6 +7,7 @@ AM_CFLAGS =\
|
||||
-g
|
||||
|
||||
bin_PROGRAMS = boblightd \
|
||||
+ boblight-aml \
|
||||
boblight-constant
|
||||
|
||||
|
||||
@@ -19,6 +20,11 @@ endif
|
||||
|
||||
endif
|
||||
|
||||
+boblight_aml_SOURCES = clients/boblight-aml/boblight-aml.cpp
|
||||
+boblight_aml_SOURCES += clients/boblight-aml/flagmanager-aml.cpp
|
||||
+boblight_aml_SOURCES += clients/flagmanager.cpp
|
||||
+boblight_aml_SOURCES += util/misc.cpp
|
||||
+
|
||||
boblight_v4l_SOURCES = \
|
||||
clients/boblight-v4l/boblight-v4l.cpp \
|
||||
clients/boblight-v4l/flagmanager-v4l.cpp \
|
||||
diff -urPp src/clients/boblight-aml.cpp src/clients/boblight-aml/boblight-aml.cpp
|
||||
--- /dev/null Thu Jan 1 00:00:00 1970
|
||||
+++ b/src/clients/boblight-aml/boblight-aml.cpp Thu Jan 15 10:24:16 2015
|
||||
@@ -0,0 +1,491 @@
|
||||
+/*
|
||||
+ * boblight
|
||||
+ * Copyright (C) Bob 2009
|
||||
+ *
|
||||
+ * boblight is free software: you can redistribute it and/or modify it
|
||||
+ * under the terms of the GNU General Public License as published by the
|
||||
+ * Free Software Foundation, either version 3 of the License, or
|
||||
+ * (at your option) any later version.
|
||||
+ *
|
||||
+ * boblight is distributed in the hope that it will be useful, but
|
||||
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
+ * See the GNU General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU General Public License along
|
||||
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
+ */
|
||||
+
|
||||
+#define BOBLIGHT_DLOPEN
|
||||
+#include "lib/boblight.h"
|
||||
+
|
||||
+#include <stdio.h>
|
||||
+#include <stdlib.h>
|
||||
+#include <string.h>
|
||||
+#include <unistd.h>
|
||||
+#include <signal.h>
|
||||
+#include <algorithm>
|
||||
+
|
||||
+#include <fcntl.h>
|
||||
+#include <errno.h>
|
||||
+#include <sys/stat.h>
|
||||
+#include <sys/poll.h>
|
||||
+#include <sys/types.h>
|
||||
+#include <sys/time.h>
|
||||
+#include <sys/ioctl.h>
|
||||
+
|
||||
+#include "config.h"
|
||||
+#include "util/misc.h"
|
||||
+#include "util/timeutils.h"
|
||||
+#include "flagmanager-aml.h"
|
||||
+
|
||||
+using namespace std;
|
||||
+
|
||||
+//from linux/amlogic/amports/amvideocap.h
|
||||
+#define AMVIDEOCAP_IOC_MAGIC 'V'
|
||||
+#define AMVIDEOCAP_IOW_SET_WANTFRAME_WIDTH _IOW(AMVIDEOCAP_IOC_MAGIC, 0x02, int)
|
||||
+#define AMVIDEOCAP_IOW_SET_WANTFRAME_HEIGHT _IOW(AMVIDEOCAP_IOC_MAGIC, 0x03, int)
|
||||
+
|
||||
+
|
||||
+// helper class - tries to load the "movie" settings from the script.xbmc.boblight addon
|
||||
+// and pass them to the boblight-aml client
|
||||
+class CBoblightAddonSettings
|
||||
+{
|
||||
+ public:
|
||||
+ CBoblightAddonSettings() : m_bobdisable(false), m_settingsLoaded(false)
|
||||
+ {
|
||||
+ m_settingsLoaded = loadBoblightAddonSettings();
|
||||
+ }
|
||||
+
|
||||
+ std::string getBoblightClientCmdLine()
|
||||
+ {
|
||||
+ std::string cmdLine = "";
|
||||
+ //convert bool string to lowercase
|
||||
+ transform(m_interpolation.begin(), m_interpolation.end(), m_interpolation.begin(), ::tolower);
|
||||
+
|
||||
+ cmdLine += "-s " + m_ip + ":" + m_port;
|
||||
+ cmdLine += " -o autospeed=" + m_autospeed;
|
||||
+ cmdLine += " -o interpolation=" + m_interpolation;
|
||||
+ cmdLine += " -o saturation=" + m_saturation;
|
||||
+ cmdLine += " -o speed=" + m_speed;
|
||||
+ cmdLine += " -o threshold=" + m_threshold;
|
||||
+ cmdLine += " -o value=" + m_value;
|
||||
+ return cmdLine;
|
||||
+ }
|
||||
+
|
||||
+ bool m_bobdisable;
|
||||
+ bool m_settingsLoaded;
|
||||
+ std::string m_ip;
|
||||
+ std::string m_port;
|
||||
+ std::string m_autospeed;
|
||||
+ std::string m_interpolation;
|
||||
+ std::string m_saturation;
|
||||
+ std::string m_speed;
|
||||
+ std::string m_threshold;
|
||||
+ std::string m_value;
|
||||
+
|
||||
+ private:
|
||||
+ #define SETTINGS_ATTR_BOBDISABLE "bobdisable"
|
||||
+ #define SETTINGS_ATTR_IP "hostip"
|
||||
+ #define SETTINGS_ATTR_PORT "hostport"
|
||||
+ #define SETTINGS_ATTR_AUTOSPEED "movie_autospeed"
|
||||
+ #define SETTINGS_ATTR_INTERPOLATION "movie_interpolation"
|
||||
+ #define SETTINGS_ATTR_SATURATION "movie_saturation"
|
||||
+ #define SETTINGS_ATTR_SPEED "movie_speed"
|
||||
+ #define SETTINGS_ATTR_THRESHOLD "movie_threshold"
|
||||
+ #define SETTINGS_ATTR_VALUE "movie_value"
|
||||
+ #define KODI_HOME_ENV_VAR "HOME"
|
||||
+
|
||||
+ bool loadBoblightAddonSettings()
|
||||
+ {
|
||||
+ bool ret = false;
|
||||
+ char *kodiHome = getenv(KODI_HOME_ENV_VAR);
|
||||
+ //fallback to custom settings file in case boblight addon is not installed
|
||||
+ std::string settingsFile = "/storage/boblight-aml.xml";
|
||||
+
|
||||
+ if (kodiHome != NULL)
|
||||
+ {
|
||||
+ settingsFile = std::string(kodiHome) + "/.kodi/userdata/addon_data/script.xbmc.boblight/settings.xml";
|
||||
+ }
|
||||
+
|
||||
+ FILE *fd = fopen(settingsFile.c_str(), "r");
|
||||
+
|
||||
+ if (fd != NULL)
|
||||
+ {
|
||||
+ fseek(fd, 0, SEEK_END);
|
||||
+ size_t fileSize = ftell(fd);
|
||||
+ fseek(fd, 0, SEEK_SET);
|
||||
+ if (fileSize > 0)
|
||||
+ {
|
||||
+ if (fileSize > 32000)//read 16k max - there shouldn't be a bigger settings.xml from boblight [tm]
|
||||
+ fileSize = 32000;
|
||||
+ char *xmlBuffer = new char[fileSize];
|
||||
+ size_t readCount = fread(xmlBuffer, fileSize, 1, fd);
|
||||
+ fclose(fd);
|
||||
+
|
||||
+ if (readCount == 1)
|
||||
+ {
|
||||
+ parseBoblightSettings(std::string(xmlBuffer));
|
||||
+ ret = true;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ fprintf(stderr, "Failed reading boblight addon settings.xml");
|
||||
+ }
|
||||
+ delete[] xmlBuffer;
|
||||
+ }
|
||||
+ }
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ void parseBoblightSettings(std::string xmlBuffer)
|
||||
+ {
|
||||
+ std::string settings_bobdisable_str;
|
||||
+ settings_bobdisable_str = getValueFromXmlBuffer(xmlBuffer, SETTINGS_ATTR_BOBDISABLE);
|
||||
+ if (settings_bobdisable_str == "true" || settings_bobdisable_str == "True")
|
||||
+ m_bobdisable = true;
|
||||
+
|
||||
+ m_ip = getValueFromXmlBuffer(xmlBuffer, SETTINGS_ATTR_IP);
|
||||
+ m_port = getValueFromXmlBuffer(xmlBuffer, SETTINGS_ATTR_PORT);
|
||||
+ m_autospeed = getValueFromXmlBuffer(xmlBuffer, SETTINGS_ATTR_AUTOSPEED);
|
||||
+ m_interpolation = getValueFromXmlBuffer(xmlBuffer, SETTINGS_ATTR_INTERPOLATION);
|
||||
+ m_saturation = getValueFromXmlBuffer(xmlBuffer, SETTINGS_ATTR_SATURATION);
|
||||
+ m_speed = getValueFromXmlBuffer(xmlBuffer, SETTINGS_ATTR_SPEED);
|
||||
+ m_threshold = getValueFromXmlBuffer(xmlBuffer, SETTINGS_ATTR_THRESHOLD);
|
||||
+ m_value = getValueFromXmlBuffer(xmlBuffer, SETTINGS_ATTR_VALUE);
|
||||
+ }
|
||||
+
|
||||
+ std::string getValueFromXmlBuffer(const std::string &xmlBuffer, const char* xmlAttribute)
|
||||
+ {
|
||||
+ size_t strPos = 0;
|
||||
+ std::string valueStr;
|
||||
+
|
||||
+ // each line in the xml looks like this:
|
||||
+ // <setting id="movie_value" value="1.000006" />
|
||||
+ // find the attribute
|
||||
+ if ((strPos = xmlBuffer.find(xmlAttribute)) != std::string::npos)
|
||||
+ {
|
||||
+ size_t strPos2 = 0;
|
||||
+ // from movie_value" value="1.000006" /> look for "value"
|
||||
+ if ((strPos2 = xmlBuffer.find("value", strPos)) != std::string::npos)
|
||||
+ {
|
||||
+ size_t strPos3 = 0;
|
||||
+ // from value="1.000006" /> look for "="
|
||||
+ if ((strPos3 = xmlBuffer.find("=", strPos2)) != std::string::npos)
|
||||
+ {
|
||||
+ //extract the value - strPos3 points to ="1.000006"
|
||||
+ int valueOffset = 1; //skip the "="
|
||||
+ if (xmlBuffer[strPos3 + valueOffset] == '"')
|
||||
+ valueOffset++;//skip " if needed
|
||||
+ int strLen = 0;
|
||||
+ do
|
||||
+ {
|
||||
+ // value stops with " or space
|
||||
+ if (xmlBuffer[strPos3 + valueOffset + strLen] == '"' ||
|
||||
+ xmlBuffer[strPos3 + valueOffset + strLen] == ' ')
|
||||
+ break;
|
||||
+ strLen++;
|
||||
+ } while (strLen < 20);// no insane xml garbage ...
|
||||
+
|
||||
+ valueStr = xmlBuffer.substr(strPos3 + valueOffset, strLen);
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ return valueStr;
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
+struct aml_snapshot_t {
|
||||
+ unsigned int dst_width;
|
||||
+ unsigned int dst_height;
|
||||
+ unsigned int dst_stride;
|
||||
+ unsigned int dst_size;
|
||||
+ void *dst_vaddr;
|
||||
+};
|
||||
+
|
||||
+volatile bool g_stop = false;
|
||||
+CFlagManagerAML g_flagmanager;
|
||||
+/*********************************************************
|
||||
+ *********************************************************/
|
||||
+static void SignalHandler(int signum)
|
||||
+{
|
||||
+ if (signum == SIGTERM)
|
||||
+ {
|
||||
+ fprintf(stderr, "caught SIGTERM\n");
|
||||
+ g_stop = true;
|
||||
+ }
|
||||
+ else if (signum == SIGINT)
|
||||
+ {
|
||||
+ fprintf(stderr, "caught SIGTERM\n");
|
||||
+ g_stop = true;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+#define VIDEO_PATH "/dev/amvideo"
|
||||
+#define AMSTREAM_IOC_MAGIC 'S'
|
||||
+#define AMSTREAM_IOC_GET_VIDEO_DISABLE _IOR(AMSTREAM_IOC_MAGIC, 0x48, unsigned long)
|
||||
+static int amvideo_utils_video_playing()
|
||||
+{
|
||||
+ int video_fd;
|
||||
+ int video_disable;
|
||||
+
|
||||
+ video_fd = open(VIDEO_PATH, O_RDWR);
|
||||
+ if (video_fd < 0) {
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ ioctl(video_fd, AMSTREAM_IOC_GET_VIDEO_DISABLE, &video_disable);
|
||||
+ if (video_disable)
|
||||
+ {
|
||||
+ close(video_fd);
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ close(video_fd);
|
||||
+
|
||||
+// fprintf(stderr, "pos x %d y %d w %d h %d\n",snapshot.src_x, snapshot.src_y,snapshot.src_width,snapshot.src_height);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int capture_frame(int fd, aml_snapshot_t &snapshot)
|
||||
+{
|
||||
+ int ret = 0;
|
||||
+
|
||||
+ ssize_t readResult = pread(fd, snapshot.dst_vaddr, snapshot.dst_size, 0);
|
||||
+
|
||||
+ if (readResult < snapshot.dst_size)
|
||||
+ {
|
||||
+ fprintf(stderr, "frame read returned %d\n", readResult);
|
||||
+ }
|
||||
+ //fprintf(stderr, "requ: %d read %d \n", snapshot.dst_size, readResult);
|
||||
+ fprintf(stderr, ".");
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static int configure_capture(int fd, aml_snapshot_t &snapshot)
|
||||
+{
|
||||
+ int ret = 0;
|
||||
+ int ioctlret = 0;
|
||||
+
|
||||
+ if ((ioctlret = ioctl(fd, AMVIDEOCAP_IOW_SET_WANTFRAME_WIDTH, snapshot.dst_width)) != 0)
|
||||
+ {
|
||||
+ ret = 2;
|
||||
+ fprintf(stderr, "Error setting frame width (ret: %d errno: %d)\n", ioctlret, errno);
|
||||
+ }
|
||||
+
|
||||
+
|
||||
+ if ((ioctlret = ioctl(fd, AMVIDEOCAP_IOW_SET_WANTFRAME_HEIGHT, snapshot.dst_height)) != 0)
|
||||
+ {
|
||||
+ ret = 3;
|
||||
+ fprintf(stderr, "Error setting frame height (ret: %d errno: %d)\n", ioctlret, errno);
|
||||
+ }
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static void frameToboblight(void *boblight, uint8_t* outputptr, int w, int h, int stride)
|
||||
+{
|
||||
+ if (!boblight)
|
||||
+ {
|
||||
+ fprintf(stderr, "no boblight\n");
|
||||
+ return;
|
||||
+ }
|
||||
+ if (!outputptr)
|
||||
+ {
|
||||
+ fprintf(stderr, "no outputptr\n");
|
||||
+ return;
|
||||
+ }
|
||||
+ //read out pixels and hand them to libboblight
|
||||
+ uint8_t* buffptr;
|
||||
+ for (int y = h; y > 0; y--) {
|
||||
+ buffptr = outputptr + stride * y;
|
||||
+ for (int x = 0; x < w; x++) {
|
||||
+ int rgb[3];
|
||||
+ rgb[2] = *(buffptr++);
|
||||
+ rgb[1] = *(buffptr++);
|
||||
+ rgb[0] = *(buffptr++);
|
||||
+
|
||||
+ //fprintf(stdout, "frameToboblight: x(%d), y(%d)\n", x, y);
|
||||
+
|
||||
+ boblight_addpixelxy(boblight, x, y, rgb);
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static int Run(void* boblight)
|
||||
+{
|
||||
+ int snapshot_fd = -1;
|
||||
+ aml_snapshot_t aml_snapshot = {0};
|
||||
+ int lastPriority = 255;
|
||||
+
|
||||
+ aml_snapshot.dst_width = 160;
|
||||
+ aml_snapshot.dst_height = 160;
|
||||
+
|
||||
+ // calc stride, size and alloc mem
|
||||
+ aml_snapshot.dst_stride = aml_snapshot.dst_width * 3;
|
||||
+ aml_snapshot.dst_size = aml_snapshot.dst_stride * aml_snapshot.dst_height;
|
||||
+ aml_snapshot.dst_vaddr = calloc(aml_snapshot.dst_size, 1);
|
||||
+
|
||||
+ fprintf(stdout, "Connection to boblightd config: width(%d), height(%d)\n",
|
||||
+ aml_snapshot.dst_width, aml_snapshot.dst_height);
|
||||
+ //tell libboblight how big our image is
|
||||
+ boblight_setscanrange(boblight, (int)aml_snapshot.dst_width, (int)aml_snapshot.dst_height);
|
||||
+
|
||||
+ while(!g_stop)
|
||||
+ {
|
||||
+ int64_t bgn = GetTimeUs();
|
||||
+
|
||||
+ if (snapshot_fd == -1) {
|
||||
+ snapshot_fd = open(g_flagmanager.m_device.c_str(), O_RDWR, 0);
|
||||
+
|
||||
+ if (snapshot_fd == -1) {
|
||||
+ sleep(1);
|
||||
+ continue;
|
||||
+ } else {
|
||||
+ fprintf(stdout, "snapshot_fd(%d) \n", snapshot_fd);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ // match source ratio if possible
|
||||
+ if (amvideo_utils_video_playing() != 0) {
|
||||
+ if ( lastPriority != 255)
|
||||
+ {
|
||||
+ boblight_setpriority(boblight, 255);
|
||||
+ lastPriority = 255;
|
||||
+ }
|
||||
+ sleep(1);
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ if (configure_capture(snapshot_fd, aml_snapshot) == 0)
|
||||
+ {
|
||||
+ if (capture_frame(snapshot_fd, aml_snapshot) == 0)
|
||||
+ {
|
||||
+ // image to boblight convert.
|
||||
+ frameToboblight(boblight, (uint8_t*)aml_snapshot.dst_vaddr,
|
||||
+ aml_snapshot.dst_width, aml_snapshot.dst_height, aml_snapshot.dst_stride);
|
||||
+
|
||||
+ if (lastPriority != g_flagmanager.m_priority)
|
||||
+ {
|
||||
+ boblight_setpriority(boblight, g_flagmanager.m_priority);
|
||||
+ lastPriority = g_flagmanager.m_priority;
|
||||
+ }
|
||||
+ if (!boblight_sendrgb(boblight, 1, NULL))
|
||||
+ {
|
||||
+ // some error happened, probably connection broken, so bitch and try again
|
||||
+ PrintError(boblight_geterror(boblight));
|
||||
+ boblight_destroy(boblight);
|
||||
+ continue;
|
||||
+ }
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ fprintf(stdout, "nap time\n");
|
||||
+ sleep(1);
|
||||
+ }
|
||||
+ }
|
||||
+ int64_t end = GetTimeUs();
|
||||
+ float calc_time_ms = (float)(end - bgn) / 1000.0;
|
||||
+ // throttle to 100ms max cycle rate
|
||||
+ calc_time_ms -= 100.0;
|
||||
+ if ((int)calc_time_ms < 0)
|
||||
+ usleep((int)(-calc_time_ms * 1000));
|
||||
+ }
|
||||
+
|
||||
+ // last image is black
|
||||
+ boblight_setpriority(boblight, 255);
|
||||
+ boblight_destroy(boblight);
|
||||
+ close(snapshot_fd);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+/*********************************************************
|
||||
+ *********************************************************/
|
||||
+int main(int argc, char *argv[])
|
||||
+{
|
||||
+ //load the boblight lib, if it fails we get a char* from dlerror()
|
||||
+ const char* boblight_error = boblight_loadlibrary(NULL);
|
||||
+ if (boblight_error)
|
||||
+ {
|
||||
+ PrintError(boblight_error);
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ //try to parse the flags and bitch to stderr if there's an error
|
||||
+ try {
|
||||
+ g_flagmanager.ParseFlags(argc, argv);
|
||||
+ }
|
||||
+ catch (string error) {
|
||||
+ PrintError(error);
|
||||
+ g_flagmanager.PrintHelpMessage();
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ if (g_flagmanager.m_printhelp) {
|
||||
+ g_flagmanager.PrintHelpMessage();
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ if (g_flagmanager.m_printboblightoptions) {
|
||||
+ g_flagmanager.PrintBoblightOptions();
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ // check if we only should generate a cmdline based
|
||||
+ // on settings from possible found boblight addon
|
||||
+ if (g_flagmanager.generateCmdLine)
|
||||
+ {
|
||||
+ CBoblightAddonSettings settings;
|
||||
+ string cmdLine = "-p 100"; //default cmdline just contains priority 100
|
||||
+
|
||||
+ if (settings.m_settingsLoaded)
|
||||
+ cmdLine += " " + settings.getBoblightClientCmdLine();
|
||||
+ fprintf(stdout, "%s", cmdLine.c_str());
|
||||
+ return 0;//exit
|
||||
+ }
|
||||
+
|
||||
+ fprintf(stderr, "Using device: %s \n", g_flagmanager.m_device.c_str());
|
||||
+
|
||||
+ //set up signal handlers
|
||||
+ signal(SIGINT, SignalHandler);
|
||||
+ signal(SIGTERM, SignalHandler);
|
||||
+
|
||||
+ //keep running until we want to quit
|
||||
+ while(!g_stop) {
|
||||
+ //init boblight
|
||||
+ void* boblight = boblight_init();
|
||||
+
|
||||
+ fprintf(stdout, "Connecting to boblightd(%p)\n", boblight);
|
||||
+
|
||||
+ //try to connect, if we can't then bitch to stderr and destroy boblight
|
||||
+ if (!boblight_connect(boblight, g_flagmanager.m_address, g_flagmanager.m_port, 5000000) ||
|
||||
+ !boblight_setpriority(boblight, 255)) {
|
||||
+ PrintError(boblight_geterror(boblight));
|
||||
+ fprintf(stdout, "Waiting 10 seconds before trying again\n");
|
||||
+ boblight_destroy(boblight);
|
||||
+ sleep(2);
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ fprintf(stdout, "Connection to boblightd opened\n");
|
||||
+
|
||||
+ //try to parse the boblight flags and bitch to stderr if we can't
|
||||
+ try {
|
||||
+ g_flagmanager.ParseBoblightOptions(boblight);
|
||||
+ }
|
||||
+ catch (string error) {
|
||||
+ PrintError(error);
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ try {
|
||||
+ Run(boblight);
|
||||
+ }
|
||||
+ catch (string error) {
|
||||
+ PrintError(error);
|
||||
+ boblight_destroy(boblight);
|
||||
+ return 1;
|
||||
+ }
|
||||
+ }
|
||||
+ fprintf(stdout, "Exiting\n");
|
||||
+}
|
||||
diff -urPp src/clients/flagmanager-aml.cpp src/clients/boblight-aml/flagmanager-aml.cpp
|
||||
--- /dev/null Thu Jan 1 00:00:00 1970
|
||||
+++ b/src/clients/boblight-aml/flagmanager-aml.cpp Thu Jan 15 10:21:40 2015
|
||||
@@ -0,0 +1,68 @@
|
||||
+/*
|
||||
+ * boblight
|
||||
+ * Copyright (C) Bob 2009
|
||||
+ *
|
||||
+ * boblight is free software: you can redistribute it and/or modify it
|
||||
+ * under the terms of the GNU General Public License as published by the
|
||||
+ * Free Software Foundation, either version 3 of the License, or
|
||||
+ * (at your option) any later version.
|
||||
+ *
|
||||
+ * boblight is distributed in the hope that it will be useful, but
|
||||
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
+ * See the GNU General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU General Public License along
|
||||
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
+ */
|
||||
+
|
||||
+#include <iostream>
|
||||
+
|
||||
+#include "flagmanager-aml.h"
|
||||
+#include "util/misc.h"
|
||||
+#include "config.h"
|
||||
+
|
||||
+#define DEFAULT_CAPTURE_DEVICE "/dev/amvideocap0"
|
||||
+
|
||||
+using namespace std;
|
||||
+
|
||||
+CFlagManagerAML::CFlagManagerAML()
|
||||
+{
|
||||
+ // extend the flags -d -> device
|
||||
+ // -g -> only generate cmdline from possible found boblight addon settings.xml
|
||||
+ m_flags += "d:g";
|
||||
+ m_device = DEFAULT_CAPTURE_DEVICE;
|
||||
+ generateCmdLine = false;
|
||||
+}
|
||||
+
|
||||
+void CFlagManagerAML::ParseFlagsExtended(int& argc, char**& argv, int& c, char*& optarg)
|
||||
+{
|
||||
+ if (c == 'd') //devicename
|
||||
+ {
|
||||
+ if (optarg) //optional device
|
||||
+ {
|
||||
+ m_device = optarg;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (c == 'g') //generate cmdline
|
||||
+ {
|
||||
+ generateCmdLine = true;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+void CFlagManagerAML::PrintHelpMessage()
|
||||
+{
|
||||
+ cout << "Usage: boblight-aml\n";
|
||||
+ cout << "\n";
|
||||
+ cout << " options:\n";
|
||||
+ cout << "\n";
|
||||
+ cout << " -p priority, from 0 to 255, default is 128\n";
|
||||
+ cout << " -s address[:port], set the address and optional port to connect to\n";
|
||||
+ cout << " -o add libboblight option, syntax: [light:]option=value\n";
|
||||
+ cout << " -l list libboblight options\n";
|
||||
+ cout << " -f fork\n";
|
||||
+ cout << " -d <device> (defaults to " << m_device << ")\n";
|
||||
+ cout << " -g try to find the settings.xml file from boblight addon and return the cmdline to use its options\n";
|
||||
+ cout << "\n";
|
||||
+}
|
||||
diff -urPp src/clients/flagmanager-aml.h src/clients/boblight-aml/flagmanager-aml.h
|
||||
--- /dev/null Thu Jan 1 00:00:00 1970
|
||||
+++ b/src/clients/boblight-aml/flagmanager-aml.h Thu Jan 15 10:20:15 2015
|
||||
@@ -0,0 +1,36 @@
|
||||
+/*
|
||||
+ * boblight
|
||||
+ * Copyright (C) Bob 2009
|
||||
+ *
|
||||
+ * boblight is free software: you can redistribute it and/or modify it
|
||||
+ * under the terms of the GNU General Public License as published by the
|
||||
+ * Free Software Foundation, either version 3 of the License, or
|
||||
+ * (at your option) any later version.
|
||||
+ *
|
||||
+ * boblight is distributed in the hope that it will be useful, but
|
||||
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
+ * See the GNU General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU General Public License along
|
||||
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
+ */
|
||||
+
|
||||
+#ifndef FLAGMANAGERAML
|
||||
+#define FLAGMANAGERAML
|
||||
+
|
||||
+#include "clients/flagmanager.h"
|
||||
+
|
||||
+class CFlagManagerAML : public CFlagManager
|
||||
+{
|
||||
+ public:
|
||||
+ CFlagManagerAML();
|
||||
+ void ParseFlagsExtended(int& argc, char**& argv, int& c, char*& optarg);
|
||||
+
|
||||
+ void PrintHelpMessage();
|
||||
+ std::string m_device; //device to open for amvideocap
|
||||
+ bool generateCmdLine;
|
||||
+
|
||||
+};
|
||||
+
|
||||
+#endif //FLAGMANAGERAML
|
||||
\ No newline at end of file
|
||||
@@ -35,4 +35,10 @@ if [ -x $ADDON_DIR/bin/boblight-X11 -a -e $ADDON_HOME/boblight.X11 ] ; then
|
||||
boblight-X11 -f >/dev/null 2>&1
|
||||
fi
|
||||
|
||||
if [ -x $ADDON_DIR/bin/boblight-aml -a -e /dev/amvideocap0 ] ; then
|
||||
#generates cmdline from boblight addon settings
|
||||
CMDLINE=`boblight-aml -g`
|
||||
boblight-aml $CMDLINE >/dev/null 2>&1 &
|
||||
fi
|
||||
|
||||
exec boblightd -c $ADDON_HOME/boblight.conf > $ADDON_LOG_FILE 2>&1
|
||||
|
||||
@@ -4,7 +4,6 @@ After=graphical.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/bin/sh -c "exec sh /storage/.kodi/addons/service.multimedia.boblightd/bin/boblightd.start"
|
||||
ExecStopPost=-/bin/sh -c "pidof boblight-X11 && killall -q -9 boblight-X11"
|
||||
TimeoutStopSec=1
|
||||
Restart=always
|
||||
RestartSec=10
|
||||
|
||||
@@ -1,168 +0,0 @@
|
||||
4.3.2
|
||||
- update to kodi
|
||||
|
||||
4.3.1
|
||||
- update to tvheadend-3.9.1847
|
||||
- tvheadend now has native support for hdhomerun devices
|
||||
|
||||
4.3.0
|
||||
- rebuild for addon api bump
|
||||
- update to tvheadend-3.9.1083
|
||||
|
||||
4.1.2
|
||||
- fix issues with "wait for frontend init". thanks @sraue
|
||||
|
||||
4.1.1
|
||||
- rebuild to fix curl/gnutls/ssl
|
||||
|
||||
4.1.0
|
||||
- convert to systemd service
|
||||
- rebuild for addon api bump
|
||||
|
||||
4.0.1
|
||||
- rebuild
|
||||
|
||||
4.0.0
|
||||
- rebuild for OpenELEC-4.0
|
||||
|
||||
3.1.4
|
||||
- rebuild
|
||||
|
||||
3.1.3
|
||||
- update to TVHeadend 3.4.27
|
||||
|
||||
3.1.2
|
||||
- fix unloading multiple modules on suspend
|
||||
|
||||
3.1.1
|
||||
- rebuild for OpenELEC-3.2
|
||||
|
||||
3.0.11
|
||||
- improve suspend/resume
|
||||
|
||||
3.0.10
|
||||
- fix preloading capmt.so with sundtek
|
||||
- added the ability to use a script's stdout as the xmltv source instead of a fixed file or URL
|
||||
|
||||
3.0.9
|
||||
- update to TVHeadend 3.4
|
||||
|
||||
3.0.8
|
||||
- update to TVHeadend 3.3.521
|
||||
|
||||
3.0.7
|
||||
- update to TVHeadend 3.3.511
|
||||
|
||||
3.0.6
|
||||
- update to TVHeadend 3.3.491
|
||||
- disable avahi support
|
||||
|
||||
3.0.5
|
||||
- update to TVHeadend 3.3.485
|
||||
|
||||
3.0.4
|
||||
- update to TVHeadend 3.3.403
|
||||
|
||||
3.0.3
|
||||
- update to TVHeadend 3.3.328
|
||||
- add an option to preload capmt_ca.so library
|
||||
|
||||
3.0.2
|
||||
- update to TVHeadend 3.2.18
|
||||
|
||||
3.0.1
|
||||
- bump addon version
|
||||
- add support to install as system addon
|
||||
- update to TVHeadend 3.2, rename addon
|
||||
- add version string to addon summary
|
||||
|
||||
2.1.5
|
||||
- add an option to wait for more than 1 adapters to appear
|
||||
|
||||
2.1.3
|
||||
- update to hts-tvheadend-78213a0
|
||||
|
||||
2.1.2
|
||||
- add suspend/resume fixes
|
||||
- use KILL signal to stop tvheadend
|
||||
- add an option to wait for fe initialization
|
||||
|
||||
2.1.1
|
||||
- update to addon version 2.1
|
||||
- update to hts-tvheadend-85e23bb
|
||||
|
||||
2.0.8
|
||||
- define default recordings folder to /storage/recordings
|
||||
- update to hts-tvheadend-a76f365
|
||||
- add patch for support IPTV radio streams
|
||||
|
||||
2.0.7
|
||||
- enable unloading/loading dvb modules on suspend/resume
|
||||
- add while loop for restarting tvheadend if it crashes
|
||||
|
||||
2.0.6
|
||||
- add possibilty to start / stop addon from addon manager with enable / disable
|
||||
- add possibility to browse filesystem for xmltv source file
|
||||
- start tvheadend in video user group
|
||||
- update to hts-tvheadend-b877800
|
||||
|
||||
2.0.5
|
||||
- start userspace DVB drivers before Tvheadend
|
||||
|
||||
2.0.4
|
||||
- update to hts-tvheadend-fdf89b2
|
||||
|
||||
2.0.3
|
||||
- rebuild for libiconv changes
|
||||
|
||||
2.0.2
|
||||
- update to hts-tvheadend-d66746c
|
||||
|
||||
2.0.1
|
||||
- fix patches
|
||||
|
||||
2.0.0
|
||||
- prepare for OpenELEC-2.0 release
|
||||
|
||||
1.90.2
|
||||
- depends on xbmc.python API 2.0
|
||||
|
||||
1.90.1
|
||||
- update to hts-tvheadend-fdc743f
|
||||
|
||||
1.90.0
|
||||
- add (CH) GA Weissenstein default muxes
|
||||
- prepare for OpenELEC-1.90 release
|
||||
|
||||
1.0.1
|
||||
- add XMLTV tv_file_grab support
|
||||
- add XMLTV configuration support
|
||||
- add teletext support patch
|
||||
- add fix memory leak patch
|
||||
|
||||
1.0.0
|
||||
- prepare for OpenELEC-1.0 release
|
||||
|
||||
0.99.8
|
||||
- add suspend/wakeup script
|
||||
|
||||
0.99.7
|
||||
- update to hts-tvheadend-c88a646
|
||||
|
||||
0.99.6
|
||||
- update to hts-tvheadend-9d775da
|
||||
|
||||
0.99.5
|
||||
- update to hts-tvheadend-ca68ed4
|
||||
|
||||
0.99.4
|
||||
- change icon
|
||||
|
||||
0.99.3
|
||||
- rebuild for openssl downgrade
|
||||
|
||||
0.99.2
|
||||
- rework start scripts
|
||||
|
||||
0.99.1
|
||||
- initial version hts-tvheadend-90e3570
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 51 KiB |
@@ -1,73 +0,0 @@
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
|
||||
#
|
||||
# OpenELEC is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# OpenELEC is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="tvheadend"
|
||||
PKG_VERSION="3.9.1847"
|
||||
PKG_REV="2"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.lonelycoder.com/hts/tvheadend_overview.html"
|
||||
#PKG_URL="https://github.com/downloads/tvheadend/tvheadend/${PKG_NAME}-${PKG_VERSION}.tar.gz"
|
||||
PKG_URL="$DISTRO_SRC/${PKG_NAME}-${PKG_VERSION}.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain libressl curl"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="service/multimedia"
|
||||
PKG_SHORTDESC="tvheadend (Version: $PKG_VERSION): a TV streaming server for Linux supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, IPTV, and Analog video (V4L) as input sources."
|
||||
PKG_LONGDESC="Tvheadend (Version: $PKG_VERSION) is a TV streaming server for Linux supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, IPTV, and Analog video (V4L) as input sources. It also comes with a powerful and easy to use web interface both used for configuration and day-to-day operations, such as searching the EPG and scheduling recordings. Even so, the most notable feature of Tvheadend is how easy it is to set up: Install it, navigate to the web user interface, drill into the TV adapters tab, select your current location and Tvheadend will start scanning channels and present them to you in just a few minutes. If installing as an Addon a reboot is needed"
|
||||
PKG_IS_ADDON="yes"
|
||||
PKG_ADDON_TYPE="xbmc.service"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
pre_build_target() {
|
||||
mkdir -p $PKG_BUILD/.$TARGET_NAME
|
||||
cp -RP $PKG_BUILD/* $PKG_BUILD/.$TARGET_NAME
|
||||
export CROSS_COMPILE=$TARGET_PREFIX
|
||||
}
|
||||
|
||||
configure_target() {
|
||||
./configure --prefix=/usr \
|
||||
--arch=$TARGET_ARCH \
|
||||
--cpu=$TARGET_CPU \
|
||||
--cc=$TARGET_CC \
|
||||
--enable-hdhomerun_client \
|
||||
--enable-hdhomerun_static \
|
||||
--enable-timeshift \
|
||||
--disable-avahi \
|
||||
--disable-libav \
|
||||
--enable-inotify \
|
||||
--enable-epoll \
|
||||
--disable-uriparser \
|
||||
--enable-tvhcsa \
|
||||
--enable-bundle \
|
||||
--disable-dbus_1 \
|
||||
--python=$ROOT/$TOOLCHAIN/bin/python
|
||||
}
|
||||
|
||||
post_make_target() {
|
||||
$CC -O -fbuiltin -fomit-frame-pointer -fPIC -shared -o capmt_ca.so src/extra/capmt_ca.c -ldl
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
: # nothing to do here
|
||||
}
|
||||
|
||||
addon() {
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
cp -P $PKG_BUILD/.$TARGET_NAME/build.linux/tvheadend $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
cp -P $PKG_BUILD/.$TARGET_NAME/capmt_ca.so $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
From 67e38551bc3acadf27b3ed4922e897348a612fdb Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Saraev <stefan@saraev.ca>
|
||||
Date: Wed, 15 Oct 2014 13:35:09 +0300
|
||||
Subject: [PATCH] remove werror
|
||||
|
||||
---
|
||||
Makefile | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index ddcc47e..0087a6c 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -28,7 +28,7 @@ PROG := $(BUILDDIR)/tvheadend
|
||||
#
|
||||
|
||||
CFLAGS += -g -O2 -Wunused-result
|
||||
-CFLAGS += -Wall -Werror -Wwrite-strings -Wno-deprecated-declarations
|
||||
+CFLAGS += -Wall -Wwrite-strings -Wno-deprecated-declarations
|
||||
CFLAGS += -Wmissing-prototypes
|
||||
CFLAGS += -fms-extensions -funsigned-char -fno-strict-aliasing
|
||||
CFLAGS += -D_FILE_OFFSET_BITS=64
|
||||
--
|
||||
1.7.2.5
|
||||
|
||||
@@ -1,84 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
|
||||
#
|
||||
# OpenELEC is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# OpenELEC is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
. /etc/profile
|
||||
|
||||
ADDON_HOME="$HOME/.kodi/userdata/addon_data/service.multimedia.tvheadend"
|
||||
ADDON_SETTINGS="$ADDON_HOME/settings.xml"
|
||||
XMLTV_TYPE=`grep XMLTV_TYPE $ADDON_SETTINGS | awk '{print $3 }' | sed -e "s,value=,," -e "s,\",,g"`
|
||||
XMLTV_LOCATION_FILE=`grep XMLTV_LOCATION_FILE $ADDON_SETTINGS | awk '{print $3 }' | sed -e "s,value=,," -e "s,\",,g"`
|
||||
XMLTV_LOCATION_WEB=`grep XMLTV_LOCATION_WEB $ADDON_SETTINGS | awk '{print $3 }' | sed -e "s,value=,," -e "s,\",,g"`
|
||||
XMLTV_LOCATION_SCRIPT=`grep XMLTV_LOCATION_SCRIPT $ADDON_SETTINGS | awk '{print $3 }' | sed -e "s,value=,," -e "s,\",,g"`
|
||||
|
||||
dflag=
|
||||
vflag=
|
||||
cflag=
|
||||
|
||||
if [[ $# -lt 1 ]]; then
|
||||
if [ "$XMLTV_TYPE" = "FILE" ]; then
|
||||
cat "$XMLTV_LOCATION_FILE"
|
||||
exit 0
|
||||
elif [ "$XMLTV_TYPE" = "SCRIPT" ]; then
|
||||
if [ -e "$XMLTV_LOCATION_SCRIPT" ] ; then
|
||||
exec "$XMLTV_LOCATION_SCRIPT"
|
||||
fi
|
||||
elif [ "$XMLTV_TYPE" = "WEB" ]; then
|
||||
wget -qO - "$XMLTV_LOCATION_WEB"
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
for arg; do
|
||||
delim=""
|
||||
case "$arg" in
|
||||
#translate --gnu-long-options to -g (short options)
|
||||
--description) args="${args}-d ";;
|
||||
--version) args="${args}-v ";;
|
||||
--capabilities) args="${args}-c ";;
|
||||
#pass through anything else
|
||||
*) [[ "${arg:0:1}" == "-" ]] || delim="\""
|
||||
args="${args}${delim}${arg}${delim} ";;
|
||||
esac
|
||||
done
|
||||
|
||||
#Reset the positional parameters to the short options
|
||||
eval set -- $args
|
||||
|
||||
while getopts "dvc" option; do
|
||||
case $option in
|
||||
d) dflag=1;;
|
||||
v) vflag=1;;
|
||||
c) cflag=1;;
|
||||
\?) printf "unknown option: -%s\n" $OPTARG
|
||||
printf "Usage: %s: [--description] [--version] [--capabilities] \n" $(basename $0)
|
||||
exit 2
|
||||
;;
|
||||
esac >&2
|
||||
done
|
||||
|
||||
if [ "$dflag" ]; then
|
||||
printf "tv_grab_file is a simple grabber that just read the local or web XMLTV formated file\n"
|
||||
fi
|
||||
if [ "$vflag" ]; then
|
||||
printf "0.1\n"
|
||||
fi
|
||||
if [ "$cflag" ]; then
|
||||
printf "baseline\n"
|
||||
fi
|
||||
@@ -1,89 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
|
||||
#
|
||||
# OpenELEC is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# OpenELEC is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
. /etc/profile
|
||||
|
||||
oe_setup_addon service.multimedia.tvheadend
|
||||
|
||||
ADDON_SETTINGS="$ADDON_HOME/settings.xml"
|
||||
XMLTV_FILE="$ADDON_DIR/bin/tv_grab_file"
|
||||
XMLTV_SETTINGS_DIR="$ADDON_HOME/xmltv"
|
||||
XMLTV_SETTINGS_FILE="$XMLTV_SETTINGS_DIR/config"
|
||||
DVR_SETTINGS_DIR="$ADDON_HOME/dvr"
|
||||
DVR_SETTINGS_FILE="$DVR_SETTINGS_DIR/config"
|
||||
DVR_DIR="$HOME/recordings"
|
||||
TIMESHIFT_SETTINGS_DIR="$ADDON_HOME/timeshift"
|
||||
TIMESHIFT_SETTINGS_FILE="$TIMESHIFT_SETTINGS_DIR/config"
|
||||
TIMESHIFT_DIR="$ADDON_HOME/cache/timeshift"
|
||||
|
||||
chmod a+x $ADDON_DIR/bin/*
|
||||
|
||||
if [ ! -f "$XMLTV_SETTINGS_FILE" ]; then
|
||||
mkdir -p $XMLTV_SETTINGS_DIR
|
||||
if [ -f $ADDON_DIR/xmltv-config ]; then
|
||||
cp $ADDON_DIR/xmltv-config $XMLTV_SETTINGS_FILE
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -f "$DVR_SETTINGS_FILE" ]; then
|
||||
mkdir -p $DVR_DIR
|
||||
mkdir -p $DVR_SETTINGS_DIR
|
||||
if [ -f $ADDON_DIR/dvr-config ]; then
|
||||
cp $ADDON_DIR/dvr-config $DVR_SETTINGS_FILE
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -f "$TIMESHIFT_SETTINGS_FILE" ]; then
|
||||
mkdir -p $TIMESHIFT_DIR
|
||||
mkdir -p $TIMESHIFT_SETTINGS_DIR
|
||||
if [ -f $ADDON_DIR/timeshift-config ]; then
|
||||
cp $ADDON_DIR/timeshift-config $TIMESHIFT_SETTINGS_FILE
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$DEBUG" = "yes" ]; then
|
||||
TVHEADEND_ARG="-B -C -s -u root -g video -c $ADDON_HOME"
|
||||
else
|
||||
TVHEADEND_ARG="-B -C -u root -g video -c $ADDON_HOME"
|
||||
fi
|
||||
|
||||
# start userspace DVB driver/addon
|
||||
for driver_dvb in $(find /storage/.kodi/addons/driver.dvb.*/bin/userspace-driver.sh -type f 2>/dev/null); do
|
||||
driver_dvb_name=$(echo $driver_dvb | awk 'BEGIN {FS="/"} {printf("%s", $5)}')
|
||||
logger -t Tvheadend "### Loading userspace DVB driver: $driver_dvb_name ###"
|
||||
# use ". " because of variable export
|
||||
. $driver_dvb
|
||||
done
|
||||
|
||||
if [ "$WAIT_FOR_FEINIT" == "true" ] ; then
|
||||
while [ true ] ; do
|
||||
if [ -e /dev/dvb/adapter$((NUM_ADAPTERS-1))/frontend0 ] ; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
fi
|
||||
|
||||
if [ "$PRELOAD_CAPMT_CA" == "true" ] ; then
|
||||
logger -t Tvheadend "### Preloading capmt_ca.so library ###"
|
||||
LD_PRELOAD="$ADDON_DIR/bin/capmt_ca.so $LD_PRELOAD" exec tvheadend $TVHEADEND_ARG &>$ADDON_LOG_FILE
|
||||
else
|
||||
exec tvheadend $TVHEADEND_ARG &>$ADDON_LOG_FILE
|
||||
fi
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"storage": "/storage/recordings",
|
||||
"retention-days": 31,
|
||||
"pre-extra-time": 0,
|
||||
"post-extra-time": 0,
|
||||
"day-dir": 0,
|
||||
"channel-dir": 0,
|
||||
"channel-in-title": 0,
|
||||
"date-in-title": 0,
|
||||
"time-in-title": 0,
|
||||
"whitespace-in-title": 0,
|
||||
"title-dir": 0,
|
||||
"episode-in-title": 0,
|
||||
"tag-files": 1
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<strings>
|
||||
|
||||
<!-- HTS TVHEADEND -->
|
||||
<string id="1000">XMLTV</string>
|
||||
<string id="1001">DVB</string>
|
||||
<string id="1011">XMLTV configuration</string>
|
||||
<string id="1011">XMLTV source type</string>
|
||||
<string id="1012">XMLTV File location</string>
|
||||
<string id="1013">XMLTV Web location</string>
|
||||
<string id="1014">XMLTV Script location</string>
|
||||
<string id="1020">DVB Configuration</string>
|
||||
<string id="1021">Unload DVB mudules before suspend</string>
|
||||
<string id="1022">Wait for frontend initialization</string>
|
||||
<string id="1023">Number of adapters to wait for</string>
|
||||
<string id="1024">Preload capmt_ca.so library</string>
|
||||
|
||||
</strings>
|
||||
@@ -1,21 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<settings>
|
||||
|
||||
<!-- HTS TVHEADEND -->
|
||||
<category label="1000">
|
||||
<setting label="1010" type="lsep"/>
|
||||
<setting type="sep" />
|
||||
<setting id="XMLTV_TYPE" type="labelenum" label="1011" values="NONE|FILE|SCRIPT|WEB" sort="yes" default="NONE"/>
|
||||
<setting id="XMLTV_LOCATION_FILE" type="file" label="1012" default="" enable="eq(-1,0)"/>
|
||||
<setting id="XMLTV_LOCATION_WEB" type="text" label="1013" default="http://" enable="eq(-2,3)"/>
|
||||
<setting id="XMLTV_LOCATION_SCRIPT" type="file" label="1014" default="" enable="eq(-3,2)"/>
|
||||
</category>
|
||||
<category label="1001">
|
||||
<setting label="1020" type="lsep"/>
|
||||
<setting type="sep" />
|
||||
<setting id="WAIT_FOR_FEINIT" type="bool" label="1022" default="false" />
|
||||
<setting id="NUM_ADAPTERS" type="slider" range="1,16" option="int" label="1023" default="1" enable="eq(-1,true)" />
|
||||
<setting id="REMOVE_MODULES" type="text" label="1021" values="" default=""/>
|
||||
<setting id="PRELOAD_CAPMT_CA" type="bool" label="1024" default="false" />
|
||||
</category>
|
||||
</settings>
|
||||
@@ -1,8 +0,0 @@
|
||||
<settings>
|
||||
<setting id="WAIT_FOR_FEINIT" value="false" />
|
||||
<setting id="NUM_ADAPTERS" value="1" />
|
||||
<setting id="XMLTV_LOCATION_FILE" value="" />
|
||||
<setting id="XMLTV_LOCATION_WEB" value="http://" />
|
||||
<setting id="XMLTV_TYPE" value="NONE" />
|
||||
<setting id="PRELOAD_CAPMT_CA" value="false" />
|
||||
</settings>
|
||||
@@ -1,13 +0,0 @@
|
||||
[Unit]
|
||||
Description=TVHeadend Service
|
||||
After=graphical.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/bin/sh -c "exec sh /storage/.kodi/addons/service.multimedia.tvheadend/bin/tvheadend.start"
|
||||
TimeoutStopSec=2
|
||||
Restart=always
|
||||
RestartSec=2
|
||||
StartLimitInterval=0
|
||||
|
||||
[Install]
|
||||
WantedBy=kodi.target
|
||||
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"enabled": 0,
|
||||
"ondemand": 0,
|
||||
"path": "/storage/.kodi/userdata/addon_data/service.multimedia.tvheadend/cache/timeshift",
|
||||
"unlimited_period": 0,
|
||||
"max_period": 3600,
|
||||
"unlimited_size": 0,
|
||||
"max_size": 1024
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
{
|
||||
"grabbers": [
|
||||
{
|
||||
"path": "/storage/.kodi/addons/service.multimedia.tvheadend/bin/tv_grab_file",
|
||||
"description": "tv_grag_file is a simple grabber that just read the ~/.xmltv/tv_grab_file.xmltv file",
|
||||
"version": "0.1\n",
|
||||
"mtime": 1318774706,
|
||||
"capabilities": 1
|
||||
}
|
||||
],
|
||||
"grab-interval": 12,
|
||||
"grab-enabled": 1,
|
||||
"current-grabber": "/storage/.kodi/addons/service.multimedia.tvheadend/bin/tv_grab_file"
|
||||
}
|
||||
@@ -1,3 +1,19 @@
|
||||
4.3.6
|
||||
- update to vdr-satip-1.0.2
|
||||
- update to vdr-2.1.7
|
||||
|
||||
4.3.5
|
||||
- add plugin 'vdr-plugin-restfulapi'
|
||||
- update to vdr-plugin-xvdr-b300fc3
|
||||
|
||||
4.3.4
|
||||
- update to vdr-plugin-vnsiserver-a48edf1
|
||||
- update to vdr-plugin-dvbapi-36a6b1d
|
||||
|
||||
4.3.3
|
||||
- add plugin 'vdr-plugin-epgfixer'
|
||||
- update to vdr-satip-1.0.1
|
||||
|
||||
4.3.2
|
||||
- update to kodi
|
||||
|
||||
|
||||
@@ -19,12 +19,12 @@
|
||||
|
||||
PKG_NAME="vdr-addon"
|
||||
PKG_VERSION="4.3"
|
||||
PKG_REV="2"
|
||||
PKG_REV="6"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.openelec.tv"
|
||||
PKG_URL=""
|
||||
PKG_DEPENDS_TARGET="toolchain attr libcap vdr vdr-plugin-xvdr vdr-plugin-vnsiserver vdr-iptv vdr-wirbelscan vdr-wirbelscancontrol vdr-plugin-dvbapi vdr-plugin-streamdev vdr-live vdr-control vdr-epgsearch vdr-plugin-xmltv2vdr vdr-plugin-eepg vdr-dummydevice vdr-satip"
|
||||
PKG_DEPENDS_TARGET="toolchain attr libcap vdr vdr-plugin-xvdr vdr-plugin-vnsiserver vdr-iptv vdr-wirbelscan vdr-wirbelscancontrol vdr-plugin-dvbapi vdr-plugin-streamdev vdr-live vdr-control vdr-epgsearch vdr-plugin-xmltv2vdr vdr-plugin-eepg vdr-dummydevice vdr-satip vdr-plugin-epgfixer vdr-plugin-restfulapi"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="service.multimedia"
|
||||
PKG_SHORTDESC="vdr: A powerful DVB TV application"
|
||||
@@ -48,9 +48,11 @@ addon() {
|
||||
VDR_PLUGIN_VNSISERVER_DIR="$(get_build_dir vdr-plugin-vnsiserver)"
|
||||
VDR_PLUGIN_STREAMVEV_DIR="$(get_build_dir vdr-plugin-streamdev)"
|
||||
VDR_PLUGIN_XMLTV2VDR="$(get_build_dir vdr-plugin-xmltv2vdr)"
|
||||
VDR_PLUGIN_EPGFIXER_DIR="$(get_build_dir vdr-plugin-epgfixer)"
|
||||
VDR_PLUGIN_RESTFULAPI_DIR="$(get_build_dir vdr-plugin-restfulapi)"
|
||||
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/config
|
||||
cp $VDR_DIR/channels.conf $ADDON_BUILD/$PKG_ADDON_ID/config
|
||||
touch $ADDON_BUILD/$PKG_ADDON_ID/config/channels.conf
|
||||
cp $VDR_DIR/diseqc.conf $ADDON_BUILD/$PKG_ADDON_ID/config
|
||||
cp $VDR_DIR/keymacros.conf $ADDON_BUILD/$PKG_ADDON_ID/config
|
||||
cp $VDR_DIR/scr.conf $ADDON_BUILD/$PKG_ADDON_ID/config
|
||||
@@ -84,6 +86,8 @@ addon() {
|
||||
cp -PR $VDR_PLUGIN_XMLTV2VDR/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
cp -PR $(get_build_dir vdr-dummydevice)/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
cp -PR $(get_build_dir vdr-satip)/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
cp -PR $VDR_PLUGIN_EPGFIXER_DIR/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
cp -PR $VDR_PLUGIN_RESTFULAPI_DIR/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/config/plugins/eepg
|
||||
|
||||
@@ -103,4 +107,11 @@ addon() {
|
||||
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/config/plugins/streamdev-server
|
||||
cp -PR $VDR_PLUGIN_STREAMVEV_DIR/streamdev-server/streamdevhosts.conf $ADDON_BUILD/$PKG_ADDON_ID/config/plugins/streamdev-server
|
||||
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/config/plugins/epgfixer
|
||||
cp -PR $VDR_PLUGIN_EPGFIXER_DIR/epgfixer/*.conf $ADDON_BUILD/$PKG_ADDON_ID/config/plugins/epgfixer
|
||||
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/res/plugins/restfulapi
|
||||
cp -P $VDR_PLUGIN_RESTFULAPI_DIR/web/* $ADDON_BUILD/$PKG_ADDON_ID/res/plugins/restfulapi
|
||||
cp -P $VDR_PLUGIN_RESTFULAPI_DIR/API.html $ADDON_BUILD/$PKG_ADDON_ID/res/plugins/restfulapi
|
||||
}
|
||||
|
||||
@@ -45,9 +45,7 @@ ADDON_PLUGIN_DIR="$ADDON_DIR/plugin"
|
||||
chmod a+x $ADDON_DIR/bin/*
|
||||
|
||||
ADDON_CACHE_DIR="$ADDON_HOME/cache"
|
||||
if [ ! -f "$ADDON_CACHE_DIR" ]; then
|
||||
mkdir -p $ADDON_CACHE_DIR
|
||||
fi
|
||||
mkdir -p $ADDON_CACHE_DIR
|
||||
|
||||
VDR_ARG="-g /tmp --no-kbd"
|
||||
if [ "$DEBUG" = "yes" ]; then
|
||||
@@ -105,6 +103,9 @@ fi
|
||||
if [ "$ENABLE_EEPG" == "true" ] ; then
|
||||
VDR_ARG="$VDR_ARG -P eepg"
|
||||
fi
|
||||
if [ "$ENABLE_EPGFIXER" == "true" ] ; then
|
||||
VDR_ARG="$VDR_ARG -P epgfixer"
|
||||
fi
|
||||
if [ "$ENABLE_EPGSEARCH" == "true" ] ; then
|
||||
VDR_ARG="$VDR_ARG -P epgsearch"
|
||||
fi
|
||||
@@ -130,6 +131,20 @@ if [ "$ENABLE_XMLTV2VDR" == "true" ] ; then
|
||||
cp $source /var/lib/epgsources
|
||||
done
|
||||
fi
|
||||
|
||||
if [ "$ENABLE_RESTFULAPI" == "true" ] ; then
|
||||
RESTFULAPI_ARGS="--ip $RESTFULAPI_IP --port $RESTFULAPI_PORT"
|
||||
if [ ! -z "$RESTFULAPI_EPGIMAGES" ]; then
|
||||
mkdir -p "$RESTFULAPI_EPGIMAGES"
|
||||
RESTFULAPI_ARGS="$RESTFULAPI_ARGS --epgimages=\"$RESTFULAPI_EPGIMAGES\""
|
||||
fi
|
||||
if [ ! -z "$RESTFULAPI_CHANNELLOGOS" ]; then
|
||||
mkdir -p "$RESTFULAPI_CHANNELLOGOS"
|
||||
RESTFULAPI_ARGS="$RESTFULAPI_ARGS --channellogos=\"$RESTFULAPI_CHANNELLOGOS\""
|
||||
fi
|
||||
VDR_ARG="$VDR_ARG -P 'restfulapi $RESTFULAPI_ARGS'"
|
||||
fi
|
||||
|
||||
# vnsi/xvdr last
|
||||
VDR_ARG="$VDR_ARG -P $PVR_PLUGIN"
|
||||
|
||||
|
||||
@@ -24,10 +24,16 @@
|
||||
<string id="1046">Enable plugin: extended EPG</string>
|
||||
<string id="1047">Enable plugin: dummydevice</string>
|
||||
<string id="1048">Enable plugin: satip</string>
|
||||
<string id="1049">Enable plugin: epgfixer</string>
|
||||
<string id="1051">VDR Configuration</string>
|
||||
<string id="1052">VDR Video Dir</string>
|
||||
<string id="1053">PVR plugin</string>
|
||||
<string id="1056">Enable external recdmd</string>
|
||||
<string id="1057">External recdmd path</string>
|
||||
<string id="1058">- number of devices</string>
|
||||
<string id="1070">Enable plugin: restfulapi</string>
|
||||
<string id="1071">- listen on ip</string>
|
||||
<string id="1072">- listen on port</string>
|
||||
<string id="1073">- Path to the epgimages</string>
|
||||
<string id="1074">- Path to the channellogos</string>
|
||||
</strings>
|
||||
|
||||
@@ -35,6 +35,12 @@
|
||||
<setting id="ENABLE_XMLTV2VDR" type="bool" label="1045" default="false" />
|
||||
<setting id="ENABLE_DUMMYDEVICE" type="bool" label="1047" default="false" />
|
||||
<setting id="ENABLE_SATIP" type="bool" label="1048" default="false" />
|
||||
<setting id="ENABLE_EPGFIXER" type="bool" label="1049" default="false" />
|
||||
<setting id="ENABLE_RESTFULAPI" type="bool" label="1070" default="false" />
|
||||
<setting id="RESTFULAPI_IP" type="ipaddress" label="1071" values="" visible="!eq(-1,false)" default="0.0.0.0"/>
|
||||
<setting id="RESTFULAPI_PORT" type="number" label="1072" values="" visible="!eq(-2,false)" default="8002"/>
|
||||
<setting id="RESTFULAPI_EPGIMAGES" type="file" label="1073" values="" visible="!eq(-3,false)" default="/storage/.kodi/userdata/addon_data/service.multimedia.vdr-addon/epgimages"/>
|
||||
<setting id="RESTFULAPI_CHANNELLOGOS" type="file" label="1074" values="" visible="!eq(-4,false)" default="/storage/.kodi/userdata/addon_data/service.multimedia.vdr-addon/channellogos"/>
|
||||
<setting type="sep" />
|
||||
<setting id="ENABLE_SOFTCAM" type="bool" label="1036" default="true" />
|
||||
</category>
|
||||
|
||||
@@ -14,13 +14,19 @@
|
||||
<setting id="ENABLE_CONTROL" value="false" />
|
||||
<setting id="CONTROL_PORT" value="2002" />
|
||||
<setting id="ENABLE_EEPG" value="false" />
|
||||
<setting id="ENABLE_EPGFIXER" value="false" />
|
||||
<setting id="ENABLE_EPGSEARCH" value="false" />
|
||||
<setting id="ENABLE_XMLTV2VDR" value="false" />
|
||||
<setting id="ENABLE_DUMMYDEVICE" value="false" />
|
||||
<setting id="ENABLE_SATIP" value="false" />
|
||||
<setting id="ENABLE_EXTERNAL_RECCMD" value="false" />
|
||||
<setting id="ENABLE_RESTFULAPI" value="false" />
|
||||
<setting id="EXTERNAL_RECCMD_PATH" value="" />
|
||||
<setting id="ENABLE_CHARSET_OVERRIDE" value="false" />
|
||||
<setting id="CHARSET_OVERRIDE_STR" value="" />
|
||||
<setting id="IPTV_NUM_DEVICES" value="1" />
|
||||
<setting id="RESTFULAPI_IP" value="0.0.0.0" />
|
||||
<setting id="RESTFULAPI_PORT" value="8002" />
|
||||
<setting id="RESTFULAPI_EPGIMAGES" value="/storage/.kodi/userdata/addon_data/service.multimedia.vdr-addon/epgimages" />
|
||||
<setting id="RESTFULAPI_CHANNELLOGOS" value="/storage/.kodi/userdata/addon_data/service.multimedia.vdr-addon/channellogos" />
|
||||
</settings>
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
From 01b686cf032d523642c5ab33f455d814ef468925 Mon Sep 17 00:00:00 2001
|
||||
From: fritsch <Peter.Fruehberger@gmail.com>
|
||||
Date: Sat, 10 Jan 2015 23:47:58 +0100
|
||||
Subject: [PATCH] Support PHIREE U2 and Sound blaster F-Xi HD (done by Anssih)
|
||||
|
||||
---
|
||||
src/conf/cards/USB-Audio.conf | 41 ++++++++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 40 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/conf/cards/USB-Audio.conf b/src/conf/cards/USB-Audio.conf
|
||||
index ce3ae01..107d6fa 100644
|
||||
--- a/src/conf/cards/USB-Audio.conf
|
||||
+++ b/src/conf/cards/USB-Audio.conf
|
||||
@@ -52,6 +52,10 @@ USB-Audio.pcm.iec958_device {
|
||||
"USB Device 0x46d:0x992" 999
|
||||
}
|
||||
|
||||
+USB-Audio.pcm.iec958_2_device {
|
||||
+ "PHIREE U2" 1
|
||||
+ "USB Sound Blaster HD" 1
|
||||
+}
|
||||
|
||||
# If a device requires non-standard definitions for front, surround40,
|
||||
# surround51, surround71 or iec958, they can be defined here.
|
||||
@@ -422,4 +426,39 @@ USB-Audio.pcm.iec958.0 {
|
||||
}
|
||||
}
|
||||
|
||||
-# vim: ft=alsaconf
|
||||
+USB-Audio.pcm.iec958.1 {
|
||||
+ @args [ CARD AES0 AES1 AES2 AES3 ]
|
||||
+ @args.CARD { type string }
|
||||
+ @args.AES0 { type integer }
|
||||
+ @args.AES1 { type integer }
|
||||
+ @args.AES2 { type integer }
|
||||
+ @args.AES3 { type integer }
|
||||
+ @func refer
|
||||
+ name {
|
||||
+ @func concat
|
||||
+ strings [
|
||||
+ "cards.USB-Audio."
|
||||
+ { @func card_name card $CARD }
|
||||
+ ".pcm.iec958_2:CARD=" $CARD
|
||||
+ ",AES0=" $AES0 ",AES1=" $AES1 ",AES2=" $AES2 ",AES3=" $AES3
|
||||
+ ]
|
||||
+ }
|
||||
+ default {
|
||||
+ # FIXME: we cannot set the AES parameters
|
||||
+ type hw
|
||||
+ card $CARD
|
||||
+ device {
|
||||
+ @func refer
|
||||
+ name {
|
||||
+ @func concat
|
||||
+ strings [
|
||||
+ "cards.USB-Audio.pcm.iec958_2_device."
|
||||
+ { @func card_name card $CARD }
|
||||
+ ]
|
||||
+ }
|
||||
+ default 999
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+# vim: ft=alsaconf
|
||||
\ No newline at end of file
|
||||
--
|
||||
1.9.1
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="flac"
|
||||
PKG_VERSION="1.3.0"
|
||||
PKG_VERSION="1.3.1"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="LGPL"
|
||||
@@ -51,6 +51,13 @@ else
|
||||
PKG_CONFIGURE_OPTS_TARGET="$PKG_CONFIGURE_OPTS_TARGET --disable-sse"
|
||||
fi
|
||||
|
||||
pre_configure_target() {
|
||||
# flac-1.3.1 dont build with LTO support
|
||||
strip_lto
|
||||
|
||||
export CFLAGS="$CFLAGS -fPIC -DPIC"
|
||||
}
|
||||
|
||||
post_makeinstall_target() {
|
||||
rm -rf $INSTALL/usr/bin
|
||||
}
|
||||
|
||||
16
packages/audio/flac/patches/flac-1.3.1-debug.patch
Normal file
16
packages/audio/flac/patches/flac-1.3.1-debug.patch
Normal file
@@ -0,0 +1,16 @@
|
||||
diff -Naur flac-1.3.1/configure.ac flac-1.3.1.patch/configure.ac
|
||||
--- flac-1.3.1/configure.ac 2014-11-27 03:45:33.000000000 +0100
|
||||
+++ flac-1.3.1.patch/configure.ac 2015-01-24 20:19:19.119178172 +0100
|
||||
@@ -348,11 +348,10 @@
|
||||
|
||||
if test "x$debug" = xtrue; then
|
||||
CPPFLAGS="-DDEBUG $CPPFLAGS"
|
||||
- CFLAGS=$(echo "$CFLAGS" | sed 's/-g//')
|
||||
CFLAGS="-g $CFLAGS"
|
||||
else
|
||||
CPPFLAGS="-DNDEBUG $CPPFLAGS"
|
||||
- CFLAGS=$(echo "$CFLAGS" | sed 's/-O2//;s/-g//')
|
||||
+ CFLAGS=$(echo "$CFLAGS" | sed 's/-O2//')
|
||||
CFLAGS="-O3 -funroll-loops $CFLAGS"
|
||||
fi
|
||||
|
||||
@@ -33,8 +33,9 @@ PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="yes"
|
||||
|
||||
# package specific configure options
|
||||
PKG_CONFIGURE_OPTS_TARGET="--enable-static --disable-shared"
|
||||
if [ $TARGET_ARCH == "x86_64" ] ; then
|
||||
PKG_CONFIGURE_OPTS_TARGET="--enable-accuracy --enable-fpm=64bit"
|
||||
PKG_CONFIGURE_OPTS_TARGET="$PKG_CONFIGURE_OPTS_TARGET --enable-accuracy --enable-fpm=64bit"
|
||||
fi
|
||||
|
||||
post_makeinstall_target() {
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="xz"
|
||||
PKG_VERSION="5.0.7"
|
||||
PKG_VERSION="5.2.0"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -17,12 +17,12 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="sqlite"
|
||||
PKG_VERSION="autoconf-3080701"
|
||||
PKG_VERSION="autoconf-3080801"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="PublicDomain"
|
||||
PKG_SITE="http://www.sqlite.org/"
|
||||
PKG_URL="http://sqlite.org/2014/$PKG_NAME-$PKG_VERSION.tar.gz"
|
||||
PKG_URL="http://sqlite.org/2015/$PKG_NAME-$PKG_VERSION.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="database"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="gdb"
|
||||
PKG_VERSION="7.8.1"
|
||||
PKG_VERSION="7.8.2"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="vdpauinfo"
|
||||
PKG_VERSION="0.1"
|
||||
PKG_VERSION="0.9"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="arm-mem"
|
||||
PKG_VERSION="8a1fbee"
|
||||
PKG_VERSION="2e6f275"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="arm"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="automake"
|
||||
PKG_VERSION="1.14.1"
|
||||
PKG_VERSION="1.15"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="bison"
|
||||
PKG_VERSION="3.0.2"
|
||||
PKG_VERSION="3.0.4"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="boost"
|
||||
PKG_VERSION="1_56_0"
|
||||
PKG_VERSION="1_57_0"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="OSS"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="elfutils"
|
||||
PKG_VERSION="0.159"
|
||||
PKG_VERSION="0.161"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- elfutils/backends/ChangeLog
|
||||
+++ elfutils/backends/ChangeLog
|
||||
@@ -364,6 +364,10 @@
|
||||
@@ -433,6 +433,10 @@
|
||||
* ppc_attrs.c (ppc_check_object_attribute): Handle tag
|
||||
GNU_Power_ABI_Struct_Return.
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
2008-10-04 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* i386_reloc.def: Fix entries for TLS_GOTDESC, TLS_DESC_CALL, and
|
||||
@@ -691,6 +695,11 @@
|
||||
@@ -760,6 +764,11 @@
|
||||
* sparc_init.c: Likewise.
|
||||
* x86_64_init.c: Likewise.
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
2005-11-19 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* ppc64_reloc.def: REL30 -> ADDR30.
|
||||
@@ -713,6 +722,9 @@
|
||||
@@ -782,6 +791,9 @@
|
||||
* Makefile.am (uninstall): Don't try to remove $(pkgincludedir).
|
||||
(CLEANFILES): Add libebl_$(m).so.
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
-Wl,--version-script,$(@:.so=.map) \
|
||||
- -Wl,-z,defs -Wl,--as-needed $(libelf) $(libdw)
|
||||
+ -Wl,-z,defs $(LD_AS_NEEDED) $(libelf) $(libdw)
|
||||
$(textrel_check)
|
||||
@$(textrel_check)
|
||||
|
||||
libebl_i386.so: $(cpu_i386)
|
||||
--- elfutils/backends/Makefile.in
|
||||
@@ -87,18 +87,18 @@
|
||||
COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
|
||||
CLEANFILES = *.gcno *.gcda $(foreach m,$(modules), libebl_$(m).map \
|
||||
libebl_$(m).so $(am_libebl_$(m)_pic_a_OBJECTS))
|
||||
@@ -885,7 +888,7 @@ libebl_%.so libebl_%.map: libebl_%_pic.a
|
||||
@@ -888,7 +891,7 @@ libebl_%.so libebl_%.map: libebl_%_pic.a
|
||||
$(LINK) -shared -o $(@:.map=.so) \
|
||||
-Wl,--whole-archive $< $(cpu_$*) -Wl,--no-whole-archive \
|
||||
-Wl,--version-script,$(@:.so=.map) \
|
||||
- -Wl,-z,defs -Wl,--as-needed $(libelf) $(libdw)
|
||||
+ -Wl,-z,defs $(LD_AS_NEEDED) $(libelf) $(libdw)
|
||||
$(textrel_check)
|
||||
@$(textrel_check)
|
||||
|
||||
libebl_i386.so: $(cpu_i386)
|
||||
--- elfutils/ChangeLog
|
||||
+++ elfutils/ChangeLog
|
||||
@@ -148,6 +148,8 @@
|
||||
@@ -187,6 +187,8 @@
|
||||
|
||||
2012-01-24 Mark Wielaard <mjw@redhat.com>
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
* COPYING: Fix address. Updated version from gnulib.
|
||||
|
||||
2012-01-23 Mark Wielaard <mjw@redhat.com>
|
||||
@@ -166,6 +168,9 @@
|
||||
@@ -205,6 +207,9 @@
|
||||
|
||||
2011-10-08 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
* configure.ac: Fix use of AC_ARG_ENABLE to handle $enableval correctly.
|
||||
|
||||
2011-10-02 Ulrich Drepper <drepper@gmail.com>
|
||||
@@ -187,6 +192,10 @@
|
||||
@@ -226,6 +231,10 @@
|
||||
|
||||
* configure.ac (LOCALEDIR, DATADIRNAME): Removed.
|
||||
|
||||
@@ -128,7 +128,7 @@
|
||||
2009-09-21 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* configure.ac: Update for more modern autoconf.
|
||||
@@ -195,6 +204,10 @@
|
||||
@@ -234,6 +243,10 @@
|
||||
|
||||
* configure.ac (zip_LIBS): Check for liblzma too.
|
||||
|
||||
@@ -139,7 +139,7 @@
|
||||
2009-04-19 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* configure.ac (eu_version): Round down here, not in version.h macros.
|
||||
@@ -206,6 +219,8 @@
|
||||
@@ -245,6 +258,8 @@
|
||||
|
||||
2009-01-23 Roland McGrath <roland@redhat.com>
|
||||
|
||||
@@ -148,7 +148,7 @@
|
||||
* configure.ac (zlib check): Check for gzdirect, need zlib >= 1.2.2.3.
|
||||
|
||||
* configure.ac (__thread check): Use AC_LINK_IFELSE, in case of
|
||||
@@ -286,6 +301,10 @@
|
||||
@@ -325,6 +340,10 @@
|
||||
* configure.ac: Add dummy automake conditional to get dependencies
|
||||
for non-generic linker right. See src/Makefile.am.
|
||||
|
||||
@@ -159,7 +159,7 @@
|
||||
2005-11-18 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* Makefile.am (DISTCHECK_CONFIGURE_FLAGS): New variable.
|
||||
@@ -333,6 +352,17 @@
|
||||
@@ -372,6 +391,17 @@
|
||||
* Makefile.am (all_SUBDIRS): Add libdwfl.
|
||||
* configure.ac: Write libdwfl/Makefile.
|
||||
|
||||
@@ -179,7 +179,7 @@
|
||||
* configure.ac [AH_BOTTOM] (INTDECL, _INTDECL): New macros.
|
||||
--- elfutils/config/ChangeLog
|
||||
+++ elfutils/config/ChangeLog
|
||||
@@ -58,6 +58,10 @@
|
||||
@@ -71,6 +71,10 @@
|
||||
|
||||
* known-dwarf.awk: Use gawk.
|
||||
|
||||
@@ -226,7 +226,7 @@
|
||||
%.os: %.c %.o
|
||||
--- elfutils/config/Makefile.in
|
||||
+++ elfutils/config/Makefile.in
|
||||
@@ -146,6 +146,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
@@ -147,6 +147,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
@@ -234,7 +234,7 @@
|
||||
LEX = @LEX@
|
||||
LEXLIB = @LEXLIB@
|
||||
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
|
||||
@@ -177,6 +178,7 @@ SHELL = @SHELL@
|
||||
@@ -178,6 +179,7 @@ SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
USE_NLS = @USE_NLS@
|
||||
VERSION = @VERSION@
|
||||
@@ -254,7 +254,7 @@
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#undef HAVE_INTTYPES_H
|
||||
|
||||
@@ -99,4 +102,7 @@
|
||||
@@ -102,4 +105,7 @@
|
||||
/* Define for large files, on AIX-style hosts. */
|
||||
#undef _LARGE_FILES
|
||||
|
||||
@@ -264,7 +264,7 @@
|
||||
#include <eu-config.h>
|
||||
--- elfutils/configure
|
||||
+++ elfutils/configure
|
||||
@@ -661,6 +661,8 @@ ZLIB_TRUE
|
||||
@@ -663,6 +663,8 @@ ZLIB_TRUE
|
||||
LIBEBL_SUBDIR
|
||||
TESTS_RPATH_FALSE
|
||||
TESTS_RPATH_TRUE
|
||||
@@ -273,7 +273,7 @@
|
||||
BUILD_STATIC_FALSE
|
||||
BUILD_STATIC_TRUE
|
||||
USE_VALGRIND_FALSE
|
||||
@@ -676,6 +678,8 @@ NEVER_TRUE
|
||||
@@ -678,6 +680,8 @@ NEVER_TRUE
|
||||
base_cpu
|
||||
NATIVE_LD_FALSE
|
||||
NATIVE_LD_TRUE
|
||||
@@ -282,7 +282,7 @@
|
||||
NM
|
||||
READELF
|
||||
ac_ct_AR
|
||||
@@ -796,6 +800,7 @@ enable_debugpred
|
||||
@@ -798,6 +802,7 @@ enable_debugpred
|
||||
enable_gprof
|
||||
enable_gcov
|
||||
enable_valgrind
|
||||
@@ -290,7 +290,7 @@
|
||||
enable_tests_rpath
|
||||
enable_libebl_subdir
|
||||
with_zlib
|
||||
@@ -1452,6 +1457,7 @@ Optional Features:
|
||||
@@ -1455,6 +1460,7 @@ Optional Features:
|
||||
--enable-gprof build binaries with gprof support
|
||||
--enable-gcov build binaries with gcov support
|
||||
--enable-valgrind run all tests under valgrind
|
||||
@@ -298,7 +298,7 @@
|
||||
--enable-tests-rpath build $ORIGIN-using rpath into tests
|
||||
--enable-libebl-subdir=DIR
|
||||
install libebl_CPU modules in $(libdir)/DIR
|
||||
@@ -4674,6 +4680,130 @@ if test "x$ac_cv_c99" != xyes; then :
|
||||
@@ -4843,6 +4849,130 @@ if test "x$ac_cv_c99" != xyes; then :
|
||||
as_fn_error $? "gcc with C99 support required" "$LINENO" 5
|
||||
fi
|
||||
|
||||
@@ -429,7 +429,7 @@
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __thread support" >&5
|
||||
$as_echo_n "checking for __thread support... " >&6; }
|
||||
if ${ac_cv_tls+:} false; then :
|
||||
@@ -4710,7 +4840,13 @@ fi
|
||||
@@ -4879,7 +5009,13 @@ fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_tls" >&5
|
||||
$as_echo "$ac_cv_tls" >&6; }
|
||||
if test "x$ac_cv_tls" != xyes; then :
|
||||
@@ -444,7 +444,7 @@
|
||||
fi
|
||||
|
||||
# Check whether --enable-largefile was given.
|
||||
@@ -5077,6 +5213,22 @@ else
|
||||
@@ -5246,6 +5382,22 @@ else
|
||||
fi
|
||||
|
||||
|
||||
@@ -467,7 +467,7 @@
|
||||
# Check whether --enable-tests-rpath was given.
|
||||
if test "${enable_tests_rpath+set}" = set; then :
|
||||
enableval=$enable_tests_rpath; tests_use_rpath=$enableval
|
||||
@@ -5800,7 +5952,7 @@ case "$eu_version" in
|
||||
@@ -5983,7 +6135,7 @@ case "$eu_version" in
|
||||
esac
|
||||
|
||||
# Round up to the next release API (x.y) version.
|
||||
@@ -476,7 +476,7 @@
|
||||
|
||||
ac_ext=c
|
||||
ac_cpp='$CPP $CPPFLAGS'
|
||||
@@ -6530,6 +6682,10 @@ if test -z "${BUILD_STATIC_TRUE}" && tes
|
||||
@@ -6729,6 +6881,10 @@ if test -z "${BUILD_STATIC_TRUE}" && tes
|
||||
as_fn_error $? "conditional \"BUILD_STATIC\" was never defined.
|
||||
Usually this means the macro was only invoked conditionally." "$LINENO" 5
|
||||
fi
|
||||
@@ -568,7 +568,7 @@
|
||||
AC_ARG_ENABLE([tests-rpath],
|
||||
AS_HELP_STRING([--enable-tests-rpath],[build $ORIGIN-using rpath into tests]),
|
||||
[tests_use_rpath=$enableval], [tests_use_rpath=no])
|
||||
@@ -297,7 +353,7 @@ case "$eu_version" in
|
||||
@@ -302,7 +358,7 @@ case "$eu_version" in
|
||||
esac
|
||||
|
||||
# Round up to the next release API (x.y) version.
|
||||
@@ -660,10 +660,10 @@
|
||||
+ $(am__append_1) -fpic
|
||||
COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
|
||||
CLEANFILES = *.gcno *.gcda
|
||||
textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then exit 1; fi
|
||||
textrel_msg = echo "WARNING: TEXTREL found in '$@'"
|
||||
--- elfutils/libasm/ChangeLog
|
||||
+++ elfutils/libasm/ChangeLog
|
||||
@@ -79,6 +79,11 @@
|
||||
@@ -87,6 +87,11 @@
|
||||
* asm_error.c: Add new error ASM_E_IOERROR.
|
||||
* libasmP.h: Add ASM_E_IOERROR definition.
|
||||
|
||||
@@ -721,7 +721,7 @@
|
||||
COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
|
||||
CLEANFILES = *.gcno *.gcda $(am_libasm_pic_a_OBJECTS) \
|
||||
libasm.so.$(VERSION)
|
||||
@@ -370,7 +373,7 @@ libasm_a_SOURCES = asm_begin.c asm_abort
|
||||
@@ -373,7 +376,7 @@ libasm_a_SOURCES = asm_begin.c asm_abort
|
||||
|
||||
libasm_pic_a_SOURCES =
|
||||
am_libasm_pic_a_OBJECTS = $(libasm_a_SOURCES:.c=.os)
|
||||
@@ -807,7 +807,7 @@
|
||||
$P.mnemonics)
|
||||
--- elfutils/libdw/ChangeLog
|
||||
+++ elfutils/libdw/ChangeLog
|
||||
@@ -420,6 +420,10 @@
|
||||
@@ -717,6 +717,10 @@
|
||||
|
||||
* Makefile.am (known-dwarf.h): Run gawk on config/known-dwarf.awk.
|
||||
|
||||
@@ -818,7 +818,7 @@
|
||||
2011-07-14 Mark Wielaard <mjw@redhat.com>
|
||||
|
||||
* libdw.h (dwarf_offdie): Fix documentation to mention .debug_info.
|
||||
@@ -779,6 +783,10 @@
|
||||
@@ -1076,6 +1080,10 @@
|
||||
|
||||
* dwarf_hasattr_integrate.c: Integrate DW_AT_specification too.
|
||||
|
||||
@@ -829,7 +829,7 @@
|
||||
2009-08-10 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* dwarf_getscopevar.c: Use dwarf_diename.
|
||||
@@ -1547,6 +1555,11 @@
|
||||
@@ -1844,6 +1852,11 @@
|
||||
|
||||
2005-05-31 Roland McGrath <roland@redhat.com>
|
||||
|
||||
@@ -860,7 +860,7 @@
|
||||
#endif
|
||||
--- elfutils/libdw/libdw.h
|
||||
+++ elfutils/libdw/libdw.h
|
||||
@@ -891,7 +891,7 @@ extern Dwarf_OOM dwarf_new_oom_handler (
|
||||
@@ -1003,7 +1003,7 @@ extern Dwarf_OOM dwarf_new_oom_handler (
|
||||
|
||||
|
||||
/* Inline optimizations. */
|
||||
@@ -881,7 +881,7 @@
|
||||
noinst_PROGRAMS = $(am__EXEEXT_1)
|
||||
subdir = libdw
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
@@ -295,6 +296,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
@@ -298,6 +299,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
@@ -889,7 +889,7 @@
|
||||
LEX = @LEX@
|
||||
LEXLIB = @LEXLIB@
|
||||
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
|
||||
@@ -326,6 +328,7 @@ SHELL = @SHELL@
|
||||
@@ -329,6 +331,7 @@ SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
USE_NLS = @USE_NLS@
|
||||
VERSION = 1
|
||||
@@ -897,7 +897,7 @@
|
||||
XGETTEXT = @XGETTEXT@
|
||||
XGETTEXT_015 = @XGETTEXT_015@
|
||||
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
|
||||
@@ -387,10 +390,11 @@ top_srcdir = @top_srcdir@
|
||||
@@ -390,10 +393,11 @@ top_srcdir = @top_srcdir@
|
||||
zip_LIBS = @zip_LIBS@
|
||||
AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. \
|
||||
-I$(srcdir)/../libelf
|
||||
@@ -911,7 +911,7 @@
|
||||
+ $(am__append_1) $(am__append_2)
|
||||
COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
|
||||
CLEANFILES = *.gcno *.gcda
|
||||
textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then exit 1; fi
|
||||
textrel_msg = echo "WARNING: TEXTREL found in '$@'"
|
||||
--- elfutils/libdwelf/Makefile.in
|
||||
+++ elfutils/libdwelf/Makefile.in
|
||||
@@ -82,6 +82,7 @@ host_triplet = @host@
|
||||
@@ -954,10 +954,10 @@
|
||||
+ $(am__append_1)
|
||||
COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
|
||||
CLEANFILES = *.gcno *.gcda $(am_libdwelf_pic_a_OBJECTS)
|
||||
textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then exit 1; fi
|
||||
textrel_msg = echo "WARNING: TEXTREL found in '$@'"
|
||||
--- elfutils/libdwfl/ChangeLog
|
||||
+++ elfutils/libdwfl/ChangeLog
|
||||
@@ -421,6 +421,21 @@
|
||||
@@ -571,6 +571,21 @@
|
||||
(dwfl_module_addrsym) (i_to_symfile): New function.
|
||||
(dwfl_module_addrsym) (search_table): Use it.
|
||||
|
||||
@@ -979,7 +979,7 @@
|
||||
2013-11-07 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
Mark Wielaard <mjw@redhat.com>
|
||||
|
||||
@@ -2186,6 +2201,11 @@
|
||||
@@ -2336,6 +2351,11 @@
|
||||
|
||||
2005-07-21 Roland McGrath <roland@redhat.com>
|
||||
|
||||
@@ -1027,8 +1027,8 @@
|
||||
+# endif
|
||||
+#endif
|
||||
|
||||
#ifndef MIN
|
||||
# define MIN(a, b) ((a) < (b) ? (a) : (b))
|
||||
#include "../libdw/memory-access.h"
|
||||
|
||||
--- elfutils/libdwfl/linux-pid-attach.c
|
||||
+++ elfutils/libdwfl/linux-pid-attach.c
|
||||
@@ -255,6 +255,11 @@ void
|
||||
@@ -1107,8 +1107,8 @@
|
||||
+ $(am__append_1)
|
||||
COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
|
||||
CLEANFILES = *.gcno *.gcda $(am_libdwfl_pic_a_OBJECTS)
|
||||
textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then exit 1; fi
|
||||
@@ -410,8 +413,8 @@ libdwfl_a_SOURCES = dwfl_begin.c dwfl_en
|
||||
textrel_msg = echo "WARNING: TEXTREL found in '$@'"
|
||||
@@ -413,8 +416,8 @@ libdwfl_a_SOURCES = dwfl_begin.c dwfl_en
|
||||
dwfl_module_register_names.c dwfl_segment_report_module.c \
|
||||
link_map.c core-file.c open.c image-header.c dwfl_frame.c \
|
||||
frame_unwind.c dwfl_frame_pc.c linux-pid-attach.c \
|
||||
@@ -1121,7 +1121,7 @@
|
||||
libelf = ../libelf/libelf.so
|
||||
--- elfutils/libebl/ChangeLog
|
||||
+++ elfutils/libebl/ChangeLog
|
||||
@@ -748,6 +748,11 @@
|
||||
@@ -765,6 +765,11 @@
|
||||
* Makefile.am (libebl_*_so_SOURCES): Set to $(*_SRCS) so dependency
|
||||
tracking works right.
|
||||
|
||||
@@ -1172,10 +1172,10 @@
|
||||
+ $(am__append_1) -fpic
|
||||
COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
|
||||
CLEANFILES = *.gcno *.gcda $(am_libebl_pic_a_OBJECTS)
|
||||
textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then exit 1; fi
|
||||
textrel_msg = echo "WARNING: TEXTREL found in '$@'"
|
||||
--- elfutils/libelf/ChangeLog
|
||||
+++ elfutils/libelf/ChangeLog
|
||||
@@ -135,6 +135,11 @@
|
||||
@@ -244,6 +244,11 @@
|
||||
|
||||
* elf-knowledge.h (SECTION_STRIP_P): Remove < SHT_NUM check.
|
||||
|
||||
@@ -1187,7 +1187,7 @@
|
||||
2011-02-26 Mark Wielaard <mjw@redhat.com>
|
||||
|
||||
* elf_end.c (elf_end): Call rwlock_unlock before rwlock_fini.
|
||||
@@ -812,6 +817,11 @@
|
||||
@@ -921,6 +926,11 @@
|
||||
|
||||
* elf.h: Update from glibc.
|
||||
|
||||
@@ -1285,7 +1285,7 @@
|
||||
COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
|
||||
CLEANFILES = *.gcno *.gcda $(am_libelf_pic_a_OBJECTS) \
|
||||
libelf.so.$(VERSION)
|
||||
@@ -446,7 +450,7 @@ libelf_a_SOURCES = elf_version.c elf_has
|
||||
@@ -449,7 +453,7 @@ libelf_a_SOURCES = elf_version.c elf_has
|
||||
|
||||
libelf_pic_a_SOURCES =
|
||||
am_libelf_pic_a_OBJECTS = $(libelf_a_SOURCES:.c=.os)
|
||||
@@ -1347,7 +1347,7 @@
|
||||
break;
|
||||
--- elfutils/src/ChangeLog
|
||||
+++ elfutils/src/ChangeLog
|
||||
@@ -1112,8 +1112,16 @@
|
||||
@@ -1371,8 +1371,16 @@
|
||||
* readelf.c (attr_callback): Use print_block only when we don't use
|
||||
print_ops.
|
||||
|
||||
@@ -1364,7 +1364,7 @@
|
||||
* ar.c (do_oper_extract): Use pathconf instead of statfs.
|
||||
|
||||
2009-08-01 Ulrich Drepper <drepper@redhat.com>
|
||||
@@ -1277,6 +1285,8 @@
|
||||
@@ -1536,6 +1544,8 @@
|
||||
* readelf.c (print_debug_frame_section): Use t instead of j formats
|
||||
for ptrdiff_t OFFSET.
|
||||
|
||||
@@ -1373,7 +1373,7 @@
|
||||
2009-01-21 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* elflint.c (check_program_header): Fix typo in .eh_frame_hdr section
|
||||
@@ -1460,6 +1470,11 @@
|
||||
@@ -1719,6 +1729,11 @@
|
||||
that matches its PT_LOAD's p_flags &~ PF_W. On sparc, PF_X really
|
||||
is valid in RELRO.
|
||||
|
||||
@@ -1385,7 +1385,7 @@
|
||||
2008-02-29 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* readelf.c (print_attributes): Add a cast.
|
||||
@@ -1711,6 +1726,8 @@
|
||||
@@ -1970,6 +1985,8 @@
|
||||
|
||||
* readelf.c (hex_dump): Fix rounding error in whitespace calculation.
|
||||
|
||||
@@ -1394,7 +1394,7 @@
|
||||
2007-10-15 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* make-debug-archive.in: New file.
|
||||
@@ -2150,6 +2167,10 @@
|
||||
@@ -2409,6 +2426,10 @@
|
||||
* elflint.c (valid_e_machine): Add EM_ALPHA.
|
||||
Reported by Christian Aichinger <Greek0@gmx.net>.
|
||||
|
||||
@@ -1405,7 +1405,7 @@
|
||||
2006-08-08 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* elflint.c (check_dynamic): Don't require DT_HASH for DT_SYMTAB.
|
||||
@@ -2226,6 +2247,10 @@
|
||||
@@ -2485,6 +2506,10 @@
|
||||
* Makefile.am: Add hacks to create dependency files for non-generic
|
||||
linker.
|
||||
|
||||
@@ -1416,7 +1416,7 @@
|
||||
2006-06-12 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* ldgeneric.c (ld_generic_generate_sections): Don't create .interp
|
||||
@@ -2574,6 +2599,11 @@
|
||||
@@ -2833,6 +2858,11 @@
|
||||
* readelf.c (print_debug_loc_section): Fix indentation for larger
|
||||
address size.
|
||||
|
||||
@@ -1430,7 +1430,7 @@
|
||||
* readelf.c (print_debug_line_section): Print section offset of each
|
||||
--- elfutils/src/findtextrel.c
|
||||
+++ elfutils/src/findtextrel.c
|
||||
@@ -496,7 +496,11 @@ ptrcompare (const void *p1, const void *
|
||||
@@ -502,7 +502,11 @@ ptrcompare (const void *p1, const void *
|
||||
|
||||
|
||||
static void
|
||||
@@ -1538,7 +1538,7 @@
|
||||
COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
|
||||
CLEANFILES = *.gcno *.gcda make-debug-archive none_ld.os \
|
||||
$(ld_modules:.c=.os) *.gconv
|
||||
@@ -449,8 +452,8 @@ AM_LFLAGS = -Pld -olex.yy.c
|
||||
@@ -452,8 +455,8 @@ AM_LFLAGS = -Pld -olex.yy.c
|
||||
native_ld = @native_ld@
|
||||
ld_dsos = libld_elf_i386_pic.a
|
||||
@NATIVE_LD_FALSE@noinst_LIBRARIES = libld_elf.a libar.a $(ld_dsos) \
|
||||
@@ -1549,7 +1549,7 @@
|
||||
@NATIVE_LD_TRUE@native_ld_cflags = -DBASE_ELF_NAME=elf_$(base_cpu)
|
||||
@NEVER_TRUE@libdummy_a_SOURCES = i386_ld.c
|
||||
ld_SOURCES = ld.c ldgeneric.c ldlex.l ldscript.y symbolhash.c sectionhash.c \
|
||||
@@ -476,13 +479,18 @@ libeu = ../lib/libeu.a
|
||||
@@ -479,13 +482,18 @@ libeu = ../lib/libeu.a
|
||||
|
||||
# XXX While the file is not finished, don't warn about this
|
||||
ldgeneric_no_Wunused = yes
|
||||
@@ -1571,7 +1571,7 @@
|
||||
findtextrel_LDADD = $(libdw) $(libelf)
|
||||
--- elfutils/src/readelf.c
|
||||
+++ elfutils/src/readelf.c
|
||||
@@ -4239,10 +4239,12 @@ listptr_base (struct listptr *p)
|
||||
@@ -4368,10 +4368,12 @@ listptr_base (struct listptr *p)
|
||||
return base;
|
||||
}
|
||||
|
||||
@@ -1586,7 +1586,7 @@
|
||||
struct listptr *p1 = (void *) a;
|
||||
struct listptr *p2 = (void *) b;
|
||||
|
||||
@@ -4331,8 +4333,11 @@ static void
|
||||
@@ -4467,8 +4469,11 @@ static void
|
||||
sort_listptr (struct listptr_table *table, const char *name)
|
||||
{
|
||||
if (table->n > 0)
|
||||
@@ -1600,7 +1600,7 @@
|
||||
}
|
||||
|
||||
static bool
|
||||
@@ -9252,7 +9257,7 @@ dump_archive_index (Elf *elf, const char
|
||||
@@ -9539,7 +9544,7 @@ dump_archive_index (Elf *elf, const char
|
||||
if (unlikely (elf_rand (elf, as_off) == 0)
|
||||
|| unlikely ((subelf = elf_begin (-1, ELF_C_READ_MMAP, elf))
|
||||
== NULL))
|
||||
@@ -1682,7 +1682,7 @@
|
||||
}
|
||||
|
||||
/* Open the file. */
|
||||
@@ -2086,7 +2102,7 @@ while computing checksum for debug infor
|
||||
@@ -2091,7 +2107,7 @@ while computing checksum for debug infor
|
||||
/* If requested, preserve the timestamp. */
|
||||
if (tvp != NULL)
|
||||
{
|
||||
@@ -1691,7 +1691,7 @@
|
||||
{
|
||||
error (0, errno, gettext ("\
|
||||
cannot set access and modification date of '%s'"),
|
||||
@@ -2143,7 +2159,7 @@ handle_ar (int fd, Elf *elf, const char
|
||||
@@ -2148,7 +2164,7 @@ handle_ar (int fd, Elf *elf, const char
|
||||
|
||||
if (tvp != NULL)
|
||||
{
|
||||
@@ -1712,7 +1712,7 @@
|
||||
#ifndef __linux__
|
||||
--- elfutils/tests/ChangeLog
|
||||
+++ elfutils/tests/ChangeLog
|
||||
@@ -283,6 +283,13 @@
|
||||
@@ -421,6 +421,13 @@
|
||||
|
||||
2013-12-02 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
@@ -1726,7 +1726,7 @@
|
||||
* Makefile.am (check_PROGRAMS): Add backtrace, backtrace-child,
|
||||
backtrace-data and backtrace-dwarf.
|
||||
(BUILT_SOURCES, clean-local, backtrace-child-biarch): New.
|
||||
@@ -1147,6 +1154,8 @@
|
||||
@@ -1285,6 +1292,8 @@
|
||||
|
||||
2008-01-21 Roland McGrath <roland@redhat.com>
|
||||
|
||||
@@ -1735,7 +1735,7 @@
|
||||
* testfile45.S.bz2: Add tests for cltq, cqto.
|
||||
* testfile45.expect.bz2: Adjust.
|
||||
|
||||
@@ -1855,6 +1864,11 @@
|
||||
@@ -1993,6 +2002,11 @@
|
||||
* Makefile.am (TESTS): Add run-elflint-test.sh.
|
||||
(EXTRA_DIST): Add run-elflint-test.sh and testfile18.bz2.
|
||||
|
||||
@@ -1760,7 +1760,7 @@
|
||||
case 0:
|
||||
--- elfutils/tests/Makefile.am
|
||||
+++ elfutils/tests/Makefile.am
|
||||
@@ -356,6 +356,7 @@ get_lines_LDADD = $(libdw) $(libelf)
|
||||
@@ -365,6 +365,7 @@ get_lines_LDADD = $(libdw) $(libelf)
|
||||
get_files_LDADD = $(libdw) $(libelf)
|
||||
get_aranges_LDADD = $(libdw) $(libelf)
|
||||
allfcts_LDADD = $(libdw) $(libelf)
|
||||
@@ -1788,24 +1788,23 @@
|
||||
check_PROGRAMS = arextract$(EXEEXT) arsymtest$(EXEEXT) \
|
||||
newfile$(EXEEXT) saridx$(EXEEXT) scnnames$(EXEEXT) \
|
||||
sectiondump$(EXEEXT) showptable$(EXEEXT) update1$(EXEEXT) \
|
||||
@@ -111,7 +112,7 @@ check_PROGRAMS = arextract$(EXEEXT) arsy
|
||||
backtrace-data$(EXEEXT) backtrace-dwarf$(EXEEXT) \
|
||||
debuglink$(EXEEXT) debugaltlink$(EXEEXT) buildid$(EXEEXT) \
|
||||
$(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_4)
|
||||
@@ -113,7 +114,7 @@ check_PROGRAMS = arextract$(EXEEXT) arsy
|
||||
deleted$(EXEEXT) deleted-lib.so$(EXEEXT) \
|
||||
aggregate_size$(EXEEXT) vdsosyms$(EXEEXT) $(am__EXEEXT_1) \
|
||||
$(am__EXEEXT_2) $(am__EXEEXT_4)
|
||||
-@BIARCH_TRUE@am__append_4 = backtrace-child-biarch
|
||||
+@BIARCH_TRUE@am__append_5 = backtrace-child-biarch
|
||||
TESTS = run-arextract.sh run-arsymtest.sh newfile$(EXEEXT) \
|
||||
test-nlist$(EXEEXT) update1$(EXEEXT) update2$(EXEEXT) \
|
||||
update3$(EXEEXT) update4$(EXEEXT) run-show-die-info.sh \
|
||||
@@ -155,14 +156,14 @@ TESTS = run-arextract.sh run-arsymtest.s
|
||||
run-backtrace-core-s390.sh run-backtrace-core-aarch64.sh \
|
||||
run-backtrace-demangle.sh run-stack-d-test.sh \
|
||||
@@ -159,14 +160,14 @@ TESTS = run-arextract.sh run-arsymtest.s
|
||||
run-stack-i-test.sh run-readelf-dwz-multi.sh \
|
||||
- run-allfcts-multi.sh $(am__EXEEXT_2) $(am__append_7) \
|
||||
- $(am__append_8) $(am__EXEEXT_4)
|
||||
run-allfcts-multi.sh run-deleted.sh run-linkmap-cut.sh \
|
||||
run-aggregate-size.sh vdsosyms$(EXEEXT) run-readelf-A.sh \
|
||||
- $(am__EXEEXT_2) $(am__append_7) $(am__append_8) \
|
||||
+ $(am__EXEEXT_2) $(am__append_8) $(am__append_9) \
|
||||
$(am__EXEEXT_4)
|
||||
-@STANDALONE_FALSE@am__append_5 = msg_tst md5-sha1-test
|
||||
+ run-allfcts-multi.sh $(am__EXEEXT_2) $(am__append_8) \
|
||||
+ $(am__append_9) $(am__EXEEXT_4)
|
||||
@STANDALONE_FALSE@am__append_6 = msg_tst md5-sha1-test
|
||||
-@LZMA_TRUE@am__append_7 = run-readelf-s.sh run-dwflsyms.sh
|
||||
-@ZLIB_TRUE@am__append_8 = run-readelf-zdebug.sh
|
||||
@@ -1818,7 +1817,7 @@
|
||||
subdir = tests
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/biarch.m4 \
|
||||
@@ -768,6 +769,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
@@ -787,6 +788,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
@@ -1826,7 +1825,7 @@
|
||||
LEX = @LEX@
|
||||
LEXLIB = @LEXLIB@
|
||||
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
|
||||
@@ -799,6 +801,7 @@ SHELL = @SHELL@
|
||||
@@ -818,6 +820,7 @@ SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
USE_NLS = @USE_NLS@
|
||||
VERSION = @VERSION@
|
||||
@@ -1834,7 +1833,7 @@
|
||||
XGETTEXT = @XGETTEXT@
|
||||
XGETTEXT_015 = @XGETTEXT_015@
|
||||
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
|
||||
@@ -858,17 +861,17 @@ top_build_prefix = @top_build_prefix@
|
||||
@@ -877,12 +880,12 @@ top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
zip_LIBS = @zip_LIBS@
|
||||
@@ -1852,14 +1851,17 @@
|
||||
+ $(am__append_1)
|
||||
COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
|
||||
CLEANFILES = *.gcno *.gcda
|
||||
textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then exit 1; fi
|
||||
textrel_msg = echo "WARNING: TEXTREL found in '$@'"
|
||||
@@ -890,7 +893,7 @@ textrel_msg = echo "WARNING: TEXTREL fou
|
||||
@FATAL_TEXTREL_TRUE@textrel_found = $(textrel_msg); exit 1
|
||||
textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then $(textrel_found); fi
|
||||
BUILD_RPATH = \$$ORIGIN/../libasm:\$$ORIGIN/../libdw:\$$ORIGIN/../backends:\$$ORIGIN/../libelf
|
||||
-AM_LDFLAGS = $(am__append_2) $(am__append_3)
|
||||
+AM_LDFLAGS = $(am__append_3) $(am__append_4)
|
||||
@TESTS_RPATH_FALSE@tests_rpath = no
|
||||
@TESTS_RPATH_TRUE@tests_rpath = yes
|
||||
asm_TESTS = asm-tst1 asm-tst2 asm-tst3 asm-tst4 asm-tst5 \
|
||||
@@ -1077,6 +1080,7 @@ get_lines_LDADD = $(libdw) $(libelf)
|
||||
@@ -1106,6 +1109,7 @@ get_lines_LDADD = $(libdw) $(libelf)
|
||||
get_files_LDADD = $(libdw) $(libelf)
|
||||
get_aranges_LDADD = $(libdw) $(libelf)
|
||||
allfcts_LDADD = $(libdw) $(libelf)
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
Really make -Werror conditional to BUILD_WERROR
|
||||
|
||||
Otherwise it will fail with an error message like this one:
|
||||
|
||||
elf_getarsym.c:290:9: error: 'n' may be used uninitialized in this
|
||||
function [-Werror=maybe-uninitialized]
|
||||
arsym[n].as_name = NULL;
|
||||
^
|
||||
cc1: all warnings being treated as errors
|
||||
|
||||
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
|
||||
Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
|
||||
|
||||
diff -rup a/config/eu.am b/config/eu.am
|
||||
--- a/config/eu.am 2014-11-10 16:19:14.356031479 +0000
|
||||
+++ b/config/eu.am 2014-11-10 16:21:11.702072011 +0000
|
||||
@@ -35,7 +35,6 @@ LD_AS_NEEDED = @LD_AS_NEEDED@
|
||||
DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DLOCALEDIR='"${localedir}"'
|
||||
AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I..
|
||||
AM_CFLAGS = -std=gnu99 -Wall -Wshadow \
|
||||
- $(if $($(*F)_no_Werror),,-Werror) \
|
||||
$(if $($(*F)_no_Wunused),,-Wunused $(WEXTRA)) \
|
||||
$(if $($(*F)_no_Wformat),-Wno-format,-Wformat=2) \
|
||||
$($(*F)_CFLAGS)
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="gettext"
|
||||
PKG_VERSION="0.19.3"
|
||||
PKG_VERSION="0.19.4"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
diff -Naur libcec-2.2-8d84f8b/configure.ac libcec-2.2-8d84f8b.patch/configure.ac
|
||||
--- libcec-2.2-8d84f8b/configure.ac 2014-10-27 12:55:30.000000000 +0100
|
||||
+++ libcec-2.2-8d84f8b.patch/configure.ac 2014-10-27 13:11:03.726445999 +0100
|
||||
diff -Naur libcec-2.2.0/configure.ac libcec-2.2.0.patch/configure.ac
|
||||
--- libcec-2.2.0/configure.ac 2014-11-01 01:51:37.000000000 +0100
|
||||
+++ libcec-2.2.0.patch/configure.ac 2014-11-10 23:14:45.210162950 +0100
|
||||
@@ -100,6 +100,14 @@
|
||||
esac
|
||||
fi
|
||||
@@ -16,7 +16,7 @@ diff -Naur libcec-2.2-8d84f8b/configure.ac libcec-2.2-8d84f8b.patch/configure.ac
|
||||
## add the top dir and include to the include path, so we can include config.h and cec.h
|
||||
CPPFLAGS="$CPPFLAGS -I\$(abs_top_srcdir)/src -I\$(abs_top_srcdir)/include"
|
||||
|
||||
@@ -305,6 +313,17 @@
|
||||
@@ -306,6 +314,17 @@
|
||||
fi
|
||||
|
||||
|
||||
@@ -34,10 +34,10 @@ diff -Naur libcec-2.2-8d84f8b/configure.ac libcec-2.2-8d84f8b.patch/configure.ac
|
||||
## check if our build system is complete
|
||||
AC_CHECK_HEADER(algorithm,,AC_MSG_ERROR($msg_required_header_missing))
|
||||
AC_CHECK_HEADER(ctype.h,,AC_MSG_ERROR($msg_required_header_missing))
|
||||
diff -Naur libcec-2.2-8d84f8b/include/cectypes.h libcec-2.2-8d84f8b.patch/include/cectypes.h
|
||||
--- libcec-2.2-8d84f8b/include/cectypes.h 2014-10-27 12:55:30.000000000 +0100
|
||||
+++ libcec-2.2-8d84f8b.patch/include/cectypes.h 2014-10-27 13:12:22.785470074 +0100
|
||||
@@ -306,6 +306,17 @@
|
||||
diff -Naur libcec-2.2.0/include/cectypes.h libcec-2.2.0.patch/include/cectypes.h
|
||||
--- libcec-2.2.0/include/cectypes.h 2014-10-28 16:20:50.000000000 +0100
|
||||
+++ libcec-2.2.0.patch/include/cectypes.h 2014-11-10 23:21:37.347945493 +0100
|
||||
@@ -307,6 +307,17 @@
|
||||
#define CEC_EXYNOS_VIRTUAL_COM "Exynos"
|
||||
|
||||
/*!
|
||||
@@ -55,7 +55,7 @@ diff -Naur libcec-2.2-8d84f8b/include/cectypes.h libcec-2.2-8d84f8b.patch/includ
|
||||
* Mimimum client version
|
||||
*/
|
||||
#define CEC_MIN_LIB_VERSION 2
|
||||
@@ -887,7 +898,8 @@
|
||||
@@ -888,7 +899,8 @@
|
||||
ADAPTERTYPE_P8_DAUGHTERBOARD = 0x2,
|
||||
ADAPTERTYPE_RPI = 0x100,
|
||||
ADAPTERTYPE_TDA995x = 0x200,
|
||||
@@ -65,9 +65,9 @@ diff -Naur libcec-2.2-8d84f8b/include/cectypes.h libcec-2.2-8d84f8b.patch/includ
|
||||
} cec_adapter_type;
|
||||
|
||||
typedef struct cec_menu_language
|
||||
diff -Naur libcec-2.2-8d84f8b/src/lib/adapter/AdapterFactory.cpp libcec-2.2-8d84f8b.patch/src/lib/adapter/AdapterFactory.cpp
|
||||
--- libcec-2.2-8d84f8b/src/lib/adapter/AdapterFactory.cpp 2014-10-27 12:55:30.000000000 +0100
|
||||
+++ libcec-2.2-8d84f8b.patch/src/lib/adapter/AdapterFactory.cpp 2014-10-27 13:16:07.856765188 +0100
|
||||
diff -Naur libcec-2.2.0/src/lib/adapter/AdapterFactory.cpp libcec-2.2.0.patch/src/lib/adapter/AdapterFactory.cpp
|
||||
--- libcec-2.2.0/src/lib/adapter/AdapterFactory.cpp 2014-10-28 16:20:50.000000000 +0100
|
||||
+++ libcec-2.2.0.patch/src/lib/adapter/AdapterFactory.cpp 2014-11-10 23:18:08.761485552 +0100
|
||||
@@ -57,6 +57,11 @@
|
||||
#include "Exynos/ExynosCECAdapterCommunication.h"
|
||||
#endif
|
||||
@@ -104,24 +104,166 @@ diff -Naur libcec-2.2-8d84f8b/src/lib/adapter/AdapterFactory.cpp libcec-2.2-8d84
|
||||
#error "libCEC doesn't have support for any type of adapter. please check your build system or configuration"
|
||||
#endif
|
||||
|
||||
@@ -155,7 +175,12 @@
|
||||
return new CUSBCECAdapterCommunication(m_lib->m_cec, strPort, iBaudRate);
|
||||
@@ -151,11 +171,16 @@
|
||||
return new CRPiCECAdapterCommunication(m_lib->m_cec);
|
||||
#endif
|
||||
|
||||
-#if !defined(HAVE_RPI_API) && !defined(HAVE_P8_USB) && !defined(HAVE_TDA995X_API) && !defined(HAVE_EXYNOS_API)
|
||||
+#if defined(HAVE_IMX_API)
|
||||
+ if (!strcmp(strPort, CEC_IMX_VIRTUAL_COM))
|
||||
+ return new CIMXCECAdapterCommunication(m_lib->m_cec);
|
||||
+#endif
|
||||
+
|
||||
#if defined(HAVE_P8_USB)
|
||||
return new CUSBCECAdapterCommunication(m_lib->m_cec, strPort, iBaudRate);
|
||||
#endif
|
||||
|
||||
-#if !defined(HAVE_RPI_API) && !defined(HAVE_P8_USB) && !defined(HAVE_TDA995X_API) && !defined(HAVE_EXYNOS_API)
|
||||
+#if !defined(HAVE_RPI_API) && !defined(HAVE_P8_USB) && !defined(HAVE_TDA995X_API) && !defined(HAVE_EXYNOS_API) && !defined(HAVE_IMX_API)
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
diff -Naur libcec-2.2-8d84f8b/src/lib/adapter/IMX/IMXCECAdapterCommunication.cpp libcec-2.2-8d84f8b.patch/src/lib/adapter/IMX/IMXCECAdapterCommunication.cpp
|
||||
--- libcec-2.2-8d84f8b/src/lib/adapter/IMX/IMXCECAdapterCommunication.cpp 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ libcec-2.2-8d84f8b.patch/src/lib/adapter/IMX/IMXCECAdapterCommunication.cpp 2014-10-27 13:11:03.735446822 +0100
|
||||
@@ -0,0 +1,367 @@
|
||||
diff -Naur libcec-2.2.0/src/lib/adapter/IMX/AdapterMessageQueue.h libcec-2.2.0.patch/src/lib/adapter/IMX/AdapterMessageQueue.h
|
||||
--- libcec-2.2.0/src/lib/adapter/IMX/AdapterMessageQueue.h 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ libcec-2.2.0.patch/src/lib/adapter/IMX/AdapterMessageQueue.h 2014-11-10 23:14:45.214162390 +0100
|
||||
@@ -0,0 +1,134 @@
|
||||
+#pragma once
|
||||
+/*
|
||||
+ * This file is part of the libCEC(R) library.
|
||||
+ *
|
||||
+ * libCEC(R) is Copyright (C) 2011-2013 Pulse-Eight Limited. All rights reserved.
|
||||
+ * libCEC(R) is an original work, containing original code.
|
||||
+ *
|
||||
+ * libCEC(R) is a trademark of Pulse-Eight Limited.
|
||||
+ *
|
||||
+ * This program is dual-licensed; you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License as published by
|
||||
+ * the Free Software Foundation; either version 2 of the License, or
|
||||
+ * (at your option) any later version.
|
||||
+ *
|
||||
+ * This program is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU General Public License
|
||||
+ * along with this program; if not, write to the Free Software
|
||||
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
+ *
|
||||
+ *
|
||||
+ * Alternatively, you can license this library under a commercial license,
|
||||
+ * please contact Pulse-Eight Licensing for more information.
|
||||
+ *
|
||||
+ * For more information contact:
|
||||
+ * Pulse-Eight Licensing <license@pulse-eight.com>
|
||||
+ * http://www.pulse-eight.com/
|
||||
+ * http://www.pulse-eight.net/
|
||||
+ */
|
||||
+
|
||||
+#include "lib/platform/threads/mutex.h"
|
||||
+
|
||||
+namespace CEC
|
||||
+{
|
||||
+ using namespace PLATFORM;
|
||||
+
|
||||
+ class CAdapterMessageQueueEntry
|
||||
+ {
|
||||
+ public:
|
||||
+ CAdapterMessageQueueEntry(const cec_command &command)
|
||||
+ : m_bWaiting(true), m_retval((uint32_t)-1), m_bSucceeded(false)
|
||||
+ {
|
||||
+ m_hash = hashValue(
|
||||
+ uint32_t(command.opcode_set ? command.opcode : CEC_OPCODE_NONE),
|
||||
+ command.initiator, command.destination);
|
||||
+ }
|
||||
+
|
||||
+ virtual ~CAdapterMessageQueueEntry(void) {}
|
||||
+
|
||||
+ /*!
|
||||
+ * @brief Query result from worker thread
|
||||
+ */
|
||||
+ uint32_t Result() const
|
||||
+ {
|
||||
+ return m_retval;
|
||||
+ }
|
||||
+
|
||||
+ /*!
|
||||
+ * @brief Signal waiting threads
|
||||
+ */
|
||||
+ void Broadcast(void)
|
||||
+ {
|
||||
+ CLockObject lock(m_mutex);
|
||||
+ m_condition.Broadcast();
|
||||
+ }
|
||||
+
|
||||
+ /*!
|
||||
+ * @brief Signal waiting thread(s) when message matches this entry
|
||||
+ */
|
||||
+ bool CheckMatch(uint32_t opcode, cec_logical_address initiator,
|
||||
+ cec_logical_address destination, uint32_t response)
|
||||
+ {
|
||||
+ uint32_t hash = hashValue(opcode, initiator, destination);
|
||||
+
|
||||
+ if (hash == m_hash)
|
||||
+ {
|
||||
+ CLockObject lock(m_mutex);
|
||||
+
|
||||
+ m_retval = response;
|
||||
+ m_bSucceeded = true;
|
||||
+ m_condition.Signal();
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ /*!
|
||||
+ * @brief Wait for a response to this command.
|
||||
+ * @param iTimeout The timeout to use while waiting.
|
||||
+ * @return True when a response was received before the timeout passed, false otherwise.
|
||||
+ */
|
||||
+ bool Wait(uint32_t iTimeout)
|
||||
+ {
|
||||
+ CLockObject lock(m_mutex);
|
||||
+
|
||||
+ bool bReturn = m_bSucceeded ? true : m_condition.Wait(m_mutex, m_bSucceeded, iTimeout);
|
||||
+ m_bWaiting = false;
|
||||
+ return bReturn;
|
||||
+ }
|
||||
+
|
||||
+ /*!
|
||||
+ * @return True while a thread is waiting for a signal or isn't waiting yet, false otherwise.
|
||||
+ */
|
||||
+ bool IsWaiting(void)
|
||||
+ {
|
||||
+ CLockObject lock(m_mutex);
|
||||
+ return m_bWaiting;
|
||||
+ }
|
||||
+
|
||||
+ /*!
|
||||
+ * @return Hash value for given cec_command
|
||||
+ */
|
||||
+ static uint32_t hashValue(uint32_t opcode,
|
||||
+ cec_logical_address initiator,
|
||||
+ cec_logical_address destination)
|
||||
+ {
|
||||
+ return 1 | ((uint32_t)initiator << 8) |
|
||||
+ ((uint32_t)destination << 16) | ((uint32_t)opcode << 16);
|
||||
+ }
|
||||
+
|
||||
+ private:
|
||||
+ bool m_bWaiting; /**< true while a thread is waiting or when it hasn't started waiting yet */
|
||||
+ PLATFORM::CCondition<bool> m_condition; /**< the condition to wait on */
|
||||
+ PLATFORM::CMutex m_mutex; /**< mutex for changes to this class */
|
||||
+ uint32_t m_hash;
|
||||
+ uint32_t m_retval;
|
||||
+ bool m_bSucceeded;
|
||||
+ };
|
||||
+
|
||||
+};
|
||||
diff -Naur libcec-2.2.0/src/lib/adapter/IMX/IMXCECAdapterCommunication.cpp libcec-2.2.0.patch/src/lib/adapter/IMX/IMXCECAdapterCommunication.cpp
|
||||
--- libcec-2.2.0/src/lib/adapter/IMX/IMXCECAdapterCommunication.cpp 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ libcec-2.2.0.patch/src/lib/adapter/IMX/IMXCECAdapterCommunication.cpp 2014-11-10 23:14:45.217161982 +0100
|
||||
@@ -0,0 +1,328 @@
|
||||
+/*
|
||||
+ * This file is part of the libCEC(R) library.
|
||||
+ *
|
||||
@@ -131,7 +273,6 @@ diff -Naur libcec-2.2-8d84f8b/src/lib/adapter/IMX/IMXCECAdapterCommunication.cpp
|
||||
+ * libCEC(R) is a trademark of Pulse-Eight Limited.
|
||||
+ *
|
||||
+ * IMX adpater port is Copyright (C) 2013 by Stephan Rafin
|
||||
+ * Copyright (C) 2014 by Matus Kral
|
||||
+ *
|
||||
+ * You can redistribute this file and/or modify
|
||||
+ * it under the terms of the GNU General Public License as published by
|
||||
@@ -159,12 +300,37 @@ diff -Naur libcec-2.2-8d84f8b/src/lib/adapter/IMX/IMXCECAdapterCommunication.cpp
|
||||
+#include "lib/LibCEC.h"
|
||||
+#include "lib/platform/sockets/cdevsocket.h"
|
||||
+#include "lib/platform/util/StdString.h"
|
||||
+#include "lib/platform/util/buffer.h"
|
||||
+
|
||||
+/*
|
||||
+ * Ioctl definitions from kernel header
|
||||
+ */
|
||||
+#define HDMICEC_IOC_MAGIC 'H'
|
||||
+#define HDMICEC_IOC_SETLOGICALADDRESS _IOW(HDMICEC_IOC_MAGIC, 1, unsigned char)
|
||||
+#define HDMICEC_IOC_STARTDEVICE _IO(HDMICEC_IOC_MAGIC, 2)
|
||||
+#define HDMICEC_IOC_STOPDEVICE _IO(HDMICEC_IOC_MAGIC, 3)
|
||||
+#define HDMICEC_IOC_GETPHYADDRESS _IOR(HDMICEC_IOC_MAGIC, 4, unsigned char[4])
|
||||
+
|
||||
+#define MAX_CEC_MESSAGE_LEN 17
|
||||
+
|
||||
+#define MESSAGE_TYPE_RECEIVE_SUCCESS 1
|
||||
+#define MESSAGE_TYPE_NOACK 2
|
||||
+#define MESSAGE_TYPE_DISCONNECTED 3
|
||||
+#define MESSAGE_TYPE_CONNECTED 4
|
||||
+#define MESSAGE_TYPE_SEND_SUCCESS 5
|
||||
+
|
||||
+typedef struct hdmi_cec_event{
|
||||
+ int event_type;
|
||||
+ int msg_len;
|
||||
+ unsigned char msg[MAX_CEC_MESSAGE_LEN];
|
||||
+}hdmi_cec_event;
|
||||
+
|
||||
+
|
||||
+using namespace std;
|
||||
+using namespace CEC;
|
||||
+using namespace PLATFORM;
|
||||
+
|
||||
+#include "IMXCECAdapterMessageQueue.h"
|
||||
+#include "AdapterMessageQueue.h"
|
||||
+
|
||||
+#define LIB_CEC m_callback->GetLib()
|
||||
+
|
||||
@@ -178,13 +344,16 @@ diff -Naur libcec-2.2-8d84f8b/src/lib/adapter/IMX/IMXCECAdapterCommunication.cpp
|
||||
+#define CEC_MSG_FAIL_DEST_NOT_ACK 0x85 /*Message transmisson failed: Destination Address not aknowledged*/
|
||||
+#define CEC_MSG_FAIL_DATA_NOT_ACK 0x86 /*Message transmisson failed: Databyte not acknowledged*/
|
||||
+
|
||||
+
|
||||
+CIMXCECAdapterCommunication::CIMXCECAdapterCommunication(IAdapterCommunicationCallback *callback) :
|
||||
+ IAdapterCommunication(callback)
|
||||
+ IAdapterCommunication(callback)/*,
|
||||
+ m_bLogicalAddressChanged(false)*/
|
||||
+{
|
||||
+ CLockObject lock(m_mutex);
|
||||
+
|
||||
+ m_iNextMessage = 0;
|
||||
+ m_logicalAddress = CECDEVICE_UNKNOWN;
|
||||
+ //m_logicalAddresses.Clear();
|
||||
+ m_logicalAddress = CECDEVICE_UNKNOWN;
|
||||
+ m_bLogicalAddressRegistered = false;
|
||||
+ m_bInitialised = false;
|
||||
+ m_dev = new CCDevSocket(CEC_IMX_PATH);
|
||||
@@ -210,9 +379,8 @@ diff -Naur libcec-2.2-8d84f8b/src/lib/adapter/IMX/IMXCECAdapterCommunication.cpp
|
||||
+ {
|
||||
+ if (!bStartListening || CreateThread()) {
|
||||
+ if (m_dev->Ioctl(HDMICEC_IOC_STARTDEVICE, NULL) == 0) {
|
||||
+ m_bInitialised = true;
|
||||
+ RegisterLogicalAddress(CECDEVICE_BROADCAST);
|
||||
+ return true;
|
||||
+ m_bInitialised = true;
|
||||
+ return true;
|
||||
+ }
|
||||
+ LIB_CEC->AddLog(CEC_LOG_ERROR, "%s: Unable to start device\n", __func__);
|
||||
+ }
|
||||
@@ -225,18 +393,17 @@ diff -Naur libcec-2.2-8d84f8b/src/lib/adapter/IMX/IMXCECAdapterCommunication.cpp
|
||||
+
|
||||
+void CIMXCECAdapterCommunication::Close(void)
|
||||
+{
|
||||
+ StopThread(-1);
|
||||
+ if (m_bInitialised)
|
||||
+ {
|
||||
+ m_bInitialised = false;
|
||||
+ UnregisterLogicalAddress();
|
||||
+ StopThread(0);
|
||||
+
|
||||
+ if (m_dev->Ioctl(HDMICEC_IOC_STOPDEVICE, NULL) != 0)
|
||||
+ {
|
||||
+ LIB_CEC->AddLog(CEC_LOG_ERROR, "%s: Unable to stop device\n", __func__);
|
||||
+ }
|
||||
+ CLockObject lock(m_mutex);
|
||||
+ if (!m_bInitialised) {
|
||||
+ return;
|
||||
+ }
|
||||
+ if (m_dev->Ioctl(HDMICEC_IOC_STOPDEVICE, NULL) != 0) {
|
||||
+ LIB_CEC->AddLog(CEC_LOG_ERROR, "%s: Unable to stop device\n", __func__);
|
||||
+ }
|
||||
+ m_dev->Close();
|
||||
+ m_bInitialised = false;
|
||||
+}
|
||||
+
|
||||
+
|
||||
@@ -248,19 +415,17 @@ diff -Naur libcec-2.2-8d84f8b/src/lib/adapter/IMX/IMXCECAdapterCommunication.cpp
|
||||
+
|
||||
+
|
||||
+cec_adapter_message_state CIMXCECAdapterCommunication::Write(
|
||||
+ const cec_command &data, bool &bRetry, uint8_t iLineTimeout, bool UNUSED(bIsReply))
|
||||
+ const cec_command &data, bool &UNUSED(bRetry), uint8_t UNUSED(iLineTimeout), bool UNUSED(bIsReply))
|
||||
+{
|
||||
+ unsigned char message[MAX_MESSAGE_LEN];
|
||||
+ CIMXCECAdapterMessageQueueEntry *entry;
|
||||
+ //cec_frame frame;
|
||||
+ unsigned char message[MAX_CEC_MESSAGE_LEN];
|
||||
+ int msg_len = 1;
|
||||
+ cec_adapter_message_state rc = ADAPTER_MESSAGE_STATE_ERROR;
|
||||
+
|
||||
+ bRetry = true;
|
||||
+ if ((size_t)data.parameters.size + data.opcode_set + 1 > sizeof(message))
|
||||
+ {
|
||||
+ LIB_CEC->AddLog(CEC_LOG_ERROR, "%s: data size too large !", __func__);
|
||||
+ bRetry = false;
|
||||
+ return rc;
|
||||
+ return ADAPTER_MESSAGE_STATE_ERROR;
|
||||
+ }
|
||||
+
|
||||
+ message[0] = (data.initiator << 4) | (data.destination & 0x0f);
|
||||
@@ -272,46 +437,12 @@ diff -Naur libcec-2.2-8d84f8b/src/lib/adapter/IMX/IMXCECAdapterCommunication.cpp
|
||||
+ msg_len+=data.parameters.size;
|
||||
+ }
|
||||
+
|
||||
+ entry = new CIMXCECAdapterMessageQueueEntry(message[0], data.opcode);
|
||||
+ m_messageMutex.Lock();
|
||||
+ uint32_t msgKey = ++m_iNextMessage;
|
||||
+ m_messages.insert(make_pair(msgKey, entry));
|
||||
+ m_messageMutex.Unlock();
|
||||
+
|
||||
+ if (m_dev->Write(message, msg_len) > 0)
|
||||
+ {
|
||||
+ if (entry->Wait(data.transmit_timeout ? data.transmit_timeout : iLineTimeout *1000))
|
||||
+ {
|
||||
+ int status = entry->Result();
|
||||
+
|
||||
+ if (status == MESSAGE_TYPE_NOACK)
|
||||
+ rc = ADAPTER_MESSAGE_STATE_SENT_NOT_ACKED;
|
||||
+ else if (status == MESSAGE_TYPE_SEND_SUCCESS)
|
||||
+ rc = ADAPTER_MESSAGE_STATE_SENT_ACKED;
|
||||
+
|
||||
+ bRetry = false;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ rc = ADAPTER_MESSAGE_STATE_WAITING_TO_BE_SENT;
|
||||
+#ifdef CEC_DEBUGGING
|
||||
+ LIB_CEC->AddLog(CEC_LOG_DEBUG, "%s: command timed out !", __func__);
|
||||
+#endif
|
||||
+ }
|
||||
+ }
|
||||
+ else
|
||||
+ if (m_dev->Write(message, msg_len) == msg_len)
|
||||
+ {
|
||||
+ Sleep(CEC_DEFAULT_TRANSMIT_RETRY_WAIT);
|
||||
+#ifdef CEC_DEBUGGING
|
||||
+ LIB_CEC->AddLog(CEC_LOG_WARNING, "%s: write failed !", __func__);
|
||||
+#endif
|
||||
+ rc = ADAPTER_MESSAGE_STATE_SENT_ACKED;
|
||||
+ }
|
||||
+
|
||||
+ m_messageMutex.Lock();
|
||||
+ m_messages.erase(msgKey);
|
||||
+ m_messageMutex.Unlock();
|
||||
+
|
||||
+ delete entry;
|
||||
+ else
|
||||
+ LIB_CEC->AddLog(CEC_LOG_ERROR, "%s: sent command error !", __func__);
|
||||
+
|
||||
+ return rc;
|
||||
+}
|
||||
@@ -332,16 +463,19 @@ diff -Naur libcec-2.2-8d84f8b/src/lib/adapter/IMX/IMXCECAdapterCommunication.cpp
|
||||
+
|
||||
+uint16_t CIMXCECAdapterCommunication::GetPhysicalAddress(void)
|
||||
+{
|
||||
+ uint8_t phy_addr[4];
|
||||
+ uint32_t info;
|
||||
+ uint16_t phy_addr;
|
||||
+
|
||||
+ if (m_dev->Ioctl(HDMICEC_IOC_GETPHYADDRESS, &phy_addr) != 0)
|
||||
+ if (m_dev->Ioctl(HDMICEC_IOC_GETPHYADDRESS, &info) != 0)
|
||||
+ {
|
||||
+ LIB_CEC->AddLog(CEC_LOG_ERROR, "%s: HDMICEC_IOC_GETPHYADDRESS failed !", __func__);
|
||||
+ return CEC_INVALID_PHYSICAL_ADDRESS;
|
||||
+ }
|
||||
+ /* Rebuild 16 bit raw value from fsl 32 bits value */
|
||||
+ phy_addr = ((info & 0x0f) << 12) | (info & 0x0f00) |
|
||||
+ ((info & 0x0f0000) >> 12) | ((info & 0x0f000000) >> 24);
|
||||
+
|
||||
+ m_physicalAddress = ((phy_addr[0] << 4 | phy_addr[1]) << 8) | (phy_addr[2] << 4 | phy_addr[3]);
|
||||
+ return m_physicalAddress;
|
||||
+ return phy_addr;
|
||||
+}
|
||||
+
|
||||
+
|
||||
@@ -351,7 +485,7 @@ diff -Naur libcec-2.2-8d84f8b/src/lib/adapter/IMX/IMXCECAdapterCommunication.cpp
|
||||
+ addresses.Clear();
|
||||
+
|
||||
+ CLockObject lock(m_mutex);
|
||||
+ if (m_bLogicalAddressRegistered)
|
||||
+ if ((m_logicalAddress & (CECDEVICE_UNKNOWN | CECDEVICE_UNREGISTERED)) == 0)
|
||||
+ addresses.Set(m_logicalAddress);
|
||||
+
|
||||
+ return addresses;
|
||||
@@ -364,11 +498,9 @@ diff -Naur libcec-2.2-8d84f8b/src/lib/adapter/IMX/IMXCECAdapterCommunication.cpp
|
||||
+
|
||||
+bool CIMXCECAdapterCommunication::UnregisterLogicalAddress(void)
|
||||
+{
|
||||
+ {
|
||||
+ CLockObject lock(m_mutex);
|
||||
+ if (!m_bLogicalAddressRegistered)
|
||||
+ return true;
|
||||
+ }
|
||||
+ CLockObject lock(m_mutex);
|
||||
+ if (!m_bLogicalAddressRegistered)
|
||||
+ return true;
|
||||
+
|
||||
+ if (m_dev->Ioctl(HDMICEC_IOC_SETLOGICALADDRESS, (void *)CECDEVICE_BROADCAST) != 0)
|
||||
+ {
|
||||
@@ -376,21 +508,18 @@ diff -Naur libcec-2.2-8d84f8b/src/lib/adapter/IMX/IMXCECAdapterCommunication.cpp
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+#ifdef CEC_DEBUGGING
|
||||
+ LIB_CEC->AddLog(CEC_LOG_DEBUG, "%s - releasing previous logical address", __func__);
|
||||
+#endif
|
||||
+ m_logicalAddress = CECDEVICE_UNKNOWN;
|
||||
+ m_bLogicalAddressRegistered = false;
|
||||
+ return true;
|
||||
+}
|
||||
+
|
||||
+bool CIMXCECAdapterCommunication::RegisterLogicalAddress(const cec_logical_address address)
|
||||
+{
|
||||
+ CLockObject lock(m_mutex);
|
||||
+
|
||||
+ if (m_logicalAddress == address && m_bLogicalAddressRegistered)
|
||||
+ {
|
||||
+ CLockObject lock(m_mutex);
|
||||
+ if (m_logicalAddress == address && m_bLogicalAddressRegistered)
|
||||
+ {
|
||||
+ return true;
|
||||
+ }
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ if (m_dev->Ioctl(HDMICEC_IOC_SETLOGICALADDRESS, (void *)address) != 0)
|
||||
@@ -399,14 +528,8 @@ diff -Naur libcec-2.2-8d84f8b/src/lib/adapter/IMX/IMXCECAdapterCommunication.cpp
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ CLockObject lock(m_mutex);
|
||||
+
|
||||
+#ifdef CEC_DEBUGGING
|
||||
+ LIB_CEC->AddLog(CEC_LOG_DEBUG, "%s: %x to %x", __func__, m_logicalAddress, address);
|
||||
+#endif
|
||||
+
|
||||
+ m_logicalAddress = address;
|
||||
+ m_bLogicalAddressRegistered = (address != CECDEVICE_BROADCAST) ? true : false;
|
||||
+ m_bLogicalAddressRegistered = true;
|
||||
+ return true;
|
||||
+}
|
||||
+
|
||||
@@ -417,82 +540,62 @@ diff -Naur libcec-2.2-8d84f8b/src/lib/adapter/IMX/IMXCECAdapterCommunication.cpp
|
||||
+ return RegisterLogicalAddress((cec_logical_address)log_addr);
|
||||
+}
|
||||
+
|
||||
+
|
||||
+void *CIMXCECAdapterCommunication::Process(void)
|
||||
+{
|
||||
+ bool bHandled;
|
||||
+ hdmi_cec_event event;
|
||||
+ int ret;
|
||||
+
|
||||
+ uint32_t opcode, status;
|
||||
+ cec_logical_address initiator, destination;
|
||||
+
|
||||
+ while (!IsStopped())
|
||||
+ {
|
||||
+ if (IsInitialised() && (ret = m_dev->Read((char *)&event, sizeof(event), 5000)) > 0)
|
||||
+ ret = m_dev->Read((char *)&event, sizeof(event), 5000);
|
||||
+ if (ret > 0)
|
||||
+ {
|
||||
+
|
||||
+ initiator = cec_logical_address(event.msg[0] >> 4);
|
||||
+ destination = cec_logical_address(event.msg[0] & 0x0f);
|
||||
+
|
||||
+ if (event.event_type == MESSAGE_TYPE_RECEIVE_SUCCESS)
|
||||
+ {
|
||||
+ cec_command cmd;
|
||||
+ //LIB_CEC->AddLog(CEC_LOG_DEBUG, "%s: Read data : type : %d initiator %d dest %d", __func__, event.event_type, initiator, destination);
|
||||
+ if (event.event_type == MESSAGE_TYPE_RECEIVE_SUCCESS)
|
||||
+ /* Message received */
|
||||
+ {
|
||||
+ cec_command cmd;
|
||||
+
|
||||
+ cec_command::Format(
|
||||
+ cmd, initiator, destination,
|
||||
+ ( event.msg_len > 1 ) ? cec_opcode(event.msg[1]) : CEC_OPCODE_NONE);
|
||||
+ cec_command::Format(
|
||||
+ cmd, initiator, destination,
|
||||
+ ( event.msg_len > 1 ) ? cec_opcode(event.msg[1]) : CEC_OPCODE_NONE);
|
||||
+
|
||||
+ for( uint8_t i = 2; i < event.msg_len; i++ )
|
||||
+ cmd.parameters.PushBack(event.msg[i]);
|
||||
+ for( uint8_t i = 2; i < event.msg_len; i++ )
|
||||
+ cmd.parameters.PushBack(event.msg[i]);
|
||||
+
|
||||
+ if (!IsStopped()) {
|
||||
+ m_callback->OnCommandReceived(cmd);
|
||||
+ }
|
||||
+ }
|
||||
+ else if (event.event_type == MESSAGE_TYPE_SEND_SUCCESS
|
||||
+ || event.event_type == MESSAGE_TYPE_NOACK)
|
||||
+ {
|
||||
+ bHandled = false;
|
||||
+ if (!IsStopped())
|
||||
+ m_callback->OnCommandReceived(cmd);
|
||||
+ }
|
||||
+
|
||||
+ m_messageMutex.Lock();
|
||||
+ for (map<uint32_t, CIMXCECAdapterMessageQueueEntry *>::iterator it = m_messages.begin();
|
||||
+ !bHandled && it != m_messages.end(); it++)
|
||||
+ {
|
||||
+ bHandled = it->second->Received(event.event_type, event.msg[0], (cec_opcode)event.msg[1]);
|
||||
+ }
|
||||
+ m_messageMutex.Unlock();
|
||||
+ if (event.event_type == MESSAGE_TYPE_CONNECTED)
|
||||
+ /* HDMI has just been reconnected - Notify phy address*/
|
||||
+ {
|
||||
+ uint16_t iNewAddress = GetPhysicalAddress();
|
||||
+ m_callback->HandlePhysicalAddressChanged(iNewAddress);
|
||||
+ }
|
||||
+ /* We are not interested in other events */
|
||||
+ } /*else {
|
||||
+ LIB_CEC->AddLog(CEC_LOG_DEBUG, "%s: Read returned %d", __func__, ret);
|
||||
+ }*/
|
||||
+
|
||||
+ if (!bHandled)
|
||||
+ LIB_CEC->AddLog(CEC_LOG_WARNING, "%s: response not matched !", __func__);
|
||||
+ }
|
||||
+ else if (event.event_type == MESSAGE_TYPE_DISCONNECTED)
|
||||
+ {
|
||||
+ /* HDMI Hotplug event - disconnect */
|
||||
+ }
|
||||
+ else if (event.event_type == MESSAGE_TYPE_CONNECTED)
|
||||
+ {
|
||||
+ /* HDMI Hotplug event - connect */
|
||||
+ uint16_t oldAddress = m_physicalAddress;
|
||||
+
|
||||
+ if (oldAddress != GetPhysicalAddress())
|
||||
+ m_callback->HandlePhysicalAddressChanged(m_physicalAddress);
|
||||
+#ifdef CEC_DEBUGGING
|
||||
+ LIB_CEC->AddLog(CEC_LOG_DEBUG, "%s: plugin event received", __func__);
|
||||
+#endif
|
||||
+ }
|
||||
+ else
|
||||
+ LIB_CEC->AddLog(CEC_LOG_WARNING, "%s: unhandled response received %d!", __func__, event.event_type);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+#endif // HAVE_IMX_API
|
||||
diff -Naur libcec-2.2-8d84f8b/src/lib/adapter/IMX/IMXCECAdapterCommunication.h libcec-2.2-8d84f8b.patch/src/lib/adapter/IMX/IMXCECAdapterCommunication.h
|
||||
--- libcec-2.2-8d84f8b/src/lib/adapter/IMX/IMXCECAdapterCommunication.h 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ libcec-2.2-8d84f8b.patch/src/lib/adapter/IMX/IMXCECAdapterCommunication.h 2014-10-27 13:11:03.736446898 +0100
|
||||
@@ -0,0 +1,126 @@
|
||||
diff -Naur libcec-2.2.0/src/lib/adapter/IMX/IMXCECAdapterCommunication.h libcec-2.2.0.patch/src/lib/adapter/IMX/IMXCECAdapterCommunication.h
|
||||
--- libcec-2.2.0/src/lib/adapter/IMX/IMXCECAdapterCommunication.h 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ libcec-2.2.0.patch/src/lib/adapter/IMX/IMXCECAdapterCommunication.h 2014-11-10 23:14:45.217161982 +0100
|
||||
@@ -0,0 +1,119 @@
|
||||
+#pragma once
|
||||
+/*
|
||||
+ * This file is part of the libCEC(R) library.
|
||||
@@ -503,7 +606,6 @@ diff -Naur libcec-2.2-8d84f8b/src/lib/adapter/IMX/IMXCECAdapterCommunication.h l
|
||||
+ * libCEC(R) is a trademark of Pulse-Eight Limited.
|
||||
+ *
|
||||
+ * IMX adpater port is Copyright (C) 2013 by Stephan Rafin
|
||||
+ * Copyright (C) 2014 by Matus Kral
|
||||
+ *
|
||||
+ * You can redistribute this file and/or modify
|
||||
+ * it under the terms of the GNU General Public License as published by
|
||||
@@ -527,18 +629,12 @@ diff -Naur libcec-2.2-8d84f8b/src/lib/adapter/IMX/IMXCECAdapterCommunication.h l
|
||||
+#include "lib/platform/threads/mutex.h"
|
||||
+#include "lib/platform/threads/threads.h"
|
||||
+#include "lib/platform/sockets/socket.h"
|
||||
+#include "lib/adapter/IMX/mxc_hdmi-cec.h"
|
||||
+#include "lib/adapter/AdapterCommunication.h"
|
||||
+#include <map>
|
||||
+
|
||||
+#define IMX_ADAPTER_VID 0x0471 /*FIXME TBD*/
|
||||
+#define IMX_ADAPTER_PID 0x1001
|
||||
+
|
||||
+typedef struct hdmi_cec_event{
|
||||
+ int event_type;
|
||||
+ int msg_len;
|
||||
+ unsigned char msg[MAX_MESSAGE_LEN];
|
||||
+}hdmi_cec_event;
|
||||
+
|
||||
+
|
||||
+namespace PLATFORM
|
||||
@@ -546,9 +642,10 @@ diff -Naur libcec-2.2-8d84f8b/src/lib/adapter/IMX/IMXCECAdapterCommunication.h l
|
||||
+ class CCDevSocket;
|
||||
+};
|
||||
+
|
||||
+
|
||||
+namespace CEC
|
||||
+{
|
||||
+ class CIMXCECAdapterMessageQueueEntry;
|
||||
+ class CAdapterMessageQueueEntry;
|
||||
+
|
||||
+ class CIMXCECAdapterCommunication : public IAdapterCommunication, public PLATFORM::CThread
|
||||
+ {
|
||||
@@ -582,12 +679,13 @@ diff -Naur libcec-2.2-8d84f8b/src/lib/adapter/IMX/IMXCECAdapterCommunication.h l
|
||||
+ uint16_t GetPhysicalAddress(void);
|
||||
+ bool SetControlledMode(bool UNUSED(controlled)) { return true; }
|
||||
+ cec_vendor_id GetVendorId(void);
|
||||
+ void HandleLogicalAddressLost(cec_logical_address UNUSED(oldAddress));
|
||||
+ bool SupportsSourceLogicalAddress(const cec_logical_address address) { return address > CECDEVICE_TV && address <= CECDEVICE_BROADCAST; }
|
||||
+ cec_adapter_type GetAdapterType(void) { return ADAPTERTYPE_IMX; }
|
||||
+ uint16_t GetAdapterVendorId(void) const { return IMX_ADAPTER_VID; }
|
||||
+ uint16_t GetAdapterProductId(void) const { return IMX_ADAPTER_PID; }
|
||||
+ void HandleLogicalAddressLost(cec_logical_address UNUSED(oldAddress));
|
||||
+ void SetActiveSource(bool UNUSED(bSetTo), bool UNUSED(bClientUnregistered)) {}
|
||||
+ bool RegisterLogicalAddress(const cec_logical_address address);
|
||||
+ ///}
|
||||
+
|
||||
+ /** @name PLATFORM::CThread implementation */
|
||||
@@ -596,32 +694,30 @@ diff -Naur libcec-2.2-8d84f8b/src/lib/adapter/IMX/IMXCECAdapterCommunication.h l
|
||||
+ ///}
|
||||
+
|
||||
+ private:
|
||||
+ bool IsInitialised(void) { return m_bInitialised; };
|
||||
+ bool RegisterLogicalAddress(const cec_logical_address address);
|
||||
+ bool IsInitialised(void) const { return m_bInitialised; };
|
||||
+ bool UnregisterLogicalAddress(void);
|
||||
+
|
||||
+ std::string m_strError; /**< current error message */
|
||||
+
|
||||
+ //cec_logical_addresses m_logicalAddresses;
|
||||
+ cec_logical_address m_logicalAddress;
|
||||
+ uint16_t m_physicalAddress;
|
||||
+
|
||||
+ PLATFORM::CMutex m_mutex;
|
||||
+ PLATFORM::CCDevSocket *m_dev; /**< the device connection */
|
||||
+
|
||||
+ PLATFORM::CMutex m_messageMutex;
|
||||
+ uint32_t m_iNextMessage;
|
||||
+ std::map<uint32_t, CIMXCECAdapterMessageQueueEntry *> m_messages;
|
||||
+
|
||||
+ bool m_bLogicalAddressRegistered;
|
||||
+ bool m_bInitialised;
|
||||
+
|
||||
+ PLATFORM::CMutex m_messageMutex;
|
||||
+ uint32_t m_iNextMessage;
|
||||
+ std::map<uint32_t, CAdapterMessageQueueEntry *> m_messages;
|
||||
+ };
|
||||
+
|
||||
+};
|
||||
+
|
||||
+#endif
|
||||
diff -Naur libcec-2.2-8d84f8b/src/lib/adapter/IMX/IMXCECAdapterDetection.cpp libcec-2.2-8d84f8b.patch/src/lib/adapter/IMX/IMXCECAdapterDetection.cpp
|
||||
--- libcec-2.2-8d84f8b/src/lib/adapter/IMX/IMXCECAdapterDetection.cpp 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ libcec-2.2-8d84f8b.patch/src/lib/adapter/IMX/IMXCECAdapterDetection.cpp 2014-10-27 13:11:03.733446659 +0100
|
||||
diff -Naur libcec-2.2.0/src/lib/adapter/IMX/IMXCECAdapterDetection.cpp libcec-2.2.0.patch/src/lib/adapter/IMX/IMXCECAdapterDetection.cpp
|
||||
--- libcec-2.2.0/src/lib/adapter/IMX/IMXCECAdapterDetection.cpp 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ libcec-2.2.0.patch/src/lib/adapter/IMX/IMXCECAdapterDetection.cpp 2014-11-10 23:14:45.215162253 +0100
|
||||
@@ -0,0 +1,42 @@
|
||||
+/*
|
||||
+ * This file is part of the libCEC(R) library.
|
||||
@@ -665,9 +761,9 @@ diff -Naur libcec-2.2-8d84f8b/src/lib/adapter/IMX/IMXCECAdapterDetection.cpp lib
|
||||
+}
|
||||
+
|
||||
+#endif
|
||||
diff -Naur libcec-2.2-8d84f8b/src/lib/adapter/IMX/IMXCECAdapterDetection.h libcec-2.2-8d84f8b.patch/src/lib/adapter/IMX/IMXCECAdapterDetection.h
|
||||
--- libcec-2.2-8d84f8b/src/lib/adapter/IMX/IMXCECAdapterDetection.h 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ libcec-2.2-8d84f8b.patch/src/lib/adapter/IMX/IMXCECAdapterDetection.h 2014-10-27 13:11:03.734446742 +0100
|
||||
diff -Naur libcec-2.2.0/src/lib/adapter/IMX/IMXCECAdapterDetection.h libcec-2.2.0.patch/src/lib/adapter/IMX/IMXCECAdapterDetection.h
|
||||
--- libcec-2.2.0/src/lib/adapter/IMX/IMXCECAdapterDetection.h 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ libcec-2.2.0.patch/src/lib/adapter/IMX/IMXCECAdapterDetection.h 2014-11-10 23:14:45.215162253 +0100
|
||||
@@ -0,0 +1,36 @@
|
||||
+#pragma once
|
||||
+/*
|
||||
@@ -705,182 +801,9 @@ diff -Naur libcec-2.2-8d84f8b/src/lib/adapter/IMX/IMXCECAdapterDetection.h libce
|
||||
+ static bool FindAdapter(void);
|
||||
+ };
|
||||
+}
|
||||
diff -Naur libcec-2.2-8d84f8b/src/lib/adapter/IMX/IMXCECAdapterMessageQueue.h libcec-2.2-8d84f8b.patch/src/lib/adapter/IMX/IMXCECAdapterMessageQueue.h
|
||||
--- libcec-2.2-8d84f8b/src/lib/adapter/IMX/IMXCECAdapterMessageQueue.h 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ libcec-2.2-8d84f8b.patch/src/lib/adapter/IMX/IMXCECAdapterMessageQueue.h 2014-10-27 13:11:03.736446898 +0100
|
||||
@@ -0,0 +1,118 @@
|
||||
+#pragma once
|
||||
+/*
|
||||
+ * This file is part of the libCEC(R) library.
|
||||
+ *
|
||||
+ * libCEC(R) is Copyright (C) 2011-2013 Pulse-Eight Limited. All rights reserved.
|
||||
+ * libCEC(R) is an original work, containing original code.
|
||||
+ *
|
||||
+ * libCEC(R) is a trademark of Pulse-Eight Limited.
|
||||
+ *
|
||||
+ * This program is dual-licensed; you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License as published by
|
||||
+ * the Free Software Foundation; either version 2 of the License, or
|
||||
+ * (at your option) any later version.
|
||||
+ *
|
||||
+ * This program is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU General Public License
|
||||
+ * along with this program; if not, write to the Free Software
|
||||
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
+ *
|
||||
+ *
|
||||
+ * Alternatively, you can license this library under a commercial license,
|
||||
+ * please contact Pulse-Eight Licensing for more information.
|
||||
+ *
|
||||
+ * For more information contact:
|
||||
+ * Pulse-Eight Licensing <license@pulse-eight.com>
|
||||
+ * http://www.pulse-eight.com/
|
||||
+ * http://www.pulse-eight.net/
|
||||
+ */
|
||||
+
|
||||
+#include "lib/platform/threads/mutex.h"
|
||||
+
|
||||
+namespace CEC
|
||||
+{
|
||||
+ using namespace PLATFORM;
|
||||
+
|
||||
+ class CIMXCECAdapterMessageQueueEntry
|
||||
+ {
|
||||
+ public:
|
||||
+ CIMXCECAdapterMessageQueueEntry(uint8_t addrs, cec_opcode opcode)
|
||||
+ : m_bWaiting(true), m_retval((uint32_t)-1), m_bSucceeded(false)
|
||||
+ {
|
||||
+ m_opcode = opcode;
|
||||
+ m_addrs = addrs;
|
||||
+ }
|
||||
+
|
||||
+ virtual ~CIMXCECAdapterMessageQueueEntry(void) {}
|
||||
+
|
||||
+ /*!
|
||||
+ * @brief Query result from worker thread
|
||||
+ */
|
||||
+ uint32_t Result() const
|
||||
+ {
|
||||
+ return m_retval;
|
||||
+ }
|
||||
+
|
||||
+ /*!
|
||||
+ * @brief Signal waiting threads
|
||||
+ */
|
||||
+ void Broadcast(void)
|
||||
+ {
|
||||
+ CLockObject lock(m_mutex);
|
||||
+ m_condition.Broadcast();
|
||||
+ }
|
||||
+
|
||||
+ /*!
|
||||
+ * @brief Signal waiting thread(s) when message matches this entry
|
||||
+ */
|
||||
+ bool Received(int response, uint8_t addrs, cec_opcode opcode)
|
||||
+ {
|
||||
+ CLockObject lock(m_mutex);
|
||||
+
|
||||
+ if (!(m_addrs == addrs && m_opcode == opcode))
|
||||
+ return false;
|
||||
+
|
||||
+ m_retval = response;
|
||||
+ m_bSucceeded = true;
|
||||
+ m_condition.Signal();
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ /*!
|
||||
+ * @brief Wait for a response to this command.
|
||||
+ * @param iTimeout The timeout to use while waiting.
|
||||
+ * @return True when a response was received before the timeout passed, false otherwise.
|
||||
+ */
|
||||
+ bool Wait(uint32_t iTimeout)
|
||||
+ {
|
||||
+ CLockObject lock(m_mutex);
|
||||
+
|
||||
+ bool bReturn = m_bSucceeded ? true : m_condition.Wait(m_mutex, m_bSucceeded, iTimeout);
|
||||
+ m_bWaiting = false;
|
||||
+ return bReturn;
|
||||
+ }
|
||||
+
|
||||
+ /*!
|
||||
+ * @return True while a thread is waiting for a signal or isn't waiting yet, false otherwise.
|
||||
+ */
|
||||
+ bool IsWaiting(void)
|
||||
+ {
|
||||
+ CLockObject lock(m_mutex);
|
||||
+ return m_bWaiting;
|
||||
+ }
|
||||
+
|
||||
+ private:
|
||||
+ bool m_bWaiting; /**< true while a thread is waiting or when it hasn't started waiting yet */
|
||||
+ PLATFORM::CCondition<bool> m_condition; /**< the condition to wait on */
|
||||
+ PLATFORM::CMutex m_mutex; /**< mutex for changes to this class */
|
||||
+ int m_retval;
|
||||
+ bool m_bSucceeded;
|
||||
+ uint8_t m_addrs;
|
||||
+ cec_opcode m_opcode;
|
||||
+ };
|
||||
+
|
||||
+};
|
||||
diff -Naur libcec-2.2-8d84f8b/src/lib/adapter/IMX/mxc_hdmi-cec.h libcec-2.2-8d84f8b.patch/src/lib/adapter/IMX/mxc_hdmi-cec.h
|
||||
--- libcec-2.2-8d84f8b/src/lib/adapter/IMX/mxc_hdmi-cec.h 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ libcec-2.2-8d84f8b.patch/src/lib/adapter/IMX/mxc_hdmi-cec.h 2014-10-27 13:11:03.736446898 +0100
|
||||
@@ -0,0 +1,47 @@
|
||||
+/*
|
||||
+ * Copyright 2005-2013 Freescale Semiconductor, Inc. All Rights Reserved.
|
||||
+ */
|
||||
+
|
||||
+/*
|
||||
+ * The code contained herein is licensed under the GNU General Public
|
||||
+ * License. You may obtain a copy of the GNU General Public License
|
||||
+ * Version 2 or later at the following locations:
|
||||
+ *
|
||||
+ * http://www.opensource.org/licenses/gpl-license.html
|
||||
+ * http://www.gnu.org/copyleft/gpl.html
|
||||
+ */
|
||||
+#ifndef _HDMICEC_H_
|
||||
+#define _HDMICEC_H_
|
||||
+#include <linux/ioctl.h>
|
||||
+
|
||||
+/*
|
||||
+ * Ioctl definitions
|
||||
+ */
|
||||
+
|
||||
+/* Use 'k' as magic number */
|
||||
+#define HDMICEC_IOC_MAGIC 'H'
|
||||
+/*
|
||||
+ * S means "Set" through a ptr,
|
||||
+ * T means "Tell" directly with the argument value
|
||||
+ * G means "Get": reply by setting through a pointer
|
||||
+ * Q means "Query": response is on the return value
|
||||
+ * X means "eXchange": G and S atomically
|
||||
+ * H means "sHift": T and Q atomically
|
||||
+ */
|
||||
+#define HDMICEC_IOC_SETLOGICALADDRESS \
|
||||
+ _IOW(HDMICEC_IOC_MAGIC, 1, unsigned char)
|
||||
+#define HDMICEC_IOC_STARTDEVICE _IO(HDMICEC_IOC_MAGIC, 2)
|
||||
+#define HDMICEC_IOC_STOPDEVICE _IO(HDMICEC_IOC_MAGIC, 3)
|
||||
+#define HDMICEC_IOC_GETPHYADDRESS \
|
||||
+ _IOR(HDMICEC_IOC_MAGIC, 4, unsigned char[4])
|
||||
+
|
||||
+#define MAX_MESSAGE_LEN 16
|
||||
+
|
||||
+#define MESSAGE_TYPE_RECEIVE_SUCCESS 1
|
||||
+#define MESSAGE_TYPE_NOACK 2
|
||||
+#define MESSAGE_TYPE_DISCONNECTED 3
|
||||
+#define MESSAGE_TYPE_CONNECTED 4
|
||||
+#define MESSAGE_TYPE_SEND_SUCCESS 5
|
||||
+
|
||||
+#endif /* !_HDMICEC_H_ */
|
||||
+
|
||||
diff -Naur libcec-2.2-8d84f8b/src/lib/CECTypeUtils.h libcec-2.2-8d84f8b.patch/src/lib/CECTypeUtils.h
|
||||
--- libcec-2.2-8d84f8b/src/lib/CECTypeUtils.h 2014-10-27 12:55:30.000000000 +0100
|
||||
+++ libcec-2.2-8d84f8b.patch/src/lib/CECTypeUtils.h 2014-10-27 13:11:03.729446299 +0100
|
||||
diff -Naur libcec-2.2.0/src/lib/CECTypeUtils.h libcec-2.2.0.patch/src/lib/CECTypeUtils.h
|
||||
--- libcec-2.2.0/src/lib/CECTypeUtils.h 2014-10-28 16:20:50.000000000 +0100
|
||||
+++ libcec-2.2.0.patch/src/lib/CECTypeUtils.h 2014-11-10 23:14:45.212162668 +0100
|
||||
@@ -877,6 +877,8 @@
|
||||
return "Raspberry Pi";
|
||||
case ADAPTERTYPE_TDA995x:
|
||||
@@ -890,11 +813,11 @@ diff -Naur libcec-2.2-8d84f8b/src/lib/CECTypeUtils.h libcec-2.2-8d84f8b.patch/sr
|
||||
default:
|
||||
return "unknown";
|
||||
}
|
||||
diff -Naur libcec-2.2-8d84f8b/src/lib/Makefile.am libcec-2.2-8d84f8b.patch/src/lib/Makefile.am
|
||||
--- libcec-2.2-8d84f8b/src/lib/Makefile.am 2014-10-27 12:55:30.000000000 +0100
|
||||
+++ libcec-2.2-8d84f8b.patch/src/lib/Makefile.am 2014-10-27 13:14:08.229600205 +0100
|
||||
@@ -69,4 +69,10 @@
|
||||
adapter/Exynos/ExynosCECAdapterCommunication.cpp
|
||||
diff -Naur libcec-2.2.0/src/lib/Makefile.am libcec-2.2.0.patch/src/lib/Makefile.am
|
||||
--- libcec-2.2.0/src/lib/Makefile.am 2014-10-28 16:20:50.000000000 +0100
|
||||
+++ libcec-2.2.0.patch/src/lib/Makefile.am 2014-11-10 23:20:02.597700521 +0100
|
||||
@@ -63,6 +63,12 @@
|
||||
adapter/TDA995x/TDA995xCECAdapterCommunication.cpp
|
||||
endif
|
||||
|
||||
+## i.MX6 support
|
||||
@@ -903,4 +826,6 @@ diff -Naur libcec-2.2-8d84f8b/src/lib/Makefile.am libcec-2.2-8d84f8b.patch/src/l
|
||||
+ adapter/IMX/IMXCECAdapterCommunication.cpp
|
||||
+endif
|
||||
+
|
||||
libcec_la_LDFLAGS = @LIBS_LIBCEC@ -version-info @VERSION@
|
||||
## Exynos support
|
||||
if USE_EXYNOS_API
|
||||
libcec_la_SOURCES += adapter/Exynos/ExynosCECAdapterDetection.cpp \
|
||||
@@ -1,53 +0,0 @@
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
|
||||
#
|
||||
# OpenELEC is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# OpenELEC is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="libpcap"
|
||||
PKG_VERSION="1.6.2"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.tcpdump.org/"
|
||||
PKG_URL="http://www.tcpdump.org/release/libpcap-${PKG_VERSION}.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain libusb libnl"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="devel"
|
||||
PKG_SHORTDESC="system interface for user-level packet capture"
|
||||
PKG_LONGDESC="libpcap (Packet CAPture) provides a portable framework for low-level network monitoring. Applications include network statistics collection, security monitoring, network debugging, etc."
|
||||
|
||||
PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="yes"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="LIBS=-lpthread \
|
||||
ac_cv_header_libusb_1_0_libusb_h=no \
|
||||
--disable-shared \
|
||||
--with-pcap=linux \
|
||||
--disable-bluetooth \
|
||||
--disable-can \
|
||||
--disable-canusb"
|
||||
|
||||
pre_configure_target() {
|
||||
# When cross-compiling, configure can't set linux version
|
||||
# forcing it
|
||||
sed -i -e 's/ac_cv_linux_vers=unknown/ac_cv_linux_vers=2/' ../configure
|
||||
|
||||
export CFLAGS="$CFLAGS -I$SYSROOT_PREFIX/usr/include/libnl3"
|
||||
}
|
||||
|
||||
post_makeinstall_target() {
|
||||
rm -rf $INSTALL/usr/bin
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
diff -Naur libpcap-1.6.2/configure.in libpcap-1.6.2.patch/configure.in
|
||||
--- libpcap-1.6.2/configure.in 2014-07-19 15:21:09.000000000 +0200
|
||||
+++ libpcap-1.6.2.patch/configure.in 2014-09-06 05:58:33.918837813 +0200
|
||||
@@ -459,7 +459,6 @@
|
||||
AC_DEFINE(HAVE_LIBNL_3_x,1,[if libnl exists and is version 3.x])
|
||||
AC_DEFINE(HAVE_LIBNL_NLE,1,[libnl has NLE_FAILURE])
|
||||
AC_DEFINE(HAVE_LIBNL_SOCKETS,1,[libnl has new-style socket api])
|
||||
- V_INCLS="$V_INCLS -I/usr/include/libnl3"
|
||||
have_any_nl="yes"
|
||||
])
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="libtool"
|
||||
PKG_VERSION="2.4.2"
|
||||
PKG_VERSION="2.4.5"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
@@ -33,4 +33,5 @@ PKG_IS_ADDON="no"
|
||||
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_CONFIGURE_OPTS_HOST="--enable-static --disable-shared"
|
||||
PKG_CONFIGURE_OPTS_HOST="--enable-static --disable-shared HELP2MAN=/bin/true"
|
||||
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
diff --git a/build-aux/ltmain.sh b/build-aux/ltmain.sh
|
||||
index 5eca4ae..23901ff 100644
|
||||
--- a/build-aux/ltmain.sh
|
||||
+++ b/build-aux/ltmain.sh
|
||||
@@ -8333,7 +8333,7 @@ func_mode_link ()
|
||||
fi
|
||||
else
|
||||
# We cannot seem to hardcode it, guess we'll fake it.
|
||||
- add_dir=-L$libdir
|
||||
+ #add_dir=-L$libdir
|
||||
# Try looking first in the location we're being installed to.
|
||||
if test -n "$inst_prefix_dir"; then
|
||||
case $libdir in
|
||||
13
packages/devel/libtool/patches/libtool-02-use_ld.patch
Normal file
13
packages/devel/libtool/patches/libtool-02-use_ld.patch
Normal file
@@ -0,0 +1,13 @@
|
||||
diff --git a/build-aux/ltmain.sh b/build-aux/ltmain.sh
|
||||
index 23901ff..df26ab5 100644
|
||||
--- a/build-aux/ltmain.sh
|
||||
+++ b/build-aux/ltmain.sh
|
||||
@@ -7250,7 +7250,7 @@ func_mode_link ()
|
||||
# -stdlib=* select c++ std lib with clang
|
||||
-64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
|
||||
-t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
|
||||
- -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*)
|
||||
+ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*|-fuse-ld=*)
|
||||
func_quote_for_eval "$arg"
|
||||
arg=$func_quote_for_eval_result
|
||||
func_append compile_command " $arg"
|
||||
@@ -1,19 +0,0 @@
|
||||
When using sysroot we should append it to libdir which is helpful in cross builds
|
||||
as the system is staged in the sysroot. For normal build i.e. when lt_sysroot is not
|
||||
set it will still behave same and add -L/usr/lib to relink command
|
||||
|
||||
-Khem
|
||||
|
||||
Index: libtool-2.4/libltdl/config/ltmain.m4sh
|
||||
===================================================================
|
||||
--- libtool-2.4.orig/libltdl/config/ltmain.m4sh
|
||||
+++ libtool-2.4/libltdl/config/ltmain.m4sh
|
||||
@@ -6122,7 +6122,7 @@ func_mode_link ()
|
||||
fi
|
||||
else
|
||||
# We cannot seem to hardcode it, guess we'll fake it.
|
||||
- add_dir="-L$libdir"
|
||||
+ #add_dir="-L$libdir"
|
||||
# Try looking first in the location we're being installed to.
|
||||
if test -n "$inst_prefix_dir"; then
|
||||
case $libdir in
|
||||
@@ -1,13 +0,0 @@
|
||||
diff -Naur libtool-2.4-old/libltdl/m4/libtool.m4 libtool-2.4-new/libltdl/m4/libtool.m4
|
||||
--- libtool-2.4-old/libltdl/m4/libtool.m4 2010-09-22 01:41:19.000000000 -0700
|
||||
+++ libtool-2.4-new/libltdl/m4/libtool.m4 2010-09-23 20:25:25.000000000 -0700
|
||||
@@ -6905,6 +6905,9 @@
|
||||
*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
|
||||
*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
|
||||
esac
|
||||
+case "$CC $CFLAGS " in #(
|
||||
+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
|
||||
+esac
|
||||
|
||||
dnl Parse the compiler output and extract the necessary
|
||||
dnl objects, libraries and library flags.
|
||||
@@ -1,12 +0,0 @@
|
||||
diff -Naur libtool-2.4-old/libltdl/config/ltmain.m4sh libtool-2.4-new/libltdl/config/ltmain.m4sh
|
||||
--- libtool-2.4-old/libltdl/config/ltmain.m4sh 2010-09-22 13:16:41.000000000 -0700
|
||||
+++ libtool-2.4-new/libltdl/config/ltmain.m4sh 2010-09-22 13:21:52.000000000 -0700
|
||||
@@ -5051,7 +5051,7 @@
|
||||
# -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
|
||||
-64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
|
||||
-t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
|
||||
- -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
|
||||
+ -O*|-flto*|-fwhopr*|-fuse-linker-plugin|-fuse-ld=*)
|
||||
func_quote_for_eval "$arg"
|
||||
arg="$func_quote_for_eval_result"
|
||||
func_append compile_command " $arg"
|
||||
@@ -23,7 +23,7 @@ PKG_ARCH="any"
|
||||
PKG_LICENSE="MIT"
|
||||
PKG_SITE="http://www.gnu.org/software/ncurses/"
|
||||
PKG_URL="http://ftp.gnu.org/pub/gnu/ncurses/$PKG_NAME-$PKG_VERSION.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_DEPENDS_TARGET="toolchain zlib"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="devel"
|
||||
PKG_SHORTDESC="ncurses: The ncurses (new curses) library"
|
||||
|
||||
@@ -36,3 +36,7 @@ PKG_CONFIGURE_OPTS_TARGET="--disable-shared \
|
||||
--enable-static \
|
||||
--with-curses \
|
||||
--without-purify"
|
||||
|
||||
post_makeinstall_target() {
|
||||
rm -rf $INSTALL/usr/share/readline
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="Mesa"
|
||||
PKG_VERSION="10.3.2"
|
||||
PKG_VERSION="10.3.7"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="OSS"
|
||||
@@ -43,7 +43,7 @@ else
|
||||
MESA_GALLIUM_LLVM="--disable-gallium-llvm"
|
||||
fi
|
||||
|
||||
if [ "$VDPAU" = "yes" ]; then
|
||||
if [ "$VDPAU_SUPPORT" = "yes" ]; then
|
||||
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libvdpau"
|
||||
MESA_VDPAU="--enable-vdpau"
|
||||
else
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="bcm2835-driver"
|
||||
PKG_VERSION="5711461"
|
||||
PKG_VERSION="4a66b50"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="nonfree"
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
Fix CVE-2014-9029
|
||||
|
||||
Patch taken from https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2014-9029
|
||||
|
||||
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
|
||||
---
|
||||
|
||||
--- jasper-1.900.1.orig/src/libjasper/jpc/jpc_dec.c 2014-11-27 12:45:44.000000000 +0100
|
||||
+++ jasper-1.900.1.orig/src/libjasper/jpc/jpc_dec.c 2014-11-27 12:44:58.000000000 +0100
|
||||
@@ -1281,7 +1281,7 @@ static int jpc_dec_process_coc(jpc_dec_t
|
||||
jpc_coc_t *coc = &ms->parms.coc;
|
||||
jpc_dec_tile_t *tile;
|
||||
|
||||
- if (JAS_CAST(int, coc->compno) > dec->numcomps) {
|
||||
+ if (JAS_CAST(int, coc->compno) >= dec->numcomps) {
|
||||
jas_eprintf("invalid component number in COC marker segment\n");
|
||||
return -1;
|
||||
}
|
||||
@@ -1307,7 +1307,7 @@ static int jpc_dec_process_rgn(jpc_dec_t
|
||||
jpc_rgn_t *rgn = &ms->parms.rgn;
|
||||
jpc_dec_tile_t *tile;
|
||||
|
||||
- if (JAS_CAST(int, rgn->compno) > dec->numcomps) {
|
||||
+ if (JAS_CAST(int, rgn->compno) >= dec->numcomps) {
|
||||
jas_eprintf("invalid component number in RGN marker segment\n");
|
||||
return -1;
|
||||
}
|
||||
@@ -1356,7 +1356,7 @@ static int jpc_dec_process_qcc(jpc_dec_t
|
||||
jpc_qcc_t *qcc = &ms->parms.qcc;
|
||||
jpc_dec_tile_t *tile;
|
||||
|
||||
- if (JAS_CAST(int, qcc->compno) > dec->numcomps) {
|
||||
+ if (JAS_CAST(int, qcc->compno) >= dec->numcomps) {
|
||||
jas_eprintf("invalid component number in QCC marker segment\n");
|
||||
return -1;
|
||||
}
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="libdrm"
|
||||
PKG_VERSION="2.4.58"
|
||||
PKG_VERSION="2.4.59"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="libjpeg-turbo"
|
||||
PKG_VERSION="1.3.0"
|
||||
PKG_VERSION="1.4.0"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="libpng"
|
||||
PKG_VERSION="1.6.12"
|
||||
PKG_VERSION="1.6.16"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="OSS"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="llvm"
|
||||
PKG_VERSION="3.5.0"
|
||||
PKG_VERSION="3.5.1"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
# http://www.broadcom.com/support/802.11/linux_sta.php
|
||||
|
||||
PKG_NAME="bcm_sta"
|
||||
PKG_VERSION="6.20.155.1"
|
||||
PKG_VERSION="6.30.223.248"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="i386 x86_64"
|
||||
PKG_LICENSE="nonfree"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user