Skip to content
This repository has been archived by the owner on Jul 4, 2023. It is now read-only.

Commit

Permalink
sdl: added optional tests
Browse files Browse the repository at this point in the history
Adds optional tests to SDL.

Closes #34353

Closes #34559.

Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
  • Loading branch information
DomT4 authored and MikeMcQuaid committed Nov 30, 2014
1 parent 57e61c9 commit 0d6d021
Showing 1 changed file with 35 additions and 14 deletions.
49 changes: 35 additions & 14 deletions Library/Formula/sdl.rb
@@ -1,9 +1,9 @@
require 'formula'
require "formula"

class Sdl < Formula
homepage 'http://www.libsdl.org/'
url 'http://www.libsdl.org/release/SDL-1.2.15.tar.gz'
sha1 '0c5f193ced810b0d7ce3ab06d808cbb5eef03a2c'
homepage "http://www.libsdl.org/"
url "https://www.libsdl.org/release/SDL-1.2.15.tar.gz"
sha1 "0c5f193ced810b0d7ce3ab06d808cbb5eef03a2c"

bottle do
cellar :any
Expand All @@ -14,21 +14,22 @@ class Sdl < Formula
end

head do
url 'http://hg.libsdl.org/SDL', :branch => 'SDL-1.2', :using => :hg
url "http://hg.libsdl.org/SDL", :branch => "SDL-1.2", :using => :hg

depends_on "autoconf" => :build
depends_on "automake" => :build
depends_on "libtool" => :build
end

option 'with-x11', 'Compile with support for X11 video driver'
option "with-x11", "Compile with support for X11 video driver"
option "with-tests", "Compile and install the tests"
option :universal

deprecated_option "with-x11-driver" => "with-x11"

depends_on :x11 => :optional

if build.with? 'x11'
if build.with? "x11"
depends_on "autoconf" => :build
depends_on "automake" => :build
depends_on "libtool" => :build
Expand Down Expand Up @@ -57,23 +58,43 @@ def install
# we have to do this because most build scripts assume that all sdl modules
# are installed to the same prefix. Consequently SDL stuff cannot be
# keg-only but I doubt that will be needed.
inreplace %w[sdl.pc.in sdl-config.in], '@prefix@', HOMEBREW_PREFIX
inreplace %w[sdl.pc.in sdl-config.in], "@prefix@", HOMEBREW_PREFIX

ENV.universal_binary if build.universal?

system "./autogen.sh" if build.head? or build.with? 'x11'
system "./autogen.sh" if build.head? or build.with? "x11"

args = %W[--prefix=#{prefix}]
args << "--disable-nasm" unless MacOS.version >= :mountain_lion # might work with earlier, might only work with new clang
# LLVM-based compilers choke on the assembly code packaged with SDL.
args << '--disable-assembly' if ENV.compiler == :llvm or (ENV.compiler == :clang and MacOS.clang_build_version < 421)
args << "--without-x" if build.without? 'x11'
args << "--disable-assembly" if ENV.compiler == :llvm or (ENV.compiler == :clang and MacOS.clang_build_version < 421)
args << "--without-x" if build.without? "x11"
args << "--with-x" if build.with? "x11"

system './configure', *args
system "make install"
system "./configure", *args
system "make", "install"

# Copy source files needed for Ojective-C support.
libexec.install Dir["src/main/macosx/*"] unless build.head?
libexec.install Dir["src/main/macosx/*"] if build.stable?

# The resulting script in bin is hardcoded to /usr/local, which can cause pain.
inreplace "#{bin}/sdl-config", "prefix=/usr/local", "prefix=#{prefix}"

if build.with? "tests"
ENV.prepend_path "PATH", "#{bin}"
cd "test" do
system "./configure", "--prefix=#{libexec}/tests"
system "make"
# Upstream - Why no make install? Why?
(share+"tests").install %w{ checkkeys graywin loopwave testalpha testbitmap testblitspeed testcdrom
testcursor testdyngl testerror testfile testgamma testgl testhread testiconv
testjoystick testkeys testloadso testlock testoverlay testoverlay2 testpalette
testplatform testsem testsprite testtimer testver testvidinfo testwin testwm
threadwin torturethread }
(share+"test_extras").install %w{ icon.bmp moose.dat picture.xbm sail.bmp sample.bmp sample.wav }
bin.write_exec_script Dir["#{share}/tests/*"]
end
end
end

test do
Expand Down

6 comments on commit 0d6d021

@sidney
Copy link
Contributor

@sidney sidney commented on 0d6d021 Dec 5, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure if adding a comment to a commit page is the correct procedure, but I have hit a problem due to a change introduced by this commit. The inreplace of the prefix path in sdl-config from /usr/local/ to #{prefix} has broken my build of an application that depends on sdl, sdl_image, sdl_mixer, and sdl_ttf because it uses sdl-config --prefix to get the path prefix used for all of the sdl_* packages, not just sdl itself. There is no provision in sdl-config for sdl and the various sdl_* to be installed in separate directories, so you don't really get to install sdl keg-only if you want to use the sdl_* packages. What is the "pain" that the comment refers to regarding leaving sdl-config prefix as /usr/local?

@DomT4
Copy link
Member Author

@DomT4 DomT4 commented on 0d6d021 Dec 5, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, commenting here is fine.

What is the "pain" that the comment refers to regarding leaving sdl-config prefix as /usr/local?

It throws an enormous strop and breaks all of the optional tests. Like, all of them, heh. But obviously, if it's causing problems more generally for people the tests have a lower priority than general functionality. I'll take another look at this locally.

@DomT4
Copy link
Member Author

@DomT4 DomT4 commented on 0d6d021 Dec 5, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, this happens with-tests and without the inreplace:

checking for sdl-config... /usr/local/Cellar/sdl/1.2.15/bin/sdl-config
checking for SDL - version >= 1.2.10... no
*** Could not run SDL test program, checking why...
*** The test program failed to compile or link. See the file config.log for the
*** exact error that occured. This usually means SDL was incorrectly installed
*** or that you have moved SDL since it was installed. In the latter case, you
*** may want to edit the sdl-config script: /usr/local/Cellar/sdl/1.2.15/bin/sdl-config
configure: error: *** SDL version 1.2.10 not found!

Will try a few things to get around it and see.

@mistydemeo
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@DomT4 Earlier in the formula, an inreplace intentionally sets the prefix inside sdl_config to HOMEBREW_PREFIX - it's to solve the problem that @sidney is having.

@DomT4
Copy link
Member Author

@DomT4 DomT4 commented on 0d6d021 Dec 5, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I can see that now.

    # we have to do this because most build scripts assume that all sdl modules
    # are installed to the same prefix. Consequently SDL stuff cannot be
    # keg-only but I doubt that will be needed.
    inreplace %w[sdl.pc.in sdl-config.in], "@prefix@", HOMEBREW_PREFIX

I didn't actually notice it before because the .in extension was outdated by the time the tests are compiled, and so when I was in the shell trying to work out what was happening sdl-config was already an executable, and my brain didn't flag that to me. I can see it now.

I'm trying a few things locally, but failing that, I'll just revert the whole commit.

@DomT4
Copy link
Member Author

@DomT4 DomT4 commented on 0d6d021 Dec 5, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.