project-navigation
Personal tools

Author Topic: [FIXED in macports trunk] SDL_mixer + OGG broken? Fix in macports!  (Read 9294 times)

Offline tchristney

  • Rookie
  • ***
  • Posts: 75
    • View Profile
Edit: this has been fixed in macports trunk, but this may be useful info if you don't use the source version of macports.

Hi fellow mac users. I've been experiencing a problem the last couple of weeks with OGG sound files not playing, and getting an error:

Code: [Select]
S_LoadSound: There are 0 joysticks available.
S_LoadSound: Could not find sound file: 'footsteps/water_under'

IF you are having the same problem (i.e. no footsteps being played, among other things), then read on! Otherwise, pretend that this message ends here.  ;)

I finally tracked it down and it is a problem with SDL_mixer that has only been fixed with version 1.2.11 (which is not current in macports). It is fairly easy to modify the macports Portfile and PortIndex files to upgrade your version. First, find the port file using port file libsdl_mixer, and open it in an editor as the super user.

  • Change the line that reads version 1.2.10 so that it reads version 1.2.11
  • Comment out the line that reads patchfiles patch-leopard.diff
  • Change the checksums: md5 65ada3d997fe85109191a5fb083f248c, sha1 ef5d45160babeb51eafa7e4019cec38324ee1a5d and rmd160 559355116a1c380edf71879da0dbcf5359f05476
  • Save the file and exit the editor.

Next, you need to change the PortIndex file so that it knows about the change. If port file libsdl_mixer returns a path PREFIX/audio/libsdl_mixer/Portfile, then you need to edit PREFIX/PortIndex (again as the super user). Search for libsdl_mixer, and change 1.2.10 to 1.2.11. Save and exit.

Lastly, run port upgrade libsdl_mixer. Done!

I'm going to notify the port maintainer to get this modification upstream. And no, mattn, I'm not going to update the wiki because this problem will hopefully be extremely short lived.  ;) :P ;D

ps. if this doesn't work for you, keep in mind that I'm using the source version of macports from their trunk and using the most up to date dports. Modifying the instructions to work for a packaged release of macports is left as an exercise for the reader...
« Last Edit: December 21, 2009, 08:11:16 am by tchristney »

Offline Mattn

  • CaveExpress
  • Administrator
  • PHALANX Commander
  • *****
  • Posts: 4830
  • www.caveproductions.org
    • View Profile
    • CaveExpress
Re: [FIXED in macports trunk] SDL_mixer + OGG broken? Fix in macports!
« Reply #1 on: February 28, 2010, 08:52:05 am »
we have reports about a missing libvorbis and libogg in the created dmg files. it would be really cool if you could have a look at that issue, too (looks like they are not added because they are not found by otool (because they are loaded at runtime))

Offline keybounce

  • Sergeant
  • *****
  • Posts: 330
    • View Profile
Re: [FIXED in macports trunk] SDL_mixer + OGG broken? Fix in macports!
« Reply #2 on: May 26, 2010, 01:22:37 am »
Alright, what do you do if you have the up to date version of sdl_mixer, a properly set
stbmac:23 Michael$ echo $DYLD_FALLBACK_LIBRARY_PATH
:/opt/local/lib/:/opt/local/lib/

and you still get these errors on some sound files?

I get the main background music, but no sound effects.

Offline keybounce

  • Sergeant
  • *****
  • Posts: 330
    • View Profile
Re: [FIXED in macports trunk] SDL_mixer + OGG broken? Fix in macports!
« Reply #3 on: June 14, 2010, 09:52:32 pm »
Bump

I am still getting these errors on the current branch checkout.

At the load sample code, at
                if (!(chunk = Mix_LoadWAV_RW(rw, qfalse)))
                        Com_Printf("S_LoadSound: %s.\n", Mix_GetError());

the Mix_LoadWAV_RW call is failing.

stbmac:23 Michael$ port installed libsdl_mixer
The following ports are currently installed:
  libsdl_mixer @1.2.8_1+universal
  libsdl_mixer @1.2.11_0+universal (active)

I've got 1.2.11 of sdl_mixer

I've verified that the sound file is found, and opened.

stbmac:23 Michael$ printenv | egrep DYLD
DYLD_FALLBACK_LIBRARY_PATH=:/opt/local/lib/

I've got my environment set.

Offline smlacc

  • Rookie
  • ***
  • Posts: 11
    • View Profile
Re: [FIXED in macports trunk] SDL_mixer + OGG broken? Fix in macports!
« Reply #4 on: June 17, 2010, 01:14:48 am »
I still have this problem too.  Running otool on the ufo binary inside the ufoai.app I generated just now gives this output:
-------------------
   /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
   /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 751.21.0)
   /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 15.0.0)
   @executable_path/../Libraries/libvorbis.0.dylib (compatibility version 5.0.0, current version 5.3.0)
   @executable_path/../Libraries/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
   @executable_path/../Libraries/libcurl.4.dylib (compatibility version 6.0.0, current version 6.1.0)
   @executable_path/../Libraries/libjpeg.8.dylib (compatibility version 9.0.0, current version 9.2.0)
   @executable_path/../Libraries/libpng14.14.dylib (compatibility version 17.0.0, current version 17.0.0)
   @executable_path/../Libraries/libSDL-1.2.0.dylib (compatibility version 12.0.0, current version 12.3.0)
   @executable_path/../Libraries/libSDL_image-1.2.0.dylib (compatibility version 9.0.0, current version 9.2.0)
   @executable_path/../Libraries/libSDL_mixer-1.2.0.dylib (compatibility version 11.0.0, current version 11.1.0)
   @executable_path/../Libraries/libSDL_ttf-2.0.0.dylib (compatibility version 11.0.0, current version 11.0.0)
   @executable_path/../Libraries/libogg.0.dylib (compatibility version 7.0.0, current version 7.0.0)
   @executable_path/../Libraries/libtheora.0.dylib (compatibility version 4.0.0, current version 4.10.0)
   @executable_path/../Libraries/libintl.8.dylib (compatibility version 10.0.0, current version 10.0.0)
   /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0)
   /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.0.1)
   /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 227.0.0)
   /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 550.19.0)
   /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 38.0.0)
   /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1038.29.0)
-----------
Have checked, and al libraries listed are where they should be, including the ogg/theora ones.

Smlacc

Offline keybounce

  • Sergeant
  • *****
  • Posts: 330
    • View Profile
Re: [FIXED in macports trunk] SDL_mixer + OGG broken? Fix in macports!
« Reply #5 on: June 27, 2010, 05:48:53 pm »
I'm not able to test this right now (time and priorities), but I'm thinking that we may need to switch from the MacPorts version of SDL to the official binary of SDL -- some changes were made back in November about how it links in some sound supports. (Just found this out last night).

Offline keybounce

  • Sergeant
  • *****
  • Posts: 330
    • View Profile
Re: [FIXED in macports trunk] SDL_mixer + OGG broken? Fix in macports!
« Reply #6 on: August 05, 2010, 07:34:25 am »
Bump

I can confirm the following:
1. Modifying the configure.ac to use the frameworks is a pain, but doable.
2. It fixes all sound issues -- no more complaints about unable to load a sound file.
3. Graphics are still messed up on the battlefield.
4. The 3D world is still too dark.
5. I could not get ufomodel to build -- SDLMain vs main issues.
6. Some of the libraries that configure tests for don't need to be tested for. System built with them turned off. (Zlib and XviD.)

To get this to work, I had to do the following:

PKG_CONFIG_PATH=/usr/X11/lib/pkgconfig:/usr/lib/pkgconfig ; export PKG_CONFIG_PATH
aclocal --verbose -I /opt/local/share/aclocal/
autoconf
./configure --disable-uforadiant --enable-universal

Pkg-config was the really odd one. It's in /opt/local (so it came from macports), and will not check the system directories by default. There are config files in the system directories, but apparently no system supplied pkg-config.

The combination of pkg-config and aclocal is needed to fix ...
Quote
#---------------------------------------------------------------------------------------
------
# defined some defaults for users (mac-users..) who might not have pkg-config.
#---------------------------------------------------------------------------------------
------

m4_define_default([PKG_CHECK_MODULES],
        [AC_MSG_ERROR([For current build options, pkg-config is required. Did you maybe
forget to run aclocal with the current include path?])])

« Last Edit: August 05, 2010, 07:41:42 am by keybounce »

Offline Mattn

  • CaveExpress
  • Administrator
  • PHALANX Commander
  • *****
  • Posts: 4830
  • www.caveproductions.org
    • View Profile
    • CaveExpress
Re: [FIXED in macports trunk] SDL_mixer + OGG broken? Fix in macports!
« Reply #7 on: August 05, 2010, 09:50:52 am »
which m4 files in /opt/local/share/aclocal/ are needed? i will add them to our svn in the versions we need them (to be able to rebuild aclocal.m4 in a "correct" way on each system)

pkg-config stuff is really strange, is that written on the macports homepage somewhere?

zlib should not be deactivated - xlib can be

Offline Mattn

  • CaveExpress
  • Administrator
  • PHALANX Commander
  • *****
  • Posts: 4830
  • www.caveproductions.org
    • View Profile
    • CaveExpress
Re: [FIXED in macports trunk] SDL_mixer + OGG broken? Fix in macports!
« Reply #8 on: August 05, 2010, 10:56:52 am »
should we completely switch over to the frameworks?

Offline keybounce

  • Sergeant
  • *****
  • Posts: 330
    • View Profile
Re: [FIXED in macports trunk] SDL_mixer + OGG broken? Fix in macports!
« Reply #9 on: August 05, 2010, 07:37:45 pm »
As for the frameworks:
1. The sound issue is linking related, and it's fixed in the frameworks. Potentially it could be fixed in the library versions.
2. It does nothing to fix the graphics issues
3. I found the hard way that you need the development frameworks. It's not "This is used to develop the SDL code", it's "This is used if you are developing a program that uses SDL".

In particular, there are _MULTIPLE_ implementations of main() (in the development frameworks) that set things up and call SDL_main(). Just as a quick example, the code that is used for ufo fails to work for ufomodel. And, sdl-config doesn't exist in the end user framework version.
4. You still have to copy the stuff into the .dmg for distribution.

At the moment, using the frameworks version for sound might make sense, but not if the .dmg packaging breaks their linking fix. (Not tested yet).

As for pkg-config, it was trial and error. I'm still learning how aclocal, autoconf, and automake all fit together (and automake isn't even used here.)

Aclocal needed
# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
# serial 1 (pkg-config-0.24)
...
# PKG_PROG_PKG_CONFIG([MIN-VERSION])
# ----------------------------------
AC_DEFUN([PKG_PROG_PKG_CONFIG],
[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
...

I hope that's enough to tell you what it needed. A comparison of the config files produced by my autoconf versus your autoconf shows that my version is out of date. (Hmm, checking ... yep, I'm using the stock version from 10.5.8, not the macports version.)

Offline incognito_uk

  • Cannon Fodder
  • **
  • Posts: 6
    • View Profile
Re: [FIXED in macports trunk] SDL_mixer + OGG broken? Fix in macports!
« Reply #10 on: August 20, 2010, 11:51:35 pm »
For those of us that aren't developers is there any way around the lack of sound problem?

I love the game and thank everyone for the time they put into making it but without sound or music it spoils the enjoyment of the game.

Any help you guys can offer would be greatly appreciated.

Offline keybounce

  • Sergeant
  • *****
  • Posts: 330
    • View Profile
Re: [FIXED in macports trunk] SDL_mixer + OGG broken? Fix in macports!
« Reply #11 on: August 21, 2010, 12:22:28 am »
I can't compile something that gives graphics properly. Anything I compile has garbled lighting. Apparently, it even affects x86 machines (or have I misunderstood that? Anyone gotten my builds to run on x86?)

My focus has been more on that then on the sound.

Offline Mattn

  • CaveExpress
  • Administrator
  • PHALANX Commander
  • *****
  • Posts: 4830
  • www.caveproductions.org
    • View Profile
    • CaveExpress
Re: [FIXED in macports trunk] SDL_mixer + OGG broken? Fix in macports!
« Reply #12 on: August 21, 2010, 08:39:20 am »
well - on my x86 machine the lighting works ((i)mac mini)

if you would give me a teamviewer (download) session i would like to have a look at it. (maybe join the irc channel to coordinate that?)

Offline keybounce

  • Sergeant
  • *****
  • Posts: 330
    • View Profile
Re: [FIXED in macports trunk] SDL_mixer + OGG broken? Fix in macports!
« Reply #13 on: August 28, 2010, 10:04:24 pm »
Alright, I have TeamViewer up and running, and everything compiled.

What do I need to do to get you on my computer? (It's behind a NAT router; do I have to forward ports?)

Offline keybounce

  • Sergeant
  • *****
  • Posts: 330
    • View Profile
Re: [FIXED in macports trunk] SDL_mixer + OGG broken? Fix in macports!
« Reply #14 on: August 28, 2010, 10:34:36 pm »
Getting back to the original topic: The current version, using library (not frameworks) versions of the sound libraries, does work on a local compile; dmg package not yet tested.