incubator-pagespeed-mod
incubator-pagespeed-mod copied to clipboard
Compilling on SheevaPlug : ARM processor
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
No one on the team has tried compiling mod_pagespeed on an ARM. What error
message are you getting?
Original comment by [email protected]
on 17 Jan 2011 at 12:31
- Added labels: Type-Enhancement
- Removed labels: Type-Defect
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
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 [email protected]
on 19 Jan 2011 at 3:55
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
Cools! Please keep us posted. If you are able to build/install on ARM we'll
post instructions to the FAQ.
Original comment by [email protected]
on 19 Jan 2011 at 4:16
Sounds like this is fixed for now.
Original comment by [email protected]
on 24 Feb 2011 at 9:51
- Changed state: Fixed
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 [email protected]
on 11 May 2012 at 2:26
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 [email protected]
on 25 Jan 2013 at 2:14
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 [email protected]
on 25 Jan 2013 at 2:20
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 [email protected]
on 25 Jan 2013 at 2:27
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 [email protected]
on 25 Jan 2013 at 3:46
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 [email protected]
on 25 Jan 2013 at 3:56
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 [email protected]
on 29 Jan 2013 at 2:04
- Changed state: Accepted
This is a very old thread but attempting to resurface due to the increasing need to compile for arm64. There is a similar discussion for Nginx as well. https://github.com/apache/incubator-pagespeed-ngx/issues/1213