Home of the Squeezebox™ & Transporter® network music players.
Page 1 of 2 12 LastLast
Results 1 to 10 of 13
  1. #1
    Junior Member neflyte's Avatar
    Join Date
    Mar 2012
    Location
    Kitchener, ON, CANADA
    Posts
    8

    Building from svn on FreeBSD 8.2 amd64; where to copy built artifacts?

    I'm attempting to upgrade my LMS 7.7.1 to 7.7.2 so I can get my squeezebox to stop upgrading and downgrading firmware every time i use it.
    I've downloaded the CPAN sources from svn and got them to build successfully after a couple minor tweaks.
    I couldn't find any documentation that tells me what to do with the artifacts that were built, however.
    I attempted to just copy the files in build/ to [LMS]/CPAN/, but it results in an annoying Perl issue:

    Code:
    DBD::SQLite object version 1.34_01 does not match bootstrap parameter 1.35 at /usr/local/lib/perl5/5.10.1/mach/DynaLoader.pm line 223.
    Of course, if I switch back to the modules that come with the LMS download, I get the opposite (hence the 'annoying' part):

    Code:
    DBD::SQLite object version 1.35 does not match bootstrap parameter 1.34_01 at /usr/local/lib/perl5/5.10.1/mach/DynaLoader.pm line 223.
    I assume I simply haven't copied the built artifacts into the correct places.
    Can someone confirm that simply copying everything from build/ into [LMS]/CPAN/ is enough?
    If that's not enough, could someone reply with where everything should be copied?

    Any assistance is appreciated!

  2. #2
    Senior Member pallfreeman's Avatar
    Join Date
    Apr 2010
    Location
    Squeezebox Graveyard
    Posts
    500
    As someone who refuses to change from FreeBSD despite constant accusations of perversions involving deceased equines, I'd love to be able to answer this question, but I don't understand it.
    Don't push your love too far
    Your wounds won't leave a scar
    Right now is where you are
    In a broken dream.

  3. #3
    Junior Member neflyte's Avatar
    Join Date
    Mar 2012
    Location
    Kitchener, ON, CANADA
    Posts
    8
    Quote Originally Posted by pallfreeman View Post
    As someone who refuses to change from FreeBSD despite constant accusations of perversions involving deceased equines, I'd love to be able to answer this question, but I don't understand it.
    I'll try to clarify a bit.
    I'm attempting to build LMS from the svn sources on FreeBSD 8.2 amd64.
    I downloaded the 7.7.2 CPAN sources and ran the buildme.sh script to build everything (after a couple tweaks to get everything to build correctly).

    Now I have a directory called "build" with all of the built artifacts in it.
    I also have a directory that contains the .tar.gz distribution of LMS 7.7.2.

    My question is: where do I copy the files from the "build" directory to make .tar.gz distribution of LMS 7.7.2 work?

  4. #4
    Junior Member neflyte's Avatar
    Join Date
    Mar 2012
    Location
    Kitchener, ON, CANADA
    Posts
    8
    Of course, I figure it all out after posting once again. -_-

    All I had to do was copy everything from build/arch/5.10/ to [LMS]/CPAN/arch/5.10/.
    After doing that and moving a couple symlinks around, LMS 7.7.2 starts!

  5. #5
    Senior Member pallfreeman's Avatar
    Join Date
    Apr 2010
    Location
    Squeezebox Graveyard
    Posts
    500
    Glad you figured it out.
    Don't push your love too far
    Your wounds won't leave a scar
    Right now is where you are
    In a broken dream.

  6. #6
    Junior Member
    Join Date
    Nov 2011
    Posts
    7

    Success with 7.7 on freebsd amd64?

    Quote Originally Posted by neflyte View Post
    All I had to do was copy everything from build/arch/5.10/ to [LMS]/CPAN/arch/5.10/. After doing that and moving a couple symlinks around, LMS 7.7.2 starts!
    Please could you describe the steps to build 7.7 on freebsd. I have Freebsd 9-release and amd64 and I'd like to move on from the squeezeboxserver port (7.5.4).

  7. #7
    Junior Member neflyte's Avatar
    Join Date
    Mar 2012
    Location
    Kitchener, ON, CANADA
    Posts
    8
    Quote Originally Posted by Heeheehaha View Post
    Please could you describe the steps to build 7.7 on freebsd. I have Freebsd 9-release and amd64 and I'd like to move on from the squeezeboxserver port (7.5.4).
    Sure. Here's what I came up with, including links to a couple patches that you'll need. As always, your mileage may vary! Note that I'm building LMS 7.7.2 on FreeBSD 8.2-RELEASE amd64, Perl 5.10.1, GCC 4.2.1.

    1) Download the CPAN sources for whichever version you wish to use into a new directory (requires 'subversion'):

    Code:
    svn co http://svn.slimdevices.com/repos/slim/7.7/tags/7.7.2/vendor/CPAN
    2) The main issue I've found with compiling LMS for amd64 is ffmpeg fails to compile due to the age of the shipping version of GCC in FreeBSD; it's too old. Upgrading GCC in FreeBSD is not an option as the kernel (and most ports) might not build afterwards. To get around this we need to make a couple changes to the "buildme.sh" script, among other things. The VP6f and VP8 codecs are the culprits (or maybe just one of them; I removed both to be sure), so we simply need to remove a couple parameters from the 'configure' portion of building ffmpeg. The following patch can be applied to remove the parameters (as well as accomplish part of the next step):

    http://www.ethereal.cc/~alan/lms/bui...ms772.sh.patch

    3) At this point ffmpeg will compile but libmediascan will not. We need to update 'mediascan.c' to not care about the VP6f and VP8 codecs that we disabled in the last step. First we extract 'mediascan.c':

    Code:
    tar xzvf libmediascan-0.1.tar.gz
    cp libmediascan-0.1/src/mediascan.c ./
    4) Next we'll apply a patch to mediascan.c to remove the aforementioned codecs:

    http://www.ethereal.cc/~alan/lms/med...lms772.c.patch

    5) If everything worked up to this point, you should be able to simply run ./buildme.sh and wait for everything to compile. Once compiled, you should have a directory called "build" which contains all of the newly-built libraries for LMS. Now we need to extract the LMS download somewhere (fetch can be used in place of wget):

    Code:
    wget http://downloads.slimdevices.com/LogitechMediaServer_v7.7.2/logitechmediaserver-7.7.2.tgz
    tar xzvf logitechmediaserver-7.7.2.tgz
    6) Now you can copy everything you just built overtop of what you just extracted:

    Code:
    cp -Rv [CPAN]/build/arch/5.10/* [LMS]/CPAN/arch/5.10/
    NOTE: [CPAN] is replaced by the location of the "CPAN" directory you got from step #1; [LMS] is replaced by the location of the LMS files you extracted in step #5.

    7) You're all set! If you have symlinks to any particular directories (config, prefs, etc.), now would be the time to update those to point to your current installation.

    I hope this helps!

  8. #8
    Junior Member
    Join Date
    Nov 2011
    Posts
    7
    Quote Originally Posted by neflyte View Post
    Sure. Here's what I came up with, including links to a couple patches that you'll need. As always, your mileage may vary! Note that I'm building LMS 7.7.2 on FreeBSD 8.2-RELEASE amd64, Perl 5.10.1, GCC 4.2.1.
    Thanks for the steps above. I've tried following them and run into a problem. I have 9.0-RELEASE FreeBSD amd64, Perl 5.12.4, and GCC 4.2.1. Steps 1-4 seem to go fine but then when I run './buildme.sh' after lots of building I get the following error:

    Code:
    WARNING: Setting ABSTRACT via file 'lib/Media/Scan.pm' failed
     at /usr/local/lib/perl5/site_perl/5.12.4/ExtUtils/MakeMaker.pm line 609
    Writing Makefile for Media::Scan
    Writing MYMETA.yml and MYMETA.json
    cp lib/Media/Scan/Image.pm blib/lib/Media/Scan/Image.pm
    cp lib/Media/Scan/Result.pm blib/lib/Media/Scan/Result.pm
    cp lib/Media/Scan/Audio.pm blib/lib/Media/Scan/Audio.pm
    cp lib/Media/Scan/Video.pm blib/lib/Media/Scan/Video.pm
    cp lib/Media/Scan/Progress.pm blib/lib/Media/Scan/Progress.pm
    cp lib/Media/Scan.pm blib/lib/Media/Scan.pm
    cp lib/Media/Scan/Error.pm blib/lib/Media/Scan/Error.pm
    /usr/local/bin/perl5.12.4 /usr/local/lib/perl5/5.12.4/ExtUtils/xsubpp  -typemap /usr/local/lib/perl5/5.12.4/ExtUtils/typemap -typemap typemap  Scan.xs > Scan.xsc && mv Scan.xsc Scan.c
    Please specify prototyping behavior for Scan.xs (see perlxs manual)
    cc -c  -I/usr/local/lms/CPAN/build/include -I/usr/local/lms/CPAN/build/include -I/usr/local/lms/CPAN/build/include -I/usr/local/lms/CPAN/build/include -I/usr/local/lms/CPAN/build/include -I/usr/local/lms/CPAN/build/include -I/usr/local/lms/CPAN/build/include  -DAPPLLIB_EXP="/usr/local/lib/perl5/5.12.4/BSDPAN" -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -DDEBUGGING -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -g    -DVERSION=\"0.01\"  -DXS_VERSION=\"0.01\" -DPIC -fPIC "-I/usr/local/lib/perl5/5.12.4/mach/CORE"  -O2 -Wall -Wno-unused-value -Wno-format-security Scan.c
    ./xs/Result.xs: In function 'XS_Media__Scan__Result_size':
    ./xs/Result.xs:45: warning: format '%llu' expects type 'long long unsigned int', but argument 3 has type 'uint64_t'
    Running Mkbootstrap for Media::Scan ()
    chmod 644 Scan.bs
    rm -f blib/arch/auto/Media/Scan/Scan.so
    LD_RUN_PATH="/usr/lib:/usr/local/lib" cc  -shared  -L/usr/local/lib -fstack-protector Scan.o  -o blib/arch/auto/Media/Scan/Scan.so /usr/local/lms/CPAN/build/include/../lib/libmediascan.a /usr/local/lms/CPAN/build/include/../lib/libavformat.a /usr/local/lms/CPAN/build/include/../lib/libavcodec.a /usr/local/lms/CPAN/build/include/../lib/libswscale.a /usr/local/lms/CPAN/build/include/../lib/libavutil.a /usr/local/lms/CPAN/build/include/../lib/libexif.a /usr/local/lms/CPAN/build/include/../lib/libjpeg.a /usr/local/lms/CPAN/build/include/../lib/libpng.a /usr/local/lms/CPAN/build/include/../lib/libgif.a /usr/local/lms/CPAN/build/include/../lib/libdb.a	  -lm -lz -lintl  	 
    /usr/bin/ld: /usr/local/lms/CPAN/build/include/../lib/libavcodec.a(deinterlace.o): relocation R_X86_64_PC32 against `ff_pw_4' can not be used when making a shared object; recompile with -fPIC
    /usr/bin/ld: final link failed: Bad value
    *** Error code 1
    
    Stop in /usr/local/lms/CPAN/libmediascan-0.1/bindings/perl.
    make failed, aborting
    I read each of your patches but I can't see how they might be linked to this problem. Any thought?

  9. #9
    Senior Member pallfreeman's Avatar
    Join Date
    Apr 2010
    Location
    Squeezebox Graveyard
    Posts
    500
    Quote Originally Posted by Heeheehaha View Post
    I read each of your patches but I can't see how they might be linked to this problem. Any thought?
    The ffmpeg config needs to be told it's building amd64:

    https://github.com/XenoPsyche/slimse...02727724b10018
    Don't push your love too far
    Your wounds won't leave a scar
    Right now is where you are
    In a broken dream.

  10. #10
    Junior Member
    Join Date
    Nov 2011
    Posts
    7
    Quote Originally Posted by pallfreeman View Post
    The ffmpeg config needs to be told it's building amd64:

    https://github.com/XenoPsyche/slimse...02727724b10018
    How do I use the patch in your link? I tried to add the lines from your changed buildme.sh to mine but when I ran it I got the same error as above. Is the problem something to do with needing to build perl differently on Freebsd? The error says something about the 'stack-protector' and buildme has 'For 64-bit native systems, use: perlbrew install perl-5.12.4 -D usethreads -A ccflags=-fno-stack-protector -A ldflags=-fno-stack-protector'. I already have perl 5.12.4, do I need to uninstall and reinstall using this command? I'm pretty sure I have perl only for LMS/ Squeezebox.

    Any help appreciated, Stuart

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •