Skip to content
This repository has been archived by the owner on Apr 21, 2023. It is now read-only.

Compilling on SheevaPlug : ARM processor #187

Open
GoogleCodeExporter opened this issue Apr 6, 2015 · 14 comments
Open

Compilling on SheevaPlug : ARM processor #187

GoogleCodeExporter opened this issue Apr 6, 2015 · 14 comments

Comments

@GoogleCodeExporter
Copy link

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
Copy link
Author

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

  • Added labels: Type-Enhancement
  • Removed labels: Type-Defect

@GoogleCodeExporter
Copy link
Author

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
Copy link
Author

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
Copy link
Author

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
Copy link
Author

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
Copy link
Author

Sounds like this is fixed for now.

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

  • Changed state: Fixed

@GoogleCodeExporter
Copy link
Author

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
Copy link
Author

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
Copy link
Author

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
Copy link
Author

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
Copy link
Author

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
Copy link
Author

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
Copy link
Author

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

  • Changed state: Accepted

@timnolte
Copy link

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. apache/incubator-pagespeed-ngx#1213

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants