Compiling Clementine 1.1 in LMDE

Write tutorials here
More tutorials here http://community.linuxmint.com/tutorial/welcome
Forum rules
Do not start a support topic here please, Before you post please read this

Compiling Clementine 1.1 in LMDE

Postby zerozero on Fri Oct 26, 2012 8:34 pm

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
Image

[ bliss of ignorance ]
zerozero
Level 16
Level 16
 
Posts: 6489
Joined: Tue Jul 07, 2009 2:29 pm

Linux Mint is funded by ads and donations.
 

Re: Compiling Clementine 1.1 in LMDE

Postby rocuronium on Fri Oct 26, 2012 10:12 pm

Great news. Thanks for the info!
rocuronium
Level 1
Level 1
 
Posts: 23
Joined: Thu Jul 21, 2011 6:20 pm

Re: Compiling Clementine 1.1 in LMDE

Postby mockturtl on Sun Oct 28, 2012 8:02 pm

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.
Image
User avatar
mockturtl
Level 4
Level 4
 
Posts: 442
Joined: Sat Oct 09, 2010 8:51 pm

Re: Compiling Clementine 1.1 in LMDE

Postby zerozero on Sun Oct 28, 2012 8:53 pm

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.
Image

[ bliss of ignorance ]
zerozero
Level 16
Level 16
 
Posts: 6489
Joined: Tue Jul 07, 2009 2:29 pm

Re: Compiling Clementine 1.1 in LMDE

Postby Monsta on Mon Oct 29, 2012 3:23 am

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/
Monsta
Level 8
Level 8
 
Posts: 2496
Joined: Fri Aug 19, 2011 3:46 am

Re: Compiling Clementine 1.1 in LMDE

Postby mockturtl on Mon Oct 29, 2012 10:46 am

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.
Image
User avatar
mockturtl
Level 4
Level 4
 
Posts: 442
Joined: Sat Oct 09, 2010 8:51 pm

Re: Compiling Clementine 1.1 in LMDE

Postby Monsta on Tue Oct 30, 2012 2:24 am

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
Monsta
Level 8
Level 8
 
Posts: 2496
Joined: Fri Aug 19, 2011 3:46 am

Re: Compiling Clementine 1.1 in LMDE

Postby mockturtl on Tue Oct 30, 2012 11:12 am

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/debian-reference/ch02.en.html#_advanced_package_management_operations_with_commandline

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...)
Image
User avatar
mockturtl
Level 4
Level 4
 
Posts: 442
Joined: Sat Oct 09, 2010 8:51 pm

Re: Compiling Clementine 1.1 in LMDE

Postby Monsta on Wed Oct 31, 2012 2:36 am

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. :)
Monsta
Level 8
Level 8
 
Posts: 2496
Joined: Fri Aug 19, 2011 3:46 am

Linux Mint is funded by ads and donations.
 

Return to Tutorials

Who is online

Users browsing this forum: No registered users and 1 guest