On Sat, Oct 13, 2018 at 06:28:03PM -0400, Muammar El Khatib wrote:
> On Fri, Oct 12, 2018 at 4:13 AM Andreas Henriksson <andr...@fatal.se> wrote:
[...]
> > Normally I find that the main package (mkchromecast here) instead has
> > alternative dependency on the different backends, eg. mkchromecast would:
> > Depends: mkchromecast-pulseaudio | mkchromecast-alsa | 
> > mkchromecast-gstreamer
> >
> > (Or in which ever order you prefer, listing the recommended and best
> > supported backend as the first alternative.)
> >
> > (And to avoid circular dependencies, the mkchromecast-* package would
> > have to drop or demote the Dependency on mkchromecast to a Recommends.)
> >
> > This way the users can just pull the package named after the program and
> > end up having the recommeded backend pulled in for them.
[...]



> Your explanation makes lots of sense for me. Just to clarify this layout:
> 
> 1) mkchromecast-common would contain all needed files to make things
> functional meaning the python module itself and things in /usr/bin/.

Yes (except -common packages usually don't ship /usr/bin things).
This basically means renaming the current mkchromecast package
to mkchromecast-common.

> 2) There will be other mkchromecast-* packages e.g.:
> mkchromecast-pulseaudio; mkchromecast-alsa, and mkchromecast-gstreamer
> and those ones will pull out dependencies to make the package work for
> each of those audio servers.  Basically, instead of doing an `apt
> install mkchromecast`, users would need to do `apt install
> mkchromecast-something`.

Yes, isn't that what you already expect them to do?

> 
> Is that what you meant? If that is correct, then I think that the
> package `mkchromecast` does not have to be provided at all. I would
> like just to confirm these things before I go and change the
> packaging.

As I tried to explain before, but probably confused you with by
mentioning two different ways in the same mail. I think "the -common
way" (discussed above) is not the preferred way though. The alternative
would be like the attached patch does (untested, but hopefully it should
show my thinking). It implements the way I quoted at the top of this
mail from my previous mail and has the following advantages over "the
-common way":

- you can install from either direction. Doing 'apt install
  mkchromecast' gives the uninformed user a nice setup, and the
  picky informed people can still do 'apt install mkchromecast-alsa'
  to get a particular set.
- this is much more in line with how most other packages does it.
- you don't have to go through NEW queue because of renamed packages.


Having said that, I think there's a third option here as well. Since
mkchromecast-* seems to just be meta-packages that for many users seems
to add more confusion than they help. The third option would thus simply
be to get rid off all -* packages (removing packages doesn't need NEW
either) and simply listing all pulseaudio/alsa pieces under Recommends
on the main (and only) mkchromecast binary package. That way people get
all choices and functionality by default, but people who want a slimmer
install and are informed can skip installing the pieces they don't want.
This would actually be probably the most in line with debian policy and
how most other packages does it.

Hope this helps.

Regards,
Andreas Henriksson
diff -uriNp mkchromecast-0.3.8.1/debian/control mkchromecast-0.3.8.1.patched/debian/control
--- mkchromecast-0.3.8.1/debian/control	2017-12-24 15:29:49.000000000 +0100
+++ mkchromecast-0.3.8.1.patched/debian/control	2018-10-14 01:00:07.010435210 +0200
@@ -27,11 +27,10 @@ Depends: ${python3:Depends},
          opus-tools,
          youtube-dl,
          nodejs,
-         gir1.2-notify-0.7
+         gir1.2-notify-0.7,
+         mkchromecast-pulseaudio | mkchromecast-alsa | mkchromecast-gstreamer
 Suggests: libav-tools,
-          ffmpeg,
-          mkchromecast-pulseaudio,
-          mkchromecast-alsa
+          ffmpeg
 Description: Cast your Linux audio or video to your Google Cast devices
  It is written in Python, and it streams via node.js, ffmpeg, or avconv.
  mkchromecast is capable of using lossy and lossless audio formats provided
@@ -57,8 +56,8 @@ Depends: ${python3:Depends},
          ${misc:Depends},
          pavucontrol,
          pulseaudio-utils,
-         pulseaudio,
-         mkchromecast
+         pulseaudio
+Recommends: mkchromecast
 Description: Pulseaudio dependencies to cast with mkchromecast
  This dependency package contains an informational list of packages which are
  considered essential for using mkchromecast together with pulseaudio sound
@@ -71,8 +70,8 @@ Depends: ${python3:Depends},
          alsa-utils,
          alsa-tools,
          kmod,
-         ffmpeg,
-         mkchromecast
+         ffmpeg
+Recommends: mkchromecast
 Description: ALSA dependencies to cast with mkchromecast
  This dependency package contains an informational list of packages which are
  considered essential for using mkchromecast together with ALSA software
@@ -86,7 +85,7 @@ Architecture: all
 Depends: ${python3:Depends},
          ${misc:Depends},
          gstreamer1.0-tools,
-         mkchromecast
+Recommends: mkchromecast
 Description: GStreamer dependencies to cast with mkchromecast
  This dependency package contains an informational list of packages which are
  considered essential for using mkchromecast together with GStreamer software

Reply via email to