stepmania: fix build with gcc 12, ship ffmpeg 2.1.3 with distfiles

If ffmpeg with specific version is not present in the work source
directory, cmake attempts to clone its repository with git and
check out version 2.1.3. This approach presents two issues:

1. It can no longer be cloned using git:// for github (see
https://github.com/stepmania/stepmania/pull/2200) which results in
connection timeout and build failure as the result.

2. Downloaded tarball is erased after successful build since it is
considered to be part of the source code.
Its retrieval and storage for future use should be done by xbps-src.
This commit is contained in:
Krul Ceter 2022-11-26 19:44:10 +03:00 committed by Michal Vasilek
parent 2b44e7a165
commit 8078afbed4
3 changed files with 85 additions and 5 deletions

View file

@ -0,0 +1,70 @@
Backported from
https://github.com/stepmania/stepmania/commit/8ab7c7fab937acc684392b909b6b30b47d9a8c7b
--- a/src/NoteData.h
+++ b/src/NoteData.h
@@ -375,7 +375,13 @@ public:
/** @brief Allow a quick way to swap notedata. */
namespace std
{
- template<> inline void swap<NoteData>( NoteData &nd1, NoteData &nd2 ) { nd1.swap( nd2 ); }
+ template<> inline void swap<NoteData>( NoteData &nd1, NoteData &nd2 )
+#if !defined(_MSC_VER)
+ noexcept(is_nothrow_move_constructible<NoteData>::value && is_nothrow_move_assignable<NoteData>::value)
+#endif
+ {
+ nd1.swap( nd2 );
+ }
}
#endif
--- a/src/arch/ArchHooks/ArchHooks.h
+++ b/src/arch/ArchHooks/ArchHooks.h
@@ -1,6 +1,8 @@
#ifndef ARCH_HOOKS_H
#define ARCH_HOOKS_H
+#include <ctime>
+
struct lua_State;
class ArchHooks
{
--- a/src/archutils/Unix/AssertionHandler.cpp
+++ b/src/archutils/Unix/AssertionHandler.cpp
@@ -46,18 +46,28 @@ extern "C" void __assert_perror_fail( int errnum, const char *file, unsigned int
/* Catch unhandled C++ exceptions. Note that this works in g++ even with -fno-exceptions, in
* which case it'll be called if any exceptions are thrown at all. */
-#include <cxxabi.h>
void UnexpectedExceptionHandler()
{
- type_info *pException = abi::__cxa_current_exception_type();
- char const *pName = pException->name();
- int iStatus = -1;
- char *pDem = abi::__cxa_demangle( pName, 0, 0, &iStatus );
-
- const RString error = ssprintf("Unhandled exception: %s", iStatus? pName:pDem);
+ std::exception_ptr exptr = std::current_exception();
+ try
+ {
+ std::rethrow_exception(exptr);
+ }
+ catch (std::exception &ex)
+ {
+#if defined(CRASH_HANDLER)
+ const RString error = ssprintf("Unhandled exception: %s", ex.what());
+ sm_crash( error );
+#endif
+ }
+ // TODO: Don't throw anything not subclassing std::exception
+ catch(...)
+ {
#if defined(CRASH_HANDLER)
- sm_crash( error );
+ const RString error = ssprintf("Unknown exception.");
+ sm_crash( error );
#endif
+ }
}
void InstallExceptionHandler()

View file

@ -1,19 +1,25 @@
# Template file for 'stepmania' # Template file for 'stepmania'
pkgname=stepmania pkgname=stepmania
version=5.0.12 version=5.0.12
revision=3 revision=4
# see CMake/SetupFfmpeg.cmake in the source code
_ffmpeg_ver=2.1.3
build_wrksrc="${pkgname}-${version}"
build_style=cmake build_style=cmake
make_cmd=make make_cmd=make
cmake_builddir="Build" cmake_builddir="Build"
hostmakedepends="nasm yasm pkg-config git" hostmakedepends="nasm yasm pkg-config"
makedepends="libmad-devel libvorbis-devel pcre-devel libjpeg-turbo-devel makedepends="libmad-devel libvorbis-devel pcre-devel libjpeg-turbo-devel
alsa-lib-devel libXrandr-devel libva-devel glew-devel" alsa-lib-devel libXrandr-devel libva-devel glew-devel"
short_desc="Advanced rhythm game" short_desc="Advanced rhythm game"
maintainer="Michael Aldridge <maldridge@voidlinux.org>" maintainer="Michael Aldridge <maldridge@voidlinux.org>"
license="MIT" license="MIT"
homepage="http://www.stepmania.com/" homepage="http://www.stepmania.com/"
distfiles="https://github.com/stepmania/stepmania/archive/v${version}.tar.gz" distfiles="https://github.com/stepmania/stepmania/archive/v${version}.tar.gz
checksum=df79bcadd69d4ed60cf560d45386ec275181343495ffd744c3ff8f73c83d4755 https://github.com/FFmpeg/FFmpeg/archive/n${_ffmpeg_ver}.tar.gz"
checksum="df79bcadd69d4ed60cf560d45386ec275181343495ffd744c3ff8f73c83d4755
cfafef9c9fb2581ac234fc11da97c677e5a911db4e16b341ab724b7e6aa03b62"
patch_args="-Np1 --directory=${build_wrksrc}"
# Upstream has stated that only x86 hardware can meed the performance # Upstream has stated that only x86 hardware can meed the performance
# constraints and that musl is not supported due to interop issues # constraints and that musl is not supported due to interop issues
@ -22,8 +28,12 @@ archs="i686 x86_64"
export CMAKE_GENERATOR="Unix Makefiles" export CMAKE_GENERATOR="Unix Makefiles"
post_extract() {
mv FFmpeg-n${_ffmpeg_ver} ${build_wrksrc}/extern/ffmpeg-linux-${_ffmpeg_ver}
}
post_install() { post_install() {
vlicense Docs/Licenses.txt vlicense Docs/Licenses.txt LICENSE
mkdir -p ${DESTDIR}/usr/bin mkdir -p ${DESTDIR}/usr/bin
cd ${DESTDIR} cd ${DESTDIR}