Compiling Clementine 1.1 in LMDE

Archived topics about LMDE 1 and LMDE 2
Locked
zerozero

Compiling Clementine 1.1 in LMDE

Post by zerozero »

Clementine 1.1 was released and the new features and bug fixes are impressive >> http://code.google.com/p/clementine-pla ... /Changelog
one of the best players around just got better :D
but with the deep-freeze and debian having 1.0.1 in testing compiling is probably the easier option
following the wiki http://code.google.com/p/clementine-pla ... FromSource the steps for ubuntu are applicable also for lmde

1- get the code http://code.google.com/p/clementine-pla ... z&can=2&q=

2- these additional dep should do it:

Code: Select all

sudo apt-get install liblastfm-dev libtag1-dev gettext libboost-dev libboost-serialization-dev libqt4-dev qt4-dev-tools libqt4-opengl-dev cmake libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libglew1.5-dev libqjson-dev libgpod-dev libimobiledevice-dev libplist-dev libusbmuxd-dev libmtp-dev libindicate-qt-dev libcdio-dev protobuf-compiler libprotobuf-dev libqca2-dev libqca2-plugin-ossl libfftw3-dev libavbin-dev libavbin0 libavformat-dev

Code: Select all

zerozero@deb-kde ~/Documents $ sudo apt-get install liblastfm-dev libtag1-dev gettext libboost-dev \
>     libboost-serialization-dev libqt4-dev qt4-dev-tools libqt4-opengl-dev \
>     cmake libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev \
>     libglew1.5-dev libqjson-dev libgpod-dev libimobiledevice-dev libplist-dev \
>     libusbmuxd-dev libmtp-dev libindicate-qt-dev libcdio-dev \
>     protobuf-compiler libprotobuf-dev libqca2-dev libqca2-plugin-ossl \
>     libfftw3-dev
[sudo] password for zerozero: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'libglew-dev' instead of 'libglew1.5-dev'
cmake is already the newest version.
gettext is already the newest version.
libgpod-dev is already the newest version.
libimobiledevice-dev is already the newest version.
libimobiledevice-dev set to manually installed.
liblastfm-dev is already the newest version.
libmtp-dev is already the newest version.
libplist-dev is already the newest version.
libplist-dev set to manually installed.
libqca2-plugin-ossl is already the newest version.
libqjson-dev is already the newest version.
libqt4-dev is already the newest version.
libqt4-opengl-dev is already the newest version.
libqt4-opengl-dev set to manually installed.
qt4-dev-tools is already the newest version.
libusbmuxd-dev is already the newest version.
libusbmuxd-dev set to manually installed.
libtag1-dev is already the newest version.
The following package was automatically installed and is no longer required:
  libquicktime2
Use 'apt-get autoremove' to remove it.
The following extra packages will be installed:
  gir1.2-gst-plugins-base-0.10 gir1.2-gstreamer-0.10 libboost-serialization1.49-dev
  libboost-serialization1.49.0 libboost1.49-dev libfftw3-bin libprotobuf-lite7 libprotobuf7
  libprotoc7
Suggested packages:
  libboost-doc libboost1.49-doc libboost-chrono1.49-dev libboost-date-time1.49-dev
  libboost-filesystem1.49-dev libboost-graph-parallel1.49-dev libboost-graph1.49-dev
  libboost-iostreams1.49-dev libboost-locale1.49-dev libboost-math1.49-dev
  libboost-mpi1.49-dev libboost-program-options1.49-dev libboost-python1.49-dev
  libboost-random1.49-dev libboost-regex1.49-dev libboost-signals1.49-dev
  libboost-system1.49-dev libboost-test1.49-dev libboost-thread1.49-dev
  libboost-timer1.49-dev libboost-wave1.49-dev xsltproc doxygen default-jdk fop
  gstreamer0.10-doc libqca2-doc
The following NEW packages will be installed:
  gir1.2-gst-plugins-base-0.10 gir1.2-gstreamer-0.10 libboost-dev
  libboost-serialization-dev libboost-serialization1.49-dev libboost-serialization1.49.0
  libboost1.49-dev libcdio-dev libfftw3-bin libfftw3-dev libglew-dev
  libgstreamer-plugins-base0.10-dev libgstreamer0.10-dev libindicate-qt-dev libprotobuf-dev
  libprotobuf-lite7 libprotobuf7 libprotoc7 libqca2-dev protobuf-compiler
0 upgraded, 20 newly installed, 0 to remove and 0 not upgraded.
i had already some of them

3- unpack the tar.gz and cd to bin zerozero@deb-kde ~/Downloads/clementine-1.1.0/bin $

Code: Select all

cmake ../
(this part takes soooome time and puts some load on the cpu)
my build has the following components

Code: Select all

The following components will be built:
   D-Bus support
   Devices: Audio CD support
   Devices: DeviceKit backend
   Devices: GIO device backend
   Devices: MTP support
   Devices: iPod Touch, iPhone, iPad support
   Devices: iPod classic support
   Gnome sound menu integration
   Last.fm support
   Moodbar support
   Spotify support: blob downloader
   Spotify support: core code
   Visualisations
   Wiimote support

The following components WILL NOT be built:
   Crash reporting (disabled in CMake config)
   Google Drive support (missing Google sparsehash)
   Sparkle integration (missing Mac OS X, Sparkle)
   Spotify support: non-GPL binary helper (missing libspotify)

Code: Select all

make

Code: Select all

sudo checkinstall

Code: Select all

======================== Installation successful ==========================

Some of the files created by the installation are inside the home directory: /home

You probably don't want them to be included in the package.
Do you want me to list them?  [n]: n
Should I exclude them from the package? (Saying yes is a good idea)  [n]: y

Copying files to the temporary directory...tar: ./usr/local/share/clementine/projectm-presets/Rovastar - Kalideostars (Round Round Mix).milk: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
OK

Stripping ELF binaries and libraries...OK

Compressing man pages...OK

Building file list...OK

Building Debian package...OK

Installing Debian package...OK

Erasing temporary files...OK

Writing backup package...OK
OK

Deleting temp dir...OK


**********************************************************************

 Done. The new package has been installed and saved to

 /home/zerozero/Downloads/clementine-1.1.0/bin/bin_20121027-1_amd64.deb

 You can remove it from your system anytime using: 

      dpkg -r bin

**********************************************************************

it should be now in the menu
Image
full log
Last edited by LockBot on Wed Dec 28, 2022 7:16 am, edited 1 time in total.
Reason: Topic automatically closed 6 months after creation. New replies are no longer allowed.
rocuronium

Re: Compiling Clementine 1.1 in LMDE

Post by rocuronium »

Great news. Thanks for the info!
mockturtl

Re: Compiling Clementine 1.1 in LMDE

Post by mockturtl »

Neat idea. I'm trying to build the 1.1.0~rc1 debian source...

Code: Select all

$ apt-get source clementine/experimental
$ sudo apt-get build-dep clementine/experimental
...but Cmake keels over on me. I'm not sure what's missing.
zerozero

Re: Compiling Clementine 1.1 in LMDE

Post by zerozero »

MT,
i think nothing is missing in your build as nothing is missing in the attempt i just did with similar results

Code: Select all

zerozero@deb-kde ~/tests/clementine-1.1.0~rc1+dfsg/bin $ cmake ../
-- Found Qt4: /usr/bin/qmake (found suitable version "4.8.2", required is "4.5.0") 
-- Found Qt4: /usr/bin/qmake (found version "4.8.2") 
-- Boost version: 1.49.0
-- checking for module 'libspotify>=12.1.45'
--   package 'libspotify>=12.1.45' not found
-- checking for module 'libchromaprint'
--   package 'libchromaprint' not found
-- Found Qt4: /usr/bin/qmake (found version "4.8.2") 
CMake Error at CMakeLists.txt:278 (add_subdirectory):
  add_subdirectory given source "3rdparty/libprojectm" which is not an
  existing directory.


-- Building static qsqlite plugin
CMake Error at CMakeLists.txt:293 (add_subdirectory):
  add_subdirectory given source "3rdparty/qsqlite" which is not an existing
  directory.


CMake Error at CMakeLists.txt:334 (add_subdirectory):
  add_subdirectory given source "3rdparty/qxt" which is not an existing
  directory.


CMake Error at CMakeLists.txt:342 (add_subdirectory):
  add_subdirectory given source "3rdparty/libechonest" which is not an
  existing directory.


CMake Error at CMakeLists.txt:371 (add_subdirectory):
  add_subdirectory given source "3rdparty/chromaprint" which is not an
  existing directory.



The following components will be built:
   D-Bus support
   Devices: Audio CD support
   Devices: DeviceKit backend
   Devices: GIO device backend
   Devices: MTP support
   Devices: iPod Touch, iPhone, iPad support
   Devices: iPod classic support
   Gnome sound menu integration
   Last.fm support
   Moodbar support
   Spotify support: blob downloader
   Spotify support: core code
   Visualisations
   Wiimote support

The following components WILL NOT be built:
   Crash reporting (disabled in CMake config)
   Google Drive support (missing Google sparsehash)
   Sparkle integration (missing Mac OS X, Sparkle)
   Spotify support: non-GPL binary helper (missing libspotify)

-- Configuring incomplete, errors occurred!

Code: Select all

zerozero@deb-kde ~/Downloads/clementine-1.1.0/3rdparty $ ls
chromaprint      keychain     qocoa                qtwin          universalchardet
fancytabwidget   libechonest  qsqlite              qxt
gmock            libmygpo-qt  qtiocompressor       sha2
google-breakpad  libprojectm  qtsingleapplication  SPMediaKeyTap

Code: Select all

zerozero@deb-kde ~/tests/clementine-1.1.0~rc1+dfsg/3rdparty $ ls
gmock  libmygpo-qt  qocoa  qtiocompressor  qtsingleapplication  sha2  universalchardet
the only option i see is editing CMakeLists.txt in the lines it errors and see if you can get it go.
Monsta
Level 10
Level 10
Posts: 3071
Joined: Fri Aug 19, 2011 3:46 am

Re: Compiling Clementine 1.1 in LMDE

Post by Monsta »

No need to edit any makefiles. This time it's a "debianized" package, so it's better to build it as this howto recommends.

Code: Select all

monsta@mintytest ~/clementine $ dget -u http://ftp.de.debian.org/debian/pool/main/c/clementine/clementine_1.1.0~rc1+dfsg-1.dsc
monsta@mintytest ~/clementine $ cd clementine-1.1.0~rc1+dfsg

Code: Select all

monsta@mintytest ~/clementine/clementine-1.1.0~rc1+dfsg $ dpkg-checkbuilddeps
dpkg-checkbuilddeps: Unmet build dependencies: docbook-to-man libboost-dev libboost-serialization-dev libcdio-dev libchromaprint-dev libechonest-dev libglew-dev libgpod-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libimobiledevice-dev libindicate-qt-dev (>= 0.2.5.91) liblastfm-dev libmtp-dev libplist-dev libprojectm-dev (>= 2.0.1+dfsg-6) libprotobuf-dev libqjson-dev libqxt-dev libsqlite3-dev libtag1-dev (>= 1.6) libusbmuxd-dev protobuf-compiler qt4-dev-tools

Code: Select all

monsta@mintytest ~/clementine/clementine-1.1.0~rc1+dfsg $ sudo apt-get install docbook-to-man libboost-dev libboost-serialization-dev libcdio-dev libchromaprint-dev libechonest-dev libglew-dev libgpod-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libimobiledevice-dev libindicate-qt-dev liblastfm-dev libmtp-dev libplist-dev libprojectm-dev libprotobuf-dev libqjson-dev libqxt-dev libsqlite3-dev libtag1-dev libusbmuxd-dev protobuf-compiler qt4-dev-tools
(I haven't yet found a way to tell dpkg-checkbuilddeps to either omit package versions or just perform apt-get install automatically.)

Code: Select all

monsta@mintytest ~/clementine/clementine-1.1.0~rc1+dfsg $ dpkg-buildpackage -us -uc
After a long wait the package is built (it'll be in the parent directory). I was too lazy to change the package version as that howto says, but you can do it if you want. :)

Now about the difference between this build and the previous one. It's in cmake arguments which are set in the debian/rules file:

Code: Select all

override_dh_auto_configure:
	dh_auto_configure -- \
	-DBUNDLE_PROJECTM_PRESETS=OFF \
	-DSTATIC_SQLITE=OFF \
	-DUSE_SYSTEM_PROJECTM=ON \
	-DUSE_SYSTEM_QXT=ON \
	-DCMAKE_CXX_FLAGS="-DQT_NO_DEBUG_OUTPUT -DQT_NO_WARNING_OUTPUT" \
	-DQXTCORE_INCLUDE_DIRS=/usr/include/qxt/QxtCore/ \
	-DQXTGUI_INCLUDE_DIRS=/usr/include/qxt/QxtGui/
mockturtl

Re: Compiling Clementine 1.1 in LMDE

Post by mockturtl »

Hm. According to the patches directory, fun is a violation of Debian policy.

Code: Select all

Description: Remove all references to non-dfsg files
 Clementine use non-dfsg files 'hypnotoad.gif' and 'lumberjacksong.txt' as 
 "Easter eggs" in clementine interface.
Monsta wrote:(I haven't yet found a way to tell dpkg-checkbuilddeps to either omit package versions or just perform apt-get install automatically.)
I think that's what apt-get build-dep is for. apt-cache showsrc clementine will output the "Build-Depends:" from the debian/control file. (more info)

But I confess to having taken the poor man's approach and piped the checkbuilddeps output through sed, myself.
Now about the difference between this build and the previous one. It's in cmake arguments which are set in the debian/rules file:

Code: Select all

-DSTATIC_SQLITE=OFF \
-DUSE_SYSTEM_PROJECTM=ON \
-DUSE_SYSTEM_QXT=ON \
Ah! That's it.

Now debuild (dpkg-buildpackage wrapper) plows right through.
Monsta
Level 10
Level 10
Posts: 3071
Joined: Fri Aug 19, 2011 3:46 am

Re: Compiling Clementine 1.1 in LMDE

Post by Monsta »

mockturtl wrote:
Monsta wrote:(I haven't yet found a way to tell dpkg-checkbuilddeps to either omit package versions or just perform apt-get install automatically.)
I think that's what apt-get build-dep is for. apt-cache showsrc clementine will output the "Build-Depends:" from the debian/control file. (more info)
That's very good article... and it's from Raphaël Hertzog himself, that's even better :) Thank you for this link.

But... is it possible to make apt-get retrieve the source if I enable only the source experimental repo and don't add the binary one?

Code: Select all

monsta@mintytest ~ $ inxi -r
Repos:     Active apt sources in file: /etc/apt/sources.list
           deb http://packages.linuxmint.com/ debian main upstream import
           deb http://lmde-mirror.gwendallebihan.net/latest testing main contrib non-free
           deb http://lmde-mirror.gwendallebihan.net/latest/security testing/updates main contrib non-free
           deb http://lmde-mirror.gwendallebihan.net/latest/multimedia testing main non-free
           deb-src http://ftp.debian.org/debian experimental main contrib non-free

Code: Select all

monsta@mintytest ~ $ apt-get source clementine
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Ignore unavailable version '1.0.1+dfsg-2' of package 'clementine'
E: Unable to find a source package for clementine

Code: Select all

monsta@mintytest ~ $ apt-get source clementine/experimental
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Ignore unavailable target release 'experimental' of package 'clementine'
E: Unable to find a source package for 
On the other hand, apt-cache works fine:

Code: Select all

monsta@mintytest ~ $ apt-cache showsrc clementine 
Package: clementine
Binary: clementine
Version: 1.1.0~rc1+dfsg-1
Maintainer: Thomas Pierson <contact@thomaspierson.fr>
Uploaders: Lisandro Damián Nicanor Pérez Meyer <perezmeyer@gmail.com>, Artur Rona <ari-tczew@tlen.pl>
Build-Depends: cmake (>= 2.6), debhelper (>= 9), docbook-to-man, libboost-dev, libboost-serialization-dev, libcdio-dev, libchromaprint-dev, libechonest-dev, libglew-dev, libgpod-dev, libgstreamer0.10-dev, libgstreamer-plugins-base0.10-dev, libimobiledevice-dev, libindicate-qt-dev (>= 0.2.5.91), liblastfm-dev, libmtp-dev, libplist-dev, libprojectm-dev (>= 2.0.1+dfsg-6), libprotobuf-dev, libqjson-dev, libqt4-dev, libqt4-opengl-dev, libqxt-dev, libsqlite3-dev, libtag1-dev (>= 1.6), libusbmuxd-dev, protobuf-compiler, qt4-dev-tools
Architecture: any
Standards-Version: 3.9.3
Format: 3.0 (quilt)
Files:
 39fc35865756edf0558a59af7e1b564c 2552 clementine_1.1.0~rc1+dfsg-1.dsc
 5bf94c5b36a89fa233de5087bd88ea81 5237622 clementine_1.1.0~rc1+dfsg.orig.tar.gz
 a4608aaa5219f7ba7554f3f60d579e3e 14770 clementine_1.1.0~rc1+dfsg-1.debian.tar.gz
Dm-Upload-Allowed: yes
Vcs-Browser: http://gitweb.thomaspierson.fr/?p=pkg-clementine.git;a=summary
Vcs-Git: git://thomaspierson.fr/pkg-clementine.git
Checksums-Sha1:
 c8cafd4a3f047fe43d87d27a624102ca4529db95 2552 clementine_1.1.0~rc1+dfsg-1.dsc
 9e1861c62c0a2e81b577c5eac01fe9b010d2016d 5237622 clementine_1.1.0~rc1+dfsg.orig.tar.gz
 0d49e27522902de83b07f781e9164e6fc2f4723f 14770 clementine_1.1.0~rc1+dfsg-1.debian.tar.gz
Checksums-Sha256:
 048df665f8d230ca8768094ef2aa89b9e493e97a598f98dd075d01e62186ad0a 2552 clementine_1.1.0~rc1+dfsg-1.dsc
 74b1dc89dc926be0844384434dc707b0e6a493b930c7d28378cea8bf513a9fb1 5237622 clementine_1.1.0~rc1+dfsg.orig.tar.gz
 4593f8889fa43000a5bc7a48688c84d016aa0097dd831df67553fcc016b63ed1 14770 clementine_1.1.0~rc1+dfsg-1.debian.tar.gz
Homepage: http://www.clementine-player.org/
Package-List: 
 clementine deb sound optional
Directory: pool/main/c/clementine
Priority: source
Section: sound
mockturtl

Re: Compiling Clementine 1.1 in LMDE

Post by mockturtl »

Monsta wrote:But... is it possible to make apt-get retrieve the source if I enable only the source experimental repo and don't add the binary one?
There's some sleight of hand in what "adding a repo" means. The package indices are stored separately (binary-amd64, source -- notice source is just another "architecture"), although the actual .deb, .orig/.dsc/.debian files are all together.

I think the answer is no, and it's just another quirk of the APT tools.
http://www.debian.org/doc/manuals/debia ... ommandline

apt-get source <package_name>..... download a source (from standard archive)
dget <URL for dsc file>..... download a source packages (from other archive)
(Hey, the manual already lists wheezy as stable and jessie as testing...)
Monsta
Level 10
Level 10
Posts: 3071
Joined: Fri Aug 19, 2011 3:46 am

Re: Compiling Clementine 1.1 in LMDE

Post by Monsta »

mockturtl wrote:There's some sleight of hand in what "adding a repo" means. The package indices are stored separately (binary-amd64, source -- notice source is just another "architecture"), although the actual .deb, .orig/.dsc/.debian files are all together.

I think the answer is no, and it's just another quirk of the APT tools.
Looks like it's so...
Well, if it was the plain Debian installation, I'd just add both repos (source and binary) since the experimental repo has its priority set to 1 by default... but here in LMDE we have these lines in /etc/apt/preferences:

Code: Select all

Package: *
Pin: release o=Debian
Pin-Priority: 500
and that overrides the default setting, unfortunately. :)
Locked

Return to “LMDE Archive”