Package

Request new features or present your ideas.
ice00
Posts: 14
Joined: Sat Feb 20, 2016 3:19 pm UTC

Package

Postby ice00 » Sat Feb 20, 2016 3:28 pm UTC

It was a surprise to find that this game is the must wanted Tremulous continuation, but actually I find 5 servers for the games and no players (well I play with 6 bots for 40 minutes). It is the same number of Tremulous servers still active but there there are 20/25 real players.

In Fedora I still find Tremulous game (with base data) but not Unvanquished.
I had compile it from source for playing.

My suggestion is to create generic spec files for RPM and DEB package, so distribution can easy put the game into their repository.

With this it could be possible that more people find this game and the community grown.

Thanks
User avatar
cu-kai
Web Crew
Posts: 41
Joined: Fri Jan 02, 2015 1:29 am UTC
Clan: CU

Re: Package

Postby cu-kai » Sun Feb 21, 2016 12:18 am UTC

The installer should work perfectly fine on most distributions of Linux. (visit the main home-page and simply click Download to download the installer)
Web Raccoon
ice00
Posts: 14
Joined: Sat Feb 20, 2016 3:19 pm UTC

Re: Package

Postby ice00 » Fri Feb 26, 2016 10:47 am UTC

yes the installer should works fine, but for a distribution to add it it should be in a format compatible with DEB/RPM.

Actually the game binary is not well suitable for an inclusion in packages.

For example if I compile the source (and distribution all use to compile from source), I need to run it with daemon batch that then call the effective program (don't remember now, but there is at least 4 executables with "strange" name).

Usually in distribution the software is organized onto standard directory, so binary will be putted into /usr/local/bin or /user/bin so I must expect the game should be called with unvanquished (and it goes to call the appropriate sub-program).

Data (like pk3 maps) will be putted onto location like /usr/share/unvanquished and so on.

It is the packeger that should put that files in those directories, but the game should be able to work in that directories structures.

I know that the binary distribution is simple to mantain, but for having more users I think that it should be created DEB/RPM packege too.

Thanks.
User avatar
Ishq
Project Head
Posts: 1138
Joined: Tue Mar 06, 2012 8:32 pm UTC

Re: Package

Postby Ishq » Fri Feb 26, 2016 8:54 pm UTC

I agree. Eventually, it would be nice to get support for each distro in its own package. We hope to garner enough interest to pick up a maintainer for each distro. We currently have AUR packages for Arch Linux which are very nice to get the game running.
ice00
Posts: 14
Joined: Sat Feb 20, 2016 3:19 pm UTC

Re: Package

Postby ice00 » Sat Feb 27, 2016 11:32 am UTC

I will try to create a unofficial SPEC file for RPM.
ice00
Posts: 14
Joined: Sat Feb 20, 2016 3:19 pm UTC

Re: Package

Postby ice00 » Mon Feb 29, 2016 6:14 pm UTC

I have create the RPM basing on the Arch Linux and how it put files into the distro.

When I execute the program I obtain a windows with this error:

Error during initialization: IPC: Socket closed by remote end


and this is the console output:

Code: Select all

unvanquished.sh
Unvanquished 0.48 Linux x86_64 Feb 29 2016
cmdline: -libpath /usr/lib64/unvanquished -pakpath /usr/share/unvanquished/pkg
^3Warn: Ignoring unrecognized parameter ""
[FS] Lib path: /usr/lib64/unvanquished
[FS] Home path: /home/ice/.unvanquished                                                                                     
[FS] Pak search path: /usr/share/unvanquished/pkg                                                                           
[FS] Pak search path: /home/ice/.unvanquished/pkg                                                                           
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.48.0.pk3'...                                                   
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.47.0.pk3'...                                                   
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.46.0.pk3'...                                                   
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.45.0.pk3'...                                                   
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.44.0.pk3'...                                                   
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.43.0.pk3'...                                                   
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.42.0.pk3'...                                                   
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.41.0.pk3'...                                                   
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.40.0.pk3'...                                                   
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.39.0.pk3'...                                                   
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.38.0.pk3'...                                                   
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.37.0.pk3'...                                                   
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.36.0.pk3'...                                                   
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.35.0.pk3'...                                                   
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.34.0.pk3'...                                                   
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.33.0.pk3'...                                                   
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.32.0.pk3'...                                                   
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.31.0.pk3'...                                                   
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.30.0.pk3'...                                                   
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.29.0.pk3'...                                                   
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.28.0.pk3'...                                                   
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.27.0.pk3'...                                                   
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.26.0.pk3'...                                                   
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.25.0.pk3'...                                                   
execing 'default.cfg'                                                                                                       
execing 'autogen.cfg'                                                                                                       
execing 'keybindings.cfg'                                                                                                   
Warn: Couldn't read conhistory: No such file or directory
Loaded 9 languages                                                                                                           
Set language to Italian                                                                                                     
----- Client Initialization -----                                                                                           
Loading RSA keys from pubkey
Daemon RSA public-key found.                                                                                                 
----- Client Initialization Complete -----                                                                                   
Calling GetRefAPI…                                                                                                           
SDL_Init( SDL_INIT_VIDEO )...                                                                                               
Using SDL Version 2.0.3                                                                                                     
]ATTENTION: default value of option force_s3tc_enable overridden by environment.                                             
SDL using driver "x11"                                                                                                       
Initializing OpenGL display                                                                                                 
Display aspect: 1.333                                                                                                       
...setting mode -1:                                                                                                         
 1024 768                                                                                                                   
Using 24 Color bits, 24 depth, 8 stencil display.                                                                           
Using GLEW 1.10.0                                                                                                           
Using enhanced (GL3) Renderer in GL 2.x mode...                                                                             
Available modes: '640x480 800x600 1024x768 '                                                                                 
GL_RENDERER: Gallium 0.4 on AMD JUNIPER (DRM 2.43.0, LLVM 3.7.0)                                                             
Detected graphics driver class 'Mesa'                                                                                       
Detected graphics hardware class 'AMD Radeon DX10-class'                                                                     
Initializing OpenGL extensions                                                                                               
...ignoring GL_ARB_debug_output                                                                                             
...using GL_ARB_fragment_shader                                                                                             
...using GL_ARB_vertex_shader                                                                                               
...using GL_ARB_shading_language_100                                                                                         
...found shading language version 130                                                                                       
...using GL_ARB_depth_texture                                                                                               
...using GL_ARB_texture_cube_map                                                                                             
...using GL_ARB_half_float_pixel                                                                                             
...using GL_ARB_texture_float                                                                                               
...using GL_ARB_texture_rg                                                                                                   
...ignoring GL_ARB_texture_compression                                                                                       
...ignoring GL_EXT_texture_compression_s3tc                                                                                 
...using GL_ARB_texture_non_power_of_two                                                                                     
...using GL_SGIS_generate_mipmap                                                                                             
...using GL_EXT_texture_filter_anisotropic                                                                                   
...using GL_ARB_vertex_buffer_object                                                                                         
...using GL_ARB_half_float_vertex                                                                                           
...using GL_ARB_framebuffer_object                                                                                           
...using GL_ARB_shader_objects                                                                                               
...using GL_ARB_occlusion_query                                                                                             
...using GL_ARB_draw_buffers                                                                                                 
...GL_GREMEDY_string_marker not found                                                                                       
...GL_ARB_get_program_binary found, but with no binary formats                                                               
...using GL_ARB_buffer_storage                                                                                               
...using GL_ARB_map_buffer_range                                                                                             
...using GL_ARB_sync                                                                                                         
glsl shaders took 3076 msec to build                                                                                         
 
 
GL_VENDOR: X.Org
GL_RENDERER: Gallium 0.4 on AMD JUNIPER (DRM 2.43.0, LLVM 3.7.0)
GL_VERSION: 3.0 Mesa 11.1.0 (git-525f3c2)
GL_SHADING_LANGUAGE_VERSION: 1.30
GL_MAX_VERTEX_UNIFORM_COMPONENTS 16384
Using GPU vertex skinning with max 256 bones in a single pass
Extracting VM module cgame-x86_64.nexe from /usr/share/unvanquished/pkg/unvanquished_0.48.0.pk3...
Loading VM module cgame-x86_64.nexe...
][17652,673654592:19:13:34.932164] Native Client module will be loaded at base address 0x0000571f00000000

** Signal 11 from untrusted code: pc=571f0ffe50d8
Error: Error during initialization: IPC: Socket closed by remote end
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.48.0.pk3'...
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.47.0.pk3'...
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.46.0.pk3'...
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.45.0.pk3'...
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.44.0.pk3'...
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.43.0.pk3'...
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.42.0.pk3'...
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.41.0.pk3'...
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.40.0.pk3'...
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.39.0.pk3'...
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.38.0.pk3'...
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.37.0.pk3'...
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.36.0.pk3'...
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.35.0.pk3'...
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.34.0.pk3'...
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.33.0.pk3'...
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.32.0.pk3'...
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.31.0.pk3'...
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.30.0.pk3'...
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.29.0.pk3'...
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.28.0.pk3'...
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.27.0.pk3'...
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.26.0.pk3'...
[FS] Loading pak '/usr/share/unvanquished/pkg/unvanquished_0.25.0.pk3'...
terminate called after throwing an instance of 'Sys::DropErr'
  what():  IPC: Failed to send message: Broken pipe


Any idea about the problem?

thanks
ice00
Posts: 14
Joined: Sat Feb 20, 2016 3:19 pm UTC

Re: Package

Postby ice00 » Tue Mar 01, 2016 7:12 pm UTC

hi again,

this is what is strange:

Code: Select all

Using GPU vertex skinning with max 256 bones in a single pass                                                               
Extracting VM module cgame-x86_64.nexe from /usr/share/unvanquished/pkg/unvanquished_0.48.0.pk3...                           
Loading VM module cgame-x86_64.nexe...                                                                                       
][22335,2525841216:19:56:36.221426] Native Client module will be loaded at base address 0x0000113a00000000                   

** Signal 11 from untrusted code: pc=113a0ffe50d8


cgame-x86_64.nexe is created onto compilation, but not used by ArchLinux package (I try to put it into library directories, but this not change).
Instead it seems it is extracted from unvanquished_0.48.0.pk3 and then loaded.

Not sure, but having Fedora the Seelinux active, untrusted code is not executed (so the Signal 11) to prevent that a file that is not secure is executed.

Maybe here a developer can help in say why cgame-x86_64.nexe is extracted from .pk3.

Thanks
User avatar
illwieckz
Project Head
Posts: 458
Joined: Sat Aug 11, 2012 7:22 pm UTC
Location: France
Contact:

Re: Package

Postby illwieckz » Tue Mar 01, 2016 9:38 pm UTC

The cgame-x86_64.nexe file is the gamecode executable in NaCl format. It's the format for gamecode (and mod) in Unvanquished. Unvanquished runs that NaCl code in a sandbox, so it means you can safely run any gamecode from an arbitrary server.

Unlike the Quake mods that uses QuakeC, mods are not scripted.
Unlike the Quake3 mods that uses QVM, mods can use advanced modern C++ language and standard C++ libs (for example the Unvanquished game client is compiled against libRocket).
Unlike the Wolf:Et mods that are plain solibs downloaded and executed without any check from arbitrary servers, that code is sandboxed.

So, game and mod developers get a nice and modern C++ development platform with native execution rate and access to many C++ libraries, while the users do not run that code without protection. For example the only file system calls allowed to the game code are the read-only access to the VFS (only the files in pkg/directory, and files in pk3 archives in pkg/ directory).

So, it's very good for the Unvanquished project and very good for Unvanquished users, but you get the problem while packaging for distro, I like distro packages, but there is some issues there :

1. The game clients must use the same binary than server and other clients (from other Linux distros, from Windows, from MacOS) to prevent cheating…
2. Distro generally does not allow to package binaries they don't build themselves.
3. Distro generally does not allow packages that can't run out of the box without downloading extra stuff that cannot be placed in repositories.

There is some exceptions like FlashPlayer, but the word “exception” means something.

By the way, Dæmon can handle multiple concurrent files even with same name, and also allows to uses advanced versioning scheme.

So, for example, you can build a unvanquished_0.48~fedora.pk3 that contains your own fedora-compiled nexe, the fedora user will be able to enjoy a full game without having to download third-party binaries, and when he connects to a server, he will autodownloads the unvanquished_0.48.pk3 package from the server (like if it were a mod) to run it while playing online. So, your fedora compiled nexe will not conflict with the official one, and your package will works out of the box. Because Unvanquished knows how to deal with multiple files that have the same name, you can rename your package unvanquished_0.48.pk3, but it's fair to add a ~version (0.48~version < 0.48).

Also, all the unvanquished_ packages contain old binaries plus some stuff, you probably want to make a standalone 0.48~fedora package that contains only the last nexes you built, plus the other stuff that are not binaries, from all the older unvanquished_ packages, without all these packages in DEPS file.

So, this fixes the "how I can build official package that cannot rely on external binary to run right after the installation from repository" problem, but it does not fix the issue "how I can run an arbitrary nexe downloaded from the internet" while having SELinux activated. By the way, the NaCL sandbox and SELinux are in competition there, they both wants to protect you in a similar way… I have no solution, perhaps you can see how the chromium (the web browser) package do.

Edit: So to answer to that question:
Maybe here a developer can help in say why cgame-x86_64.nexe is extracted from .pk3.

The cgame nexe is the client game code, it's extracted from the pk3 at map load, and it's only extracted from the pk3 if the pk3 on the client side is the same as the one loaded by the server, so it means the cgame nexe used by the player is the same as the server, so it means all players use the same cgame nexe when playing on the same server. So, the cgame nexe is extracted from the pk3 to ensure everyone on the same server uses the same cgame code to avoid cheating.
This comment is licensed under cc ​​by 4 and antecedent.
ice00
Posts: 14
Joined: Sat Feb 20, 2016 3:19 pm UTC

Re: Package

Postby ice00 » Wed Mar 02, 2016 7:33 am UTC

hi,

thanks for the replay.

I look more on Selinux and not find a log error about a blocking of execution (it produces an error entry if blocking a program), so this seems no the cause.

Looking at Fedora packaging guideline there is no issue in make package for unvanquished.
As for Tremulous RPM, the important task is to divide the game program from maps data (so I create unvanquished.spec and unvanquished-data.spec).

Game program is compiled from source and binary added to package, while map data is only a package or resources (with different license from game GPL's).

The problem here is that if I compile the game, put it in standard linux paths and execute with those command paramethers:

Code: Select all

-libpath /usr/lib64/unvanquished -pakpath /usr/share/unvanquished/pkg


I get the error, while if I execute it from building directories, no errors is given and game works.
ice00
Posts: 14
Joined: Sat Feb 20, 2016 3:19 pm UTC

Re: Package

Postby ice00 » Wed Mar 02, 2016 7:57 pm UTC

I find the problem:
this irt_core-x86_64.nexe file is stripped by packaging as it view as an executable so then if differ from the original and so it is not more valid.

I hope to fix the package soon.

Thanks

Return to “Ideas & Suggestions”

Who is online

Users browsing this forum: No registered users and 3 guests