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

Tidal installer for Linux #284

Open
yaxu opened this Issue Mar 3, 2018 · 23 comments

Comments

Projects
None yet
8 participants
@yaxu
Contributor

yaxu commented Mar 3, 2018

It's be great if there was an easier way to install tidal in Linux distros (see also equivalent issues for mac #282 and windows #283)

  • The Tidal library is slowly finding its way into Debian, via stack. This is probably a good thing but new versions will take a while via this route.
  • Debian stable is now on supercollider 1.3.7, which is the minimum viable version for running SuperDirt - good news.

There is this install script, which might work for debian-based distros but needs some testing:
https://github.com/tidalcycles/Tidal/blob/1.0-dev/doc/install-linux.sh

There are also ways of bundling up dependencies into universal packages for running on any linux-based system:
https://snapcraft.io/

So perhaps there is potential for bundling everything up into an easy single download..

@howbuildingsfail

This comment has been minimized.

howbuildingsfail commented Mar 3, 2018

fwiw, here are my notes on a tidal install I did in Jan, on Ubuntu 16.04....

Installing

Install haskell

from [https://www.haskell.org/platform/#linux-ubuntu]

sudo apt-get install haskell-platform

..that seemed to go without a hitch

Install Atom

download the .deb file from [https://atom.io/]

sudo apt-get install -f atom-amd64.deb

..that seemed to go without a hitch also!

Install supercollider

from [https://launchpad.net/~supercollider/+archive/ubuntu/ppa]

	sudo add-apt-repository ppa:supercollider/ppa
        sudo apt-get update
        sudo apt-get install supercollider

I chose not to give realtime priority to supercollider - it's caused big headaches in the past...

unfortuntely this method installs sc v3.6, which doesnt load suprdirt in the same way.... see[https://vimeo.com/69719708]

Install tidalcycles

	Warning: The package list for 'hackage.haskell.org' does not exist. Run 'cabal
update' to download it.
	cabal: There is no package named 'tidal'.
	You may need to run 'cabal update' to get the latest list of available
packages.`
cabal update
cabal install tidal

this gave a 'backjump limit reached' error, which [https://github.com/haskell/cabal/issues/2535] shows how to fix with the --reorder-goals option:

cabal install tidal --reorder-goals

install worked fine after that!

install 'standard' dirt

[https://github.com/tidalcycles/Dirt]

Note you have to use the --recursive flag to get the samples folder to install!

@cleary

This comment has been minimized.

cleary commented Mar 4, 2018

Fwiw I've bundled a lot of this into an ansible playbook/role:
https://github.com/cleary/ansible?files=1

The parts I see as sticking points at the moment have to do with the start up - jack must be running, supercollider must be running, then you need to choose your default editor - given atom is not in any main distro repos yet then it should not be the default in favour of something already packaged.
A tidal start up manager would ideally check/get everything in a sane/user friendly way

@snj33v

This comment has been minimized.

snj33v commented Mar 4, 2018

self contained installation with a script possible?

@yaxu

This comment has been minimized.

Contributor

yaxu commented Mar 4, 2018

@snj33v how do you mean self-contained? there is a script listed in the issue above

@snj33v

This comment has been minimized.

snj33v commented Mar 4, 2018

sorry, not script, meant as container like docker

@telephon

This comment has been minimized.

Contributor

telephon commented Mar 4, 2018

according to https://launchpad.net/~supercollider/+archive/ubuntu/ppa There should be a 3.9.1 package for ubuntu.

@yaxu

This comment has been minimized.

Contributor

yaxu commented Mar 24, 2018

It'd be good to get tidal into debian, Dan Stowell shows the way here:
http://mcld.co.uk/blog/2017/how-to-package-supercollider-for-debian-and-ubuntu-linux.html

@telephon

This comment has been minimized.

Contributor

telephon commented Mar 25, 2018

Also watch / (contribute to) this, maybe that is the way to go? supercollider/supercollider#3604

@cleary

This comment has been minimized.

cleary commented Mar 25, 2018

These last few comments have got me a bit confused since they're referencing supercollider, and not tidalcycles.

The detail by @yaxu is a great how to for interacting with the debian multimedia maintainers, but the architectural issues I raised earlier still need to be resolved before you get anywhere near that part of the process.

Snaps/AppImage/Flatpak images are certainly a possibility as well, but as far as I can tell, they are just as valid a packaging method as .deb or .rpm (or any other) - all of which tidalcycles should be considering as a target anyway.

In my opinion, all of this is a moot point because it still comes back to first resolving the architectural issues I raised (what editor to depend on, can we build a cross-distro startup manager to handle jack/supercollider/superdirt/tidal startup, kind of like ardour I would imagine)

@yaxu

This comment has been minimized.

Contributor

yaxu commented Mar 25, 2018

Yes true @cleary, I was just looking for ideas from the supercollider community. I've always found the process of contributing a package to debian, and Dan Stowell's post demystifies it a bit for me.

I agree standard .debs would be ideal. The tidal library is already in debian testing: https://packages.debian.org/buster/libghc-tidal-dev
Supercollider 3.8 is too.

So just the editor, superdirt and its samples are missing.

This isn't an ideal way of distributing tidal though, due to debian's slow release cycle.. But I guess we can always ask people to upgrade via cabal install tidal.

It's true that atom is a problem, due to its lack of distro packages. Another issue is this supercollider bug, which means sclang can't run headless (without compiling in a patch): supercollider/supercollider#2144

So perhaps assembling everything -- supercollider (with patch), superdirt, haskell, tidal, and an editor -- into a single cross-distro package like flatpak or similar, is the way to go.. With startup management as you suggest.

@cleary

This comment has been minimized.

cleary commented Mar 25, 2018

Yes true @cleary, I was just looking for ideas from the supercollider community. I've always found the process of contributing a package to debian, and Dan Stowell's post demystifies it a bit for me.

I agree standard .debs would be ideal. The tidal library is already in debian testing: https://packages.debian.org/buster/libghc-tidal-dev
Supercollider 3.8 is too.

So just the editor, superdirt and its samples are missing.

Awesome, I didn't notice that - every step means one step less :D

This isn't an ideal way of distributing tidal though, due to debian's slow release cycle.. But I guess we can always ask people to upgrade via cabal install tidal.

Debian's package release cycle isn't actually slow, it's the Debian Stable release cycle that is slow (by design, hence the name). Packages in debian unstable (sid) and testing are released early and often (and where ubuntu frequently sources it's packages from).

It's true that atom is a problem, due to its lack of distro packages.

I found this today:
https://discuss.atom.io/t/why-isnt-atom-in-any-official-repository/29294/25?u=cleary
It looks like atom is another step closer to being in official distro repos, now that the atom team are maintaining and packaging for common distro package formats. It should be a small step from here for a distro package maintainer to take it on and contribute packages directly to distro repos.

Another issue is this supercollider bug, which means sclang can't run headless (without compiling in a patch): supercollider/supercollider#2144

Aha, I was wondering about that myself - will read up when I have a bit more spare time (will try and get that into my ansible-playbook automation).

So perhaps assembling everything -- supercollider (with patch), superdirt, haskell, tidal, and an editor -- into a single cross-distro package like flatpak or similar, is the way to go.. With startup management as you suggest.

Yep, but I disagree with limiting ourselves to cross-distro packages - if it's convenient to package, it should be convenient to package on per-distro basis as well, for any formats that you can find package maintainers for (debian*, ubuntu*, arch*, fedora*, etc).

To be honest, it's looking a lot closer to a possibility already :)

@yaxu

This comment has been minimized.

Contributor

yaxu commented Mar 28, 2018

Ok, makes sense.

Personally I use the emacs plugin. The vim plugin seems quite popular too. I think those two editors are in debian ;) The emacs plugin is already in MELPA https://melpa.org/#/tidal , so can be installed from within emacs.

One issue is that much of Dirt-samples is of questionable origin, and unlikely to meet the licensing standards of Debian. We are very overdue splitting them out into a repository of nicely creative commons licensed samplebanks.. But would debian want a large package of sound samples?

@cleary

This comment has been minimized.

cleary commented Mar 28, 2018

Yeah, I mentioned giving preference to an editor that was already packaged - I use atom so I wasn't sure how well the other options worked.

Re the dirt samples, I'm not a debian developer by any means, but there's usually an option.
If "questionable origin" means legally obtained, but not necessarily available under a "Debian Free Software Guidelines" (DFSG) compatible license, then the contrib repository exists for this reason (which allows dfsg compatible software with non-dfsg dependencies).
I would envisage two packages: dirt-samples and dirt-samples-nonfree to cover this.

Another possibility is to handle the scenario where samples are specifically not licensed for distribution (but still free, ala oracle-java, adobe-flashplayer, ttf-mscorefonts), and you'd use a pre/postinst hook to download the samples during package installation

@cleary

This comment has been minimized.

cleary commented Apr 3, 2018

@MoiRouhs this thread is specifically related to the path to packaging tidal cycles, not general troubleshooting - can I recommend you create a separate issue, or visit some of the community channels listed here: http://blog.tidalcycles.org/community/

@fatmilktv

This comment has been minimized.

fatmilktv commented Apr 6, 2018

@yaxu

This comment has been minimized.

Contributor

yaxu commented Apr 23, 2018

I'm still interested in making a snap. I found a useful tutorial here: https://medium.com/@lettier/how-to-snap-your-awesome-haskell-app-648838d63f09

@asm13243546

This comment has been minimized.

asm13243546 commented Apr 25, 2018

@asm13243546

This comment has been minimized.

asm13243546 commented Apr 25, 2018

@asm13243546

This comment has been minimized.

asm13243546 commented Apr 25, 2018

@asm13243546

This comment has been minimized.

asm13243546 commented Apr 26, 2018

Working on it. Thanks for the tutorial.

@fatmilktv

This comment has been minimized.

fatmilktv commented Apr 27, 2018

@mtift

This comment has been minimized.

mtift commented May 14, 2018

I blogged about my process for installing Tidal on Debian stretch:

https://matthewtift.com/install-tidal-debian-stretch

Using QjackCtl, Haskell Cabal, Git, SuperCollider, and the vim plugin allowed me to use only packages from Debian stable + plugins. I could also get it working with the Atom deb and the generic linux option for Haskell Stack, but it seems that those are not strictly necessary.

I'm happy to help improve this process in order to help get new users (like me) setup more quickly, but I'm not sure if that should be done through documentation, an install script, or something else.

@fatmilktv

This comment has been minimized.

fatmilktv commented May 23, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment