jamulussoftware / jamulus

Jamulus enables musicians to perform real-time jam sessions over the internet.
https://jamulus.io
Other
997 stars 222 forks source link

Automatic build of official Debian packages #795

Closed ann0see closed 3 years ago

ann0see commented 3 years ago

As far as I know, Jamulus is not included in the official Debian repository.

Compiling Jamulus needs a bunch of dependencies (which in my case resulted in a GNOME desktop install on my server) which I rather want to avoid on my server.

It would be great if there were official Debian packages which are released via GitHub releases. These packages could be built automatically by GitHub Actions on every release.

We already have the necessary scripts in this repository, so it should be easy to implement.

chrisrimple commented 3 years ago

I'm running Jamulus Server on Debian at Vultr.com. I followed Andrew Ferguson's install instructions, then update to new Jamulus versions with the steps shown in my Remote Band Rehearsals doc. Anything that makes it easier is a good thing, in my mind. :)

ann0see commented 3 years ago

https://github.com/marketplace/actions/automatic-releases this could be modified.

ann0see commented 3 years ago

My work:

Edit: https://github.com/ann0see/jamulus/tree/autobuild_linux

Is now the branch with my changes. This automatically builds .deb files on every commit.

38github commented 3 years ago

ann0see: Thank you for your effort. I greatly appreciate it. I managed to install it on Debian 10 and it runs but apt complained about libgcc10-s1 not being available and having to use fix-broken when trying to install anything else which result in Jamulus being removed:

Unpacking jamulus (3.6.2git-0) over (3.6.2-0~~xenial1) ...
dpkg: dependency problems prevent configuration of jamulus:
 jamulus depends on libgcc-s1 (>= 3.0); however:
  Package libgcc-s1 is not installed.

I tried your deb because when I was using the Xenial build from PPA I could not see any pan pots but after installing your build they appeared. Yes, I did have stereo and everything configured correctly with xenial build but still no pan pots.

Questions:

ann0see commented 3 years ago

@38github I must admit, that I didn't do much (all the debian packaging tools etc. were already there. I just did the GH-Actions stuff) and I haven't had the time to install and check the packages yet on a real machine. I just looked at the content and it looked fine.

Initially I ran and compiled Jamulus (latest code from master) with my script on Debian 10 which produced .deb files.

GitHub Actions compiles it on Ubuntu (so it might produce slightly different files, although I don't really know why that should be the case).

Concerning your dependency issue: I wasn't aware of it, but maybe I can figure out why this is added.

Edit: yes, the resulting control file is different on Debian 10 and probably also on Ubuntu 16.04 which I now changed the OS of the GH action to. Let's wait and see what these .deb files look like...

38github commented 3 years ago

Thank you very much ann0see. I will try a new build as soon as one is generated.

ann0see commented 3 years ago

Yes. It's done now (and the Gui Version works on debian 10). Unfortunately the desktop file doesn't seem to work on debian 10.

Changed the OS to Ubuntu 20.04. Let's have a look at what that does.

ann0see commented 3 years ago

I'm not sure about the systemd Debian headless script (it automatically configures a public server and has multiple differences to the one included in the wiki: https://jamulus.io/wiki/Server-Linux#create-a-start-script). @corrados should we change this file?

38github commented 3 years ago

The deb works without errors BUT now the pan pots are gone just like in the xenial PPA build. Weird! They were not gone with the build you had before that gave the libgcc10-s1 package error.

ann0see commented 3 years ago

I can reproduce this error. So it depends on the OS we build Jamulus on, I think?

38github commented 3 years ago

I wish I could answer that but it seems so. Sometimes I wish appimages were more popular than they are but they probably have their shortcomings too that I don't know about,

ann0see commented 3 years ago

appimages are quite big, I think? .deb files are kind of the standard, I think

38github commented 3 years ago

What I like about them is that they work on (almost) all distros but I don't know how it works exactly. This is not popular to say but on other operating systems you can at least run a program downloaded on the developers website and not look for distros and packages that work. This will hopefully someday be a thing of the past and just work.

ann0see commented 3 years ago

The new files are up (but that isn't the solution...)

reverted it back to 16.04 build and will try to add the dependencies manually to the control file (although that's not a sustainable solution)

38github commented 3 years ago

The new one built on Ubuntu 20.04 gave me the following in Debian 10:

Preparing to unpack jamulus_3.6.2git-0_amd64.deb ...
Unpacking jamulus (3.6.2git-0) over (3.6.2git-0) ...
dpkg: dependency problems prevent configuration of jamulus:
 jamulus depends on libc6 (>= 2.29); however:
  Version of libc6:amd64 on system is 2.28-10.
 jamulus depends on libgcc-s1 (>= 3.0); however:
  Package libgcc-s1 is not installed.
 jamulus depends on libqt5core5a (>= 5.12.2); however:
  Version of libqt5core5a:amd64 on system is 5.11.3+dfsg1-1+deb10u4.
 jamulus depends on libqt5widgets5 (>= 5.12.2); however:
  Version of libqt5widgets5:amd64 on system is 5.11.3+dfsg1-1+deb10u4.

Edit: Saw now that you reverted back to 16.04. Is it possible to build for 18.04?

ann0see commented 3 years ago

Is it possible to build for 18.04?

Yes. That's what the first deb was built on

38github commented 3 years ago

Ah, ok.

ann0see commented 3 years ago

I think the issue lies deeper. Probably it has something to do with an outdated version of QT

38github commented 3 years ago

But the first build (18.04) worked and the pan pots were visible except the libgcc-s1 dependency issue that messed up installing any further things with apt.

ann0see commented 3 years ago

Yes. I now added the dependencies from 16.04 to the control file and set the build to 20.04. Let's wait and see if this works.

38github commented 3 years ago

Installed fine but won't start because of:

$ jamulus 
jamulus: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by jamulus)
jamulus: /lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.12' not found (required by jamulus)

:(

ann0see commented 3 years ago

Ok. Thanks for this information. I will try to build it on 18.04 with my dependencies copied from 16.04

ann0see commented 3 years ago

The new version should work now @38github but I just copied the dependencies from the 16.04 to the control file so there might be problems with them.

38github commented 3 years ago
$ jamulus
qt.qpa.screen: QXcbConnection: Could not connect to display 
Could not connect to any X display.

Computers... :)

Edit: I had to log-out which seemed to restart X11 or the windows manager and then it worked,

38github commented 3 years ago

Hold on...................

ann0see commented 3 years ago

For me it worked...

user@debian:/tmp$ sudo dpkg -i jamulus_3.6.2git-0_amd64.deb 
(Lese Datenbank ... 251073 Dateien und Verzeichnisse sind derzeit installiert.)
Vorbereitung zum Entpacken von jamulus_3.6.2git-0_amd64.deb ...
Entpacken von jamulus (3.6.2git-0) über (3.6.2git-0) ...
jamulus (3.6.2git-0) wird eingerichtet ...
Trigger für desktop-file-utils (0.23-4) werden verarbeitet ...
Trigger für mime-support (3.62) werden verarbeitet ...
Trigger für hicolor-icon-theme (0.17-2) werden verarbeitet ...

Are you running with gui? We should find out why this happens:

Unpacking jamulus (3.6.2git-0) over (3.6.2-0~~xenial1) ...
dpkg: dependency problems prevent configuration of jamulus:
 jamulus depends on libgcc-s1 (>= 3.0); however:
  Package libgcc-s1 is not installed.
38github commented 3 years ago

It worked! The pan pots are there! :D Thank you for all your patience, ann0see! Hopefully there is no other issue.

ann0see commented 3 years ago

Hopefully there is no other issue.

No guarantee for that...

ann0see commented 3 years ago

But what I did was really just a hack.

38github commented 3 years ago

But that hack made me very happy ;) Hopefully someone can answer the question why libgcc-s1 is an issue and why the pan pots work for some builds and not others.

ann0see commented 3 years ago

Yes. @tormodvolden might have an idea since he wrote the Debian scripts (I think). Also tagging @trebmuh here.

38github commented 3 years ago

This is not an issue but just want to add it if @tormodvolden reads it - the pan pots work now BUT the mute icon above users are now just an orange rectangle's border.

corrados commented 3 years ago

the mute icon above users are now just an orange rectangle's border

The UTF8 font is missing which has the symbols.

BTW: What is the status if this issue?

ann0see commented 3 years ago

What is the status if this issue?

The issue with the missing font you mentioned is still open and the question how you will handle a slightly different release process (you might no longer have to set the latest tag) to the latest version of Jamulus and the latest release might look a bit different.

corrados commented 3 years ago

a slightly different release process (you might no longer have to set the latest tag) to the latest version of Jamulus and the latest release might look a bit differen

The release process already takes more than 30 minutes and I have to remember a lot of things to do. Making it even more complicated is not a good idea.

What do you mean by "look a bit different"?

And also: "you might no longer have to set the latest tag" -> This will not be possible since a lot of people are using this tag. So this must exist.

ann0see commented 3 years ago

The latest tag would be set automatically so it will make your process faster.

Also the content of a github release would be automatically filled with the latest commits. Since the last commit with the latest tag.

See: https://github.com/marketplace/actions/automatic-releases

To allow this I still have to modify it a little bit

ann0see commented 3 years ago

Since the PR was merged, I will close this