crowell / modpagespeed_tmp

Automatically exported from code.google.com/p/modpagespeed
Apache License 2.0
0 stars 0 forks source link

Compilling on SheevaPlug : ARM processor #187

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
I can't compile and build a deb package on my SheevaPlug.

It's a ARM processor.
I use Debian Lenny 5 with Apache2, PHP5 and MySQL.

Can you build it ?
Can you tell me for compiling and building a deb package for this architecture.

Thanks.

Original issue reported on code.google.com by colundrum on 17 Jan 2011 at 10:21

GoogleCodeExporter commented 9 years ago
No one on the team has tried compiling mod_pagespeed on an ARM.  What error 
message are you getting?

Original comment by jmara...@google.com on 17 Jan 2011 at 12:31

GoogleCodeExporter commented 9 years ago
Sorry for the delay, I reinstalled the virtual machine for cross-compilation.
I may have found the main error is in Checking out mod_pagespeed and 
dependencies.
When I execute for the either latest stable version: 
gclient config http://modpagespeed.googlecode.com/svn/tags/0.9.14.6/src : no 
error
  gclient sync --force : I obtain the error :

KeyError: 'Undefined variable deb_arch in src/build/install.gyp while loading 
dependencies of src/build/all.gyp while trying to load src/build.gyp'
Error : /usr/bin/python src/build/chromium in /root/mod_pagespeed returned 1

The uname -a return : Linux debian-armel 2.6.26-1-versatile #1 "date" armv5tejl 
GNU/Linux

It's a VM QEMU for cross-compilation : 
http://people.debian.org/~aurel32/qemu/armel/

Regards

Original comment by colundrum on 19 Jan 2011 at 3:48

GoogleCodeExporter commented 9 years ago
The problem here is that we have based our build system on that of Chromium.  
So if that browser is not available for a particular platform, then we don't 
have an easy path to compile for it either.

This is not, of course, a fundamental limitation of mod_pagespeed, which should 
run anywhere Apache does, but just of our build infrastructure.  Some people 
have tried generating Makefiles on a supported platform and then copying the 
directory to the target platform.  This might work if the supported platform 
and target platform have the same machine-word size.  But we have not tried it.

Original comment by jmara...@google.com on 19 Jan 2011 at 3:55

GoogleCodeExporter commented 9 years ago
I just changed the condition OS in src/build.gyp by nano where OS == linux by 
OS == *
The installaton is a success : no error.

I just launch "make BUILDTYPE=Release", it's in progress.

Original comment by colundrum on 19 Jan 2011 at 4:04

GoogleCodeExporter commented 9 years ago
Cools!  Please keep us posted.  If you are able to build/install on ARM we'll 
post instructions to the FAQ.

Original comment by jmara...@google.com on 19 Jan 2011 at 4:16

GoogleCodeExporter commented 9 years ago
Sounds like this is fixed for now.

Original comment by sligocki@google.com on 24 Feb 2011 at 9:51

GoogleCodeExporter commented 9 years ago
thank to  colundrum s suggestion! My server is also ARM processor, and after I 
changed the OS parameter it works, and compile is OK too. 

But for my case, the file is  "~/mod_pagespeed/src/build/install.gyp"

     13   'conditions': [
-> 14     ['OS=="*"', {          # I changed "linux" to "*"
     15       'variables': {
     16         'version' : '<!(python <(version_py_path) -f <(version_path) -t "@MAJOR@.@MINOR@.@BUILD@.@PATCH@")',
     17         'revision' : '<!(python <(DEPTH)/build/util/lastchange.py | cut -d "=" -f 2)',
     .......

Original comment by linxi...@gmail.com on 11 May 2012 at 2:26

GoogleCodeExporter commented 9 years ago
Hi, I'm compiling the package on a SheevaPlug too. It's taking ages obviously.

It would be nice if the project would distribute debian packages for this 
plateform. Arm architecture is getting more and more widespread, it would be 
nice to easyly install mod_pagespeed there... RaspberryPi could benefit from 
this compilation too (although it's not exactly the same architecture or flags).

Original comment by arthur.l...@gmail.com on 25 Jan 2013 at 2:14

GoogleCodeExporter commented 9 years ago
I'm getting an error on make : 

arthur@plug:~/mod_pagespeed/src$ make BUILDTYPE=Release 
  ACTION Extracting last change to /home/arthur/mod_pagespeed/src/out/Release/obj/gen/build/LASTCHANGE out/Release/obj/gen/build/LASTCHANGE.always
  CXX(target) out/Release/obj.target/instaweb_util/net/instaweb/util/async_cache.o
cc1plus: warnings being treated as errors
In file included from ./net/instaweb/util/public/queued_worker_pool.h:34,
                 from ./net/instaweb/util/public/async_cache.h:26,
                 from net/instaweb/util/async_cache.cc:19:
./net/instaweb/util/public/function.h: In member function ‘void 
net_instaweb::MemberFunction0<C>::Cancel() [with C = 
net_instaweb::CacheInterface]’:
net/instaweb/util/async_cache.cc:178:   instantiated from here
./net/instaweb/util/public/function.h:145: error: NULL used in arithmetic
./net/instaweb/util/public/function.h: In member function ‘void 
net_instaweb::MemberFunction1<C, T1>::Cancel() [with C = 
net_instaweb::AsyncCache, T1 = GoogleString*]’:
net/instaweb/util/async_cache.cc:178:   instantiated from here
./net/instaweb/util/public/function.h:173: error: NULL used in arithmetic
./net/instaweb/util/public/function.h: In member function ‘void 
net_instaweb::MemberFunction2<C, T1, T2>::Cancel() [with C = 
net_instaweb::AsyncCache, T1 = GoogleString*, T2 = 
net_instaweb::SharedString*]’:
net/instaweb/util/async_cache.cc:178:   instantiated from here
./net/instaweb/util/public/function.h:204: error: NULL used in arithmetic
./net/instaweb/util/public/function.h: In member function ‘void 
net_instaweb::MemberFunction1<C, T1>::Cancel() [with C = 
net_instaweb::AsyncCache, T1 = 
std::vector<net_instaweb::CacheInterface::KeyCallback, 
std::allocator<net_instaweb::CacheInterface::KeyCallback> >*]’:
net/instaweb/util/async_cache.cc:178:   instantiated from here
./net/instaweb/util/public/function.h:173: error: NULL used in arithmetic
./net/instaweb/util/public/function.h: In member function ‘void 
net_instaweb::MemberFunction2<C, T1, T2>::Cancel() [with C = 
net_instaweb::AsyncCache, T1 = GoogleString*, T2 = 
net_instaweb::CacheInterface::Callback*]’:
net/instaweb/util/async_cache.cc:178:   instantiated from here
./net/instaweb/util/public/function.h:204: error: NULL used in arithmetic
./net/instaweb/util/public/function.h: In member function ‘void 
net_instaweb::MemberFunction0<C>::Cancel() [with C = net_instaweb::Function]’:
net/instaweb/util/async_cache.cc:178:   instantiated from here
./net/instaweb/util/public/function.h:145: error: NULL used in arithmetic
make: *** 
[out/Release/obj.target/instaweb_util/net/instaweb/util/async_cache.o] Error 1

Original comment by arthur.l...@gmail.com on 25 Jan 2013 at 2:20

GoogleCodeExporter commented 9 years ago
I think g++ is right and this was not pedantically correct as written, but it 
should be easy to change if you are up for hacking.

I'm not 100% sure what the right syntax is and since you are compiling it now 
you might need to iterate & report back to us so we can fix the source.  I'd 
try just replacing NULL with 0 at the identified lines.  Or you might try to 
use static_cast<Func>(0), and if that works, #define NULL_MEMBER_FN after the 
definition of CALL_MEMBER_FN.

Original comment by jmara...@google.com on 25 Jan 2013 at 2:27

GoogleCodeExporter commented 9 years ago
s/NULL/0/ in that file works. 

Next error : http://paste.debian.net/228604/

I don't do G++ or C++ so I really don't know what to do here.

Original comment by arthur.l...@gmail.com on 25 Jan 2013 at 3:46

GoogleCodeExporter commented 9 years ago
Is there any chance you have compiled some other code that uses
google/thrid_party on that machine?
The lines reported in those error messages don't line up what I'm seeing.

Original comment by matterb...@google.com on 25 Jan 2013 at 3:56

GoogleCodeExporter commented 9 years ago
There is at least one problem here which is due to the way we build 
mod_pagespeed.  We capture the generated files from several other packages: 
gflags, protobufs, possibly others, for a few specific platforms (x86-32, 
x86-64, mac-64 I think), rather than generating those files for each dependency 
via their ./configure scripts.  There is a non-intuitive process we go through 
when we add a new dependency to capture all these files.

It's possible that a better resolution to this issue may emerge as a result of 
some work that's going on for our next release.

Re-opening this to track it.  I don't think we're going to be able take on 
compiling for this specific architecture, though.

In particular, if the packages we depend on (gflags, protobufs + others) can't 
be compiled on SheevaPlug then mod_pagespeed won't be able to either.

(Side note: we could cut dependencies on gflags for building the module, though 
we need it for unit tests.  And would you really want to deploy mod_pagespeed 
on a platform where we can't run the unit tests...?)_

Original comment by jmara...@google.com on 29 Jan 2013 at 2:04