diff mbox

supertuxkart: new package

Message ID 1460439224-29314-1-git-send-email-ezequiel@vanguardiasur.com.ar
State Changes Requested
Headers show

Commit Message

Ezequiel Garcia April 12, 2016, 5:33 a.m. UTC
Signed-off-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
---
 package/Config.in                      |  1 +
 package/supertuxkart/Config.in         | 29 +++++++++++++++++++++++++++++
 package/supertuxkart/supertuxkart.hash |  2 ++
 package/supertuxkart/supertuxkart.mk   | 24 ++++++++++++++++++++++++
 4 files changed, 56 insertions(+)
 create mode 100644 package/supertuxkart/Config.in
 create mode 100644 package/supertuxkart/supertuxkart.hash
 create mode 100644 package/supertuxkart/supertuxkart.mk

Comments

Arnout Vandecappelle April 12, 2016, 11:12 p.m. UTC | #1
On 04/12/16 07:33, Ezequiel Garcia wrote:
> Signed-off-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
> ---
>   package/Config.in                      |  1 +
>   package/supertuxkart/Config.in         | 29 +++++++++++++++++++++++++++++
>   package/supertuxkart/supertuxkart.hash |  2 ++
>   package/supertuxkart/supertuxkart.mk   | 24 ++++++++++++++++++++++++
>   4 files changed, 56 insertions(+)
>   create mode 100644 package/supertuxkart/Config.in
>   create mode 100644 package/supertuxkart/supertuxkart.hash
>   create mode 100644 package/supertuxkart/supertuxkart.mk
>
> diff --git a/package/Config.in b/package/Config.in
> index 64822bf5f6fa..8438bca33195 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -232,6 +232,7 @@ menu "Games"
>   	source "package/prboom/Config.in"
>   	source "package/rubix/Config.in"
>   	source "package/sl/Config.in"
> +	source "package/supertuxkart/Config.in"
>   endmenu
>
>   menu "Graphic libraries and applications (graphic/text)"
> diff --git a/package/supertuxkart/Config.in b/package/supertuxkart/Config.in
> new file mode 100644
> index 000000000000..4e9f5bb09ac6
> --- /dev/null
> +++ b/package/supertuxkart/Config.in
> @@ -0,0 +1,29 @@
> +config BR2_PACKAGE_SUPERTUXKART
> +	bool "supertuxkart"
> +	depends on BR2_USE_MMU # fork()
> +	depends on BR2_PACKAGE_HAS_LIBGL
> +	depends on BR2_PACKAGE_XORG7
> +	select BR2_PACKAGE_BLUEZ5_UTILS

  Needs:

         depends on BR2_USE_WCHAR # libglib2
         depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2
         depends on !BR2_STATIC_LIBS # uses dlfcn
         depends on !BR2_PACKAGE_BLUEZ_UTILS # conflicts with 4.x version
         depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4
         # wordexp support not in our uClibc configuration
         depends on !BR2_TOOLCHAIN_USES_UCLIBC
         depends on BR2_TOOLCHAIN_HAS_SYNC_4

  (though wchar and threads are already covered by Xorg)

  Unless of course it can also work with bluez4. In that case the dependencies 
get pretty complicated...

> +	select BR2_PACKAGE_JPEG
> +	select BR2_PACKAGE_LIBCURL
> +	select BR2_PACKAGE_LIBFRIBIDI
> +	select BR2_PACKAGE_LIBGLU
> +	select BR2_PACKAGE_LIBOGG
> +	select BR2_PACKAGE_LIBPNG
> +	select BR2_PACKAGE_LIBVORBIS
> +	select BR2_PACKAGE_OPENAL

  Needs:

         depends on BR2_INSTALL_LIBSTDCPP
         depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
         depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS

> +	select BR2_PACKAGE_XLIB_LIBXRANDR
> +	select BR2_PACKAGE_ZLIB
> +	help
> +	  Karts. Nitro. Action! SuperTuxKart is a free 3D arcade kart
> +	  racer with multiple karts, tracks and modes you can play.
> +	  Beat the evil Nolok by any means necessary, and make the
> +	  mascot kingdom safe once again!
> +
> +	  http://supertuxkart.sourceforge.net/Main_Page
> +
> +comment "supertuxkart needs a toolchain w/ threads, C++"
> +	depends on !(BR2_INSTALL_LIBSTDCPP || BR2_TOOLCHAIN_HAS_THREADS)

  This needs to be updated with all the dependencies above.

> +
> +comment "supertuxkart needs an OpenGL backend"
> +	depends on !BR2_PACKAGE_HAS_LIBGL
> diff --git a/package/supertuxkart/supertuxkart.hash b/package/supertuxkart/supertuxkart.hash
> new file mode 100644
> index 000000000000..d8e7ac30f6d1
> --- /dev/null
> +++ b/package/supertuxkart/supertuxkart.hash
> @@ -0,0 +1,2 @@
> +# Locally computed
> +sha256	c50f00a71df165fb613d20e86bea2d9d5e51ed3e27e1d436fbac3b07cf2ea149	supertuxkart-0.9.1-src.tar.xz
> diff --git a/package/supertuxkart/supertuxkart.mk b/package/supertuxkart/supertuxkart.mk
> new file mode 100644
> index 000000000000..e1c67b4e14f4
> --- /dev/null
> +++ b/package/supertuxkart/supertuxkart.mk
> @@ -0,0 +1,24 @@
> +################################################################################
> +#
> +# supertuxkart
> +#
> +################################################################################
> +
> +SUPERTUXKART_VERSION = 0.9.1
> +SUPERTUXKART_SOURCE = supertuxkart-$(SUPERTUXKART_VERSION)-src.tar.xz
> +SUPERTUXKART_SITE = http://downloads.sourceforge.net/project/supertuxkart/SuperTuxKart/$(SUPERTUXKART_VERSION)
> +SUPERTUXKART_LICENSE = GPLv3
> +SUPERTUXKART_LICENSE_FILES = COPYING
> +
> +SUPERTUXKART_DEPENDENCIES += bluez5_utils jpeg libcurl libfribidi libgl libglu libpng \
> +			     libogg libvorbis openal xlib_libXrandr zlib

  From the CMakeLists, it looks like fribidi and Xrandr are optional (controlled 
by USE_FRIBIDI and USE_XRANDR).

  I don't see why libglu is needed.

  I also see a dependency on freetype.


> +
> +# Since supertuxkart is not installing libstkirrlicht.so,
> +# and given we don't really need that library to be shared
> +# we turn off shared libs here.
> +SUPERTUXKART_CONF_OPTS = -DBUILD_SHARED_LIBS=OFF
> +
> +# Disable Wiimote support

  Why?

  Actually, it looks like bluez is only needed for wiimote support, so you could 
probably enable this conditionally depending on BR2_PACKAGE_BLUEZ5_UTILS and 
avoid the complicated dependencies in Config.in.


> +SUPERTUXKART_CONF_OPTS += -DUSE_WIIUSE=OFF
> +
> +$(eval $(cmake-package))
>

  It looks like irrlicht adds -I/usr/X11R6/include - this will have to be 
patched away.

  It would also be nice if CMakeLists could be updated to use the system glew 
instead of the bundled one.

  Regards,
  Arnout
Ezequiel Garcia May 8, 2016, 5:33 p.m. UTC | #2
Arnout,

Thanks a lot for your feedback, and sorry for the delay.
I did this during vacations... and then vacations was over :/

On 12 April 2016 at 20:12, Arnout Vandecappelle <arnout@mind.be> wrote:
> On 04/12/16 07:33, Ezequiel Garcia wrote:
>>
>> Signed-off-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
>> ---
>>   package/Config.in                      |  1 +
>>   package/supertuxkart/Config.in         | 29
>> +++++++++++++++++++++++++++++
>>   package/supertuxkart/supertuxkart.hash |  2 ++
>>   package/supertuxkart/supertuxkart.mk   | 24 ++++++++++++++++++++++++
>>   4 files changed, 56 insertions(+)
>>   create mode 100644 package/supertuxkart/Config.in
>>   create mode 100644 package/supertuxkart/supertuxkart.hash
>>   create mode 100644 package/supertuxkart/supertuxkart.mk
>>
>> diff --git a/package/Config.in b/package/Config.in
>> index 64822bf5f6fa..8438bca33195 100644
>> --- a/package/Config.in
>> +++ b/package/Config.in
>> @@ -232,6 +232,7 @@ menu "Games"
>>         source "package/prboom/Config.in"
>>         source "package/rubix/Config.in"
>>         source "package/sl/Config.in"
>> +       source "package/supertuxkart/Config.in"
>>   endmenu
>>
>>   menu "Graphic libraries and applications (graphic/text)"
>> diff --git a/package/supertuxkart/Config.in
>> b/package/supertuxkart/Config.in
>> new file mode 100644
>> index 000000000000..4e9f5bb09ac6
>> --- /dev/null
>> +++ b/package/supertuxkart/Config.in
>> @@ -0,0 +1,29 @@
>> +config BR2_PACKAGE_SUPERTUXKART
>> +       bool "supertuxkart"
>> +       depends on BR2_USE_MMU # fork()
>> +       depends on BR2_PACKAGE_HAS_LIBGL
>> +       depends on BR2_PACKAGE_XORG7
>> +       select BR2_PACKAGE_BLUEZ5_UTILS
>
>
>  Needs:
>
>         depends on BR2_USE_WCHAR # libglib2

Don't see the libglib2 dependency. Where is it?

Is it because of fribidi? In that case, should we really depend on it?

>         depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2

Ditto: dbus?

>         depends on !BR2_STATIC_LIBS # uses dlfcn
>         depends on !BR2_PACKAGE_BLUEZ_UTILS # conflicts with 4.x version
>         depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4

Why 3.4 ?

>         # wordexp support not in our uClibc configuration

wordexp?

>         depends on !BR2_TOOLCHAIN_USES_UCLIBC
>         depends on BR2_TOOLCHAIN_HAS_SYNC_4
>
>  (though wchar and threads are already covered by Xorg)
>
>  Unless of course it can also work with bluez4. In that case the
> dependencies get pretty complicated...
>
>> +       select BR2_PACKAGE_JPEG
>> +       select BR2_PACKAGE_LIBCURL
>> +       select BR2_PACKAGE_LIBFRIBIDI
>> +       select BR2_PACKAGE_LIBGLU
>> +       select BR2_PACKAGE_LIBOGG
>> +       select BR2_PACKAGE_LIBPNG
>> +       select BR2_PACKAGE_LIBVORBIS
>> +       select BR2_PACKAGE_OPENAL
>
>
>  Needs:
>
>         depends on BR2_INSTALL_LIBSTDCPP
>         depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
>         depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS
>
>> +       select BR2_PACKAGE_XLIB_LIBXRANDR
>> +       select BR2_PACKAGE_ZLIB
>> +       help
>> +         Karts. Nitro. Action! SuperTuxKart is a free 3D arcade kart
>> +         racer with multiple karts, tracks and modes you can play.
>> +         Beat the evil Nolok by any means necessary, and make the
>> +         mascot kingdom safe once again!
>> +
>> +         http://supertuxkart.sourceforge.net/Main_Page
>> +
>> +comment "supertuxkart needs a toolchain w/ threads, C++"
>> +       depends on !(BR2_INSTALL_LIBSTDCPP || BR2_TOOLCHAIN_HAS_THREADS)
>
>
>  This needs to be updated with all the dependencies above.
>
>
>> +
>> +comment "supertuxkart needs an OpenGL backend"
>> +       depends on !BR2_PACKAGE_HAS_LIBGL
>> diff --git a/package/supertuxkart/supertuxkart.hash
>> b/package/supertuxkart/supertuxkart.hash
>> new file mode 100644
>> index 000000000000..d8e7ac30f6d1
>> --- /dev/null
>> +++ b/package/supertuxkart/supertuxkart.hash
>> @@ -0,0 +1,2 @@
>> +# Locally computed
>> +sha256 c50f00a71df165fb613d20e86bea2d9d5e51ed3e27e1d436fbac3b07cf2ea149
>> supertuxkart-0.9.1-src.tar.xz
>> diff --git a/package/supertuxkart/supertuxkart.mk
>> b/package/supertuxkart/supertuxkart.mk
>> new file mode 100644
>> index 000000000000..e1c67b4e14f4
>> --- /dev/null
>> +++ b/package/supertuxkart/supertuxkart.mk
>> @@ -0,0 +1,24 @@
>>
>> +################################################################################
>> +#
>> +# supertuxkart
>> +#
>>
>> +################################################################################
>> +
>> +SUPERTUXKART_VERSION = 0.9.1
>> +SUPERTUXKART_SOURCE = supertuxkart-$(SUPERTUXKART_VERSION)-src.tar.xz
>> +SUPERTUXKART_SITE =
>> http://downloads.sourceforge.net/project/supertuxkart/SuperTuxKart/$(SUPERTUXKART_VERSION)
>> +SUPERTUXKART_LICENSE = GPLv3
>> +SUPERTUXKART_LICENSE_FILES = COPYING
>> +
>> +SUPERTUXKART_DEPENDENCIES += bluez5_utils jpeg libcurl libfribidi libgl
>> libglu libpng \
>> +                            libogg libvorbis openal xlib_libXrandr zlib
>
>
>  From the CMakeLists, it looks like fribidi and Xrandr are optional
> (controlled by USE_FRIBIDI and USE_XRANDR).
>

OK.

>  I don't see why libglu is needed.
>

I don't know much about glu, I just saw this stuff:

$ grep -r glu .
./lib/glew/include/GL/glew.h:/* <glu.h> */
./lib/glew/include/GL/glew.h:#    include <OpenGL/glu.h>
./lib/glew/include/GL/glew.h:#    include <GL/glu.h>
./lib/glew/CMakeFiles/glew.dir/C.includecache:OpenGL/glu.h
./lib/glew/CMakeFiles/glew.dir/C.includecache:GL/glu.h
[..]
./INSTALL.md:libgl1-mesa-dev libglu1-mesa-dev libcurl4-openssl-dev
libfribidi-dev libbluetooth-dev libxrandr-dev

>  I also see a dependency on freetype.
>

Where?

>
>> +
>> +# Since supertuxkart is not installing libstkirrlicht.so,
>> +# and given we don't really need that library to be shared
>> +# we turn off shared libs here.
>> +SUPERTUXKART_CONF_OPTS = -DBUILD_SHARED_LIBS=OFF
>> +
>> +# Disable Wiimote support
>
>
>  Why?
>

No reason.

>  Actually, it looks like bluez is only needed for wiimote support, so you
> could probably enable this conditionally depending on
> BR2_PACKAGE_BLUEZ5_UTILS and avoid the complicated dependencies in
> Config.in.
>

OK.

>
>> +SUPERTUXKART_CONF_OPTS += -DUSE_WIIUSE=OFF
>> +
>> +$(eval $(cmake-package))
>>
>
>  It looks like irrlicht adds -I/usr/X11R6/include - this will have to be
> patched away.
>

Hm, I see.

>  It would also be nice if CMakeLists could be updated to use the system glew
> instead of the bundled one.
>

Why? If the package bundles a glew, why not using it?
Arnout Vandecappelle May 9, 2016, 11:16 p.m. UTC | #3
On 05/08/16 19:33, Ezequiel Garcia wrote:
> Arnout,
>
> Thanks a lot for your feedback, and sorry for the delay.
> I did this during vacations... and then vacations was over :/
>
> On 12 April 2016 at 20:12, Arnout Vandecappelle <arnout@mind.be> wrote:
>> On 04/12/16 07:33, Ezequiel Garcia wrote:
[snip]
>>> +       select BR2_PACKAGE_BLUEZ5_UTILS
>>
>>
>>  Needs:
>>
>>         depends on BR2_USE_WCHAR # libglib2
>
> Don't see the libglib2 dependency. Where is it?

  bluez5_utils selects libglib2 and dbus. I should have written:

	depends on BR2_USE_WCHAR # bluez5_utils <- libglib2

but I just copied the lines from bluez5_utils...

>
> Is it because of fribidi? In that case, should we really depend on it?
>
>>         depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2
>
> Ditto: dbus?
>
>>         depends on !BR2_STATIC_LIBS # uses dlfcn
>>         depends on !BR2_PACKAGE_BLUEZ_UTILS # conflicts with 4.x version
>>         depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4
>
> Why 3.4 ?

  All inherited from bluez5_utils.

>
>>         # wordexp support not in our uClibc configuration
>
> wordexp?
>
>>         depends on !BR2_TOOLCHAIN_USES_UCLIBC
>>         depends on BR2_TOOLCHAIN_HAS_SYNC_4
>>
>>  (though wchar and threads are already covered by Xorg)
>>
>>  Unless of course it can also work with bluez4. In that case the
>> dependencies get pretty complicated...
>>
>>> +       select BR2_PACKAGE_JPEG
>>> +       select BR2_PACKAGE_LIBCURL
>>> +       select BR2_PACKAGE_LIBFRIBIDI
>>> +       select BR2_PACKAGE_LIBGLU
>>> +       select BR2_PACKAGE_LIBOGG
>>> +       select BR2_PACKAGE_LIBPNG
>>> +       select BR2_PACKAGE_LIBVORBIS
>>> +       select BR2_PACKAGE_OPENAL
>>
>>
>>  Needs:
>>
>>         depends on BR2_INSTALL_LIBSTDCPP
>>         depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
>>         depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS

  Same story here: these lines should have a '# openal' after them.

>>
>>> +       select BR2_PACKAGE_XLIB_LIBXRANDR
>>> +       select BR2_PACKAGE_ZLIB
>>> +       help
>>> +         Karts. Nitro. Action! SuperTuxKart is a free 3D arcade kart
>>> +         racer with multiple karts, tracks and modes you can play.
>>> +         Beat the evil Nolok by any means necessary, and make the
>>> +         mascot kingdom safe once again!
>>> +
>>> +         http://supertuxkart.sourceforge.net/Main_Page
>>> +
>>> +comment "supertuxkart needs a toolchain w/ threads, C++"
>>> +       depends on !(BR2_INSTALL_LIBSTDCPP || BR2_TOOLCHAIN_HAS_THREADS)
>>
>>
>>  This needs to be updated with all the dependencies above.
>>
[snip]
>>> --- /dev/null
>>> +++ b/package/supertuxkart/supertuxkart.mk
>>> @@ -0,0 +1,24 @@
>>>
>>> +################################################################################
>>> +#
>>> +# supertuxkart
>>> +#
>>>
>>> +################################################################################
>>> +
>>> +SUPERTUXKART_VERSION = 0.9.1
>>> +SUPERTUXKART_SOURCE = supertuxkart-$(SUPERTUXKART_VERSION)-src.tar.xz
>>> +SUPERTUXKART_SITE =
>>> http://downloads.sourceforge.net/project/supertuxkart/SuperTuxKart/$(SUPERTUXKART_VERSION)
>>> +SUPERTUXKART_LICENSE = GPLv3
>>> +SUPERTUXKART_LICENSE_FILES = COPYING
>>> +
>>> +SUPERTUXKART_DEPENDENCIES += bluez5_utils jpeg libcurl libfribidi libgl
>>> libglu libpng \
>>> +                            libogg libvorbis openal xlib_libXrandr zlib
>>
>>
>>  From the CMakeLists, it looks like fribidi and Xrandr are optional
>> (controlled by USE_FRIBIDI and USE_XRANDR).
>>
>
> OK.
>
>>  I don't see why libglu is needed.
>>
>
> I don't know much about glu, I just saw this stuff:
>
> $ grep -r glu .
> ./lib/glew/include/GL/glew.h:/* <glu.h> */
> ./lib/glew/include/GL/glew.h:#    include <OpenGL/glu.h>
> ./lib/glew/include/GL/glew.h:#    include <GL/glu.h>
> ./lib/glew/CMakeFiles/glew.dir/C.includecache:OpenGL/glu.h
> ./lib/glew/CMakeFiles/glew.dir/C.includecache:GL/glu.h

  OK.

> [..]
> ./INSTALL.md:libgl1-mesa-dev libglu1-mesa-dev libcurl4-openssl-dev
> libfribidi-dev libbluetooth-dev libxrandr-dev
>
>>  I also see a dependency on freetype.
>>
>
> Where?

  I should have written: an _optional_ dependency on freetype. CMakeLists.txt 
contains find_package(Freetype)

>
>>
>>> +
>>> +# Since supertuxkart is not installing libstkirrlicht.so,
>>> +# and given we don't really need that library to be shared
>>> +# we turn off shared libs here.
>>> +SUPERTUXKART_CONF_OPTS = -DBUILD_SHARED_LIBS=OFF
>>> +
>>> +# Disable Wiimote support
>>
>>
>>  Why?
>>
>
> No reason.
>
>>  Actually, it looks like bluez is only needed for wiimote support, so you
>> could probably enable this conditionally depending on
>> BR2_PACKAGE_BLUEZ5_UTILS and avoid the complicated dependencies in
>> Config.in.
>>
>
> OK.
>
>>
>>> +SUPERTUXKART_CONF_OPTS += -DUSE_WIIUSE=OFF
>>> +
>>> +$(eval $(cmake-package))
>>>
>>
>>  It looks like irrlicht adds -I/usr/X11R6/include - this will have to be
>> patched away.
>>
>
> Hm, I see.
>
>>  It would also be nice if CMakeLists could be updated to use the system glew
>> instead of the bundled one.
>>
>
> Why? If the package bundles a glew, why not using it?

  We avoid bundled libraries for several reasons:

- size: if libglew is selected for another reason, we will have it twice;

- security: if a (security) bug is fixed in libglew and supertuxkart doesn't 
update their libglew, it remains unfixed.

- build consistency: if we need to patch libglew to make it build e.g. for some 
arch or libc, we have to produce the same patch again for supertuxkart.

See e.g. [1] for extensive explanation why bundling is bad.


  However, it's possible that supertuxkart has made project-specific 
modifications to libglew, in this case unbundling is difficult. I see that at 
least it is an older version than what we have.


  Regards,
  Arnout

[1] https://fedoraproject.org/wiki/Bundled_Libraries?rd=Packaging:Bundled_Libraries
Ezequiel Garcia May 10, 2016, 1:59 p.m. UTC | #4
On 9 May 2016 at 20:16, Arnout Vandecappelle <arnout@mind.be> wrote:
[..]
>> Why? If the package bundles a glew, why not using it?
>
>

As a matter of fact, they bunde jpeglib, libpng, zlib and a few more as well.

>  We avoid bundled libraries for several reasons:
>

Sure, I understand why bundling is a shitty idea. My point is:
it was not OUR idea, but something that comes from upstream.

I haven't checked, but given they bundle their own Irrlicht engine
(and even they modified it enough to call it Antarctica now), it seems
they know what they are doing.

Or another possible explanation is that they are lazy, and wanted
to bundle to make installation easier (in some non-Linux OS?).

Whatever the reasons, I don't want to spend time modifying a package
in a way that won't be accepted upstream.

[..]
>
>  However, it's possible that supertuxkart has made project-specific
> modifications to libglew, in this case unbundling is difficult. I see that
> at least it is an older version than what we have.
>

Exactly my point. And even if they haven't made modifications to some of
the bundled packages, I really don't want to spend time doing a change that
is not in the upstream roadmap.
Arnout Vandecappelle May 11, 2016, 8:46 p.m. UTC | #5
On 05/10/16 15:59, Ezequiel Garcia wrote:
> On 9 May 2016 at 20:16, Arnout Vandecappelle <arnout@mind.be> wrote:
> [..]
>>> Why? If the package bundles a glew, why not using it?
>>
>>
>
> As a matter of fact, they bunde jpeglib, libpng, zlib and a few more as well.

  jpeglib, libpng and zlib are AFAICS only used on Windows and Mac. For us, it's 
using the installed ones. You even added those dependencies :-)

>
>>  We avoid bundled libraries for several reasons:
>>
>
> Sure, I understand why bundling is a shitty idea. My point is:
> it was not OUR idea, but something that comes from upstream.
>
> I haven't checked, but given they bundle their own Irrlicht engine
> (and even they modified it enough to call it Antarctica now), it seems
> they know what they are doing.
>
> Or another possible explanation is that they are lazy, and wanted
> to bundle to make installation easier (in some non-Linux OS?).
>
> Whatever the reasons, I don't want to spend time modifying a package
> in a way that won't be accepted upstream.
>
> [..]
>>
>>  However, it's possible that supertuxkart has made project-specific
>> modifications to libglew, in this case unbundling is difficult. I see that
>> at least it is an older version than what we have.
>>
>
> Exactly my point. And even if they haven't made modifications to some of
> the bundled packages, I really don't want to spend time doing a change that
> is not in the upstream roadmap.

  Fair enough, the bundling is probably not bad enough to block this package.

  Perhaps then add a comment in the .mk file, near the dependencies list, that 
it has bundled modified versions of libglew and irrlicht. Actually we don't have 
irrlicht (yet) so for that it doesn't matter much :-)

  Regards,
  Arnout
Ezequiel Garcia May 13, 2016, 3:59 p.m. UTC | #6
Arnout,

On 12 April 2016 at 20:12, Arnout Vandecappelle <arnout@mind.be> wrote:
> On 04/12/16 07:33, Ezequiel Garcia wrote:
>>
>> Signed-off-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
>> ---
>>   package/Config.in                      |  1 +
>>   package/supertuxkart/Config.in         | 29
>> +++++++++++++++++++++++++++++
>>   package/supertuxkart/supertuxkart.hash |  2 ++
>>   package/supertuxkart/supertuxkart.mk   | 24 ++++++++++++++++++++++++
>>   4 files changed, 56 insertions(+)
>>   create mode 100644 package/supertuxkart/Config.in
>>   create mode 100644 package/supertuxkart/supertuxkart.hash
>>   create mode 100644 package/supertuxkart/supertuxkart.mk
>>
>> diff --git a/package/Config.in b/package/Config.in
>> index 64822bf5f6fa..8438bca33195 100644
>> --- a/package/Config.in
>> +++ b/package/Config.in
>> @@ -232,6 +232,7 @@ menu "Games"
>>         source "package/prboom/Config.in"
>>         source "package/rubix/Config.in"
>>         source "package/sl/Config.in"
>> +       source "package/supertuxkart/Config.in"
>>   endmenu
>>
>>   menu "Graphic libraries and applications (graphic/text)"
>> diff --git a/package/supertuxkart/Config.in
>> b/package/supertuxkart/Config.in
>> new file mode 100644
>> index 000000000000..4e9f5bb09ac6
>> --- /dev/null
>> +++ b/package/supertuxkart/Config.in
>> @@ -0,0 +1,29 @@
>> +config BR2_PACKAGE_SUPERTUXKART
>> +       bool "supertuxkart"
>> +       depends on BR2_USE_MMU # fork()
>> +       depends on BR2_PACKAGE_HAS_LIBGL
>> +       depends on BR2_PACKAGE_XORG7
>> +       select BR2_PACKAGE_BLUEZ5_UTILS
>
>
>  Needs:
>
>         depends on BR2_USE_WCHAR # libglib2
>         depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2
>         depends on !BR2_STATIC_LIBS # uses dlfcn
>         depends on !BR2_PACKAGE_BLUEZ_UTILS # conflicts with 4.x version
>         depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4
>         # wordexp support not in our uClibc configuration
>         depends on !BR2_TOOLCHAIN_USES_UCLIBC
>         depends on BR2_TOOLCHAIN_HAS_SYNC_4
>
>  (though wchar and threads are already covered by Xorg)
>
>  Unless of course it can also work with bluez4. In that case the
> dependencies get pretty complicated...
>
>> +       select BR2_PACKAGE_JPEG
>> +       select BR2_PACKAGE_LIBCURL
>> +       select BR2_PACKAGE_LIBFRIBIDI
>> +       select BR2_PACKAGE_LIBGLU
>> +       select BR2_PACKAGE_LIBOGG
>> +       select BR2_PACKAGE_LIBPNG
>> +       select BR2_PACKAGE_LIBVORBIS
>> +       select BR2_PACKAGE_OPENAL
>
>
>  Needs:
>
>         depends on BR2_INSTALL_LIBSTDCPP
>         depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
>         depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS
>
>> +       select BR2_PACKAGE_XLIB_LIBXRANDR
>> +       select BR2_PACKAGE_ZLIB
>> +       help
>> +         Karts. Nitro. Action! SuperTuxKart is a free 3D arcade kart
>> +         racer with multiple karts, tracks and modes you can play.
>> +         Beat the evil Nolok by any means necessary, and make the
>> +         mascot kingdom safe once again!
>> +
>> +         http://supertuxkart.sourceforge.net/Main_Page
>> +
>> +comment "supertuxkart needs a toolchain w/ threads, C++"
>> +       depends on !(BR2_INSTALL_LIBSTDCPP || BR2_TOOLCHAIN_HAS_THREADS)
>
>
>  This needs to be updated with all the dependencies above.
>
>
>> +
>> +comment "supertuxkart needs an OpenGL backend"
>> +       depends on !BR2_PACKAGE_HAS_LIBGL
>> diff --git a/package/supertuxkart/supertuxkart.hash
>> b/package/supertuxkart/supertuxkart.hash
>> new file mode 100644
>> index 000000000000..d8e7ac30f6d1
>> --- /dev/null
>> +++ b/package/supertuxkart/supertuxkart.hash
>> @@ -0,0 +1,2 @@
>> +# Locally computed
>> +sha256 c50f00a71df165fb613d20e86bea2d9d5e51ed3e27e1d436fbac3b07cf2ea149
>> supertuxkart-0.9.1-src.tar.xz
>> diff --git a/package/supertuxkart/supertuxkart.mk
>> b/package/supertuxkart/supertuxkart.mk
>> new file mode 100644
>> index 000000000000..e1c67b4e14f4
>> --- /dev/null
>> +++ b/package/supertuxkart/supertuxkart.mk
>> @@ -0,0 +1,24 @@
>>
>> +################################################################################
>> +#
>> +# supertuxkart
>> +#
>>
>> +################################################################################
>> +
>> +SUPERTUXKART_VERSION = 0.9.1
>> +SUPERTUXKART_SOURCE = supertuxkart-$(SUPERTUXKART_VERSION)-src.tar.xz
>> +SUPERTUXKART_SITE =
>> http://downloads.sourceforge.net/project/supertuxkart/SuperTuxKart/$(SUPERTUXKART_VERSION)
>> +SUPERTUXKART_LICENSE = GPLv3
>> +SUPERTUXKART_LICENSE_FILES = COPYING
>> +
>> +SUPERTUXKART_DEPENDENCIES += bluez5_utils jpeg libcurl libfribidi libgl
>> libglu libpng \
>> +                            libogg libvorbis openal xlib_libXrandr zlib
>
>
>  From the CMakeLists, it looks like fribidi and Xrandr are optional
> (controlled by USE_FRIBIDI and USE_XRANDR).
>

I made fribidi optional, but kept libXrandr. The reason for keeping it, is that
it requires either libXrandr, or libXxf86vm.

    if(USE_XRANDR)
        find_package(Xrandr REQUIRED)
        if(NOT XRANDR_FOUND)
            message(FATAL_ERROR "XRANDR not found.")
        endif()
    else()
        find_library(IRRLICHT_XF86VM_LIBRARY Xxf86vm)
        mark_as_advanced(IRRLICHT_XF86VM_LIBRARY)
    endif()

I figured given it's messy to have a conditional select, and since the default
is libXrandr, I thought we could just stick with it.

>
>  I also see a dependency on freetype.
>

Added as optional dependency.

>
>> +
>> +# Since supertuxkart is not installing libstkirrlicht.so,
>> +# and given we don't really need that library to be shared
>> +# we turn off shared libs here.
>> +SUPERTUXKART_CONF_OPTS = -DBUILD_SHARED_LIBS=OFF
>> +
>> +# Disable Wiimote support
>
>
>  Why?
>
>  Actually, it looks like bluez is only needed for wiimote support, so you
> could probably enable this conditionally depending on
> BR2_PACKAGE_BLUEZ5_UTILS and avoid the complicated dependencies in
> Config.in.
>

Right, so I made bluez5_utils optional and simplified the above dependencies.

>
>> +SUPERTUXKART_CONF_OPTS += -DUSE_WIIUSE=OFF
>> +
>> +$(eval $(cmake-package))
>>
>
>  It looks like irrlicht adds -I/usr/X11R6/include - this will have to be
> patched away.
>

Hm.. yes, it can go away. I have no idea if this is supposed to go upstream
or not.
diff mbox

Patch

diff --git a/package/Config.in b/package/Config.in
index 64822bf5f6fa..8438bca33195 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -232,6 +232,7 @@  menu "Games"
 	source "package/prboom/Config.in"
 	source "package/rubix/Config.in"
 	source "package/sl/Config.in"
+	source "package/supertuxkart/Config.in"
 endmenu
 
 menu "Graphic libraries and applications (graphic/text)"
diff --git a/package/supertuxkart/Config.in b/package/supertuxkart/Config.in
new file mode 100644
index 000000000000..4e9f5bb09ac6
--- /dev/null
+++ b/package/supertuxkart/Config.in
@@ -0,0 +1,29 @@ 
+config BR2_PACKAGE_SUPERTUXKART
+	bool "supertuxkart"
+	depends on BR2_USE_MMU # fork()
+	depends on BR2_PACKAGE_HAS_LIBGL
+	depends on BR2_PACKAGE_XORG7
+	select BR2_PACKAGE_BLUEZ5_UTILS
+	select BR2_PACKAGE_JPEG
+	select BR2_PACKAGE_LIBCURL
+	select BR2_PACKAGE_LIBFRIBIDI
+	select BR2_PACKAGE_LIBGLU
+	select BR2_PACKAGE_LIBOGG
+	select BR2_PACKAGE_LIBPNG
+	select BR2_PACKAGE_LIBVORBIS
+	select BR2_PACKAGE_OPENAL
+	select BR2_PACKAGE_XLIB_LIBXRANDR
+	select BR2_PACKAGE_ZLIB
+	help
+	  Karts. Nitro. Action! SuperTuxKart is a free 3D arcade kart
+	  racer with multiple karts, tracks and modes you can play.
+	  Beat the evil Nolok by any means necessary, and make the
+	  mascot kingdom safe once again!
+
+	  http://supertuxkart.sourceforge.net/Main_Page
+
+comment "supertuxkart needs a toolchain w/ threads, C++"
+	depends on !(BR2_INSTALL_LIBSTDCPP || BR2_TOOLCHAIN_HAS_THREADS)
+
+comment "supertuxkart needs an OpenGL backend"
+	depends on !BR2_PACKAGE_HAS_LIBGL
diff --git a/package/supertuxkart/supertuxkart.hash b/package/supertuxkart/supertuxkart.hash
new file mode 100644
index 000000000000..d8e7ac30f6d1
--- /dev/null
+++ b/package/supertuxkart/supertuxkart.hash
@@ -0,0 +1,2 @@ 
+# Locally computed
+sha256	c50f00a71df165fb613d20e86bea2d9d5e51ed3e27e1d436fbac3b07cf2ea149	supertuxkart-0.9.1-src.tar.xz
diff --git a/package/supertuxkart/supertuxkart.mk b/package/supertuxkart/supertuxkart.mk
new file mode 100644
index 000000000000..e1c67b4e14f4
--- /dev/null
+++ b/package/supertuxkart/supertuxkart.mk
@@ -0,0 +1,24 @@ 
+################################################################################
+#
+# supertuxkart
+#
+################################################################################
+
+SUPERTUXKART_VERSION = 0.9.1
+SUPERTUXKART_SOURCE = supertuxkart-$(SUPERTUXKART_VERSION)-src.tar.xz
+SUPERTUXKART_SITE = http://downloads.sourceforge.net/project/supertuxkart/SuperTuxKart/$(SUPERTUXKART_VERSION)
+SUPERTUXKART_LICENSE = GPLv3
+SUPERTUXKART_LICENSE_FILES = COPYING
+
+SUPERTUXKART_DEPENDENCIES += bluez5_utils jpeg libcurl libfribidi libgl libglu libpng \
+			     libogg libvorbis openal xlib_libXrandr zlib
+
+# Since supertuxkart is not installing libstkirrlicht.so,
+# and given we don't really need that library to be shared
+# we turn off shared libs here.
+SUPERTUXKART_CONF_OPTS = -DBUILD_SHARED_LIBS=OFF
+
+# Disable Wiimote support
+SUPERTUXKART_CONF_OPTS += -DUSE_WIIUSE=OFF
+
+$(eval $(cmake-package))