Spotifyd / spotifyd

A spotify daemon
https://spotifyd.rs
GNU General Public License v3.0
9.88k stars 453 forks source link

Can't build pulseaudio backend #444

Closed dzfranklin closed 4 years ago

dzfranklin commented 4 years ago

Description I build with pulseaudio_backend, but --help doesn't show pulseaudio.

This is the same initial description as #440, but I'm not running an outdated binary.

To Reproduce

  1. > cargo build --release --features "pulseaudio_backend"
  2. > cargo install --force --path . &&
  3. > ./target/release/spotifyd --help | grep -e "--backend"

Output: -b, --backend <string> The audio backend to use [possible values: alsa]

Expected behavior

For possible values to include pulseaudio

Logs

Output of `--help` ``` spotifyd 0.2.20 Simon Persson , Sven Lechner A Spotify daemon USAGE: spotifyd [FLAGS] [OPTIONS] FLAGS: -h, --help Prints help information --no-audio-cache Disable the use of audio cache --no-daemon If set, starts spotifyd without detaching -V, --version Prints version information --verbose Prints more verbose output --volume-normalisation Enable to normalize the volume during playback OPTIONS: -b, --backend The audio backend to use [possible values: alsa] -B, --bitrate The bitrate of the streamed audio data [possible values: 96, 160, 320] -c, --cache-path The cache path used to store credentials and music file artifacts --config-path The path to the config file to use --control The control device --device The audio device -d, --device-name The device name displayed in Spotify --mixer The mixer to use --normalisation-pregain A custom pregain applied before sending the audio to the output device --on-song-change-hook A script that gets evaluated in the user's shell when the song changes [aliases: onevent] -p, --password The Spotify account password -P, --password-cmd A command that can be used to retrieve the Spotify account password [aliases: password_cmd] --pid Path to PID file. -p, --proxy The proxy used to connect to spotify's servers -u, --username The Spotify account user name -v, --volume-controller The volume controller to use [aliases: volume-control] [possible values: softvol, alsa, alsa_linear] --zeroconf-port The port used for the Spotify Connect discovery ```
Output of `cargo build` ``` Compiling libc v0.2.65 Compiling cfg-if v0.1.10 Compiling autocfg v0.1.7 Compiling byteorder v1.3.2 Compiling log v0.4.8 Compiling lazy_static v1.4.0 Compiling semver-parser v0.7.0 Compiling futures v0.1.29 Compiling smallvec v0.6.12 Compiling proc-macro2 v1.0.6 Compiling either v1.5.3 Compiling unicode-xid v0.2.0 Compiling cc v1.0.47 Compiling fnv v1.0.6 Compiling syn v1.0.7 Compiling slab v0.4.2 Compiling scopeguard v1.0.0 Compiling pkg-config v0.3.17 Compiling typenum v1.11.2 Compiling arrayvec v0.4.12 Compiling serde v1.0.103 Compiling nodrop v0.1.14 Compiling bitflags v1.2.1 Compiling version_check v0.1.5 Compiling rand_core v0.4.2 Compiling rustc-demangle v0.1.16 Compiling matches v0.1.8 Compiling failure_derive v0.1.6 Compiling itoa v0.4.4 Compiling percent-encoding v1.0.1 Compiling getrandom v0.1.13 Compiling httparse v1.3.4 Compiling rustc-serialize v0.3.24 Compiling protobuf v2.8.1 Compiling ppv-lite86 v0.2.6 Compiling ryu v1.0.2 Compiling scoped-tls v0.1.2 Compiling opaque-debug v0.2.3 Compiling byte-tools v0.3.1 Compiling memchr v2.2.1 Compiling mime v0.3.14 Compiling safemem v0.3.3 Compiling proc-macro2 v0.4.30 Compiling void v1.0.2 Compiling smallvec v0.2.1 Compiling take v0.1.0 Compiling gcc v0.3.55 Compiling try-lock v0.1.0 Compiling unicode-xid v0.1.0 Compiling fake-simd v0.1.2 Compiling subtle v1.0.0 Compiling slab v0.3.0 Compiling syn v0.15.44 Compiling regex-syntax v0.6.12 Compiling language-tags v0.2.2 Compiling strsim v0.7.0 Compiling ident_case v1.0.1 Compiling openssl v0.10.25 Compiling quick-error v1.2.2 Compiling foreign-types-shared v0.1.1 Compiling bitflags v0.9.1 Compiling native-tls v0.2.3 Compiling bit-vec v0.5.1 Compiling arc-swap v0.4.3 Compiling crc32fast v1.2.0 Compiling unicode-width v0.1.6 Compiling percent-encoding v2.1.0 Compiling try-lock v0.2.2 Compiling nix v0.10.0 Compiling remove_dir_all v0.5.2 Compiling openssl-probe v0.1.2 Compiling adler32 v1.0.4 Compiling encoding_rs v0.8.20 Compiling linear-map v1.2.0 Compiling unicode-segmentation v1.5.0 Compiling termcolor v1.0.5 Compiling dtoa v0.4.4 Compiling derive_builder v0.7.2 Compiling nix v0.14.1 Compiling ansi_term v0.11.0 Compiling vec_map v0.8.1 Compiling strsim v0.8.0 Compiling boxfnonce v0.1.1 Compiling hex v0.3.2 Compiling webbrowser v0.5.2 Compiling random v0.12.2 Compiling result v1.0.0 Compiling whoami v0.6.0 Compiling hex v0.4.0 Compiling xdg v2.2.0 Compiling try_from v0.3.2 Compiling crossbeam-utils v0.6.6 Compiling thread_local v0.3.6 Compiling semver v0.9.0 Compiling unicode-normalization v0.1.8 Compiling itertools v0.8.1 Compiling lock_api v0.3.1 Compiling num-traits v0.2.8 Compiling num-integer v0.1.41 Compiling rand_chacha v0.1.1 Compiling rand_pcg v0.1.2 Compiling rand v0.6.5 Compiling num-bigint v0.2.3 Compiling indexmap v1.3.0 Compiling tokio-sync v0.1.7 Compiling tokio-service v0.1.0 Compiling relay v0.1.1 Compiling rand_core v0.3.1 Compiling rand_jitter v0.1.4 Compiling unicode-bidi v0.3.4 Compiling unicase v2.5.1 Compiling error-chain v0.12.1 Compiling block-padding v0.1.4 Compiling alsa-sys v0.1.2 Compiling c2-chacha v0.2.3 Compiling humantime v1.3.0 Compiling foreign-types v0.3.2 Compiling bit-set v0.5.1 Compiling textwrap v0.11.0 Compiling getopts v0.2.21 Compiling miniz_oxide v0.3.5 Compiling heck v0.3.1 Compiling backtrace-sys v0.1.32 Compiling openssl-sys v0.9.52 Compiling librespot-tremor v0.1.0 Compiling ogg-sys v0.0.9 Compiling rustc_version v0.2.3 Compiling tokio-executor v0.1.8 Compiling crossbeam-queue v0.1.2 Compiling rand_xorshift v0.1.1 Compiling rand_isaac v0.1.1 Compiling rand_hc v0.1.0 Compiling idna v0.1.5 Compiling idna v0.2.0 Compiling log v0.3.9 Compiling want v0.0.4 Compiling want v0.2.0 Compiling tokio-current-thread v0.1.6 Compiling tokio-timer v0.2.11 Compiling base64 v0.9.3 Compiling base64 v0.10.1 Compiling shannon v0.2.0 Compiling ogg v0.7.0 Compiling quote v1.0.2 Compiling iovec v0.1.4 Compiling num_cpus v1.11.0 Compiling net2 v0.2.33 Compiling time v0.1.42 Compiling rand_os v0.1.3 Compiling rand v0.4.6 Compiling rand v0.5.6 Compiling atty v0.2.13 Compiling signal-hook-registry v1.1.1 Compiling nix v0.9.0 Compiling libpulse-sys v0.0.0 Compiling dirs-sys v0.3.4 Compiling rpassword v3.0.2 Compiling daemonize v0.4.1 Compiling gethostname v0.2.0 Compiling parking_lot_core v0.6.2 Compiling parking_lot v0.9.0 Compiling memoffset v0.5.2 Compiling hyper v0.12.35 Compiling generic-array v0.12.3 Compiling aho-corasick v0.7.6 Compiling flate2 v1.0.12 Compiling quote v0.6.13 Compiling url v1.7.2 Compiling url v2.1.0 Compiling protobuf-codegen v2.8.1 Compiling bytes v0.4.12 Compiling futures-cpupool v0.1.8 Compiling lewton v0.9.4 Compiling mio v0.6.19 Compiling rand_core v0.5.1 Compiling clap v2.33.0 Compiling rand v0.3.23 Compiling signal-hook v0.1.11 Compiling dirs v2.0.2 Compiling alsa v0.2.2 Compiling block-cipher-trait v0.6.2 Compiling digest v0.8.1 Compiling block-buffer v0.7.3 Compiling crypto-mac v0.7.0 Compiling stream-cipher v0.3.2 Compiling mime_guess v2.0.1 Compiling regex v1.3.1 Compiling cookie v0.12.0 Compiling backtrace v0.3.40 Compiling protobuf-codegen-pure v2.8.1 Compiling tokio-io v0.1.12 Compiling http v0.1.19 Compiling string v0.2.1 Compiling tokio-buf v0.1.1 Compiling alsa v0.3.0 Compiling rand_chacha v0.2.1 Compiling mio-uds v0.6.7 Compiling term v0.6.1 Compiling aes-soft v0.3.3 Compiling block-modes v0.3.3 Compiling sha2 v0.8.0 Compiling sha-1 v0.8.1 Compiling hmac v0.7.1 Compiling uuid v0.7.4 Compiling ctr v0.3.2 Compiling synstructure v0.12.1 Compiling proc-macro-error v0.2.6 Compiling env_logger v0.6.2 Compiling error-chain v0.11.0 Compiling tokio-codec v0.1.1 Compiling darling_core v0.9.0 Compiling http-body v0.1.0 Compiling h2 v0.1.26 Compiling rand v0.7.2 Compiling crossbeam-epoch v0.7.2 Compiling aes v0.3.2 Compiling pbkdf2 v0.3.0 Compiling aes-ctr v0.3.0 Compiling publicsuffix v1.5.3 Compiling syslog v4.0.1 Compiling tempfile v3.1.0 Compiling tokio-reactor v0.1.10 Compiling crossbeam-deque v0.7.1 Compiling librespot-protocol v0.1.0 (https://github.com/librespot-org/librespot.git#295bda7e) Compiling tokio-tcp v0.1.3 Compiling tokio-udp v0.1.5 Compiling tokio-uds v0.2.5 Compiling tokio-signal v0.2.7 Compiling tokio-threadpool v0.1.16 Compiling tokio-process v0.2.4 Compiling tokio-fs v0.1.6 Compiling tokio v0.1.22 Compiling tokio-core v0.1.17 Compiling tokio-proto v0.1.1 Compiling tokio-signal v0.1.5 Compiling serde_derive v1.0.103 Compiling structopt-derive v0.3.2 (https://github.com/TeXitoi/structopt/?rev=0c888e962d842f2c90c6c290d3a2a40947b37005#0c888e96) Compiling hyper-tls v0.3.2 Compiling hyper v0.11.27 Compiling hyper-proxy v0.4.1 Compiling failure v0.1.6 Compiling dotenv v0.13.0 Compiling structopt v0.3.2 (https://github.com/TeXitoi/structopt/?rev=0c888e962d842f2c90c6c290d3a2a40947b37005#0c888e96) Compiling darling_macro v0.9.0 Compiling darling v0.9.0 Compiling derive_builder_core v0.5.0 Compiling chrono v0.4.10 Compiling serde_json v1.0.41 Compiling multimap v0.4.0 Compiling serde_urlencoded v0.5.5 Compiling serde_ini v0.2.0 Compiling libmdns v0.2.4 Compiling simplelog v0.7.4 Compiling cookie_store v0.7.0 Compiling vergen v3.0.4 Compiling reqwest v0.9.17 Compiling rspotify v0.7.0 Compiling librespot-core v0.1.0 (https://github.com/librespot-org/librespot.git#295bda7e) Compiling librespot-metadata v0.1.0 (https://github.com/librespot-org/librespot.git#295bda7e) Compiling librespot-audio v0.1.0 (https://github.com/librespot-org/librespot.git#295bda7e) Compiling librespot-playback v0.1.0 (https://github.com/librespot-org/librespot.git#295bda7e) Compiling librespot-connect v0.1.0 (https://github.com/librespot-org/librespot.git#295bda7e) Compiling librespot v0.1.0 (https://github.com/librespot-org/librespot.git#295bda7e) Compiling spotifyd v0.2.20 (/home/daniel/.local/software/spotifyd/spotifyd) Finished release [optimized] target(s) in 5m 43s Installing spotifyd v0.2.20 (/home/daniel/.local/software/spotifyd/spotifyd) Updating crates.io index Updating git repository `https://github.com/librespot-org/librespot.git` Updating git repository `https://github.com/TeXitoi/structopt/` Compiling libc v0.2.66 Compiling syn v1.0.11 Compiling cc v1.0.48 Compiling maybe-uninit v2.0.0 Compiling smallvec v1.0.0 Compiling version_check v0.9.1 Compiling openssl v0.10.26 Compiling arc-swap v0.4.4 Compiling unicode-width v0.1.7 Compiling unicode-segmentation v1.6.0 Compiling crossbeam-utils v0.7.0 Compiling crossbeam-epoch v0.8.0 Compiling num-traits v0.2.10 Compiling lock_api v0.3.2 Compiling itertools v0.8.2 Compiling error-chain v0.12.1 Compiling block-padding v0.1.5 Compiling unicode-normalization v0.1.11 Compiling textwrap v0.11.0 Compiling getopts v0.2.21 Compiling tokio-executor v0.1.9 Compiling heck v0.3.1 Compiling memoffset v0.5.3 Compiling tokio-current-thread v0.1.6 Compiling tokio-timer v0.2.12 Compiling idna v0.1.5 Compiling idna v0.2.0 Compiling unicase v2.6.0 Compiling smallvec v0.6.13 Compiling block-buffer v0.7.3 Compiling iovec v0.1.4 Compiling num_cpus v1.11.1 Compiling net2 v0.2.33 Compiling time v0.1.42 Compiling getrandom v0.1.13 Compiling rand v0.4.6 Compiling rand_os v0.1.3 Compiling rand v0.5.6 Compiling ogg-sys v0.0.9 Compiling atty v0.2.13 Compiling alsa-sys v0.1.2 Compiling nix v0.9.0 Compiling signal-hook-registry v1.2.0 Compiling dirs-sys v0.3.4 Compiling flate2 v1.0.13 Compiling rpassword v3.0.2 Compiling nix v0.14.1 Compiling gethostname v0.2.0 Compiling daemonize v0.4.1 Compiling url v1.7.2 Compiling num-integer v0.1.41 Compiling parking_lot_core v0.6.2 Compiling lewton v0.9.4 Compiling block-modes v0.3.3 Compiling url v2.1.0 Compiling sha2 v0.8.0 Compiling sha-1 v0.8.1 Compiling bytes v0.4.12 Compiling futures-cpupool v0.1.8 Compiling mio v0.6.21 Compiling rand_core v0.5.1 Compiling rand v0.6.5 Compiling rand v0.3.23 Compiling env_logger v0.6.2 Compiling clap v2.33.0 Compiling dirs v2.0.2 Compiling signal-hook v0.1.12 Compiling backtrace-sys v0.1.32 Compiling openssl-sys v0.9.53 Compiling librespot-tremor v0.1.0 Compiling parking_lot v0.9.0 Compiling num-bigint v0.2.3 Compiling cookie v0.12.0 Compiling alsa v0.2.2 Compiling pbkdf2 v0.3.0 Compiling synstructure v0.12.3 Compiling proc-macro-error v0.2.6 Compiling publicsuffix v1.5.4 Compiling tokio-io v0.1.12 Compiling http v0.1.21 Compiling string v0.2.1 Compiling tokio-buf v0.1.1 Compiling nix v0.10.0 Compiling alsa v0.3.0 Compiling rand_chacha v0.2.1 Compiling mio-uds v0.6.7 Compiling uuid v0.7.4 Compiling term v0.6.1 Compiling crossbeam-deque v0.7.2 Compiling mime_guess v2.0.1 Compiling tokio-reactor v0.1.11 Compiling tokio-codec v0.1.1 Compiling rand v0.7.2 Compiling http-body v0.1.0 Compiling h2 v0.1.26 Compiling tokio-threadpool v0.1.17 Compiling native-tls v0.2.3 Compiling tokio-tcp v0.1.3 Compiling tokio-signal v0.2.7 Compiling tokio-udp v0.1.5 Compiling tokio-uds v0.2.5 Compiling backtrace v0.3.40 Compiling tokio-fs v0.1.6 Compiling tempfile v3.1.0 Compiling tokio-process v0.2.4 Compiling error-chain v0.11.0 Compiling tokio v0.1.22 Compiling syslog v4.0.1 Compiling tokio-core v0.1.17 Compiling hyper v0.12.35 Compiling tokio-proto v0.1.1 Compiling tokio-signal v0.1.5 Compiling hyper-tls v0.3.2 Compiling hyper v0.11.27 Compiling hyper-proxy v0.4.1 Compiling serde_derive v1.0.103 Compiling failure_derive v0.1.6 Compiling structopt-derive v0.3.2 (https://github.com/TeXitoi/structopt/?rev=0c888e962d842f2c90c6c290d3a2a40947b37005#0c888e96) Compiling failure v0.1.6 Compiling dotenv v0.13.0 Compiling structopt v0.3.2 (https://github.com/TeXitoi/structopt/?rev=0c888e962d842f2c90c6c290d3a2a40947b37005#0c888e96) Compiling serde v1.0.103 Compiling chrono v0.4.10 Compiling serde_json v1.0.44 Compiling multimap v0.4.0 Compiling serde_urlencoded v0.5.5 Compiling serde_ini v0.2.0 Compiling libmdns v0.2.4 Compiling simplelog v0.7.4 Compiling cookie_store v0.7.0 Compiling reqwest v0.9.17 Compiling vergen v3.0.4 Compiling rspotify v0.7.0 Compiling librespot-core v0.1.0 (https://github.com/librespot-org/librespot.git#295bda7e) Compiling librespot-metadata v0.1.0 (https://github.com/librespot-org/librespot.git#295bda7e) Compiling librespot-audio v0.1.0 (https://github.com/librespot-org/librespot.git#295bda7e) Compiling librespot-playback v0.1.0 (https://github.com/librespot-org/librespot.git#295bda7e) Compiling librespot-connect v0.1.0 (https://github.com/librespot-org/librespot.git#295bda7e) Compiling librespot v0.1.0 (https://github.com/librespot-org/librespot.git#295bda7e) Compiling spotifyd v0.2.20 (/home/daniel/.local/software/spotifyd/spotifyd) Finished release [optimized] target(s) in 3m 37s ```

Compilation flags

Versions (please complete the following information):

mainrs commented 4 years ago

I can't really reproduce this. I downloaded a fresh copy of this repo and ran the following:

cargo build --release --features "pulseaudio_backend"
./target/release/spotifyd --help

The output:

spotifyd 0.2.20
Simon Persson <simon@flaskpost.org>, Sven Lechner <sven.lechner@rwth-aachen.de>
A Spotify daemon

USAGE:
    spotifyd [FLAGS] [OPTIONS]

FLAGS:
    -h, --help                    Prints help information
        --no-audio-cache          Disable the use of audio cache
        --no-daemon               If set, starts spotifyd without detaching
    -V, --version                 Prints version information
        --verbose                 Prints more verbose output
        --volume-normalisation    Enable to normalize the volume during playback

OPTIONS:
    -b, --backend <string>
            The audio backend to use [possible values: alsa, pulseaudio]

    -B, --bitrate <number>
            The bitrate of the streamed audio data [possible values: 96, 160, 320]

    -c, --cache-path <string>                      The cache path used to store credentials and music file artifacts
        --config-path <string>                     The path to the config file to use
        --control <string>                         The control device
        --device <string>                          The audio device
    -d, --device-name <string>                     The device name displayed in Spotify
        --mixer <string>                           The mixer to use
        --normalisation-pregain <number>
            A custom pregain applied before sending the audio to the output device

        --on-song-change-hook <string>
            A script that gets evaluated in the user's shell when the song changes [aliases: onevent]

    -p, --password <string>                        The Spotify account password
    -P, --password-cmd <string>
            A command that can be used to retrieve the Spotify account password [aliases: password_cmd]

        --pid <pid>                                Path to PID file.
    -p, --proxy <string>                           The proxy used to connect to spotify's servers
    -u, --username <string>                        The Spotify account user name
    -v, --volume-controller <volume-controller>
            The volume controller to use [aliases: volume-control]  [possible values: softvol,
            alsa, alsa_linear]
        --zeroconf-port <number>                   The port used for the Spotify Connect discovery

As you can see, pulseaudio is listed under backends.

dzfranklin commented 4 years ago

Am I supposed to build on the default branch?

mainrs commented 4 years ago

Yes, master is the default branch. Tags should work, however, as well. Which branch did you use?

dzfranklin commented 4 years ago

I just git-clone'd so I had the latest commit on master.

I'm very inexperienced in Rust, and Linux generally, so I think it's almost certain this is user error. I would greatly appreciate if you have the time any suggestions about what I might be doing wrong.


From: Sven Lechner notifications@github.com Sent: Saturday, December 7, 2019 2:26:38 PM To: Spotifyd/spotifyd spotifyd@noreply.github.com Cc: Daniel Franklin daniel@danielzfranklin.org; Author author@noreply.github.com Subject: Re: [Spotifyd/spotifyd] Can't build pulseaudio backend (#444)

Yes, master is the default branch. Tags should work, however, as well. Which branch did you use?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/Spotifyd/spotifyd/issues/444?email_source=notifications&email_token=ACPBX5XEPHGF7PECST3J5ZTQXP2G5A5CNFSM4JWJPK3KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEGGNWMQ#issuecomment-562879282, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ACPBX5UU5YDGM3PF7SJQWQLQXP2G5ANCNFSM4JWJPK3A.

mainrs commented 4 years ago

After cloning the repo, cd into it. Run the following commands, one after the other:

cargo build --release --features "pulseaudio_backend"
./target/release/spotifyd --help

This should work. There are pre-compiled binaries available though. You can get them over at the releases section of this repo! You probably want the linux-full binary.

dzfranklin commented 4 years ago

That's exactly what I tried. Oh well. Thanks for trying to help.


From: Sven Lechner notifications@github.com Sent: Saturday, December 7, 2019 3:06:20 PM To: Spotifyd/spotifyd spotifyd@noreply.github.com Cc: Daniel Franklin daniel@danielzfranklin.org; Author author@noreply.github.com Subject: Re: [Spotifyd/spotifyd] Can't build pulseaudio backend (#444)

After cloning the repo, cd into it. Run the following commands, one after the other:

cargo build --release --features "pulseaudio_backend" ./target/release/spotifyd --help

This should work. There are pre-compiled binaries available though. You can get them over at the releaseshttps://github.com/Spotifyd/spotifyd/releases section of this repo!

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/Spotifyd/spotifyd/issues/444?email_source=notifications&email_token=ACPBX5ULWSINT57CYLK32ALQXP63ZA5CNFSM4JWJPK3KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEGGOLUI#issuecomment-562882001, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ACPBX5VFVUEI2OK2CVXZXA3QXP63ZANCNFSM4JWJPK3A.

abenson commented 4 years ago

I just downloaded linux-full and it doesn't have pulseaudio either.

-b, --backend <string>                         The audio backend to use [possible values: alsa]
mainrs commented 4 years ago

Ye, the v0.2.20 release had messed up binaries and source archives. Should be fixed now.

johnfromoptus commented 4 years ago

For anyone else that is still unable to fix this, I was able to resolve it by changing the default backend in Cargo.toml from alsa_backend to pulseaudio_backend and then installing as usual.