diff --git a/supertuxkart-0.8.1-bullet.patch b/supertuxkart-0.8.1-bullet.patch new file mode 100644 index 0000000..e186909 --- /dev/null +++ b/supertuxkart-0.8.1-bullet.patch @@ -0,0 +1,37 @@ +diff -uNr SuperTuxKart-0.8.1.desktop/src/physics/btKartRaycast.cpp SuperTuxKart-0.8.1.bullet/src/physics/btKartRaycast.cpp +--- SuperTuxKart-0.8.1.desktop/src/physics/btKartRaycast.cpp 2013-11-15 16:52:39.000000000 +0400 ++++ SuperTuxKart-0.8.1.bullet/src/physics/btKartRaycast.cpp 2013-11-28 17:18:39.953097832 +0400 +@@ -63,7 +63,7 @@ + + if (rayCallback.hasHit()) + { +- btRigidBody* body = btRigidBody::upcast(rayCallback.m_collisionObject); ++ const btRigidBody* body = btRigidBody::upcast(rayCallback.m_collisionObject); + if (body && body->hasContactResponse()) + { + result.m_hitPointInWorld = rayCallback.m_hitPointWorld; +@@ -88,7 +88,7 @@ + result.m_hitNormalInWorld.getZ()); + #endif + } +- return body; ++ return (void *) body; + } + } + return 0; +diff -uNr SuperTuxKart-0.8.1.desktop/src/physics/physics.cpp SuperTuxKart-0.8.1.bullet/src/physics/physics.cpp +--- SuperTuxKart-0.8.1.desktop/src/physics/physics.cpp 2013-11-15 16:52:39.000000000 +0400 ++++ SuperTuxKart-0.8.1.bullet/src/physics/physics.cpp 2013-11-28 17:18:39.953097832 +0400 +@@ -450,10 +450,8 @@ + btPersistentManifold* contact_manifold = + m_dynamics_world->getDispatcher()->getManifoldByIndexInternal(i); + +- btCollisionObject* objA = +- static_cast(contact_manifold->getBody0()); +- btCollisionObject* objB = +- static_cast(contact_manifold->getBody1()); ++ const btCollisionObject* objA = contact_manifold->getBody0(); ++ const btCollisionObject* objB = contact_manifold->getBody1(); + + unsigned int num_contacts = contact_manifold->getNumContacts(); + if(!num_contacts) continue; // no real collision diff --git a/supertuxkart-0.8.1-bundled.patch b/supertuxkart-0.8.1-bundled.patch new file mode 100644 index 0000000..ffb3853 --- /dev/null +++ b/supertuxkart-0.8.1-bundled.patch @@ -0,0 +1,198 @@ +diff -uNr SuperTuxKart-0.8.1.bullet/cmake/FindENet.cmake SuperTuxKart-0.8.1.bundled/cmake/FindENet.cmake +--- SuperTuxKart-0.8.1.bullet/cmake/FindENet.cmake 1970-01-01 03:00:00.000000000 +0300 ++++ SuperTuxKart-0.8.1.bundled/cmake/FindENet.cmake 2013-11-29 13:54:32.617749994 +0400 +@@ -0,0 +1,48 @@ ++# - Try to find enet ++# Once done this will define ++# ++# ENET_FOUND - system has enet ++# ENet_INCLUDE_DIRS - the enet include directory ++# ENet_LIBRARIES - the libraries needed to use enet ++# ++# $ENETDIR is an environment variable used for finding enet. ++# ++# Borrowed from The Mana World ++# http://themanaworld.org/ ++# ++# Several changes and additions by Fabian 'x3n' Landau ++# Lots of simplifications by Adrian Friedli ++# > www.orxonox.net < ++ ++FIND_PATH(ENet_INCLUDE_DIRS enet/enet.h ++ PATHS ++ $ENV{ENETDIR} ++ /usr/local ++ /usr ++ PATH_SUFFIXES include ++ ) ++ ++FIND_LIBRARY(ENet_LIBRARY ++ NAMES enet ++ PATHS ++ $ENV{ENETDIR} ++ /usr/local ++ /usr ++ PATH_SUFFIXES lib ++ ) ++ ++# handle the QUIETLY and REQUIRED arguments and set ENET_FOUND to TRUE if ++# all listed variables are TRUE ++INCLUDE(FindPackageHandleStandardArgs) ++FIND_PACKAGE_HANDLE_STANDARD_ARGS(ENet DEFAULT_MSG ENet_LIBRARY ENet_INCLUDE_DIRS) ++ ++IF (ENET_FOUND) ++ IF(WIN32) ++ SET(WINDOWS_ENET_DEPENDENCIES "ws2_32;winmm") ++ SET(ENet_LIBRARIES ${ENet_LIBRARY} ${WINDOWS_ENET_DEPENDENCIES}) ++ ELSE(WIN32) ++ SET(ENet_LIBRARIES ${ENet_LIBRARY}) ++ ENDIF(WIN32) ++ENDIF (ENET_FOUND) ++ ++MARK_AS_ADVANCED(ENet_LIBRARY ENet_LIBRARIES ENet_INCLUDE_DIRS) +diff -uNr SuperTuxKart-0.8.1.bullet/cmake/FindIrrlicht.cmake SuperTuxKart-0.8.1.bundled/cmake/FindIrrlicht.cmake +--- SuperTuxKart-0.8.1.bullet/cmake/FindIrrlicht.cmake 1970-01-01 03:00:00.000000000 +0300 ++++ SuperTuxKart-0.8.1.bundled/cmake/FindIrrlicht.cmake 2013-11-29 13:54:32.617749994 +0400 +@@ -0,0 +1,94 @@ ++#FindIrrlicht.cmake ++ ++set(IRRLICHT_SOURCE_DIR "" CACHE PATH "Path to irrlicht source directory (optional)") ++ ++if( UNIX ) ++ # Unix ++else( UNIX ) ++ # Windows ++endif( UNIX ) ++ ++# Find include directory ++ ++if(NOT IRRLICHT_SOURCE_DIR STREQUAL "") ++ set(IRRLICHT_SOURCE_DIR_INCLUDE ++ "${IRRLICHT_SOURCE_DIR}/include" ++ ) ++ ++ set(IRRLICHT_LIBRARY_NAMES libIrrlicht.a Irrlicht Irrlicht.lib) ++ ++ if(WIN32) ++ if(MSVC) ++ set(IRRLICHT_SOURCE_DIR_LIBS "${IRRLICHT_SOURCE_DIR}/lib/Win32-visualstudio") ++ set(IRRLICHT_LIBRARY_NAMES Irrlicht.lib) ++ else() ++ set(IRRLICHT_SOURCE_DIR_LIBS "${IRRLICHT_SOURCE_DIR}/lib/Win32-gcc") ++ set(IRRLICHT_LIBRARY_NAMES libIrrlicht.a libIrrlicht.dll.a) ++ endif() ++ else() ++ set(IRRLICHT_SOURCE_DIR_LIBS "${IRRLICHT_SOURCE_DIR}/lib/Linux") ++ set(IRRLICHT_LIBRARY_NAMES libIrrlicht.a) ++ endif() ++ ++ FIND_PATH(IRRLICHT_INCLUDE_DIR NAMES irrlicht.h ++ PATHS ++ ${IRRLICHT_SOURCE_DIR_INCLUDE} ++ NO_DEFAULT_PATH ++ ) ++ ++ FIND_LIBRARY(IRRLICHT_LIBRARY NAMES ${IRRLICHT_LIBRARY_NAMES} ++ PATHS ++ ${IRRLICHT_SOURCE_DIR_LIBS} ++ NO_DEFAULT_PATH ++ ) ++ ++else() ++ ++ FIND_PATH(IRRLICHT_INCLUDE_DIR NAMES irrlicht.h ++ PATHS ++ /usr/local/include/irrlicht ++ /usr/include/irrlicht ++ ) ++ ++ FIND_LIBRARY(IRRLICHT_LIBRARY NAMES libIrrlicht.so Irrlicht ++ PATHS ++ /usr/local/lib ++ /usr/lib ++ /usr/lib64 ++ ) ++endif() ++ ++MESSAGE(STATUS "IRRLICHT_SOURCE_DIR = ${IRRLICHT_SOURCE_DIR}") ++MESSAGE(STATUS "IRRLICHT_INCLUDE_DIR = ${IRRLICHT_INCLUDE_DIR}") ++MESSAGE(STATUS "IRRLICHT_LIBRARY = ${IRRLICHT_LIBRARY}") ++ ++# On windows, find the dll for installation ++if(WIN32) ++ if(MSVC) ++ FIND_FILE(IRRLICHT_DLL NAMES Irrlicht.dll ++ PATHS ++ "${IRRLICHT_SOURCE_DIR}/bin/Win32-VisualStudio" ++ DOC "Path of the Irrlicht dll (for installation)" ++ ) ++ else() ++ FIND_FILE(IRRLICHT_DLL NAMES Irrlicht.dll ++ PATHS ++ "${IRRLICHT_SOURCE_DIR}/bin/Win32-gcc" ++ DOC "Path of the Irrlicht dll (for installation)" ++ ) ++ endif() ++ MESSAGE(STATUS "IRRLICHT_DLL = ${IRRLICHT_DLL}") ++endif(WIN32) ++ ++# handle the QUIETLY and REQUIRED arguments and set IRRLICHT_FOUND to TRUE if ++# all listed variables are TRUE ++INCLUDE(FindPackageHandleStandardArgs) ++FIND_PACKAGE_HANDLE_STANDARD_ARGS(IRRLICHT DEFAULT_MSG IRRLICHT_LIBRARY IRRLICHT_INCLUDE_DIR) ++ ++IF(IRRLICHT_FOUND) ++ SET(IRRLICHT_LIBRARIES ${IRRLICHT_LIBRARY}) ++ELSE(IRRLICHT_FOUND) ++ SET(IRRLICHT_LIBRARIES) ++ENDIF(IRRLICHT_FOUND) ++ ++MARK_AS_ADVANCED(IRRLICHT_LIBRARY IRRLICHT_INCLUDE_DIR IRRLICHT_DLL) +diff -uNr SuperTuxKart-0.8.1.bullet/CMakeLists.txt SuperTuxKart-0.8.1.bundled/CMakeLists.txt +--- SuperTuxKart-0.8.1.bullet/CMakeLists.txt 2013-11-29 00:12:27.898889486 +0400 ++++ SuperTuxKart-0.8.1.bundled/CMakeLists.txt 2013-11-29 13:55:39.685530303 +0400 +@@ -36,17 +36,19 @@ + set(STK_INSTALL_DATA_DIR "share/supertuxkart" CACHE + STRING "Install data folder to this directory, absolute or relative to CMAKE_INSTALL_PREFIX") + ++INCLUDE (FindPkgConfig) ++ + # Build the Bullet physics library +-add_subdirectory("${PROJECT_SOURCE_DIR}/lib/bullet") +-include_directories("${PROJECT_SOURCE_DIR}/lib/bullet/src") ++pkg_search_module(BULLET REQUIRED bullet) ++include_directories(${BULLET_INCLUDE_DIRS}) + + # Build the ENet UDP network library +-add_subdirectory("${PROJECT_SOURCE_DIR}/lib/enet") +-include_directories("${PROJECT_SOURCE_DIR}/lib/enet/include") ++find_package(ENet REQUIRED) ++include_directories(${ENet_INCLUDE_DIRS}) + + # Build the irrlicht library +-add_subdirectory("${PROJECT_SOURCE_DIR}/lib/irrlicht") +-include_directories("${PROJECT_SOURCE_DIR}/lib/irrlicht/include") ++find_package(Irrlicht REQUIRED) ++include_directories(${IRRLICHT_INCLUDE_DIR}) + + # Build the Wiiuse library + # Note: wiiuse MUST be declared after irrlicht, since otherwise +@@ -222,14 +224,12 @@ + + # Common library dependencies + target_link_libraries(supertuxkart +- bulletdynamics +- bulletcollision +- bulletmath +- enet +- stkirrlicht ++ ${BULLET_LIBRARIES} ++ ${ENet_LIBRARIES} ++ ${IRRLICHT_LIBRARIES} ++ IrrXML + ${CURL_LIBRARIES} + ${OGGVORBIS_LIBRARIES} +- ${IRRLICHT_XF86VM_LIBRARY} + ${OPENAL_LIBRARY} + ${OPENGL_LIBRARIES}) + diff --git a/supertuxkart-0.8.1-desktop.patch b/supertuxkart-0.8.1-desktop.patch new file mode 100644 index 0000000..fbeadbb --- /dev/null +++ b/supertuxkart-0.8.1-desktop.patch @@ -0,0 +1,51 @@ +diff -uNr SuperTuxKart-0.8.1/CMakeLists.txt SuperTuxKart-0.8.1.desktop/CMakeLists.txt +--- SuperTuxKart-0.8.1/CMakeLists.txt 2013-11-25 01:54:13.000000000 +0400 ++++ SuperTuxKart-0.8.1.desktop/CMakeLists.txt 2013-11-28 16:53:02.072142700 +0400 +@@ -292,9 +292,8 @@ + # ==== Install target ==== + install(TARGETS supertuxkart RUNTIME DESTINATION ${STK_INSTALL_BINARY_DIR} BUNDLE DESTINATION .) + install(DIRECTORY ${STK_DATA_DIR} DESTINATION ${STK_INSTALL_DATA_DIR} PATTERN ".svn" EXCLUDE) +-install(FILES ${PROJECT_BINARY_DIR}/supertuxkart.desktop DESTINATION share/applications) +-install(FILES data/supertuxkart_32.png data/supertuxkart_128.png DESTINATION share/pixmaps) ++install(FILES data/supertuxkart.desktop DESTINATION share/applications) ++install(FILES data/supertuxkart_32.png DESTINATION share/icons/hicolor/32x32/apps RENAME supertuxkart.png) ++install(FILES data/supertuxkart_128.png DESTINATION share/icons/hicolor/128x128/apps RENAME supertuxkart.png) + + set(PREFIX ${CMAKE_INSTALL_PREFIX}) +-configure_file(data/supertuxkart_desktop.template supertuxkart.desktop) +-add_dependencies(supertuxkart supertuxkart.desktop) +diff -uNr SuperTuxKart-0.8.1/data/supertuxkart.desktop SuperTuxKart-0.8.1.desktop/data/supertuxkart.desktop +--- SuperTuxKart-0.8.1/data/supertuxkart.desktop 1970-01-01 03:00:00.000000000 +0300 ++++ SuperTuxKart-0.8.1.desktop/data/supertuxkart.desktop 2013-11-28 16:53:56.000766633 +0400 +@@ -0,0 +1,13 @@ ++[Desktop Entry] ++Name=SuperTuxKart ++Icon=supertuxkart ++GenericName=A kart racing game ++GenericName[de_DE]=Ein Kart-Rennspiel ++GenericName[fr_FR]=Un jeu de karting ++GenericName[gl]=Xogo de carreiras con karts ++GenericName[ro_RO]=Un joc de curse cu carturi ++Exec=supertuxkart-wrapper --no-console ++Terminal=false ++StartupNotify=false ++Type=Application ++Categories=Game;ActionGame;ArcadeGame; +diff -uNr SuperTuxKart-0.8.1/data/supertuxkart_desktop.template SuperTuxKart-0.8.1.desktop/data/supertuxkart_desktop.template +--- SuperTuxKart-0.8.1/data/supertuxkart_desktop.template 2013-08-30 22:46:11.000000000 +0400 ++++ SuperTuxKart-0.8.1.desktop/data/supertuxkart_desktop.template 1970-01-01 03:00:00.000000000 +0300 +@@ -1,14 +0,0 @@ +-[Desktop Entry] +-Name=SuperTuxKart +-Icon=@PREFIX@/share/pixmaps/supertuxkart_128.png +-GenericName=A kart racing game +-GenericName[de_DE]=Ein Kart-Rennspiel +-GenericName[fr_FR]=Un jeu de karting +-GenericName[gl]=Xogo de carreiras con karts +-GenericName[ro_RO]=Un joc de curse cu carturi +-Exec=@PREFIX@/@STK_INSTALL_BINARY_DIR@/supertuxkart --no-console +-Terminal=false +-StartupNotify=false +-Type=Application +-TryExec=@PREFIX@/@STK_INSTALL_BINARY_DIR@/supertuxkart +-Categories=Game;ArcadeGame; diff --git a/supertuxkart.spec b/supertuxkart.spec index a06414f..d90a7e3 100644 --- a/supertuxkart.spec +++ b/supertuxkart.spec @@ -1,6 +1,6 @@ Name: supertuxkart -Version: 0.8 -Release: 2%{?dist} +Version: 0.8.1 +Release: 1%{?dist} Summary: Kids 3D go-kart racing game featuring Tux Group: Amusements/Games License: GPLv2+ and GPLv3 and CC-BY-SA @@ -9,14 +9,17 @@ Source0: http://downloads.sourceforge.net/%{name}/%{name}-%{version}-src. Source1: %{name}.6 Source2: supertuxkart-0.7.3-license-clarification.txt Patch0: supertuxkart-fhs.patch -Patch1: supertuxkart-0.7.3-desktop.patch -Patch2: SuperTuxKart-0.8-new-bullet.patch +Patch1: supertuxkart-0.8.1-desktop.patch +Patch2: supertuxkart-0.8.1-bullet.patch +Patch3: supertuxkart-0.8.1-bundled.patch +BuildRequires: cmake BuildRequires: libvorbis-devel freeglut-devel desktop-file-utils BuildRequires: openal-soft-devel freealut-devel >= 1.1.0-10 libtool -BuildRequires: irrlicht-devel libcurl-devel enet-devel bullet-devel +BuildRequires: libcurl-devel enet-devel bullet-devel fribidi-devel +BuildRequires: irrlicht-devel >= 1.8.1-2 Requires: hicolor-icon-theme opengl-games-utils # Provide so that yum install tuxkart will work, obsolete for auto upgrade -Provides: tuxkart = 0.4.0-6 +Provides: tuxkart = 0.8.1-1 Obsoletes: tuxkart < 0.4.0-6 Requires: %{name}-data = %{version} @@ -29,7 +32,6 @@ up powerups such as: (homing) missiles, magnets and portable zippers. %package data Summary: %{summary} -Group: Amusements/Games Requires: %{name} = %{version} BuildArch: noarch @@ -42,57 +44,26 @@ cp -p %{SOURCE2} . %patch0 -p1 %patch1 -p1 %patch2 -p1 -# supertuxkart-0.8 does not ship pre-build configure scripts -autoreconf -i -f - +%patch3 -p1 +# Delete bundled libs +rm -rf lib/ +sed -i -e '/setAnimationStrength/s/^/\/\//' src/karts/kart_model.cpp %build -%configure -# kill all the bundled libs, needs to be done after configure -rm -rf lib -make %{?_smp_mflags} BULLETTREE= ENETTREE= \ - CPPFLAGS="-I/usr/include/irrlicht -I/usr/include/bullet" \ - irrlicht_LIBS="-lIrrlicht -lIrrXML -lX11 -lpthread" \ - bullet_LIBS="-lBulletCollision -lBulletDynamics -lLinearMath" - +mkdir -p build +cd build +%cmake ../ -DUSE_WIIUSE=no +make %{?_smp_mflags} %install -# make install is borken (lots of data files missing), lets DIY -mkdir -p $RPM_BUILD_ROOT%{_bindir} -mkdir -p $RPM_BUILD_ROOT%{_datadir}/%{name} -install -m 755 src/%{name} $RPM_BUILD_ROOT%{_bindir} -cp -pr data $RPM_BUILD_ROOT%{_datadir}/%{name} -rm `find $RPM_BUILD_ROOT%{_datadir}/%{name} -name "Makefile*"` -rm $RPM_BUILD_ROOT%{_datadir}/%{name}/data/po/extract_strings_from_XML.py -rm $RPM_BUILD_ROOT%{_datadir}/%{name}/data/po/gen-mo.sh -rm $RPM_BUILD_ROOT%{_datadir}/%{name}/data/po/gui_strings.h -rm $RPM_BUILD_ROOT%{_datadir}/%{name}/data/po/update_pot.sh -rm $RPM_BUILD_ROOT%{_datadir}/%{name}/data/run_me.sh -rm $RPM_BUILD_ROOT%{_datadir}/%{name}/data/supertuxkart* -rm $RPM_BUILD_ROOT%{_datadir}/%{name}/data/tracks/greenvalley/.directory - -ln -s opengl-game-wrapper.sh $RPM_BUILD_ROOT%{_bindir}/%{name}-wrapper - -# below is the desktop file and icon stuff. -mkdir -p $RPM_BUILD_ROOT%{_datadir}/applications -desktop-file-install \ -%if 0%{?fedora} && 0%{?fedora} < 19 - --vendor fedora \ -%endif - --dir $RPM_BUILD_ROOT%{_datadir}/applications \ - data/%{name}.desktop -mkdir -p $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/32x32/apps -mkdir -p $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/64x64/apps -install -p -m 644 data/%{name}_32.xpm \ - $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/32x32/apps/%{name}.xpm -install -p -m 644 data/%{name}_64.xpm \ - $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/64x64/apps/%{name}.xpm +cd build +%make_install +ln -s opengl-game-wrapper.sh %{buildroot}%{_bindir}/%{name}-wrapper # add the manpage (courtesy of Debian) mkdir -p $RPM_BUILD_ROOT%{_mandir}/man6 install -p -m 644 %{SOURCE1} $RPM_BUILD_ROOT%{_mandir}/man6 - %post touch --no-create %{_datadir}/icons/hicolor &>/dev/null || : @@ -105,19 +76,20 @@ fi %posttrans gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : - %files %doc AUTHORS COPYING ChangeLog README TODO supertuxkart-0.7.3-license-clarification.txt %{_bindir}/%{name}* %{_mandir}/man6/%{name}.6.gz %{_datadir}/applications/*%{name}.desktop -%{_datadir}/icons/hicolor/*/apps/%{name}.xpm +%{_datadir}/icons/hicolor/*/apps/%{name}.png %files data %{_datadir}/%{name} - %changelog +* Wed Nov 27 2013 Igor Gnatenko - 0.8.1-1 +- Update to upstream 0.8.1 + * Mon Nov 25 2013 Hans de Goede - 0.8-2 - Drop no longer needed SDL and mikmod BuildRequires