Commit f3559538 authored by Manuel Tortosa's avatar Manuel Tortosa

Remove xbmc

parent f0eae860
2010-04-10 BlackEagle <ike DOT devolder AT gmail DOT com>
* 9.11-15 :
Made it back compliant with FHS ( thx pierre for pointing that out )
namcap checked and modified to fit its needs as far as it was possible
2009-03-07 [vEX] <niechift.dot.vex.at.gmail.dot.com>
* 8.10-10 :
Try and fix some autoconf issues (thanks Gentoo ebuild).
2009-02-08 [vEX] <niechift.dot.vex.at.gmail.dot.com>
* 8.10-9 :
Replace some libtool 'ltmain.sh' scripts with the one from libtool
installed with Arch.
Make sure XBMCTex isn't linked to OpenGL libraries or it will segfault
on systems using the nvidia driver.
2009-01-30 [vEX] <niechift.dot.vex.at.gmail.dot.com>
* 8.10-8 :
Fix some include's so that gcc 4.3.x is happy, shouldn't complain about
undefined '::realloc' anymore.
Remove Mac OS X specific files.
2009-01-25 [vEX] <niechift.dot.vex.at.gmail.dot.com>
* 8.10-7 :
Moved libcdio, pmount, smbclient and unrar to optdepends.
Removed unneeded dependency on sdl_gfx.
Removed dependency on libpng as sdl_image depends on it.
2008-12-14 [vEX] <niechift.dot.vex.at.gmail.dot.com>
* 8.10-6 :
Added libpng to dependency list.
Added gawk to dependency list.
Removed '--disable-mms' and '--enable-halmount' configure flags as they
are not mentioned as supported in the configure script.
2008-12-06 [vEX] <niechift.dot.vex.at.gmail.dot.com>
* 8.10-5 :
Added libmad to the dependency list.
Streamripper 1.64.0+ does not include tre anymore, removed streamripper
and added tre instead.
Removed subversion from makedepends.
2008-12-06 [vEX] <niechift.dot.vex.at.gmail.dot.com>
* 8.10-4 :
Fix permissions for some more scripts, ffmpeg/texi2doc.pl should not
fail any longer.
2008-12-05 [vEX] <niechift.dot.vex.at.gmail.dot.com>
* 8.10-3 :
Added lirc to the optdepends array.
2008-11-26 [vEX] <niechift.dot.vex.at.gmail.dot.com>
* 8.10-2 :
Added install file which informs users that a display depth of at
least 24-bit is required.
2008-11-17 [vEX] <niechift.dot.vex.at.gmail.dot.com>
* 8.10-1 :
Initial package, based on previous work by Zeqadious.
#!/bin/bash
RETVAL=0
if [[ -z $(glxinfo | grep "direct rendering.*Yes" | uniq) ]]; then
echo "XBMC needs hardware accelerated OpenGL rendering."
echo "Install an appropriate graphics driver."
echo
echo "Please consult XBMC Wiki for supported hardware"
echo "http://xbmc.org/wiki/?title=Supported_hardware"
echo
RETVAL=1
fi
if [[ -z $(xdpyinfo | grep "depth of root.*24" | uniq) ]]; then
echo "XBMC cannot run unless the"
echo "screen color depth is atleast 24 bit."
echo
echo "Please reconfigure your screen."
RETVAL=1
fi
exit ${RETVAL}
#
# Chakra Packages for Chakra, part of chakra-project.org
#
# maintainer (i686): Phil Miller <philm[at]chakra-project[dog]org>
# maintainer (x86_64): Manuel Tortosa <manutortosa[at]chakra-project[dot]org>
# include global config
source ../_buildscripts/${current_repo}-${_arch}-cfg.conf
# python dependency or not
_ext_python="disable"
pkgname=xbmc
pkgver=9.11
pkgrel=1
pkgdesc="XBMC Media Center"
arch=('i686' 'x86_64')
url="http://xbmc.org"
license=('GPL' 'custom')
depends=( 'bzip2' 'curl' 'enca' 'faac' 'faad2' 'fontconfig' 'fribidi'
'glew' 'hal' 'jasper' 'libcdio' 'libgl' 'libmad' 'libmms'
'libmpeg2' 'libmysqlclient' 'libsamplerate' 'libxinerama'
'libxrandr' 'libxtst' 'lzo2' 'sdl_image' 'sdl_mixer'
'smbclient' 'wavpack' )
if [ "$_ext_python" != "disable" ]; then
depends=( '${depends[@]}' 'python' )
fi
makedepends=('boost' 'cmake' 'gperf' 'nasm' 'libvdpau' 'unzip' 'zip')
optdepends=('lirc: remote controller support'
'unrar: access compressed files without unpacking them'
'devicekit-power: used to trigger suspend functionality')
install=("${pkgname}.install")
options=(makeflags)
source=("http://downloads.sourceforge.net/project/xbmc/XBMC%20Source%20Code/Camelot%20-%20$pkgver/xbmc-${pkgver/_/-}.tar.gz"
"use_cdio_system_headers_on_non_win32.patch"
"FEH.sh"
"libpng14.patch"
"xbmc-9.11-wavpack.patch")
md5sums=('9a68ac1e2f44a54cc3803fcdb1265767'
'7b7403cdde791330b5ab70697d2054f2'
'c3e2ab79b9965f1a4a048275d5f222c4'
'3f93cfc8aa21723ca3246dc5f9122177'
'062c5f61cd3bb27de66c861fd2c79de1')
build() {
# fix build
export MAKEFLAGS="-j2"
cd "${srcdir}/xbmc-${pkgver/_/-}"
# dash the next two lines if U use intel cpu for compiling
msg "Applying patch for old SSE"
patch xbmc/lib/libsquish/Makefile.in < ${srcdir}/../sse1.patch
msg "fix libcdio faults"
patch -N -p1 -i ${srcdir}/use_cdio_system_headers_on_non_win32.patch || return 1
msg "fix libpng 1.4 problems"
patch -Np1 -i ${srcdir}/libpng14.patch || return 1
msg "fix wavpack builderror"
patch -Np1 -i ${srcdir}/xbmc-9.11-wavpack.patch || return 1
msg "fix lsb_release dependency"
sed -i -e 's:/usr/bin/lsb_release -d:cat /etc/chakra-release:' xbmc/utils/SystemInfo.cpp || return 1
msg "fix faulty declaration in DllLaoder wrapper"
sed -i 's: ftell64: dll_ftell64:' xbmc/cores/DllLoader/exports/wrapper.c || return 1
msg "fix libjpeg7 delays"
sed -i 's|cinfo.scale_denom = GetJpegScale();|cinfo.scale_denom = GetJpegScale(); cinfo.scale_num = 1;|' xbmc/lib/cximage-6.0/CxImage/ximajpg.cpp || return 1
if [ $NOEXTRACT -ne 1 ]; then
# Chakralinux Branding by SVN_REV
export SVN_REV="-CHAKRA"
./bootstrap
./configure --prefix=/usr \
--enable-vdpau \
--disable-pulse \
--disable-avahi \
--disable-external-liba52 \
--disable-external-libdts \
--enable-external-libmpeg2 \
--enable-external-libogg \
--enable-external-libwavpack \
--disable-external-libass \
--disable-external-ffmpeg \
--${_ext_python}-external-python \
--disable-debug || return 1
fi
make || return 1
}
package() {
cd "${srcdir}/xbmc-${pkgver/_/-}"
make prefix=${pkgdir}/usr install || return 1
# Fix the shell script
# sed -i '3iexport SDL_AUDIODRIVER=alsa' ${pkgdir}/usr/bin/xbmc
msg "bin/xbmc mods for chakra package"
sed -i -e 's/which lsb_release &> \/dev\/null/\[ -f \/etc\/chakra-release ]/g' ${pkgdir}/usr/bin/xbmc || return 1
sed -i -e "s/lsb_release -a 2> \/dev\/null | sed -e 's\/\^\/ \/'/cat \/etc\/chakra-release/g" ${pkgdir}/usr/bin/xbmc || return 1
sed -i -e 's/\/usr\/share\/xbmc/\/opt\/xbmc/' ${pkgdir}/usr/bin/xbmc || return 1
msg "if disabled external python install bash script and fix startup script"
if [ "$_ext_python" = "disable" ]; then
install -Dm755 ${srcdir}/FEH.sh \
${pkgdir}/usr/share/xbmc/FEH.sh || return 1
sed -i -e "s/python \/opt\/xbmc\/FEH.py \"\$@\"/\/opt\/xbmc\/FEH.sh/g" ${pkgdir}/usr/bin/xbmc || return 1
fi
# License(s)
msg "copy licences"
install -dm755 ${pkgdir}/usr/share/licenses/${pkgname}
for licensef in LICENSE.GPL README.linux copying.txt; do
mv ${pkgdir}/usr/share/xbmc/${licensef} \
${pkgdir}/usr/share/licenses/${pkgname} || return 1
done
# cleanup some stuff
msg "cleanup unneeded dirs"
rm -r ${pkgdir}/usr/share/xsessions
# fix .desktop
msg "fix .desktop"
sed -i "s#Exec=xbmc#Exec=/usr/bin/xbmc#" $pkgdir/usr/share/applications/xbmc.desktop || return 1
msg "Move Faulty xbmc dir to /opt"
mkdir $pkgdir/opt/
mv $pkgdir/usr/share/xbmc $pkgdir/opt
msg "Remove old PM3.HD skin"
rm -r ${pkgdir}/opt/xbmc/skin/PM3.HD || return 1
# strip
msg "strip binaries"
find $pkgdir -type f -exec strip {} \; >/dev/null 2>/dev/null
}
diff -Nur xbmc-9.11.orig/xbmc/lib/cximage-6.0/CxImage/ximapng.cpp xbmc-9.11/xbmc/lib/cximage-6.0/CxImage/ximapng.cpp
--- xbmc-9.11.orig/xbmc/lib/cximage-6.0/CxImage/ximapng.cpp 2008-07-18 23:40:53.000000000 +0300
+++ xbmc-9.11/xbmc/lib/cximage-6.0/CxImage/ximapng.cpp 2010-01-20 21:55:11.000000000 +0200
@@ -142,9 +142,9 @@
if (info_ptr->num_trans!=0){ //palette transparency
if (info_ptr->num_trans==1){
if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE){
- info.nBkgndIndex = info_ptr->trans_values.index;
+ info.nBkgndIndex = info_ptr->trans_color.index;
} else{
- info.nBkgndIndex = info_ptr->trans_values.gray>>nshift;
+ info.nBkgndIndex = info_ptr->trans_color.gray>>nshift;
}
}
if (info_ptr->num_trans>1){
@@ -152,7 +152,7 @@
if (pal){
DWORD ip;
for (ip=0;ip<min(head.biClrUsed,(unsigned long)info_ptr->num_trans);ip++)
- pal[ip].rgbReserved=info_ptr->trans[ip];
+ pal[ip].rgbReserved=info_ptr->trans_alpha[ip];
for (ip=info_ptr->num_trans;ip<head.biClrUsed;ip++){
pal[ip].rgbReserved=255;
}
@@ -166,9 +166,9 @@
int num_trans;
png_color_16 *image_background;
if (png_get_tRNS(png_ptr, info_ptr, &trans, &num_trans, &image_background)){
- info.nBkgndColor.rgbRed = (BYTE)(info_ptr->trans_values.red>>nshift);
- info.nBkgndColor.rgbGreen = (BYTE)(info_ptr->trans_values.green>>nshift);
- info.nBkgndColor.rgbBlue = (BYTE)(info_ptr->trans_values.blue>>nshift);
+ info.nBkgndColor.rgbRed = (BYTE)(info_ptr->trans_color.red>>nshift);
+ info.nBkgndColor.rgbGreen = (BYTE)(info_ptr->trans_color.green>>nshift);
+ info.nBkgndColor.rgbBlue = (BYTE)(info_ptr->trans_color.blue>>nshift);
info.nBkgndColor.rgbReserved = 0;
info.nBkgndIndex = 0;
}
@@ -417,12 +417,12 @@
if (info.nBkgndIndex >= 0){
info_ptr->num_trans = 1;
info_ptr->valid |= PNG_INFO_tRNS;
- info_ptr->trans = trans;
- info_ptr->trans_values.index = (BYTE)info.nBkgndIndex;
- info_ptr->trans_values.red = tc.rgbRed;
- info_ptr->trans_values.green = tc.rgbGreen;
- info_ptr->trans_values.blue = tc.rgbBlue;
- info_ptr->trans_values.gray = info_ptr->trans_values.index;
+ info_ptr->trans_alpha = trans;
+ info_ptr->trans_color.index = (BYTE)info.nBkgndIndex;
+ info_ptr->trans_color.red = tc.rgbRed;
+ info_ptr->trans_color.green = tc.rgbGreen;
+ info_ptr->trans_color.blue = tc.rgbBlue;
+ info_ptr->trans_color.gray = info_ptr->trans_color.index;
// the transparency indexes start from 0 for non grayscale palette
if (!bGrayScale && head.biClrUsed && info.nBkgndIndex)
@@ -443,7 +443,7 @@
trans[ip]=GetPaletteColor((BYTE)ip).rgbReserved;
info_ptr->num_trans = (WORD)nc;
info_ptr->valid |= PNG_INFO_tRNS;
- info_ptr->trans = trans;
+ info_ptr->trans_alpha = trans;
}
// copy the palette colors
diff -Nur xbmc-9.11.orig/xbmc/screensavers/rsxs-0.9/src/pngimage.cc xbmc-9.11/xbmc/screensavers/rsxs-0.9/src/pngimage.cc
--- xbmc-9.11.orig/xbmc/screensavers/rsxs-0.9/src/pngimage.cc 2008-07-30 23:35:38.000000000 +0300
+++ xbmc-9.11/xbmc/screensavers/rsxs-0.9/src/pngimage.cc 2010-01-20 22:21:01.000000000 +0200
@@ -65,7 +65,7 @@
(png_get_color_type(png, pngInfo) == PNG_COLOR_TYPE_GRAY) &&
png_get_bit_depth(png, pngInfo) < 8
)
- png_set_gray_1_2_4_to_8(png);
+ png_set_expand_gray_1_2_4_to_8(png);
if (png_get_valid(png, pngInfo, PNG_INFO_tRNS))
png_set_tRNS_to_alpha(png);
if (fullColor)
diff -Nur xbmc-9.11.orig/xbmc/visualizations/Goom/goom2k4-0/src/pngload.c xbmc-9.11/xbmc/visualizations/Goom/goom2k4-0/src/pngload.c
--- xbmc-9.11.orig/xbmc/visualizations/Goom/goom2k4-0/src/pngload.c 2008-08-04 05:05:51.000000000 +0300
+++ xbmc-9.11/xbmc/visualizations/Goom/goom2k4-0/src/pngload.c 2010-01-20 22:16:23.000000000 +0200
@@ -94,7 +94,7 @@
png_set_palette_to_rgb (png_ptr);
if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8)
- png_set_gray_1_2_4_to_8 (png_ptr);
+ png_set_expand_gray_1_2_4_to_8 (png_ptr);
else if (color_type == PNG_COLOR_TYPE_GRAY ||
color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
png_set_gray_to_rgb (png_ptr);
8c8
< CXXFLAGS+=-I. -DSQUISH_USE_SSE=2 -msse2
---
> CXXFLAGS+=-I. -DSQUISH_USE_SSE=1 -msse
diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp
index 9097519..9b6418d 100644
--- a/xbmc/Application.cpp
+++ b/xbmc/Application.cpp
@@ -236,7 +236,11 @@
#endif
#ifdef HAS_DVD_DRIVE
+#ifdef _WIN32
#include "lib/libcdio/logging.h"
+#else
+#include <cdio/logging.h>
+#endif
#endif
#ifdef HAS_HAL
diff --git a/xbmc/FileSystem/Makefile b/xbmc/FileSystem/Makefile
index 782d57a..1e524ed 100644
--- a/xbmc/FileSystem/Makefile
+++ b/xbmc/FileSystem/Makefile
@@ -1,5 +1,4 @@
-INCLUDES=-I. -I../ -I../cores -I../linux -I../../guilib -I../lib/UnrarXLib -I../utils -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
-INCLUDES+=-I../lib/libcdio/libcdio/include
+INCLUDES=-I. -I../ -I../cores -I../linux -I../../guilib -I../lib/UnrarXLib -I../utils -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I../lib
CXXFLAGS+=-D__STDC_FORMAT_MACROS \
diff --git a/xbmc/FileSystem/cdioSupport.cpp b/xbmc/FileSystem/cdioSupport.cpp
index 00e5fdd..21a0b67 100644
--- a/xbmc/FileSystem/cdioSupport.cpp
+++ b/xbmc/FileSystem/cdioSupport.cpp
@@ -26,7 +26,7 @@
#include "cdioSupport.h"
#include "utils/SingleLock.h"
#include "utils/log.h"
-#ifndef _LINUX
+#ifdef _WIN32
#include "lib/libcdio/logging.h"
#include "lib/libcdio/util.h"
#include "lib/libcdio/mmc.h"
diff --git a/xbmc/FileSystem/iso9660.cpp b/xbmc/FileSystem/iso9660.cpp
index 6e1633f..58fbc50 100644
--- a/xbmc/FileSystem/iso9660.cpp
+++ b/xbmc/FileSystem/iso9660.cpp
@@ -44,7 +44,7 @@ ISO9660
#include "utils/CharsetConverter.h"
#include "DetectDVDType.h" // for MODE2_DATA_SIZE etc.
-#ifdef _LINUX
+#ifndef _WIN32
#include <cdio/bytesex.h>
#else
#include "lib/libcdio/bytesex.h" // for from_723 & from_733
diff --git a/xbmc/Makefile b/xbmc/Makefile
index abfbdcb..f55381a 100644
--- a/xbmc/Makefile
+++ b/xbmc/Makefile
@@ -8,8 +8,6 @@ INCLUDES+=-Ilib/libUPnP/Platinum/Source/Core \
-Ilib/libUPnP/Neptune/Source/System/Posix \
-Ilib/libUPnP/Neptune/Source/Core
-INCLUDES+=-Ilib/libcdio/libcdio/include
-
SRCS=Application.cpp \
CueDocument.cpp \
GUISettings.cpp \
diff --git a/xbmc/cdrip/CDDAReader.cpp b/xbmc/cdrip/CDDAReader.cpp
index c8b37b2..e3e9c0b 100644
--- a/xbmc/cdrip/CDDAReader.cpp
+++ b/xbmc/cdrip/CDDAReader.cpp
@@ -24,7 +24,11 @@
#ifdef HAS_CDDA_RIPPER
#include "CDDAReader.h"
+#ifdef _WIN32
#include "lib/libcdio/cdio.h"
+#else
+#include <cdio/cdio.h>
+#endif
#include "utils/log.h"
#define SECTOR_COUNT 52
diff --git a/xbmc/cores/paplayer/AC3CDDACodec.cpp b/xbmc/cores/paplayer/AC3CDDACodec.cpp
index 20cded7..f2a077a 100644
--- a/xbmc/cores/paplayer/AC3CDDACodec.cpp
+++ b/xbmc/cores/paplayer/AC3CDDACodec.cpp
@@ -22,7 +22,11 @@
#include "system.h"
#include "AC3CDDACodec.h"
#ifdef HAS_AC3_CDDA_CODEC
+#ifdef _WIN32
#include "lib/libcdio/sector.h"
+#else
+#include <cdio/sector.h>
+#endif
AC3CDDACodec::AC3CDDACodec() : AC3Codec()
{
diff --git a/xbmc/cores/paplayer/CDDAcodec.cpp b/xbmc/cores/paplayer/CDDAcodec.cpp
index ca8f1be..42460dc 100644
--- a/xbmc/cores/paplayer/CDDAcodec.cpp
+++ b/xbmc/cores/paplayer/CDDAcodec.cpp
@@ -20,7 +20,11 @@
*/
#include "CDDAcodec.h"
+#ifdef _WIN32
#include "lib/libcdio/sector.h"
+#else
+#include <cdio/sector.h>
+#endif
#define SECTOR_COUNT 55 // max. sectors that can be read at once
#define MAX_BUFFER_SIZE 2*SECTOR_COUNT*CDIO_CD_FRAMESIZE_RAW
diff --git a/xbmc/cores/paplayer/DTSCDDACodec.cpp b/xbmc/cores/paplayer/DTSCDDACodec.cpp
index e64cc2e..9bc46c6 100644
--- a/xbmc/cores/paplayer/DTSCDDACodec.cpp
+++ b/xbmc/cores/paplayer/DTSCDDACodec.cpp
@@ -22,7 +22,11 @@
#include "system.h"
#include "DTSCDDACodec.h"
#ifdef HAS_DTS_CODEC
+#ifdef _WIN32
#include "lib/libcdio/sector.h"
+#else
+#include <cdio/sector.h>
+#endif
DTSCDDACodec::DTSCDDACodec() : DTSCodec()
{
fix from upstream trunk
http://xbmc.org/trac/ticket/8185
Index: trunk/xbmc/cores/paplayer/DllWAVPack.h
===================================================================
--- trunk/xbmc/cores/paplayer/DllWAVPack.h (revision 22927)
+++ trunk/xbmc/cores/paplayer/DllWAVPack.h (revision 25321)
@@ -58,7 +58,7 @@
virtual int WavpackGetReducedChannels (WavpackContext *wpc)=0;
virtual int WavpackGetFloatNormExp (WavpackContext *wpc)=0;
- virtual int WavpackGetMD5Sum (WavpackContext *wpc, uchar data [16])=0;
+ virtual int WavpackGetMD5Sum (WavpackContext *wpc, unsigned char data [16])=0;
virtual uint32_t WavpackGetWrapperBytes (WavpackContext *wpc)=0;
- virtual uchar *WavpackGetWrapperData (WavpackContext *wpc)=0;
+ virtual unsigned char *WavpackGetWrapperData (WavpackContext *wpc)=0;
virtual void WavpackFreeWrapper (WavpackContext *wpc)=0;
virtual void WavpackSeekTrailingWrapper (WavpackContext *wpc)=0;
@@ -77,5 +77,5 @@
virtual int WavpackSetConfiguration (WavpackContext *wpc, WavpackConfig *config, uint32_t total_samples)=0;
virtual int WavpackAddWrapper (WavpackContext *wpc, void *data, uint32_t bcount)=0;
- virtual int WavpackStoreMD5Sum (WavpackContext *wpc, uchar data [16])=0;
+ virtual int WavpackStoreMD5Sum (WavpackContext *wpc, unsigned char data [16])=0;
virtual int WavpackPackInit (WavpackContext *wpc)=0;
virtual int WavpackPackSamples (WavpackContext *wpc, int32_t *sample_buffer, uint32_t sample_count)=0;
@@ -133,9 +133,9 @@
virtual int WavpackGetFloatNormExp (WavpackContext *wpc)
{ return ::WavpackGetFloatNormExp (wpc); }
- virtual int WavpackGetMD5Sum (WavpackContext *wpc, uchar data [16])
+ virtual int WavpackGetMD5Sum (WavpackContext *wpc, unsigned char data [16])
{ return ::WavpackGetMD5Sum (wpc, data); }
virtual uint32_t WavpackGetWrapperBytes (WavpackContext *wpc)
{ return ::WavpackGetWrapperBytes (wpc); }
- virtual uchar *WavpackGetWrapperData (WavpackContext *wpc)
+ virtual unsigned char *WavpackGetWrapperData (WavpackContext *wpc)
{ return ::WavpackGetWrapperData (wpc); }
virtual void WavpackFreeWrapper (WavpackContext *wpc)
@@ -171,5 +171,5 @@
virtual int WavpackAddWrapper (WavpackContext *wpc, void *data, uint32_t bcount)
{ return ::WavpackAddWrapper (wpc, data, bcount); }
- virtual int WavpackStoreMD5Sum (WavpackContext *wpc, uchar data [16])
+ virtual int WavpackStoreMD5Sum (WavpackContext *wpc, unsigned char data [16])
{ return ::WavpackStoreMD5Sum (wpc, data); }
virtual int WavpackPackInit (WavpackContext *wpc)
post_install() {
echo ">> If XBMC won't start, but just segfaults, double check your X.Org config"
echo ">> so that your display depth is at least 24-bit. Eg: change "
echo ">> \"DefaultDepth 16\" under the \"Screen\" section so it says 24 instead"
echo ">> of 16."
echo " "
echo ">> PM3.HD skin got removed"
echo ">> xbmc basedir is now /opt/xbmc !!!"
echo ">> keep above in mind for your skins"
/bin/true
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment