Opened 3 years ago

Last modified 8 months ago

#64655 assigned defect

libsdl2: find some version to use for Tiger and Leopard

Reported by: barracuda156 Owned by: barracuda156
Priority: Normal Milestone:
Component: ports Version: 2.7.2
Keywords: powerpc leopard Cc: paulpall (Paul Johannes Aru), mascguy (Christopher Nielsen)
Port: libsdl2

Description

The current version of libsdl2 fails for ppc, therefore I tried to install an early version which does not seem to have any arch restriction. However it fails, complaining of SDK:

libtool: compile:  /usr/bin/gcc-4.2 -pipe -Os -arch ppc -I/opt/local/include -DUSING_GENERATED_CONFIG_H -Iinclude -I/opt/local/var/macports/build/_opt_PPCLeopardPorts_devel_libsdl2/libsdl2/work/SDL2-2.0.0/include -maltivec -DTARGET_API_MAC_CARBON -DTARGET_API_MAC_OSX -fvisibility=hidden -D_THREAD_SAFE -falign-loops=16 -force_cpusubtype_ALL -fpascal-strings -Wall -MMD -MT build/SDL_log.lo -c /opt/local/var/macports/build/_opt_PPCLeopardPorts_devel_libsdl2/libsdl2/work/SDL2-2.0.0/src/SDL_log.c  -fno-common -DPIC -o build/.libs/SDL_log.o
In file included from include/SDL_config.h:33,
                 from /opt/local/var/macports/build/_opt_PPCLeopardPorts_devel_libsdl2/libsdl2/work/SDL2-2.0.0/src/SDL_assert.c:21:
include/SDL_platform.h:90:3: error: #error SDL for Mac OS X must be built with a 10.6 SDK or above.
In file included from include/SDL_config.h:33,
                 from /opt/local/var/macports/build/_opt_PPCLeopardPorts_devel_libsdl2/libsdl2/work/SDL2-2.0.0/src/SDL_error.c:21:
include/SDL_platform.h:90:3: error: #error SDL for Mac OS X must be built with a 10.6 SDK or above.
In file included from include/SDL_config.h:33,
                 from /opt/local/var/macports/build/_opt_PPCLeopardPorts_devel_libsdl2/libsdl2/work/SDL2-2.0.0/src/SDL_hints.c:21:
include/SDL_platform.h:90:3: error: #error SDL for Mac OS X must be built with a 10.6 SDK or above.
In file included from include/SDL_config.h:33,
                 from /opt/local/var/macports/build/_opt_PPCLeopardPorts_devel_libsdl2/libsdl2/work/SDL2-2.0.0/src/SDL_log.c:21:
include/SDL_platform.h:90:3: error: #error SDL for Mac OS X must be built with a 10.6 SDK or above.
make: *** [build/SDL_error.lo] Error 1
make: *** Waiting for unfinished jobs....
make: *** [build/SDL_hints.lo] Error 1
make: *** [build/SDL_log.lo] Error 1
make: *** [build/SDL_assert.lo] Error 1
make: Leaving directory `/opt/local/var/macports/build/_opt_PPCLeopardPorts_devel_libsdl2/libsdl2/work/SDL2-2.0.0'
Command failed:  cd "/opt/local/var/macports/build/_opt_PPCLeopardPorts_devel_libsdl2/libsdl2/work/SDL2-2.0.0" && /usr/bin/make -j4 -w all 
Exit code: 2
Error: Failed to build libsdl2: command execution failed

Since ppc is supported in 10.6 SDK, it still might build, but how to point the port to the SDK? Apparently it does not look into /Developer. (I have pulled a 10.6 SDK from an installation of 10A190 just to try quickly and the error output did not change. I will try in 10.6.8 Rosetta later.)

Attachments (4)

config.log (170.0 KB) - added by barracuda156 3 years ago.
main.log (26.0 KB) - added by barracuda156 3 years ago.
config_10.6.SDK.log (213.0 KB) - added by barracuda156 3 years ago.
main.10.6.SDK.log (32.9 KB) - added by barracuda156 3 years ago.

Download all attachments as: .zip

Change History (41)

Changed 3 years ago by barracuda156

Attachment: config.log added

Changed 3 years ago by barracuda156

Attachment: main.log added

comment:1 Changed 3 years ago by barracuda156

Ok so I installed a vanilla 10.6 SDK from Xcode 3.2.6 with Pacifist (that is, a standard 10.6 SDK), added these lines to macports.conf:

macosx_deployment_target 10.5
macosx_sdk_version 10.6

Which made the compiler find correct SDK, however the build still failed:

/opt/local/var/macports/build/_opt_PPCLeopardPorts_devel_libsdl2/libsdl2/work/SDL2-2.0.0/src/SDL_error.c: In function 'SDL_SetError':
/opt/local/var/macports/build/_opt_PPCLeopardPorts_devel_libsdl2/libsdl2/work/SDL2-2.0.0/src/SDL_error.c:66: warning: implicit declaration of function 'va_start'
/opt/local/var/macports/build/_opt_PPCLeopardPorts_devel_libsdl2/libsdl2/work/SDL2-2.0.0/src/SDL_error.c:84: warning: implicit declaration of function 'va_arg'
/opt/local/var/macports/build/_opt_PPCLeopardPorts_devel_libsdl2/libsdl2/work/SDL2-2.0.0/src/SDL_error.c:84: error: expected expression before 'int'
/opt/local/var/macports/build/_opt_PPCLeopardPorts_devel_libsdl2/libsdl2/work/SDL2-2.0.0/src/SDL_error.c:87: error: expected expression before 'double'
/opt/local/var/macports/build/_opt_PPCLeopardPorts_devel_libsdl2/libsdl2/work/SDL2-2.0.0/src/SDL_error.c:90: error: expected expression before 'void'
/opt/local/var/macports/build/_opt_PPCLeopardPorts_devel_libsdl2/libsdl2/work/SDL2-2.0.0/src/SDL_error.c:90: warning: assignment makes pointer from integer without a cast
/opt/local/var/macports/build/_opt_PPCLeopardPorts_devel_libsdl2/libsdl2/work/SDL2-2.0.0/src/SDL_error.c:95: error: expected expression before 'const'
/opt/local/var/macports/build/_opt_PPCLeopardPorts_devel_libsdl2/libsdl2/work/SDL2-2.0.0/src/SDL_error.c:95: warning: initialization makes pointer from integer without a cast
/opt/local/var/macports/build/_opt_PPCLeopardPorts_devel_libsdl2/libsdl2/work/SDL2-2.0.0/src/SDL_error.c:111: warning: implicit declaration of function 'va_end'
make: *** [build/SDL_error.lo] Error 1
make: *** Waiting for unfinished jobs....

Any suggestions how to fix that? Since port file contains no restriction, apparently it was building for Leopard.

Last edited 3 years ago by barracuda156 (previous) (diff)

comment:2 Changed 3 years ago by barracuda156

Summary: libsdl2 @2.0.0 fails to build on 10.5.8: #error SDL for Mac OS X must be built with a 10.6 SDK or abovelibsdl2 @2.0.0 fails to build on 10.5.8: expected expression before 'int' etc errors

Changed 3 years ago by barracuda156

Attachment: config_10.6.SDK.log added

Changed 3 years ago by barracuda156

Attachment: main.10.6.SDK.log added

comment:3 Changed 3 years ago by kencu (Ken)

use the one from leopardports that everyone has been using for five years now.

If you didn’t grab it I can stick it here for you.

I shut leopardports and tigerports etc down at chris’ request.

comment:4 in reply to:  3 Changed 3 years ago by barracuda156

Replying to kencu:

use the one from leopardports that everyone has been using for five years now. If you didn’t grab it I can stick it here for you. I shut leopardports and tigerports etc down at chris’ request.

Thank you, I will try it then. I am not sure I have the latest copy of your port repos, but I do have some.

  1. S. By the way, if it is not something private, what was the reason behind the request? I don't ask this out of sheer curiosity, but rather in a context of having considered making such repo at a later date. If it violates some Macports policies, of course I just won't do it in the first place.

comment:5 Changed 3 years ago by kencu (Ken)

caused confusion and wacky tickets.

I never wanted a rogue repo anyway… it was originally envisioned as an official MacPorts overlay for older systems to use, but it was never accepted and then actively discouraged, eventually.

comment:6 Changed 3 years ago by evanmiller (Evan Miller)

I keep an unauthorized clone of Ken's work here: https://github.com/evanmiller/TigerPorts/

I've deleted all of the Portfiles whose fixes were integrated upstream. That leaves only about 20 ports, including the libsdl2 family. (Should be able to knock out a couple more when another legacysupport release happens...)

comment:7 Changed 3 years ago by kencu (Ken)

Summary: libsdl2 @2.0.0 fails to build on 10.5.8: expected expression before 'int' etc errorslibsdl2: find some version to use for Tiger and Leopard someday

comment:8 Changed 3 years ago by kencu (Ken)

Summary: libsdl2: find some version to use for Tiger and Leopard somedaylibsdl2: find some version to use for Tiger and Leopard

comment:9 in reply to:  5 Changed 3 years ago by barracuda156

Replying to kencu:

caused confusion and wacky tickets.

I never wanted a rogue repo anyway… it was originally envisioned as an official MacPorts overlay for older systems to use, but it was never accepted and then actively discouraged, eventually.

Got it. Quite unfortunate IMO, it appears to be a good idea to have targeted repos for old systems, given that a number of modern versions of ports just don't build.

Your Leopard version of libsdl2 installed nicely:

36-47:~ svacchanda$ port -v installed libsdl2
The following ports are currently installed:
  libsdl2 @2.0.3_0+universal (active) requested_variants='+universal' platform='darwin 9' archs='ppc ppc64' date='2022-02-14T19:15:22+0800'

comment:10 in reply to:  6 Changed 3 years ago by barracuda156

Replying to evanmiller:

I keep an unauthorized clone of Ken's work here: https://github.com/evanmiller/TigerPorts/

I've deleted all of the Portfiles whose fixes were integrated upstream. That leaves only about 20 ports, including the libsdl2 family. (Should be able to knock out a couple more when another legacysupport release happens...)

Thank you. Saved a local copy for later use, it may be helpful, as I got a machine with Tiger now too.

comment:11 in reply to:  3 Changed 3 years ago by barracuda156

Replying to kencu:

use the one from leopardports that everyone has been using for five years now.

I have managed to build libsdl2 v. 2.0.9.

Sergey-Fedorovs-Mac-mini:~ svacchanda$ port -v installed libsdl2
The following ports are currently installed:
  libsdl2 @2.0.3_0 requested_variants='' platform='darwin 10' archs='ppc' date='2022-02-26T03:41:25+0800'
  libsdl2 @2.0.9_0 (active) requested_variants='' platform='darwin 10' archs='ppc' date='2022-03-01T23:11:25+0800'

So far tested on 10.6 PPC and 10.6.8 Rosetta, but I am sure 10.5.8 gonna build too.

The patch is ugly though and needs work. With one file, cocoamodes, I gave up tweaking it and for now pulled it from 2.0.3. I should be possible to fix the original one for PPC though.

Pretty much all troubles were with Cocoa Video components, and it is far worse than it was with 2.0.3.

I have one technical question: is there a way to force Cmake build system accept compiler.c_standard and custom Object C flags?

There are two systemic problems with libsdl2 which I could not solve in any reasonably nice way:

1) ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] – I had to manually delete -Werror-after-statement flag in configure to get away and make these warnings and not errors. Setting C standard in port file or command line had no effect.

2) There is some Objective C exception used in cocoaopengl which makes the build fail. Solution should be as easy as passing '-fobjc-exceptions' flag, however neither setting configure.objc_flags-append in port file nor writing EXTRA_OBJCFLAGS in configure has any effect. I had to stick the flag along other CFLAGS, and of course everything complains about that (but builds).

UPD. Just now found something potentially promising: https://github.com/macports/macports-ports/blob/master/_resources/port1.0/group/cmake-1.1.tcl Though it still mentions that Cmake may ignore Objective C flags.

comment:12 Changed 3 years ago by barracuda156

  1. S. Wonder if libsdl2 actually works though LOL. I honestly picked a random helloworld from here: https://gist.github.com/cicanci/b54715298ab55dff2fbcd0ca3829d13b

And neither of the two versions produced meaningful output on 10.6.8.

Here is what I got with my 2.0.9:

Sergey-Fedorovs-Mac-mini:Documents svacchanda$ /opt/svacchanda/gcc10ppc/bin/g++ /Users/svacchanda/Documents/test.cpp -I/opt/local/include/SDL2 -L/opt/local/lib -lSDL2 -o test 
Sergey-Fedorovs-Mac-mini:Documents svacchanda$ /Users/svacchanda/Documents/test 2022-03-02 02:07:01.292 test[38833:903] *** __NSAutoreleaseNoPool(): Object 0x1944e20 of class NSView autoreleased with no pool in place - just leaking
2022-03-02 02:07:01.336 test[38833:903] *** __NSAutoreleaseNoPool(): Object 0x1945080 of class NSCFArray autoreleased with no pool in place - just leaking
2022-03-02 02:07:01.340 test[38833:903] *** __NSAutoreleaseNoPool(): Object 0x19459f0 of class NSCFArray autoreleased with no pool in place - just leaking
2022-03-02 02:07:01.977 test[38833:903] INFO: SDL_LoadBMP Error: Couldn't open image.bmp

Then I reverted to the old @kencu's 2.0.3:

Sergey-Fedorovs-Mac-mini:Documents svacchanda$ /opt/svacchanda/gcc10ppc/bin/g++ /Users/svacchanda/Documents/test.cpp -I/opt/local/include/SDL2 -L/opt/local/lib -lSDL2 -o test2
Sergey-Fedorovs-Mac-mini:Documents svacchanda$ /Users/svacchanda/Documents/test2 
2022-03-02 02:09:36.649 test2[38865:903] INFO: SDL_Init Error: The video driver did not add any displays

They fail differently, but both fail.

  1. S. At the same time I am not sure how this at all is supposed to work via Rosetta, so will repeat on the Quad later.

comment:13 in reply to:  12 ; Changed 3 years ago by kencu (Ken)

Replying to barracuda156:

> 2022-03-02 02:07:01.977 test[38833:903] INFO: SDL_LoadBMP Error: Couldn't open image.bmp

Yes, looks like it can't load (? can't find) image.bmp. Perhaps that example won't work on any system without it?

Try building one of the dozens of ports that use libsdl2 instead. Pretty much all the ones I ever tried work quite well on 10.6.8.

Last edited 3 years ago by kencu (Ken) (previous) (diff)

comment:14 Changed 3 years ago by kencu (Ken)

don't be misled by this:

*** __NSAutoreleaseNoPool(): Object 0x1945080 of class NSCFArray autoreleased with no pool in place - just leaking

this is not the error. It is something else, that could be fixed on SnowLeopard by adding the @autoreleasepool bits manually to the example code. Newer OS versions do some of those things automatically for you, but on SL you have to do it the old way still.

I have patched various ports here and there for that. The last one that comes to mind was glib2 that I fixed up for older systems when I moved it to meson last year.

Version 0, edited 3 years ago by kencu (Ken) (next)

comment:15 in reply to:  14 Changed 3 years ago by barracuda156

Replying to kencu:

don't be misled by this:

*** __NSAutoreleaseNoPool(): Object 0x1945080 of class NSCFArray autoreleased with no pool in place - just leaking

this is not the error. It is something else, that could be fixed on SnowLeopard by adding the @autoreleasepool bits manually to the example code. Newer OS versions do some of those things automatically for you, but on SL you have to do it the old way still.

I have patched various ports here and there for that. The last one that comes to mind was glib2 that I fixed up for older systems when I moved it to meson last year.

But that is just a warning, not an error -- the error is there is no image.bmp to be loaded by the example, it seems.

@autoreleasepool syntax was massively failing for me, I had to refactor numerous instances of this and return them to the form which PPC is happy with. So adding that won't work (for PPC), but the warning may be a result of me messing up something in the process: it was not always immediately obvious where to stick [pool release];. I mean, I can identify structure and follow its logic, but I don’t know anything about Objective C. Another problem was that some functions apparently are missing in SDK itself, so I had to resort to your trick #if MAC_OS_X_VERSION_MIN_REQUIRED >= 1070 (using 1070 due to 10A190). The whole thing took me almost 24 hrs (well, I was doing other stuff in parallel, but anyway).

At the same time outside of Cocoa Video folder few changes had to be made. Mostly refactoring of @autoreleasepool.

I have also noticed they removed some elements of PowerPC-relevant code (though not all of it). When I have time I will search source folder with BBEdit to make sure I restore all portions of PPC code that were present in 2.0.3 but got removed later.

comment:16 in reply to:  13 ; Changed 3 years ago by barracuda156

Replying to kencu:

Replying to barracuda156:

> 2022-03-02 02:07:01.977 test[38833:903] INFO: SDL_LoadBMP Error: Couldn't open image.bmp

Yes, looks like it can't load (? can't find) image.bmp. Perhaps that example won't work on any system without it?

Thank you. Indeed, it tried to actually open a window (which immediately closed). With 2.0.3 I got just an error straightaway.

Try building one of the dozens of ports that use libsdl2 instead. Pretty much all the ones I ever tried work quite well on 10.6.8.

Yes, I always try to build dependencies when I build a port without being sure it has been built correctly. Building smpeg2 worked for instance. Strangely, on 10A190 ffmpeg complained about version after I upgraded libsdl2 from 2.0.3 to 2.0.9. Didn't have time to rebuild it yet or figure out what it got upset about. As I recall, with an earlier 2.0.3 it silently used it to build itself. (Cannot test ffmpeg on 10.6.8 since x265 remains broken, and Cmake/meson build system is a nightmare: simple things that take 2 min to fix with gcc + gnumake, become nontrivial problems with the former.)

comment:17 Changed 3 years ago by kencu (Ken)

comment:18 in reply to:  16 ; Changed 3 years ago by kencu (Ken)

Replying to barracuda156:

Thank you. Indeed, it tried to actually open a window (which immediately closed).

what I'm trying to say is there is nothing wrong with libsdl2.

you just have to go get an image.bmp and it will work fine.

comment:19 in reply to:  18 Changed 3 years ago by barracuda156

Replying to kencu:

Replying to barracuda156:

Thank you. Indeed, it tried to actually open a window (which immediately closed).

what I'm trying to say is there is nothing wrong with libsdl2.

I have rebuilt ffmpeg now, that worked:

36-227:~ svacchanda$ port -v installed ffmpeg
The following ports are currently installed:
  ffmpeg @4.4.1_1+gpl2 requested_variants='+gpl2' platform='darwin 10' archs='ppc' date='2022-02-15T18:07:25+0800'
  ffmpeg @4.4.1_1+gpl2+gpl3+nonfree (active) requested_variants='+gpl2+gpl3+nonfree' platform='darwin 10' archs='ppc' date='2022-03-02T22:47:45+0800'

Here is what it complained about libsdl2:

--->  Scanning binaries for linking errors
Incompatible library version: /opt/local/bin/ffmpeg requires version 3.0.0 or later, but /opt/local/lib/libSDL2-2.0.0.dylib provides version 1.0.0
Incompatible library version: /opt/local/bin/ffplay requires version 3.0.0 or later, but /opt/local/lib/libSDL2-2.0.0.dylib provides version 1.0.0
Incompatible library version: /opt/local/bin/ffprobe requires version 3.0.0 or later, but /opt/local/lib/libSDL2-2.0.0.dylib provides version 1.0.0
Incompatible library version: /opt/local/lib/libavdevice.58.13.100.dylib requires version 3.0.0 or later, but /opt/local/lib/libSDL2-2.0.0.dylib provides version 1.0.0
--->  Found 4 broken files, matching files to ports      
--->  Found 1 broken port, determining rebuild order
You can always run 'port rev-upgrade' again to fix errors.
The following ports will be rebuilt: ffmpeg @4.4.1+gpl2+gpl3+nonfree

Configuration of the build (as before):

--->  Configuring ffmpeg
Executing:  cd "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_ffmpeg/ffmpeg/work/ffmpeg-4.4.1" && ./configure --prefix=/opt/local --enable-swscale --enable-avfilter --enable-avresample --enable-libmp3lame --enable-libvorbis --enable-libopus --enable-librsvg --enable-libtheora --enable-libopenjpeg --enable-libmodplug --enable-libvpx --enable-libsoxr --enable-libspeex --enable-libass --enable-libbluray --disable-libzvbi --enable-lzma --enable-gnutls --enable-fontconfig --enable-libfreetype --enable-libfribidi --enable-zlib --disable-libjack --disable-libopencore-amrnb --disable-libopencore-amrwb --disable-libxcb --disable-libxcb-shm --disable-libxcb-xfixes --disable-indev=jack --disable-opencl --disable-outdev=xv --disable-audiotoolbox --disable-videotoolbox --enable-sdl2 --disable-securetransport --mandir=/opt/local/share/man --enable-shared --enable-pthreads --cc=/opt/local/bin/gcc-mp-7 --enable-libzimg --disable-filter=coreimage --disable-filter=coreimagesrc --enable-libdav1d --disable-indev=avfoundation --arch=ppc --enable-libx265 --enable-gpl --enable-postproc --enable-libx264 --enable-libxvid --enable-version3 --enable-libsmbclient --enable-nonfree --enable-libfdk-aac

comment:20 Changed 3 years ago by barracuda156

  1. S. I could even rebuild libsdl2 with +x11 and then rebuild ffmpeg with +x11 too:
36-227:~ svacchanda$ port -v installed libsdl2
The following ports are currently installed:
  libsdl2 @2.0.3_0 requested_variants='' platform='darwin 10' archs='ppc' date='2022-02-14T20:01:16+0800'
  libsdl2 @2.0.9_0 requested_variants='' platform='darwin 10' archs='ppc' date='2022-03-01T21:12:57+0800'
  libsdl2 @2.0.9_0+x11 (active) requested_variants='+x11' platform='darwin 10' archs='ppc' date='2022-03-02T23:17:54+0800'
36-227:~ svacchanda$ port -v installed ffmpeg
The following ports are currently installed:
  ffmpeg @4.4.1_1+gpl2 requested_variants='+gpl2' platform='darwin 10' archs='ppc' date='2022-02-15T18:07:25+0800'
  ffmpeg @4.4.1_1+gpl2+gpl3+nonfree requested_variants='+gpl2+gpl3+nonfree' platform='darwin 10' archs='ppc' date='2022-03-02T22:47:45+0800'
  ffmpeg @4.4.1_1+gpl2+gpl3+nonfree+x11 (active) requested_variants='+gpl2+gpl3+nonfree+x11' platform='darwin 10' archs='ppc' date='2022-03-03T00:27:18+0800'

Here is the config:

--->  Configuring ffmpeg
Executing:  cd "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_ffmpeg/ffmpeg/work/ffmpeg-4.4.1" && ./configure --prefix=/opt/local --enable-swscale --enable-avfilter --enable-avresample --enable-libmp3lame --enable-libvorbis --enable-libopus --enable-librsvg --enable-libtheora --enable-libopenjpeg --enable-libmodplug --enable-libvpx --enable-libsoxr --enable-libspeex --enable-libass --enable-libbluray --enable-libzvbi --enable-lzma --enable-gnutls --enable-fontconfig --enable-libfreetype --enable-libfribidi --enable-zlib --disable-libjack --disable-libopencore-amrnb --disable-libopencore-amrwb --disable-indev=jack --disable-opencl --disable-outdev=xv --disable-audiotoolbox --disable-videotoolbox --enable-sdl2 --disable-securetransport --mandir=/opt/local/share/man --enable-shared --enable-pthreads --cc=/opt/local/bin/gcc-mp-7 --enable-libzimg --disable-filter=coreimage --disable-filter=coreimagesrc --enable-libdav1d --disable-indev=avfoundation --arch=ppc --enable-libx265 --enable-gpl --enable-postproc --enable-libx264 --enable-libxvid --enable-version3 --enable-libsmbclient --enable-nonfree --enable-libfdk-aac

(I fixed building zvbi on 10A190: it just needed --without-doxygen added to skip html documentation which was causing a failure.)

comment:21 Changed 3 years ago by kencu (Ken)

I am having trouble following this, but -- it seems you have a mixture of things happening due to different versions of software being installed and uninstalled and the other things reinstalled and then uninstalled and then things being built against one version of something but that something is then uninstalled and a different version of that something is installed but the thing is not rebuilt against the different version and thinks the old version is still installed and ...

dies.

Or something like that.

comment:22 in reply to:  21 Changed 3 years ago by barracuda156

Replying to kencu:

I am having trouble following this, but -- it seems you have a mixture of things happening due to different versions of software being installed and uninstalled and the other things reinstalled and then uninstalled and then things being built against one version of something but that something is then uninstalled and a different version of that something is installed but the thing is not rebuilt against the different version and thinks the old version is still installed and ...

dies.

Or something like that.

Oh, leave it, the only important part is that we got libsdl2 @2.0.9 built for PowerPC and ffmpeg can be built with this libsdl2 being enabled. (Rest are details which I mention only in case someone has interest.)

  1. S. Once I verify it on 10.5.8, I will probably make a separate ticket to make some changes to ffmpeg port file.
Last edited 3 years ago by barracuda156 (previous) (diff)

comment:23 in reply to:  18 Changed 3 years ago by barracuda156

Replying to kencu:

what I'm trying to say is there is nothing wrong with libsdl2.

Unfortunately on Leopard I could not replicate what worked on 10A190 and 10.6.8:

In file included from /opt/local/var/macports/build/_opt_PPCLeopardPorts_devel_libsdl2/libsdl2/work/SDL2-2.0.9/src/video/cocoa/SDL_cocoaevents.m:26:0:
/opt/local/var/macports/build/_opt_PPCLeopardPorts_devel_libsdl2/libsdl2/work/SDL2-2.0.9/src/video/cocoa/SDL_cocoavideo.h:61:14: error: unknown type name 'NSEventMask'
 static const NSEventMask NSEventMaskAny = NSAnyEventMask;
              ^~~~~~~~~~~
In file included from /opt/local/var/macports/build/_opt_PPCLeopardPorts_devel_libsdl2/libsdl2/work/SDL2-2.0.9/src/video/cocoa/SDL_cocoaclipboard.m:25:0:
/opt/local/var/macports/build/_opt_PPCLeopardPorts_devel_libsdl2/libsdl2/work/SDL2-2.0.9/src/video/cocoa/SDL_cocoavideo.h:61:14: error: unknown type name 'NSEventMask'
 static const NSEventMask NSEventMaskAny = NSAnyEventMask;
              ^~~~~~~~~~~
/opt/local/var/macports/build/_opt_PPCLeopardPorts_devel_libsdl2/libsdl2/work/SDL2-2.0.9/src/video/cocoa/SDL_cocoaclipboard.m: In function 'GetTextFormat':
/opt/local/var/macports/build/_opt_PPCLeopardPorts_devel_libsdl2/libsdl2/work/SDL2-2.0.9/src/video/cocoa/SDL_cocoaclipboard.m:31:20: warning: unused variable 'data' [-Wunused-variable]
     SDL_VideoData *data = (SDL_VideoData *) _this->driverdata;
                    ^~~~
/opt/local/var/macports/build/_opt_PPCLeopardPorts_devel_libsdl2/libsdl2/work/SDL2-2.0.9/src/video/cocoa/SDL_cocoaevents.m:125:1: error: cannot find protocol declaration for 'NSApplicationDelegate'
 @interface SDLAppDelegate : NSObject <NSApplicationDelegate> {
 ^

comment:24 in reply to:  21 Changed 3 years ago by barracuda156

Replying to kencu:

I started working on the latest libsdl2 – to move in to Cmake build system and fix for PPC, but ran into this: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105522

Need to wait until Iain fixes gcc :)

comment:25 Changed 2 years ago by paulpall (Paul Johannes Aru)

Cc: paulpall added

comment:26 Changed 2 years ago by mascguy (Christopher Nielsen)

Cc: mascguy added
Keywords: snowleopard lion added
Owner: set to jmroot
Status: newassigned
Version: 2.7.12.7.2

The latest update breaks 10.6 and 10.7 as well.

For 10.7, compilation fails with:

libsdl2/work/SDL2-2.24.0/src/video/cocoa/SDL_cocoaevents.m:348:46:
error: no visible @interface for 'NSBundle' declares the selector 'loadNibNamed:owner:topLevelObjects:'
            success = [[NSBundle mainBundle] loadNibNamed:mainNibFileName owner:[NSApplication sharedApplication] topLevelObjects:nil];
                       ~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.

While the headers now disallow building on 10.6 and earlier:

include/SDL_platform.h:112:3: error: SDL for Mac OS X only supports deploying on 10.7 and above.
# error SDL for Mac OS X only supports deploying on 10.7 and above.
  ^

comment:27 Changed 2 years ago by mascguy (Christopher Nielsen)

Summary: libsdl2: find some version to use for Tiger and Leopardlibsdl2: builds fail for 10.7 and earlier

comment:28 Changed 2 years ago by kencu (Ken)

reverting the change that broke 10.6 is easy...

https://github.com/libsdl-org/SDL/commit/d35c737f1c8ba4d28c3d45c557961b3ddce9bef0

what is not so easy is that everywhere in SDL now, they will no longer take steps to maintain 10.6 support ... so this will degrade over time, possibly quite quickly.

might have to peg 10.6 at 2.22.0 which we have on the packages server. And that is not too bad -- should be good for a few years, at least.

And maybe some SnowLeopard lover will come along to maintain it for a while with workarounds like we did with 10.4 and 10.5, who knows...

comment:29 in reply to:  28 Changed 2 years ago by jmroot (Joshua Root)

Replying to kencu:

reverting the change that broke 10.6 is easy...

https://github.com/libsdl-org/SDL/commit/d35c737f1c8ba4d28c3d45c557961b3ddce9bef0

That was just documenting the breakage that already happened when they got rid of the code paths supporting non-ARC builds.

comment:30 Changed 2 years ago by jmroot (Joshua Root)

Keywords: snowleopard lion removed
Owner: jmroot deleted
Summary: libsdl2: builds fail for 10.7 and earlierlibsdl2: find some version to use for Tiger and Leopard

I'm not going to work on Leopard support, and also the relevant ticket for Snow Leopard is #52210.

comment:31 in reply to:  28 Changed 2 years ago by barracuda156

Replying to kencu:

And maybe some SnowLeopard lover will come along to maintain it for a while with workarounds like we did with 10.4 and 10.5, who knows...

Well, if I manage to fix it for PPC…

Not really high on priority list of what to fix, but I will return to it in a while.

comment:32 Changed 2 years ago by mascguy (Christopher Nielsen)

Owner: set to barracuda156

comment:33 Changed 9 months ago by rmottola (Riccardo)

I that on 10.5 today: interstingly I got a big jump:

libsdl2                        2.0.3_0 < 2.30.0_0   

and 2.30 moans with:

leopard
--->  Fetching distfiles for libsdl2-snowleopard
Error: Failed to fetch libsdl2-snowleopard: Building libsdl2-snowleopard @2.0.22 on Mac OS X 10.6 requires the MacOSX10.7.sdk to be present in /Developer/SDKs/
Error: See /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_libsdl2-snowleopard/libsdl2-snowleopard/main.log for details.

But I am on Leopard . I wonder if the error is bogus, since 2.0.22 did build without 10.7 SDK, right? or do we need... libsdl2-leopard ??

comment:34 in reply to:  33 Changed 9 months ago by barracuda156

Replying to rmottola:

I that on 10.5 today: interstingly I got a big jump:

libsdl2                        2.0.3_0 < 2.30.0_0   

and 2.30 moans with:

leopard
--->  Fetching distfiles for libsdl2-snowleopard
Error: Failed to fetch libsdl2-snowleopard: Building libsdl2-snowleopard @2.0.22 on Mac OS X 10.6 requires the MacOSX10.7.sdk to be present in /Developer/SDKs/
Error: See /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_libsdl2-snowleopard/libsdl2-snowleopard/main.log for details.

But I am on Leopard . I wonder if the error is bogus, since 2.0.22 did build without 10.7 SDK, right? or do we need... libsdl2-leopard ??

I am not particularly sure what is going on with 10.5 on x86. I am also not sure that it is a great idea to use 10.7 SDK on 10.6, forget 10.5.

libsdl2 can be built with a native SDK with X11 backend, but it needs some fixes. May not yet work on PPC as-is, but perhaps on x86 should. Once I make sure it works, I will make a port for it.

comment:35 Changed 9 months ago by kencu (Ken)

Using the 10.7 SDK on 10.6 has worked perfectly for years now -- SDL is written to do that, in the proper Apple way.

However, they recently decided to drop support for 10.6, as they would inevitably do, and move the bar up. So we pegged libsdl2 at the last version for 10.6 that looked solid.

Newer versions of SDL than the one we pegged for 10.6 already are highly unlikely to work properly, even if they miraculously build, because support was dropped and all the fallbacks and workarounds were being removed.

You had postulated that perhaps a newer libsdl2 could be made to work properly on older systems by going through X11 and ignoring the Apple SDK limitations by not using the Apple APIs. This could possibly work -- last I heard, you were testing it to see if it did or did not actually function, as there is no point committing non-functional garbage into MacPorts port tree.

comment:36 Changed 9 months ago by kencu (Ken)

For 10.4 and 10.5, we had pegged the last versions of SDL for those systems that we could make work reasonably well. They were getting pretty old though, and not much current software was restricting itself to the API those old versions of SDL provided.

For those systems, either a lot of holdbacks on software were going to be needed, or perhaps the X11 miracle might be shown to work and give them new life.

(OTOH, I heard you say X11 is completely nonfunctional for you on 10.5 now, so --- no idea about that, but if so, that is pretty bad news for 10.5 and less.).

comment:37 Changed 8 months ago by barracuda156

This will likely work on 10.5.8 ppc: https://ports.macports.org/port/libsdl2-powerpc

Please let me know if it does not build, it will be addressed.

Joystick module is disabled at the moment, so games and emulators are likely not to run. Video output via SDL is confirmed to work, however. Anything not relying on joystick is likely to work too.

Note: See TracTickets for help on using tickets.