Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Third Party] Traditional (and Sandboxed ?) Packaging Checklist #20

Closed
5 of 12 tasks
LyesSaadi opened this issue Jan 10, 2020 · 24 comments
Closed
5 of 12 tasks

[Third Party] Traditional (and Sandboxed ?) Packaging Checklist #20

LyesSaadi opened this issue Jan 10, 2020 · 24 comments

Comments

@LyesSaadi
Copy link

LyesSaadi commented Jan 10, 2020

Hello!

First, a huge thanks for releasing this incredible game source code :D! This is truly awesome! But what could be even better, is to package it properly for Linux Distributions. And you seem to not be against this idea according to your comment in #2. So, this is a basic checklist to what needs to be done in order to have it packaged (at least, in RPM):

Mandatory changes

  • Technical: Adding a .desktop file: would allow it to show in start menus
  • Technical: Adding a .appdata.xml: would allow it to show in application stores
  • Technical: Adding the possibility to load this data.zip from XDG_DATA_DIRS to avoid having a .zip in the binary directory (Add -assets option to specify data.zip #139)

I would be happy to help with these.

Optional changes

  • Legal: Adding a non-proprietary, "redistributable" data.zip: or that would mean that the user should do some further steps to get it working which would defeat the whole purpose of packaging

  • [REFUSED] Legal: Change the license to choose a more common one: easier to be accepted by distribution's legal teams [Docs] License is not open source #7

Progress

With all those who declared their interest in packaging VVVVVV in this thread. Please confirm you're willing to package it ;).

  • Flatpak: Through Flathub (?) and Athenaeum
  • Snap: ?

Documentation

  • Requirements: (SDL2, SDL2_mixer / libsdl2, libsdl2-mixer)
  • BuildRequirements: gcc, make, cmake, (SDL2-devel, SDL2_mixer-devel / libsdl2-dev, libsdl2-mixer-dev)
  • Desktop and AppData entries [WIP]

I also have to insist on the importance of the legal changes if you want VVVVVV to be packaged. If the second of the optional changes (license) is not met, it would be a LOT harder to get it to land in official repos, maybe some unofficial ones. And if the first (data.zip) is not met, packaging would be useless.

But, hey, this is your (awesome) game and these are your choice. So, feel free to decide otherwise :).

Also, I would be happy to be VVVVVV's Fedora Packager.

@flibitijibibo
Copy link
Collaborator

We’re not really interested in this making it into repos, so unfortunately that won’t influence much in our source. I’d be up for integrating XDG_DATA_DIRS though, since I imagine certain types of builds might need it (Flatpak maybe?).

You should be able to keep the .desktop/appdata as part of package automation; for official builds I use MojoSetup, so hardcoded files would technically conflict with those builds.

data.zip can be extracted from the Make and Play version, which can be unzipped without running the installer, but we might host this separately, not sure (technically not my call). Will report on this one later...

@LyesSaadi
Copy link
Author

LyesSaadi commented Jan 10, 2020

I have to say that the current license still have chances of being approved by legal teams, it's just not common, so it would need a manual review by lawyers... And, well, I'm not a lawyer... So I can't say if distributions will accept this License.

Either way, this is not the primary objective of this repo, and I completely understand why you aren't interested in that :). It would just be cool if it was easily available to everyone.

@lanodan
Copy link

lanodan commented Jan 11, 2020

Thought about packaging it for gentoo myself, I don't think any change needs to be done so far, but an official .desktop would be better as well as source code releases in form of an archive so it could be stabilized. (picking an arbitrary commit and monitoring the git logs doesn't works well in some cases)

Also one that I wonder is "We’re not really interested in this making it into repos" while putting Flatpak, is it because of some release models?

EDIT: The license is fine btw (not a lawyer but non-GPL-compatible is okay)

@flibitijibibo
Copy link
Collaborator

I’m giving Flatpak a little bit of rope because that’s the only format that might end up replacing MojoSetup later on (we’re talking like 5-10 years after they fix joystick hotplugging), so it’s not really about the repos as much as the package format and runtime.

@ghost
Copy link

ghost commented Jan 11, 2020

@LyesSaadi
Copy link
Author

As #7 has been rejected, it is very unlikely that official repos will accept VVVVVV as explained in that thread by @Wuzzy2. I will still try if you wish so ;).

Either way, there's still unofficial repos* or Flathub and Snap which both accept license-tricky** software :).

* like RPMFusion for Fedora
** I mean by that, not commonly used licenses

@ghost
Copy link

ghost commented Jan 12, 2020

Currently I can not start working on it.

@LyesSaadi
Copy link
Author

I started creating a Desktop and Appdata entry in this gist, so we won't have to add it to source code and MojoSetup won't see any conflict ;).

But I'll need a description (preferably translated) (maybe the one from Steam) and screenshots (better quality one from those I added) to add :)! If you could provide me with that, it would be awesome :).

Also, I'll need a usable icon, but that is easily retrievable from data.zip and is being discussed at #18 to provide some high quality ones.

@InfoTeddy
Copy link
Contributor

I use Gentoo, so I guess I can test a Gentoo ebuild if need be. But I don't want to be a proxy maintainer unless the Gentoo people will let me not use my real name 😛

@anna328p
Copy link

anna328p commented Jan 13, 2020

I'm definitely packaging this for NixOS.

@anna328p
Copy link

@LyesSaadi I have submitted a PR for NixOS: NixOS/nixpkgs#78319

@LyesSaadi
Copy link
Author

LyesSaadi commented Jan 22, 2020

Great! But for getting VVVVVV to other distribution like Fedora, Debian or Ubuntu, we'll still need a "redistributable" (legally) data.zip :/. @flibitijibibo, have you looked into it?

@TerryCavanagh
Copy link
Owner

@LyesSaadi is your intention to distribute a complete version of VVVVVV for free on those distros? That’s not something I’m planning to support, sorry. Packaging and distributing the make and play version is fine, though.

@LyesSaadi
Copy link
Author

LyesSaadi commented Jan 22, 2020

@LyesSaadi is your intention to distribute a complete version of VVVVVV for free on those distros? That’s not something I’m planning to support, sorry. Packaging and distributing the make and play version is fine, though.

Yes, the make & play version. Just an exception for Linux Distributions will be fine (and a license with the data.zip) ;)!

@TerryCavanagh
Copy link
Owner

Ah, ok then! I’ll add a general exception for including data.zip with distributions of the Make and Play edition tomorrow morning :)

@leo60228
Copy link
Contributor

Nix supports packages that require user-provided assets to be compiled, in which case the user will be prompted and once provided the compilation will occur on the user's machine. @dkudriavtsev's nixpkgs PR uses this for the full version of the game. I'm assuming this is allowed? The workflow would be something like:

$ nix-env -iA nixos.vvvvvvFullVersion
error: You need to provide a data.zip using nix-prefetch-url!
$ nix-prefetch-url file://./data.zip
/nix/long_sha256_hash-data.zip
$ nix-env -iA nixos.vvvvvvFullVersion
[50%] Compiling whatever.c...
$ VVVVVV
Loaded data.zip from /nix/long_sha256_hash-data.zip!

@leo60228
Copy link
Contributor

Also, nixpkgs supports NixOS, other Linux distributions, macOS, as well as has very buggy MinGW/Cygwin support. It'd probably best if you made sure to include package managers in general, so that it could be distributed in standard Linux distributions, along with nixpkgs and things like Homebrew or Chocolatey.

@anna328p
Copy link

anna328p commented Feb 2, 2020

NixOS/nixpkgs#79068

@LyesSaadi
Copy link
Author

LyesSaadi commented Feb 7, 2020

Ah! I see that the exception to redistribute the data.zip from the Make and Play has been added (11 days ago... Yeah, I didn't see it 😓...)! Thanks @TerryCavanagh 😄!

And that the possibility to load data.zip has been merged 😄!

@leo60228
Copy link
Contributor

leo60228 commented Feb 7, 2020

I only have experience with NixOS, which has great infrastructure for wrapping binaries with arguments. Do other distros have something similar, or do you have another suggestion for how to locate data.zip?

@LyesSaadi
Copy link
Author

No, that is why I've asked here for a "redistributable" data.zip which will be installed in /usr/share/VVVVVV. And, the .desktop file, will, simply execute vvvvvv -assets /usr/share/VVVVVV, thanks to your merge request #139 !

@clausecker
Copy link

Interestingly enough, FreeBSD already has a package in games/vvvvvv. It asks the user to supply a data.zip, so no license violation here. I suppose for 2.3, one could add an option to either have the Make&Play edition (default) or to have the full game with user-supplied data.zip (but has to be compiled manually).

@flibitijibibo
Copy link
Collaborator

Looked over this and I think we're actually done at this point... all the compliance stuff is done and the Make and Play builds are being properly packaged and distributed in some capacity.

For what it's worth I think the best way to package it for Linux is to package via Flathub, as the latest freedesktop SDK tends to be really good about keeping SDL updated (and we will probably require SDL 2.0.18 for VVV 2.4, which will at minimum be in the 22.08 SDK if not an updated 21.08). If SteamOS 3 is anything like SteamOS 2 (still waiting for a kit...), flatpak will be the preferred way to install non-Steam packages. Non-Linux targets can of course package via their usual methods (see the FreeBSD package above).

@SuperSamus
Copy link

Something isn't clear to me about the meaning of "redistributing".
If a distro repository is hosting data.zip, then it's clearly redistribution.
But if the distro is hosting a script that downloads data.zip from https://thelettervsixtim.es/makeandplay/, then the instructions to compile it (without hosting the actual compiled binary nor the data.zip itself), is it still redistributing?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

9 participants