jasonmc / forked-daapd

A re-write of the firefly media server (mt-daapd). It's released under GPLv2+. Please note that this git repository is a mirror of the official one at git://git.debian.org/~jblache/forked-daapd.git
http://blog.technologeek.org/2009/06/12/217
GNU General Public License v2.0
328 stars 45 forks source link

Definitive Build Process? #111

Open DeepFriedTwinkie opened 10 years ago

DeepFriedTwinkie commented 10 years ago

Hello,

I'm looking for decent instructions on how to build forked-daapd. I've done a few updates and have been able to build by ripping apart the DEB package and then using dpkg-buildpackage. (From here: http://www.mmacleod.ca/blog/2012/05/patching-forked-daapd-so-it-actually-works/)

But I'd rather use an approach that allows me to build properly. I'm guessing the original INSTALL file (https://github.com/ejurgensen/forked-daapd/blob/master/INSTALL) is not up-to-date.

@ejurgensen you seem to be the most active contributor. I would have added this issue on your branch, but you have issues disabled. Hoping you see this and can help!

Thanks!!!

ejurgensen commented 10 years ago

I wasn't aware I had issues disabled, thank you for notifying me. I've enabled them now.

You're right that the INSTALL file is not up-to-date. Here's a short version of how I suggest building (in Ubuntu), but I wouldn't call it a definitive guide, I may well have forgotten something:

  1. Go to http://gyfgafguf.dk/raspbian/source/ where some of the source files are
  2. Install all the packages listed in "Build-Depends" (in the newest .dsc file)
  3. Download source - either from my GitHub fork (if you want the newest) or from the above location
  4. Unpack
  5. Run autoreconf -vi
  6. Run ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-flac --enable-itunes
  7. Run make and then sudo make install

You mentioned dpkg-buildpackage, so I'm not sure if you were actually looking for instructions for making a .deb?

DeepFriedTwinkie commented 10 years ago

Thanks @ejurgensen! This is just what I was looking for. I'll try it sometime this week and update this issue with my results.

I mentioned dpkg-buildpackage only because my previous process was to build from an existing .deb (as if it were a patch as mentioned in the link above.) But it never felt complete to me. These feel like a more standard process.

One question: If I do a standard pull from git, what is the purpose of the step 1? Are these the dependencies?

ejurgensen commented 10 years ago

Yes, if you pull from git then step 1 is just so you can find the .dsc file with the dependency list. Btw, remember to use libevent 1 (and remove libevent 2).

DeepFriedTwinkie commented 10 years ago

Hi @ejurgensen ,

I finally got around to trying your steps above. I ran into a couple problems that you might be able to help with:

  1. I get a permission denied when I call ./configure... - I did a chown on the directory that my source is in and a chmod, but it didn't seem to matter. Is there anything specific you know of in configure that might be causing this?
  2. Since I got a permission denied, I then tried the same call with sudo. It seems to work OK, and files seemed to get updated. (I think.)
  3. Running make files, because there is no makefile. There is a Makefile.am and a Makefile.in, but that's it. Running make using either of the files yields a "Nothing to be done for `Makefile.am'." error.

I'm guessing the lack of a makefile is related to the first issue, but I'm at a bit of a loss on how to debug it. I'm hoping some of what I've said jogs your memory from when you last did it.

Thanks!

ejurgensen commented 10 years ago

I've gone through these steps many times, the last time was just a fews days ago, and I've never encountered permission problems. I always use normal user privileges, you should not be required to use sudo for configure. The makefile error is clearly because configure is not working as it should. I don’t have any idea as to why that may be. How did you get the source – was it with git clone https://github.com/ejurgensen/forked-daapd.git? On what platform are you doing the build?

DeepFriedTwinkie commented 10 years ago

I forked your repository into my own, then did a git clone of my fork (git@github.com:DeepFriedTwinkie/forked-daapd.git). But, it's the same codebase, as I haven't committed anything back to it.

I'm running Ubuntu 12.04 Server on an 64-bit AMD based machine.

I can't seem to SSH into my machine right now, so I can't get more information. I'll play with it a bit more tonight and see if I can get the permissions squared away. I'll look through the configure file to see if there is anything odd in there that could be causing the issue.

Thanks for responding!

DeepFriedTwinkie commented 10 years ago

One thought: From what dir should steps 5-7 be run? From the root of the repo, or from src? autoreconf is recursive (I think) but not sure if the parent matters.

ejurgensen commented 10 years ago

This is what I do:

git clone https://github.com/ejurgensen/forked-daapd.git cd forked-daapd autoreconf -vi ./configure --prefix=/usr ......... make sudo make install

I use Ubuntu 12.04 too, but not the server edition. Maybe the server edition is more locked down, so ordinary users don't have access to the stuff in /usr, which configure is checking?

BTW the configure script is hard to read because it is generated by autoreconf. If you want to see what is being done you can start with configure.in.