I made a flatpak

And holy shit, did I discover how fucked up the Linux "installation" process is.

You have to put your binary (I hope you have only one, otherwise I think you're fucked) into one of either
/bin
/usr/bin
/usr/local/bin
God knows fucking where

Then you have to ask-the-average-Joe to install the shared-libraries, because installing them manually is a no-no and defeats all purpose of shared libraries, so it's okay if the library is in the repositories and is not too out-of-date
>Ubuntu Xenial (arguably the most widely used Linux/repo, 16.04, the LTS release) has outdated GLFW (I need 3.2 for glfwWaitEventsTimeout function, which is new in 3.2)
>literally nothing has libsoundio ( libsound.io/ , github.com/andrewrk/libsoundio ), so you HAVE to fucking ship it and then fuck with linker options (because ld won't look in the current directory, fucking idiot linker)
the Joe might succeed with a simple sudo apt-get install, but otherwise he's fucked big time

Then you have to install your .desktop file at either one of
/usr/share/applications
/usr/local/share/applications
God knows fucking where

Then you have to put your icon at something like
/usr/share/icons/hicolor/16x16/apps/
/usr/local/share/icons/hicolor/16x16/apps/
God knows fucking where

And here's the BEST PART.
None of this fucking mess is not guaranteed to work. The distro can ignore the freedesktops standards, none of the listed paths are guaranteed to exist (even /bin) or work as expected.

So yeah, all I am going to do for my app is this:
1) Flatpak for normies
2) Makefile for neckbeards
Everything else is shit.

Rant done. Discuss.

Other urls found in this thread:

forum.snapcraft.io/t/how-do-i-create-an-opengles2-and-glfw3-snap/2488/5
askubuntu.com/questions/965455/how-do-i-create-an-opengles2-and-glfw3-snap
github.com/snapcore/snapcraft
build.snapcraft.io/
gcc.gnu.org/onlinedocs/gcc/Link-Options.html
stackoverflow.com/questions/14567689/static-linking-of-glibc
build.snapcraft.io/user/Mark-Weston/stopwatch
forum.snapcraft.io/t/how-do-i-create-an-opengles2-and-glfw3-snap/2488/10
gnu.org/software/guix/manual/html_node/Invoking-guix-pack.html#Invoking-guix-pack
gnu.org/software/guix/news/creating-bundles-with-guix-pack.html
appimage.github.io/apps/
bintray.com/probono/AppImages
twitter.com/SFWRedditImages

sounds like you're a newbie and you are frustrated.

Fuck, I've been on Lubuntu for two years already

On Windows you just put your shit in C:/Program Files, your icon just have to have .ico format, and maybe put a desktop shortcut and you're done.

Compare with the mess above.

>.desktop
>app icons
user, if you want to do that shit just put it on the repos for the package managers yourself or use a file that the package managers can read, don't try to manually install your shit into the user.

Btw, on Windows everything is guaranteed to work and be uniform

Snaps > flatpaks
GPL3 > MIT
APPARMOR > failure

ps: why do they copy LEDE logo?

So now I have to maintain have a repo for my .deb for each of
> Ubuntu 17.10
> Ubuntu 17.04
> Ubuntu 16.04
> Ubuntu 14
> Ubuntu 12
Then I have to have an RPM for
> Fedora XYZ
> Fedora ZYX
> Fedora XZY
Then I have to have ARCHPKG for Arch neckbeards
Whatever other distros have

And then I have to MAINTAIN all that shit, because new distros with different packages are released every year

No, fuck that.

>Snaps > flatpaks
Snaps don't fucking work.
forum.snapcraft.io/t/how-do-i-create-an-opengles2-and-glfw3-snap/2488/5

also
askubuntu.com/questions/965455/how-do-i-create-an-opengles2-and-glfw3-snap

fucking 4 days already
nobody knows how to make a snap that's one C file and has two dependencies

>dont work
>1000+ snaps in repo

choose one lad

Only the Ubuntu devs who made the snaps know how they work and they keep it a secret

>spewing lies
nice job losing any credibility you had

how did solus implement base snaps then?
its also completely decentralized and can be hosted locally or on a git

>>spewing lies

How come they don't tell me how to make me a snap in four fucking days?

>they keep it a secret
github.com/snapcore/snapcraft

Redhat kikes getting desperate!

Enjoy them re-licensing from MIT down the road and pulling the rug out under you.

Is there a reason Linux programs aren't just compiled for an old version of the OS with statically linked libraries like Windows programs are?

statically linked libraries don't follow the unix philosophy™

The neckbeards frown upon you because "muh security" and "muh wasted bytes"

Yeah, you can make a hello world, but once you decide to make anything more complicated it shits its pants
> snap run stopwatch
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast
stopwatch: /build/glfw3-KYdbSD/glfw3-3.2.1/src/input.c:493: glfwSetMouseButtonCallback: Assertion `window != NULL' failed.
Aborted (core dumped)

>anything more complicated

clearly you fucked up with the documentation because theres plenty of applications working on snap at the moment

steam included which involves multi arch libs and can use GL/SDL ect which are multiple outputs

you suggesting they are purposely trying to hide stuff because you are too stupid is hilarious

>you suggesting they are purposely trying to hide stuff because you are too stupid is hilarious
And somehow in four days there's no smartass capable of telling me what's wrong
It's a one-file program with two libraries available on their repos
You can compile it with one command
gcc -o stopwatch main.c -lglfw -lGLESv2
And yet, nobody tells me how to make a working snap

I had no problem with flatpak

use appimage op desu

1. gcc -static ...
2. put in /bin
3. Youre done

its most likely a sandboxing issue.
you didnt allow proper permissions for it

the reason why you arent getting proper responses is because its such a new standard and the majority of people with experience

ie ubuntu/elementary/solus devs are busy with pushing it out on their next releases

you suggesting they are trying to hide shit just sounds stupid thought.

the whole point of snaps is to allow outside devs and projects to port their programs

just because you dont get a answer in 4 days doesnt mean you should go around bitching and telling lies

try the autobuilder out and document what your process is.
then try requesting help on the official forums again
build.snapcraft.io/

>you didnt allow proper permissions for it
I gave *ALL* permissions to it, that is, all interfaces printed by snap interfaces, and it didn't work
>build.snapcraft.io/
Thanks, I'll try it

Linux file structure is really annoying. That's why things like GoboLinux exist where everything is in /Programs. But mainstream distros are too retarded and stuck to standarts to implement such a resonable thing

Yeah, I saw gobolinux, it's great but nobody uses it.

>-static
actually that doesnt work with the GNU stdlib (the default in most distros)
you have to use another stdlib like musl

this is why I use hackintosh

*nix OS that Just Werks™

>actually that doesnt work with the GNU stdlib (the default in most distros)
Not him but are you sure? It works fine for me on the Windows GCC ports.

Also,
gcc.gnu.org/onlinedocs/gcc/Link-Options.html
>-static
>On systems that support dynamic linking, this overrides -pie and prevents linking with the shared libraries. On other systems, this option has no effect.

stackoverflow.com/questions/14567689/static-linking-of-glibc

actually this doesn't tell much, my bad

>Windows GCC
no diea about windows

>gcc.gnu.org/onlinedocs/gcc/Link-Options.html
thats what the compiler is supposed to do, but afaik you cant create a static library out if the gnu stdlib
and ive tried statically linking in the past aswell, hence i started using musl

Poorfag

also GNU stdlib != glib

imacs are garbage but macos is good

Now it's released on build.snapcraft.io/user/Mark-Weston/stopwatch and I did as forum.snapcraft.io/t/how-do-i-create-an-opengles2-and-glfw3-snap/2488/10 said (include libgl1-mesa-dri in state-packages), but it's still broken

In a perfect world I would release:
1) A snap
2) A flatpak
3) A .deb for as many different Ubuntu repos
4) A makefile with instructions

Good job OP, totally agree with your decision.

This except
appimages > snaps > flatpaks

1. Put your binary into /usr/bin. This is universally acceptable.

2. You are free to produce static binaries. No one will complain if you do so. Shared libraries need package manger abstraction which is pretty difficult.

3. .desktop is not necessary. Hence if you think so you can just put it in /usr/local/applications

4. Icons put it in /usr/share/icons/hicolor/DIMENSION/apps/

>Discuss
You are just a novice programmer, nothing you mentioned is really the case here.

> all I am going to do for my app is this:
> Flatpak
Good for you

> CMake
I'm 100% certain that you will fail. C/C++ does not have a standard package manager like python, JS, nim, D, Rust etc etc. You will have to endure thousands times more pain than the minor things you just mentioned.

This.
Therefore, my packaging procedure for Linux software looks like this:
1. If the users are lucky, the platform - some engines, for examples - offer built-in installation creation. Otherwise they can build the shit themselves, like I expect from my peer group.
2. If some tosser from bistros like e.g. Debian shows up and suggests changing build tools, release cycles, file hierachy etc. I kindly tell him to piss off.
Simplicity itself.

>At least 2 possible locations for everything
Linux in a nutshell. Worst part is everybody does whatever the fuck they want, so there's no consistency.

Exactly, you can choose to put your binary anywhere and the end user won't feel a thing. Unlike a cuck OS that I know of.

Trips don't lie.

>doesn't know standards exist
>complains about freedom
stfu

NixOS puts everything in /nix/store and doesn't have this problem

Link statically
icon = harmful bloat
.desktop = harmful bloat
put everything in bin.
simple. also i bet you also used a makefile cuck

is this even Sup Forums anymore? In 2017 you should learn 2 guix newanons
gnu.org/software/guix/manual/html_node/Invoking-guix-pack.html#Invoking-guix-pack
gnu.org/software/guix/news/creating-bundles-with-guix-pack.html

Usually I just use my package manager or compile, but out of all this memeshit I've used appimage once when I tried rpcs3. I downloaded it and double clicked and it just werked.

This

guix doesn't work with proprietary apps

>bloat
I produce software for the normies

>normie using a linux

>what is Ubuntu
>what is Ubuntu Software Center
>what is 3% and rising (protip: that's normies coming in slowly)

Times have changed.

then put it in fucking ubuntu software center, then package the real way for the rest of us

also it's still about 1

Just do a makefile.
If someone wants to package your shit for a specific distro they can do it themselves.

>what is appimages
>what is snaps
>what is flatpaks

>not just releasing versioned tarballs with standards-compliant Makefiles and letting distro maintainers maintain the deb/rpm/ebuild/spell/whateverthefuckarchuses
It just werks

what is disgusting bloatnet
what is disgusting bloatnet
what is disgusting bloatnet
make is the standard way since 1980

You don't even know programming. Fuck off.

What is a ``bloatnet``?

bloat + botnet

I dig this definition.

>flatpak

Learn2 Appimages

appimage.github.io/apps/

bintray.com/probono/AppImages

hi normie here

linux is grate :)

HAHAHAHAHA jesus fucking christ no

t. .NET dev slowly going insane

...

Well I don't really know, I didn't touch windows for two yeards now, but C# and Java should be harder to deploy since it's an additional level of indirection from hardware

They can't be installed. This means no start-menu entry, no icon, no panel launch shortcut.

This is why you create a PPA and put all the deps on your PPA.

building a proper package is a challenge on any platform

on Windows it's the poorly documented and obscure mechanisms + insane approach to shared objects all of this exacerbated by the additional complexity of getting .NET or Java (etc) shit to run

on Linux it's the endless fragmentation and the fact that you can only do it correctly if you software is freely redistributable

macOS doesn't have this problem =]

That's fine, musl is better anyway.

FreeBSD doesn't have this problem.

Everything is in a proper place from configs to libs to data.

>Lying THIS hard

AppImages run into the same issues as the Steam runtime.

>i don't understand how file system hierarchy works
>linux is bad

>Lying THIS hard
been running FreeBSD since release 5, why the fuck would I lie?

Unless your application is a system application it should go in /usr/bin. Usually /usr/local is used for local overrides so you shouldn't have your application install there.

>/usr/bin. This is universally acceptable.
false
>/usr/local/applications
>/usr/share/icons/hicolor/DIMENSION/apps/
so you're just an idiot that sprays shit in random directories

the retard can't find his way around the filesystem and you expect him to know how to write a makefile?

>steam included
post link please