DietPi-Software | Add LMS + SqueezeLite to ARM64 (c2/pine)

Created on 25 May 2016  路  16Comments  路  Source: MichaIng/DietPi

Currently RPi is the only device that have these installation options available.

Request: http://dietpi.com/phpbb/viewtopic.php?f=12&t=440&p=1917#p1915

My notes: http://dietpi.com/phpbb/viewtopic.php?f=12&t=440&p=1917#p1917

Enhancement Priority High Software Request

Most helpful comment

I am also very interested in this and I have made a comment in that thread. I have made a small donation.

I recall reading something about not being able to use Perl 5.22 on the Odroid C2.

All 16 comments

Worth a shot:

wget https://github.com/Logitech/slimserver/archive/public/7.9.zip -O package.zip
unzip package.zip
rm package.zip

cp -R slimserver-public-7.9/CPAN/* /usr/share/perl/5.20.2/CPAN/

Cant seem to find the perl modules in repo either: https://packages.debian.org/stable/perl/

I am also very interested in this and I have made a comment in that thread. I have made a small donation.

I recall reading something about not being able to use Perl 5.22 on the Odroid C2.

The issue:

LMS will not run due to "missing or failed" loading of Perl modules.

root@DietPi:~# squeezeboxserver
The following modules failed to load: DBI EV XML::Parser::Expat HTML::Parser JSON::XS Digest::SHA1 YAML::XS Sub::Name

Notes: Attempt 1:

apt-get install missing perl modules, using this package list: https://packages.debian.org/jessie/perl/

:u6307: XML::Parser::Expat

apt-get install -y libxml-parser-perl

:u55b6: HTML::Parser | Already installed, no effect

apt-get install -y libhtml-parser-perl

:u55b6: DBI | installs, no effect

apt-get install -y libdbi-perl

:u6307: JSON::XS

apt-get install -y libjson-xs-perl 

:u55b6: Sub::Name | Installs, no effect

apt-get install -y libsub-name-perl

:u55b6: YAML::XS | Installs, no effect

apt-get install -y libyaml-libyaml-perl

:u55b6: Digest::SHA1 | Installs, no effect

apt-get install -y libdigest-sha-perl

:u55b6: EV | Installs, no effect

apt-get install -y libev-perl

Leaves us with:

root@DietPi:~# squeezeboxserver
The following modules failed to load: DBI EV HTML::Parser Digest::SHA1 YAML::XS Sub::Name

Did a bit of "hack and slash":

#Install perl modules that work from repo
apt-get install -y libxml-parser-perl libjson-xs-perl

# - DBI
apt-get install -y libdbi-perl
cp /usr/lib/aarch64-linux-gnu/perl5/5.20/DBI.pm /usr/share/perl5/Slim/Schema/DBI.pm
cp /usr/lib/aarch64-linux-gnu/perl5/5.20/DBI.pm /usr/share/squeezeboxserver/CPAN/DBI.pm

# - HTML::Parser
apt-get install -y libhtml-parser-perl
cp -R /usr/lib/aarch64-linux-gnu/perl5/5.20/HTML/* /usr/share/squeezeboxserver/CPAN/HTML/

# - EV
apt-get install -y libev-perl
cp /usr/lib/aarch64-linux-gnu/perl5/5.20/EV.pm /usr/share/squeezeboxserver/CPAN/EV.pm

# - Sub::Name
apt-get install -y libsub-name-perl
cp /usr/lib/aarch64-linux-gnu/perl5/5.20/Sub/Name.pm /usr/share/squeezeboxserver/CPAN/Sub/Name.pm

# -  JSON::XS
apt-get install -y libjson-xs-perl
cp /usr/lib/aarch64-linux-gnu/perl5/5.20/JSON/XS.pm /usr/share/squeezeboxserver/CPAN/YAML/XS.pm

# - YAML::XS
apt-get install -y libyaml-libyaml-perl
cp -R /usr/lib/aarch64-linux-gnu/perl5/5.20/YAML/* /usr/share/squeezeboxserver/CPAN/YAML/

# - Digest::SHA1
apt-get install -y libdigest-sha-perl
cp /usr/lib/aarch64-linux-gnu/perl5/5.20/Digest/SHA.pm /usr/share/squeezeboxserver/CPAN/Digest/SHA1.pm
cp -R /usr/lib/aarch64-linux-gnu/perl5/5.20/Digest/* /usr/share/squeezeboxserver/CPAN/Digest/

find /usr/share -type d -name Digest


# root@DietPi:~# squeezeboxserver
# The following CPAN modules were found but cannot work with Logitech Media Server:
  # Audio::Scan (loaded <not found>, need 0.93)
  # Image::Scale (loaded  but missing object file, need 0.08)

# To fix this problem you have several options:
# 1. Install the latest version of the module(s) using CPAN: sudo cpan Some::Module
# 2. Update the module's package using apt-get, yum, etc.
# 3. Run the .tar.gz version of Logitech Media Server which includes all required CPAN modules.

# - Audio::Scan
apt-get install -y libaudio-scan-perl

# - Image::Scale
#libimage-size-perl

apt-get install -y cpanminus
cpan Image::Scale

# Image::Scale requires at least one of libjpeg or libpng, please install one or both and try again.
# -> N/A
# -> FAIL Configure failed for Image-Scale-0.12.
apt-get install libjpeg-dev libpng-dev
cpan Image::Scale
cp /root/.cpanm/work/1471704886.9410/Image-Scale-0.12/lib/Image/Scale.pm /usr/share/squeezeboxserver/CPAN/Image/Scale.pm

apt-get install -y build-essential
cpanm Image::[email protected]

cp /usr/local/lib/aarch64-linux-gnu/perl/5.20.2/Image/Scale.pm /usr/share/squeezeboxserver/CPAN/Image/Scale.pm

# root@DietPi:~# squeezeboxserver
# dirsFor: Didn't find a match request: [scprefs]
# Can't locate loadable object for module DBD::SQLite in @INC (@INC contains: /usr/share/squeezeboxserver/CPAN/arch/5.20/aarch64-linux-thread-multi /usr/share/squeezeboxserver/CPAN/arch/5.20/aarch64-linux-thread-multi/auto /usr/share/squeezeboxserver/CPAN/arch/5.20.2/aarch64-linux-gnu-thread-multi /usr/share/squeezeboxserver/CPAN/arch/5.20.2/aarch64-linux-gnu-thread-multi/auto /usr/share/squeezeboxserver/CPAN/arch/5.20/aarch64-linux-gnu-thread-multi /usr/share/squeezeboxserver/CPAN/arch/5.20/aarch64-linux-gnu-thread-multi/auto /usr/share/squeezeboxserver/CPAN/arch/aarch64-linux-gnu-thread-multi /usr/share/squeezeboxserver/CPAN/arch/5.20 /usr/share/squeezeboxserver/lib /usr/share/squeezeboxserver/CPAN /usr/share/squeezeboxserver /usr/share/squeezeboxserver/CPAN /usr/share/squeezeboxserver /usr/sbin /etc/perl /usr/local/lib/aarch64-linux-gnu/perl/5.20.2 /usr/local/share/perl/5.20.2 /usr/lib/aarch64-linux-gnu/perl5/5.20 /usr/share/perl5 /usr/lib/aarch64-linux-gnu/perl/5.20 /usr/share/perl/5.20 /usr/local/lib/site_perl .) at /usr/share/perl5/Slim/Utils/DbCache.pm line 10.
# Compilation failed in require at /usr/share/perl5/Slim/Utils/DbCache.pm line 10.
# BEGIN failed--compilation aborted at /usr/share/perl5/Slim/Utils/DbCache.pm line 10.
# Compilation failed in require at /usr/share/perl5/Slim/Utils/Cache.pm line 49.
# BEGIN failed--compilation aborted at /usr/share/perl5/Slim/Utils/Cache.pm line 49.
# Compilation failed in require at /usr/share/perl5/Slim/Music/Info.pm line 33.
# BEGIN failed--compilation aborted at /usr/share/perl5/Slim/Music/Info.pm line 33.
# Compilation failed in require at /usr/share/perl5/Slim/Utils/Misc.pm line 49.
# Compilation failed in require at /usr/sbin/squeezeboxserver line 225.
# BEGIN failed--compilation aborted at /usr/sbin/squeezeboxserver line 225.

cpanm DBD::SQLite

cp -R /usr/local/lib/aarch64-linux-gnu/perl/5.20.2/DBD /usr/share/squeezeboxserver/CPAN/

# root@DietPi:~# squeezeboxserver
# NOTE: Class::XSAccessor 1.05+ not found, install it for better performance
# [16-08-20 11:11:02.2606] main::init (383) Starting Logitech Media Server (v7.9.0, 1451894331, Mon Jan  4 08:08:41 UTC 2016) perl 5.020002
# [16-08-20 11:11:02.2717] main::changeEffectiveUserAndGroup (1014) Warning: Logitech Media Server must not be run as root!  Trying user squeezeboxserver instead.
# [16-08-20 11:11:02.6105] Slim::Music::TitleFormatter::init (42) Warning: Base class package "Slim::Schema::DBI" is empty.
    # (Perhaps you need to 'use' the module which defines that package first,
    # or make that module available in @INC (@INC contains: /var/lib/squeezeboxserver/cache/InstalledPlugins /usr/share/squeezeboxserver/CPAN/arch/5.20/aarch64-linux-thread-multi /usr/share/squeezeboxserver/CPAN/arch/5.20/aarch64-linux-thread-multi/auto /usr/share/squeezeboxserver/CPAN/arch/5.20.2/aarch64-linux-gnu-thread-multi /usr/share/squeezeboxserver/CPAN/arch/5.20.2/aarch64-linux-gnu-thread-multi/auto /usr/share/squeezeboxserver/CPAN/arch/5.20/aarch64-linux-gnu-thread-multi /usr/share/squeezeboxserver/CPAN/arch/5.20/aarch64-linux-gnu-thread-multi/auto /usr/share/squeezeboxserver/CPAN/arch/aarch64-linux-gnu-thread-multi /usr/share/squeezeboxserver/CPAN/arch/5.20 /usr/share/squeezeboxserver/lib /usr/share/squeezeboxserver/CPAN /usr/share/squeezeboxserver /usr/share/squeezeboxserver/CPAN /usr/share/squeezeboxserver /usr/sbin /etc/perl /usr/local/lib/aarch64-linux-gnu/perl/5.20.2 /usr/local/share/perl/5.20.2 /usr/lib/aarch64-linux-gnu/perl5/5.20 /usr/share/perl5 /usr/lib/aarch64-linux-gnu/perl/5.20 /usr/share/perl/5.20 /usr/local/lib/site_perl .).
 # at /usr/share/perl5/Slim/Schema/Track.pm line 6.
# BEGIN failed--compilation aborted at /usr/share/perl5/Slim/Schema/Track.pm line 6.
# Compilation failed in require at /usr/share/perl5/Slim/Music/TitleFormatter.pm line 42.
# [16-08-20 11:11:02.6154] Slim::Utils::Prefs::Namespace::savenow (338) Error: can't save /var/lib/squeezeboxserver/prefs/plugin/state.prefs: Permission denied at /usr/share/perl5/Slim/Utils/Prefs/Namespace.pm line 327.


cpanm Slim::Schema::DBI

# root@DietPi:~# cpanm Slim::Schema::DBI
# ! Finding Slim::Schema::DBI on cpanmetadb failed.
# ! Finding Slim::Schema::DBI () on mirror http://www.cpan.org failed.
# ! Couldn't find module or a distribution Slim::Schema::DBI

Notes:

Following instructions from binary:

If you're running some unsupported Linux/Unix platform, please use the buildme.sh
script located here:

https://github.com/Logitech/slimserver-vendor/tree/public/7.9/CPAN

Same issues as per: https://github.com/Logitech/slimserver-vendor/issues/9. Even with the updated config.x files. Fails to build.

wget "http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD" -O /root/slimserver-vendor/CPAN/icu/source/config.guess
wget "http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD" -O /root/slimserver-vendor/CPAN/icu/source/config.sub

Notes:

Build CPAN modules:

apt-get install -y cpanminus build-essential yasm nasm
cpanm DBI EV XML::Parser::Expat HTML::Parser JSON::XS Digest::SHA1 YAML::XS Sub::Name

24 distributions installed

root@DietPi:~# squeezeboxserver
The following modules failed to load: DBI EV XML::Parser::Expat HTML::Parser JSON::XS Sub::Name

nts, check paths

Finally getting somewhere:
image

Current issues:

  • Music scan does not work, scan does not return any results.
[16-08-22 13:02:04.3764] Slim::Utils::Misc::msg (1233) Warning: [13:02:04.3758] Can't locate auto/IO/Interface/autosplit.ix:   ./auto/IO/Interface/autosplit.ix: Permission denied at /usr/share/perl/5.20/AutoLoader.pm line 181.
 at /usr/share/squeezeboxserver/CPAN/IO/Interface.pm line 12.
JSON::XS object version 3.02 does not match bootstrap parameter 2.34 at /usr/lib/aarch64-linux-gnu/perl/5.20/DynaLoader.pm line 210.
Compilation failed in require at /usr/share/squeezeboxserver/CPAN/JSON/XS/VersionOneAndTwo.pm line 5.
BEGIN failed--compilation aborted at /usr/share/squeezeboxserver/CPAN/JSON/XS/VersionOneAndTwo.pm line 5.
Compilation failed in require at /usr/share/perl5/Slim/Utils/Prefs/Base.pm line 23.
BEGIN failed--compilation aborted at /usr/share/perl5/Slim/Utils/Prefs/Base.pm line 23.
Compilation failed in require at /usr/share/perl/5.20/base.pm line 100.
        ...propagated at /usr/share/perl/5.20/base.pm line 110.
BEGIN failed--compilation aborted at /usr/share/perl5/Slim/Utils/Prefs/Namespace.pm line 23.
Compilation failed in require at /usr/share/perl5/Slim/Utils/Prefs.pm line 79.
BEGIN failed--compilation aborted at /usr/share/perl5/Slim/Utils/Prefs.pm line 79.
Compilation failed in require at /usr/sbin/squeezeboxserver-scanner line 77.
BEGIN failed--compilation aborted at /usr/sbin/squeezeboxserver-scanner line 77.
JSON::XS object version 3.02 does not match bootstrap parameter 2.34 at /usr/lib/aarch64-linux-gnu/perl/5.20/DynaLoader.pm line 210.
Compilation failed in require at /usr/share/squeezeboxserver/CPAN/JSON/XS/VersionOneAndTwo.pm line 5.
BEGIN failed--compilation aborted at /usr/share/squeezeboxserver/CPAN/JSON/XS/VersionOneAndTwo.pm line 5.
Compilation failed in require at /usr/share/perl5/Slim/Utils/Prefs/Base.pm line 23.
BEGIN failed--compilation aborted at /usr/share/perl5/Slim/Utils/Prefs/Base.pm line 23.
Compilation failed in require at /usr/share/perl/5.20/base.pm line 100.
        ...propagated at /usr/share/perl/5.20/base.pm line 110.
BEGIN failed--compilation aborted at /usr/share/perl5/Slim/Utils/Prefs/Namespace.pm line 23.
Compilation failed in require at /usr/share/perl5/Slim/Utils/Prefs.pm line 79.
BEGIN failed--compilation aborted at /usr/share/perl5/Slim/Utils/Prefs.pm line 79.
Compilation failed in require at /usr/sbin/squeezeboxserver-scanner line 77.
BEGIN failed--compilation aborted at /usr/sbin/squeezeboxserver-scanner line 77.

@Gabba35
Looking good, should make v130 release:
image

Thanks a lot Fourdee! Looks like you've cracked it! Seems like it wasn't too straight forward. What were the main issues (in fairly lay language!)?

@Gabba35

C2 LMS+Squeezelite working perfectly. Will be available in DietPi v130.

What were the main issues

LMS uses Perl CPAN modules. As far as I can tell, LMS do not bundle the ARM64 binaries for these in their 7.9 deb package. Notice the ARM-hf (ARM32), i386 (32bit PC), x86_64 (64bit PC) but no ARM64.
image

So basically I needed to get those ARM64 binaries made.

LMS have a build script that should do this automatically (https://github.com/Logitech/slimserver-vendor/blob/public/7.9/CPAN/buildme.sh), however, it fails for ARM64: https://github.com/Fourdee/DietPi/issues/354#issuecomment-241210059

So, I ran squeezeboxserver and followed the errors to manually build each Perl CPAN module. Took a few days on and off (LMS likes specific versions of the CPAN modules). I've zipped up the binaries and hosted on DietPi. So when users install LMS through DietPi in v130, no cpan complies are needed.

Note to self:
Test Pine A64

Edit:
Working fine

Completed. LMS+Squeezelite Available in v130 for ARM64 devices.

Awesome, thanks for the explanation. Putting it all together would have been way beyond what I am capable of. Thanks so much for getting it working!

@Gabba35
We still have a bit to do on v130 before its released: https://github.com/Fourdee/DietPi/milestone/31

In the mean time, you can do a install of LMS by using the testing branch: https://github.com/Fourdee/DietPi/blob/master/TESTING-BRANCH.md#steps-to-use-the-dietpi-testing-branch
I'd recommend using a different SDcard if you use the testing branch.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

Invictaz picture Invictaz  路  3Comments

Fourdee picture Fourdee  路  3Comments

oshank picture oshank  路  3Comments

Kapot picture Kapot  路  3Comments

Fourdee picture Fourdee  路  3Comments