diff options
Diffstat (limited to 'community-staging')
-rw-r--r-- | community-staging/performous/PKGBUILD | 55 | ||||
-rw-r--r-- | community-staging/performous/boost-filesystem-v3.patch | 135 | ||||
-rw-r--r-- | community-staging/performous/ffmpeg-0.11.patch | 42 | ||||
-rw-r--r-- | community-staging/performous/png15.patch | 33 |
4 files changed, 265 insertions, 0 deletions
diff --git a/community-staging/performous/PKGBUILD b/community-staging/performous/PKGBUILD new file mode 100644 index 000000000..33ece8523 --- /dev/null +++ b/community-staging/performous/PKGBUILD @@ -0,0 +1,55 @@ +# $Id: PKGBUILD 72124 2012-06-08 22:02:52Z lcarlier $ +# Maintainer : Laurent Carlier <lordheavym@gmail.com> +# Contributor: Christoph Zeiler <archNOSPAM_at_moonblade.dot.org> + +pkgname=performous +pkgver=0.6.1 +pkgrel=14 +pkgdesc='A free game like "Singstar", "Rockband" or "Stepmania"' +arch=('i686' 'x86_64') +url="http://performous.org/" +license=('GPL') +depends=('boost-libs' 'imagemagick' 'glew' 'libxml++' 'portaudio' 'portmidi' 'opencv' 'librsvg') +#depends=('boost-libs>=1.48' 'sdl' 'jack' 'imagemagick' 'ffmpeg' 'glew>=1.7.0' 'libxml++' 'portaudio' 'portmidi' \ +# 'opencv' 'librsvg' 'libjpeg' 'libpng' 'cairo') +makedepends=('cmake' 'pkgconfig' 'help2man' 'boost>=1.48') +optdepends=('performous-freesongs: free songs for performous') +source=(http://sourceforge.net/projects/$pkgname/files/$pkgname/$pkgver/Performous-$pkgver-Source.tar.bz2 + boost-filesystem-v3.patch + ffmpeg-0.11.patch + png15.patch) +md5sums=('451a759de77984b5a699e91107fe52e2' + '42a8c825d80b0de16bd5752d2a80e585' + '07e52e926595d053155bbfb7168e308f' + '89157d5e21b0efd09fcbeee299d23c7e') + +build() { + cd ${srcdir}/Performous-${pkgver}-Source + + # fix to built against boost 1.46 and later, upstream (git) now support v3 + patch -Np1 -i ../boost-filesystem-v3.patch + # fix with ffmpeg-0.11 + patch -Np1 -i ../ffmpeg-0.11.patch + # fix for libpng 1.5 + patch -Np1 -i ../png15.patch + # fix glib2.0 building + # #error "Only <glib.h> can be included directly." + sed -i -e 's#/gconvert.h#.h#g' game/unicode.cc + + mkdir -p build + cd build + + # fix config loading with libxml++ + export LDFLAGS=${LDFLAGS/-Wl,--as-needed/} + + cmake -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr .. + + make +} + +package() { + cd ${srcdir}/Performous-${pkgver}-Source/build + + make DESTDIR="$pkgdir" install +} diff --git a/community-staging/performous/boost-filesystem-v3.patch b/community-staging/performous/boost-filesystem-v3.patch new file mode 100644 index 000000000..22dd07213 --- /dev/null +++ b/community-staging/performous/boost-filesystem-v3.patch @@ -0,0 +1,135 @@ +diff --git a/game/backgrounds.cc b/game/backgrounds.cc +index 7fd3cd0..cdedefb 100644 +--- a/game/backgrounds.cc ++++ b/game/backgrounds.cc +@@ -55,8 +55,13 @@ void Backgrounds::reload_internal(fs::path const& parent) { + for (fs::directory_iterator dirIt(parent), dirEnd; m_loading && dirIt != dirEnd; ++dirIt) { + fs::path p = dirIt->path(); + if (fs::is_directory(p)) { reload_internal(p); continue; } ++#if BOOST_FILESYSTEM_VERSION < 3 + std::string name = p.leaf(); // File basename + std::string path = p.directory_string(); // Path without filename ++#else ++ std::string name = p.filename().string(); // File basename ++ std::string path = p.string(); // Path without filename ++#endif + path.erase(path.size() - name.size()); + if (!regex_match(name.c_str(), match, expression)) continue; + { +diff --git a/game/cache.cc b/game/cache.cc +index 69974e2..0f1edd0 100644 +--- a/game/cache.cc ++++ b/game/cache.cc +@@ -9,7 +9,11 @@ namespace cache { + fs::path constructSVGCacheFileName(fs::path const& svgfilename, double factor){ + fs::path cache_filename; + std::string const lod = (boost::format("%.2f") % factor).str(); ++#if BOOST_FILESYSTEM_VERSION < 3 + std::string const cache_basename = svgfilename.filename() + ".cache_" + lod + ".png"; ++#else ++ std::string const cache_basename = svgfilename.filename().string() + ".cache_" + lod + ".png"; ++#endif + + if (isThemeResource(svgfilename)) { + std::string const theme_name = (config["game/theme"].s().empty() ? "default" : config["game/theme"].s()); +diff --git a/game/filemagic.hh b/game/filemagic.hh +index bf87ded..29e81fe 100644 +--- a/game/filemagic.hh ++++ b/game/filemagic.hh +@@ -71,7 +71,11 @@ namespace filemagic { + // For now, just check the extension an assume it's not lying. + + // Get file extension in lower case ++#if BOOST_FILESYSTEM_VERSION < 3 + std::string ext = filename.extension(); ++#else ++ std::string ext = filename.extension().string(); ++#endif + // somehow this does not convert the extension to lower case: + //std::for_each(ext.begin(), ext.end(), static_cast<int(*)(int)>(std::tolower)); + std::transform(ext.begin(), ext.end(), ext.begin(), ::tolower ); +diff --git a/game/fs.cc b/game/fs.cc +index e34a784..767a7ab 100644 +--- a/game/fs.cc ++++ b/game/fs.cc +@@ -128,7 +128,11 @@ std::string getThemePath(std::string const& filename) { + + bool isThemeResource(fs::path filename){ + try { ++#if BOOST_FILESYSTEM_VERSION < 3 + std::string themefile = getThemePath(filename.filename()); ++#else ++ std::string themefile = getThemePath(filename.filename().string()); ++#endif + return themefile == filename; + } catch (...) { return false; } + } +diff --git a/game/songparser-ini.cc b/game/songparser-ini.cc +index 38e163b..db15d79 100644 +--- a/game/songparser-ini.cc ++++ b/game/songparser-ini.cc +@@ -104,7 +104,11 @@ void SongParser::iniParseHeader() { + // Search the dir for the music files + for (boost::filesystem::directory_iterator dirIt(s.path), dirEnd; dirIt != dirEnd; ++dirIt) { + boost::filesystem::path p = dirIt->path(); ++#if BOOST_FILESYSTEM_VERSION < 3 + std::string name = p.leaf(); // File basename (notes.txt) ++#else ++ std::string name = p.filename().string(); // File basename (notes.txt) ++#endif + if (regex_match(name.c_str(), match, midifile)) { + s.midifilename = name; + } else if (regex_match(name.c_str(), match, audiofile_background)) { +diff --git a/game/songparser.cc b/game/songparser.cc +index 2b7b9b4..ac9f3f6 100644 +--- a/game/songparser.cc ++++ b/game/songparser.cc +@@ -100,7 +100,11 @@ SongParser::SongParser(Song& s): + + for (boost::filesystem::directory_iterator dirIt(s.path), dirEnd; dirIt != dirEnd; ++dirIt) { + boost::filesystem::path p = dirIt->path(); ++#if BOOST_FILESYSTEM_VERSION < 3 + std::string name = p.leaf(); // File basename ++#else ++ std::string name = p.filename().string(); // File basename ++#endif + if (m_song.cover.empty() && regex_match(name.c_str(), match, coverfile)) { + m_song.cover = name; + } else if (m_song.background.empty() && regex_match(name.c_str(), match, backgroundfile)) { +diff --git a/game/songs.cc b/game/songs.cc +index 62ab26d..afab383 100644 +--- a/game/songs.cc ++++ b/game/songs.cc +@@ -67,8 +67,13 @@ void Songs::reload_internal(fs::path const& parent) { + for (fs::directory_iterator dirIt(parent), dirEnd; m_loading && dirIt != dirEnd; ++dirIt) { + fs::path p = dirIt->path(); + if (fs::is_directory(p)) { reload_internal(p); continue; } ++#if BOOST_FILESYSTEM_VERSION < 3 + std::string name = p.leaf(); // File basename (notes.txt) + std::string path = p.directory_string(); // Path without filename ++#else ++ std::string name = p.filename().string(); // File basename (notes.txt) ++ std::string path = p.string(); // Path without filename ++#endif + path.erase(path.size() - name.size()); + if (!regex_match(name.c_str(), match, expression)) continue; + try { +diff --git a/tools/ss_helpers.hh b/tools/ss_helpers.hh +index 58e19dc..8895d94 100644 +--- a/tools/ss_helpers.hh ++++ b/tools/ss_helpers.hh +@@ -10,7 +10,11 @@ extern "C" void xmlLogger(void* logger, char const* msg, ...) { if (logger) *(st + void enableXMLLogger(std::ostream& os = std::cerr) { xmlSetGenericErrorFunc(&os, xmlLogger); } + void disableXMLLogger() { xmlSetGenericErrorFunc(NULL, xmlLogger); } + ++#if BOOST_FILESYSTEM_VERSION < 3 + std::string filename(boost::filesystem::path const& p) { return *--p.end(); } ++#else ++std::string filename(boost::filesystem::path const& p) { return p.filename().string(); } ++#endif + + /** Fix Singstar's b0rked XML **/ + std::string xmlFix(std::vector<char> const& data) { +-- +1.7.4.1 + diff --git a/community-staging/performous/ffmpeg-0.11.patch b/community-staging/performous/ffmpeg-0.11.patch new file mode 100644 index 000000000..2962123ed --- /dev/null +++ b/community-staging/performous/ffmpeg-0.11.patch @@ -0,0 +1,42 @@ +diff -ru Performous-0.6.1-Source/game/ffmpeg.cc Performous-0.6.1a-Source/game/ffmpeg.cc +--- Performous-0.6.1-Source/game/ffmpeg.cc 2010-10-31 16:05:43.000000000 +0000 ++++ Performous-0.6.1a-Source/game/ffmpeg.cc 2012-06-08 21:40:10.876636789 +0000 +@@ -47,11 +47,17 @@ + return d >= 0.0 ? d : getInf(); + } + ++// FFMPEG has fluctuating API ++#if LIBAVCODEC_VERSION_INT < ((52<<16)+(64<<8)+0) ++#define AVMEDIA_TYPE_VIDEO CODEC_TYPE_VIDEO ++#define AVMEDIA_TYPE_AUDIO CODEC_TYPE_AUDIO ++#endif ++ + void FFmpeg::open() { + boost::mutex::scoped_lock l(s_avcodec_mutex); + av_register_all(); + av_log_set_level(AV_LOG_ERROR); +- if (av_open_input_file(&pFormatCtx, m_filename.c_str(), NULL, 0, NULL)) throw std::runtime_error("Cannot open input file"); ++ if (avformat_open_input(&pFormatCtx, m_filename.c_str(), NULL, NULL)) throw std::runtime_error("Cannot open input file"); + if (av_find_stream_info(pFormatCtx) < 0) throw std::runtime_error("Cannot find stream information"); + pFormatCtx->flags |= AVFMT_FLAG_GENPTS; + videoStream = -1; +@@ -60,8 +66,8 @@ + for (unsigned int i=0; i<pFormatCtx->nb_streams; i++) { + AVCodecContext* cc = pFormatCtx->streams[i]->codec; + cc->workaround_bugs = FF_BUG_AUTODETECT; +- if (videoStream == -1 && cc->codec_type==CODEC_TYPE_VIDEO) videoStream = i; +- if (audioStream == -1 && cc->codec_type==CODEC_TYPE_AUDIO) audioStream = i; ++ if (videoStream == -1 && cc->codec_type==AVMEDIA_TYPE_VIDEO) videoStream = i; ++ if (audioStream == -1 && cc->codec_type==AVMEDIA_TYPE_AUDIO) audioStream = i; + } + if (videoStream == -1 && decodeVideo) throw std::runtime_error("No video stream found"); + if (audioStream == -1 && decodeAudio) throw std::runtime_error("No audio stream found"); +@@ -92,7 +98,7 @@ + pAudioCodecCtx = cc; + #if LIBAVCODEC_VERSION_INT > ((52<<16)+(12<<8)+0) + pResampleCtx = av_audio_resample_init(AUDIO_CHANNELS, cc->channels, m_rate, cc->sample_rate, +- SAMPLE_FMT_S16, SAMPLE_FMT_S16, 16, 10, 0, 0.8); ++ AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_S16, 16, 10, 0, 0.8); + #else + pResampleCtx = audio_resample_init(AUDIO_CHANNELS, cc->channels, m_rate, cc->sample_rate); + #endif diff --git a/community-staging/performous/png15.patch b/community-staging/performous/png15.patch new file mode 100644 index 000000000..b6fb8fb14 --- /dev/null +++ b/community-staging/performous/png15.patch @@ -0,0 +1,33 @@ +diff -ur Performous-0.6.1-Source/cmake/Modules/FindPng.cmake Performous-0.6.1a-Source/cmake/Modules/FindPng.cmake +--- Performous-0.6.1-Source/cmake/Modules/FindPng.cmake 2010-10-31 17:05:44.000000000 +0100 ++++ Performous-0.6.1a-Source/cmake/Modules/FindPng.cmake 2012-01-29 01:07:56.339648832 +0100 +@@ -10,7 +10,7 @@ + + include(LibFindMacros) + +-libfind_pkg_check_modules(Png_PKGCONF Png) ++libfind_pkg_check_modules(Png_PKGCONF libpng) + + find_path(Png_INCLUDE_DIR + NAMES pngconf.h +@@ -18,7 +18,7 @@ + ) + + find_library(Png_LIBRARY +- NAMES png png12 png14 ++ NAMES png png12 png14 png15 + PATHS ${Png_PKGCONF_LIBRARY_DIRS} + ) + +diff -ur Performous-0.6.1-Source/game/image.hh Performous-0.6.1a-Source/game/image.hh +--- Performous-0.6.1-Source/game/image.hh 2010-10-31 17:05:43.000000000 +0100 ++++ Performous-0.6.1a-Source/game/image.hh 2012-01-29 01:44:16.050575186 +0100 +@@ -26,7 +26,7 @@ + } + void loadPNG_internal(png_structp pngPtr, png_infop infoPtr, std::ifstream& file, std::vector<unsigned char>& image, std::vector<png_bytep>& rows, unsigned& w, unsigned& h) { + if (setjmp(png_jmpbuf(pngPtr))) throw std::runtime_error("Reading PNG failed"); +- png_set_read_fn(pngPtr,(voidp)&file, readPngHelper); ++ png_set_read_fn(pngPtr, &file, readPngHelper); + png_read_info(pngPtr, infoPtr); + png_set_expand(pngPtr); // Expand everything to RGB(A) + png_set_strip_16(pngPtr); // Strip everything down to 8 bit/component |