Package Details: stepmania 5.1.0.b2.r627.d55acb1ba2-2

Git Clone URL: https://aur.archlinux.org/stepmania.git (read-only, click to copy)
Package Base: stepmania
Description: Advanced rhythm game. Designed for both home and arcade use.
Upstream URL: http://www.stepmania.com/
Keywords: arcade game
Licenses: MIT AND CC-BY-NC-4.0
Submitter: Nascher
Maintainer: neeshy
Last Packager: neeshy
Votes: 29
Popularity: 0.51
First Submitted: 2015-08-12 13:57 (UTC)
Last Updated: 2024-08-12 21:49 (UTC)

Required by (1)

Sources (4)

Latest Comments

1 2 3 4 5 6 Next › Last »

snailman153624 commented on 2024-01-28 05:53 (UTC) (edited on 2024-01-28 05:57 (UTC) by snailman153624)

Here's the mathops.h patch contents:


--- a/libavcodec/x86/mathops.h
+++ b/libavcodec/x86/mathops.h
@@ -35,12 +35,20 @@
 static av_always_inline av_const int MULL(int a, int b, unsigned shift)
 {
     int rt, dummy;
+    if (__builtin_constant_p(shift))
     __asm__ (
         "imull %3               \n\t"
         "shrdl %4, %%edx, %%eax \n\t"
         :"=a"(rt), "=d"(dummy)
-        :"a"(a), "rm"(b), "ci"((uint8_t)shift)
+        :"a"(a), "rm"(b), "i"(shift & 0x1F)
     );
+    else
+        __asm__ (
+            "imull %3               \n\t"
+            "shrdl %4, %%edx, %%eax \n\t"
+            :"=a"(rt), "=d"(dummy)
+            :"a"(a), "rm"(b), "c"((uint8_t)shift)
+        );
     return rt;
 }

@@ -113,19 +121,31 @@ __asm__ volatile(\
 // avoid +32 for shift optimization (gcc should do that ...)
 #define NEG_SSR32 NEG_SSR32
 static inline  int32_t NEG_SSR32( int32_t a, int8_t s){
+    if (__builtin_constant_p(s))
     __asm__ ("sarl %1, %0\n\t"
          : "+r" (a)
-         : "ic" ((uint8_t)(-s))
+         : "i" (-s & 0x1F)
     );
+    else
+        __asm__ ("sarl %1, %0\n\t"
+               : "+r" (a)
+               : "c" ((uint8_t)(-s))
+        );
     return a;
 }

 #define NEG_USR32 NEG_USR32
 static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
+    if (__builtin_constant_p(s))
     __asm__ ("shrl %1, %0\n\t"
          : "+r" (a)
-         : "ic" ((uint8_t)(-s))
+         : "i" (-s & 0x1F)
     );
+    else
+        __asm__ ("shrl %1, %0\n\t"
+               : "+r" (a)
+               : "c" ((uint8_t)(-s))
+        );
     return a;
 }
 

snailman153624 commented on 2024-01-28 05:46 (UTC) (edited on 2024-01-28 06:03 (UTC) by snailman153624)

I had to patch a few files to make it build, as follows:

1. git to https suggestion below (tweaked) resolved the long pause followed by error (due to fail/timeout of ffmpeg retrieval)...I added the following to prepare() in the PKGBUILD:

sed -i 's/git:/https:/g' ${srcdir}/${pkgname}-${pkgver}/CMake/SetupFfmpeg.cmake

2. Error regarding "tm" having incomplete type is due to a missing include to <ctime>...I patched it with sed in prepare() also, but more properly this would be done with a patch file...

sed -i 's/#define ARCH_HOOKS_H/#define ARCH_HOOKS_H\n#include <ctime>/g' ${srcdir}/${pkgname}-${pkgver}/src/arch/ArchHooks/ArchHooks.h

3. I got some invalid arg to some asm code in ffmpeg...the version of ffmpeg used is really old. I tried flipping the flag in the PKGBUILD to use my native ffmpeg, but this ran into other compile and link issues (due to API changes in the newer version). After some digging, invalid opcodes were used in the asm for x86 in mathops.h...I found the patch and it matched this header file exactly, resolving this issue. I simply put the relevant portion of the patchfile in a file I created called "mathops.patch" in a subdirectory "my_patches" in the package folder (not in src, as this will get wiped when makepkg extracts), and added it prepare():

 cd "$srcdir/$pkgname-$pkgver/extern/ffmpeg-linux-2.1.3"
    patch --forward -p1 --input="${srcdir}/../my_patches/mathops.patch"

My resultant prepare() looks like this (incorporating all of the above):

prepare() {  
    cd "$srcdir/$pkgname-$pkgver/"
    patch --forward -p1 --input="${srcdir}/0001-GtkModule-Add-harfbuzz-dependency.patch"
    patch --forward -p1 --input="${srcdir}/0002-MessagemanCrashPatch.patch"

    sed -i 's/git:/https:/g' ${srcdir}/${pkgname}-${pkgver}/CMake/SetupFfmpeg.cmake
    sed -i 's/#define ARCH_HOOKS_H/#define ARCH_HOOKS_H\n#include <ctime>/g' ${srcdir}/${pkgname}-${pkgver}/src/arch/ArchHooks/ArchHooks.h

    cd "$srcdir/$pkgname-$pkgver/extern/ffmpeg-linux-2.1.3"
    patch --forward -p1 --input="${srcdir}/../my_patches/mathops.patch"
}

After all of this, the makepkg -s, followed by makepkg install worked, and stepmania runs! Been using it with Wii/Gamecube DDR mats, coupled with a USB Gamecube->USB adapter I got for $7.

griffin commented on 2022-11-28 21:41 (UTC)

Also getting the ffmpeg git failure error.

whynothugo commented on 2022-10-04 00:00 (UTC)

Builds fine for me in a clean chroot.

Heterology commented on 2022-09-27 06:29 (UTC)

Gah, another error now. I'll run a full system update and see what's going on.

In file included from /home/user/.cache/pikaur/build/stepmania/src/stepmania-5.0.12/src/arch/ArchHooks/ArchHooks.cpp:2:
/home/user/.cache/pikaur/build/stepmania/src/stepmania-5.0.12/src/arch/ArchHooks/ArchHooks.h:37:31: error: ‘<anonymous>’ has incomplete type
   37 |         virtual void SetTime( tm ) { }
      |                               ^~

Heterology commented on 2022-09-27 05:43 (UTC)

Git deprecated the git protocol so the ffmpeg checkout fails.

You can add this to your PKGBUILD to use HTTPS instead:

sed -i 's/git:/https:/g' src/stepmania-5.0.12/CMake/SetupFfmpeg.cmake

Somebody that is smarter than me: Can you please create a patch? Thank you!

poudink commented on 2022-04-24 19:37 (UTC)

No audio, for some reason. Had to run with aoss for it to work.

cindrmon commented on 2021-09-03 02:15 (UTC) (edited on 2021-09-03 02:16 (UTC) by cindrmon)

Why does it claim to be version 5.0.12-3 when after I compiled and checked the version is 5.0-git-b91dc72?

MCMic commented on 2020-05-18 14:18 (UTC)

The build chroot is supposed to be minimal so it should not have anything more.

I don’t see anything obvious in makepkg.conf or PATH.

kprkpr commented on 2020-05-18 13:29 (UTC)

@MCMic maybe can you see if $PATH is different, of in your extra-x86_64-build chroot has some software or lib that you don't have in local?

Or maybe /etc/makepkg.conf has something different...