package/physfs: new package
PATCH v5 1/4 package/physfs: new package
Backport a patch from SuperTux project:
https://github.com/SuperTux/physfs/commit/61d3b63abcba8e9615dcb8a3d1fc026bf7f8d5f8
---
v5: Fix license infos (ThomasP,Arnout,Yann)
v4: add missing license infos
Complete lzma license infos (ThomasP)
v3: new patch
--- DEVELOPERS | 1 + package/Config.in | 1 + .../physfs/0001-Fix-builds-with-modern-GCC.patch | 38 ++++++++++++++++++++++ package/physfs/Config.in | 10 ++++++ package/physfs/physfs.mk | 30 +++++++++++++++++ 5 files changed, 80 insertions(+) create mode 100644 package/physfs/0001-Fix-builds-with-modern-GCC.patch create mode 100644 package/physfs/Config.in create mode 100644 package/physfs/physfs.mk
DEVELOPERS +1 -0
@@ -1325,6 +1325,7 @@ F: package/linux-syscall-support/ F: package/lugaru/ F: package/mcelog/ F: package/openpowerlink/ +F: package/physfs/ F: package/stress-ng/ F: package/terminology/ F: package/upower/
package/Config.in +1 -0
@@ -986,6 +986,7 @@ menu "Filesystem" source "package/libnfs/Config.in" source "package/libsysfs/Config.in" source "package/lockdev/Config.in" + source "package/physfs/Config.in" endmenu menu "Graphics"
package/physfs/0001-Fix-builds-with-modern-GCC.patch new file +38 -0
@@ -0,0 +1,38 @@ +From 61d3b63abcba8e9615dcb8a3d1fc026bf7f8d5f8 Mon Sep 17 00:00:00 2001 +From: Jacob Burroughs <[email protected]> +Date: Thu, 23 Jun 2016 13:03:47 -0500 +Subject: [PATCH] Fix builds with modern GCC + +From SuperTux project: +https://github.com/SuperTux/physfs/commit/61d3b63abcba8e9615dcb8a3d1fc026bf7f8d5f8 + +Signed-off-by: Romain Naour <[email protected]> +--- + CMakeLists.txt | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 2a371af..94c4844 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -50,7 +50,7 @@ endif() + # Add some gcc-specific command lines. + if(CMAKE_COMPILER_IS_GNUCC) + # Always build with debug symbols...you can strip it later. +- add_definitions(-g -pipe -Werror -fsigned-char) ++ add_definitions(-g -pipe -fsigned-char) + + # Stupid BeOS generates warnings in the system headers. + if(NOT BEOS) +@@ -304,7 +304,7 @@ if(PHYSFS_BUILD_TEST) + if(READLINE_LIBRARY) + set(HAVE_SYSTEM_READLINE TRUE) + set(TEST_PHYSFS_LIBS ${TEST_PHYSFS_LIBS} ${READLINE_LIBRARY} ${CURSES_LIBRARY}) +- include_directories(${READLINE_H} ${HISTORY_H}) ++ include_directories(SYSTEM ${READLINE_H} ${HISTORY_H}) + add_definitions(-DPHYSFS_HAVE_READLINE=1) + endif() + endif() +-- +2.9.3 +
package/physfs/Config.in new file +10 -0
@@ -0,0 +1,10 @@ +config BR2_PACKAGE_PHYSFS + bool "physfs" + depends on BR2_INSTALL_LIBSTDCPP + help + PhysicsFS; a portable, flexible file i/o abstraction. + + http://icculus.org/physfs + +comment "physfs needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP
package/physfs/physfs.mk new file +30 -0
@@ -0,0 +1,30 @@ +################################################################################ +# +# physfs +# +################################################################################ + +PHYSFS_VERSION = be27dfd07d97336145e7f49d3fd200a6e902f85e +PHYSFS_SITE = https://hg.icculus.org/icculus/physfs +PHYSFS_SITE_METHOD = hg + +PHYSFS_LICENSE = zlib license (physfs), LGPL with exceptions (lzma) +PHYSFS_LICENSE_FILES = LICENSE.txt src/lzma/LGPL.txt + +PHYSFS_INSTALL_STAGING = YES + +PHYSFS_CONF_OPTS = -DPHYSFS_BUILD_TEST=OFF + +ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +PHYSFS_CONF_OPTS += -DPHYSFS_BUILD_SHARED=ON +else +PHYSFS_CONF_OPTS += -DPHYSFS_BUILD_SHARED=OFF +endif + +ifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +PHYSFS_CONF_OPTS += -DPHYSFS_BUILD_STATIC=ON +else +PHYSFS_CONF_OPTS += -DPHYSFS_BUILD_STATIC=OFF +endif + +$(eval $(cmake-package))
Signature · 1 line
2.9.3
PATCH v5 2/4 package/supertux: new package
Checked that libphysfs.so.1 is used by supertux2 binary.
$ LD_TRACE_LOADED_OBJECTS=1 /usr/bin/supertux2 ... libphysfs.so.1 => /usr/lib64/libphysfs.so.1
---
v4: no change
v3: add physfs package dependency
upate license list
v2: update GCC minimal version to 4.8
Coding style checked with check-package script (v1) and build tested with test-pkg script.
--- DEVELOPERS | 1 + package/Config.in | 1 + package/supertux/Config.in | 38 ++++++++++++++++++++++++++++++++ package/supertux/supertux.hash | 2 ++ package/supertux/supertux.mk | 49 ++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 91 insertions(+) create mode 100644 package/supertux/Config.in create mode 100644 package/supertux/supertux.hash create mode 100644 package/supertux/supertux.mk
DEVELOPERS +1 -0
@@ -1327,6 +1327,7 @@ F: package/mcelog/ F: package/openpowerlink/ F: package/physfs/ F: package/stress-ng/ +F: package/supertux/ F: package/terminology/ F: package/upower/ F: package/xenomai/
package/Config.in +1 -0
@@ -229,6 +229,7 @@ menu "Games" source "package/rubix/Config.in" source "package/sl/Config.in" source "package/stella/Config.in" + source "package/supertux/Config.in" source "package/supertuxkart/Config.in" endmenu
package/supertux/Config.in new file +38 -0
@@ -0,0 +1,38 @@ +config BR2_PACKAGE_SUPERTUX + bool "supertux" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_HAS_LIBGL # libglew + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + depends on BR2_PACKAGE_XORG7 # libglew, SDL2 OpenGL (GLX) + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 gcc attributes noreturn + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # openal + depends on BR2_USE_MMU # SDL2 OpenGL (GLX) + depends on !BR2_STATIC_LIBS # SDL2 + depends on BR2_USE_WCHAR # Boost + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_DATE_TIME + select BR2_PACKAGE_BOOST_FILESYSTEM + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_LIBGLEW + select BR2_PACKAGE_LIBGLU # GL/glu.h + select BR2_PACKAGE_LIBOGG + select BR2_PACKAGE_LIBVORBIS + select BR2_PACKAGE_OPENAL + select BR2_PACKAGE_PHYSFS + select BR2_PACKAGE_SDL2 + select BR2_PACKAGE_SDL2_IMAGE + select BR2_PACKAGE_SDL2_OPENGL + help + SuperTux is a free classic 2D jump'n run sidescroller game in + a style similar to the original Super Mario games covered + under the GNU GPL. + + http://supertux.github.io/ + +comment "supertux needs X11 and a toolchain w/ C++, OpenGL backend, gcc >= 4.8, NPTL, dynamic library, wchar" + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_PACKAGE_HAS_LIBGL || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + BR2_STATIC_LIBS || !BR2_USE_WCHAR
package/supertux/supertux.hash new file +2 -0
@@ -0,0 +1,2 @@ +# Locally calculated +sha256 c9dc3b42991ce5c5d0d0cb94e44c4ec2373ad09029940f0e92331e7e9ada0ac5 SuperTux-v0.5.1-Source.tar.gz
package/supertux/supertux.mk new file +49 -0
49 lines not on this page · raw message
Signature · 1 line
2.9.3
PATCH v5 2/4 package/supertux: new package
Hello,
Quoted 1 line · Romain Naour
+comment "supertux needs X11 and a toolchain w/ C++, OpenGL backend, gcc >= 4.8, NPTL, dynamic library, wchar"
Saying "needs X11" while the comment will not be visible until X11 is enabled is not very useful, so I dropped this part.
Also, saying "needs a toolchain w/ ... OpenGL backend" is a bit weird, because it's not the toolchain that has an OpenGL backend. So I've reworded this.
package/supertux/Config.in
Quoted 8 lines
package/supertux/Config.in new file +7
-0+ depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_PACKAGE_HAS_LIBGL || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + BR2_STATIC_LIBS || !BR2_USE_WCHAR +SUPERTUX_LICENSE = GPLv3+ (code), CC-BY-SA 2.0, CC-BY-SA 3.0, GPLv2+ (images music sounds)
I've changed this to use SPDX license codes.
Applied with those minor tweaks. Thanks!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com
PATCH v5 3/4 package/supertux: fix bug when compiling with PPC altivec vectorization
In reply to Romain NaourFrom [1]:
Acording to a bug report in GCC [2]:
"You need to use -std=g++11 or undefine bool after the include of altivec.h as context sensitive keywords is not part of the C++11 standard".
So use gnu++11 instead of c++11 only for altivec system.
This allow to revert [3] and keep Altivec vectorization.
[1] 0024465d8a7b51f7fc7c9e8581072695d869adca
[2] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58241#c3
[3] d2903aaf1314b50a8a10ce937d2b33c5c42e463e
--- package/supertux/supertux.mk | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)
package/supertux/supertux.mk +21 -0
@@ -46,4 +46,25 @@ endef SUPERTUX_POST_PATCH_HOOKS += SUPERTUX_REMOVE_PEDANTIC endif +# From https://bugs.debian.org/cgi-bin/bugreport.cgi/?bug=770670 +# "The problem lies within SDL_cpuinfo.h. It includes altivec.h, which by +# definition provides an unconditional vector, pixel and bool define in +# standard-c++ mode. In GNU-c++ mode this names are only defined +# context-sensitive by cpp. SDL_cpuinfo.h is included by SDL.h. +# Including altivec.h makes arbitrary code break." +# +# Acording to a bug report in GCC [1]: +# "You need to use -std=g++11 or undefine bool after the include of altivec.h +# as context sensitive keywords is not part of the C++11 standard". +# So use gnu++11 instead of c++11 only for altivec system. +# [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58241#c3 +ifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),y) +define SUPERTUX_FIX_ALTIVEC_ISSUE + $(SED) 's%std=c++0x%std=gnu++0x%' $(@D)/CMakeLists.txt + $(SED) 's%std=c++11%std=gnu++11%' $(@D)/CMakeLists.txt + $(SED) 's%std=c++0x%std=gnu++0x%' $(@D)/external/tinygettext/CMakeLists.txt +endef +SUPERTUX_POST_PATCH_HOOKS += SUPERTUX_FIX_ALTIVEC_ISSUE +endif + $(eval $(cmake-package))
Signature · 1 line
2.9.3
Thomas Petazzoni
AppliedPATCH v5 3/4 package/supertux: fix bug when compiling with PPC altivec vectorization
Hello,
Quoted 9 lines · Romain Naour
From [1]:
Acording to a bug report in GCC [2]:
"You need to use -std=g++11 or undefine bool after the include ofaltivec.has context sensitive keywords is not part of the C++11 standard".So use gnu++11 instead of c++11 only for altivec system.
This allow to revert [3] and keep Altivec vectorization.
Quoted 8 lines
[1]
0024465d8a7b51f7fc7c9e8581072695d869adca
[2] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58241#c3
[3]d2903aaf1314b50a8a10ce937d2b33c5c42e463eSigned-off-by Romain Naour <[email protected]>--- package/supertux/supertux.mk | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)
Applied to master, thanks.
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH v5 4/4 Revert "package/sdl2: disable altivec built-in function for PowerPC"
In reply to Romain NaourThe bug discover while packaging supertux is now fixed by the previous patch but the issue can still be present in other C++11 package if -std=c++11 is used on PPC with Altivec vectorization.
This reverts commit d2903aaf1314b50a8a10ce937d2b33c5c42e463e.
--- package/sdl2/sdl2.mk | 10 ---------- 1 file changed, 10 deletions(-)
package/sdl2/sdl2.mk +0 -10
@@ -23,16 +23,6 @@ SDL2_CONF_OPTS += \ # We must enable static build to get compilation successful. SDL2_CONF_OPTS += --enable-static -# From https://bugs.debian.org/cgi-bin/bugreport.cgi/?bug=770670 -# "The problem lies within SDL_cpuinfo.h. It includes altivec.h, which by -# definition provides an unconditional vector, pixel and bool define in -# standard-c++ mode. In GNU-c++ mode this names are only defined -# context-sensitive by cpp. SDL_cpuinfo.h is included by SDL.h. -# Including altivec.h makes arbitrary code break." -ifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),y) -SDL2_CONF_OPTS += --disable-altivec -endif - ifeq ($(BR2_PACKAGE_HAS_UDEV),y) SDL2_DEPENDENCIES += udev SDL2_CONF_OPTS += --enable-libudev
Signature · 1 line
2.9.3
Thomas Petazzoni
AppliedPATCH v5 4/4 Revert "package/sdl2: disable altivec built-in function for PowerPC"
Hello,
Quoted 10 lines · Romain Naour
The bug discover while packaging supertux is now fixed by the previous patch but the issue can still be present in other C++11 package if -std=c++11 is used on PPC with Altivec vectorization.
This reverts commit
d2903aaf1314b50a8a10ce937d2b33c5c42e463e.Signed-off-by Romain Naour <[email protected]>--- package/sdl2/sdl2.mk | 10 ---------- 1 file changed, 10 deletions(-)
Applied to master, thanks.
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
Thomas Petazzoni
AppliedPATCH v5 1/4 package/physfs: new package
In reply to Romain NaourHello,
Quoted 9 lines · Romain Naour
Backport a patch from SuperTux project:
https://github.com/SuperTux/physfs/commit/61d3b63abcba8e9615dcb8a3d1fc026bf7f8d5f8Signed-off-by Romain Naour <[email protected]>---
v5: Fix license infos (ThomasP,Arnout,Yann)
v4: add missing license infos
Complete lzma license infos (ThomasP)
v3: new patch
Quoted 10 lines
--- DEVELOPERS | 1 + package/Config.in | 1 + .../physfs/0001-Fix-builds-with-modern-GCC.patch | 38 ++++++++++++++++++++++ package/physfs/Config.in | 10 ++++++ package/physfs/physfs.mk | 30 +++++++++++++++++ 5 files changed, 80 insertions(+) create mode 100644 package/physfs/0001-Fix-builds-with-modern-GCC.patch create mode 100644 package/physfs/Config.in create mode 100644 package/physfs/physfs.mk
Applied to master, thanks.
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com