Skip to contentSkip to conversation

package/physfs: new package

PATCH New Romain Naour 2 participants 8 messages Mar 25, 2017 – Apr 15, 2017

lore
Share & tools
lore
#0 lore raw

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
index 5e60d47..f434a94 100644
@@ -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
index dfb46ef..67cf71f 100644
@@ -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
new file mode 100644
index 0000000..710b4ff
@@ -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
new file mode 100644
index 0000000..dad3ab4
@@ -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
new file mode 100644
index 0000000..c88d7cf
@@ -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
#1 lore raw

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
index f434a94..2e08d3e 100644
@@ -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
index 67cf71f..1b5c2d6 100644
@@ -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
new file mode 100644
index 0000000..43f0e3a
@@ -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
new file mode 100644
index 0000000..c56f608
@@ -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
#2 lore raw

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
#3 lore raw

PATCH v5 3/4 package/supertux: fix bug when compiling with PPC altivec vectorization

In reply to 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 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
index 6a409e3..af1ab00 100644
@@ -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
#4 lore raw

PATCH 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 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.

Quoted 8 lines

[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(+)

Applied to master, thanks.

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#5 lore raw

PATCH v5 4/4 Revert "package/sdl2: disable altivec built-in function for PowerPC"

In reply to 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.

---
 package/sdl2/sdl2.mk | 10 ----------
 1 file changed, 10 deletions(-)
package/sdl2/sdl2.mk +0 -10
index 628d906..d2ee50d 100644
@@ -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
#6 lore raw

PATCH 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.

---
 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
#7 lore raw

PATCH v5 1/4 package/physfs: new package

In reply to Romain Naour

Hello,

Quoted 9 lines · Romain Naour

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

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