diff -Nru passenger-3.0.19+112~precise1/NEWS passenger-3.0.21/NEWS --- passenger-3.0.19+112~precise1/NEWS 2013-01-30 19:16:22.000000000 +0000 +++ passenger-3.0.21/NEWS 2013-05-29 12:09:07.000000000 +0000 @@ -1,3 +1,15 @@ +Release 3.0.21 +-------------- + + * Rebootstrapped the libev configure to fix compilation problems on Solaris 11. + * Fixed support for RVM mixed mode installations. Fixes issue #828. + * Fixed encoding problems in Phusion Passenger Standalone. + * Changed preferred Nginx version to 1.2.9. + * Catch exceptions raised by Rack application objects. + * Fix for CVE-2013-2119. Details can be found in the announcement for version 4.0.5. + * Version 3.0.20 was pulled because its fixes were incomplete. + + Release 3.0.19 -------------- diff -Nru passenger-3.0.19+112~precise1/bin/passenger-install-nginx-module passenger-3.0.21/bin/passenger-install-nginx-module --- passenger-3.0.19+112~precise1/bin/passenger-install-nginx-module 2013-01-30 19:16:22.000000000 +0000 +++ passenger-3.0.21/bin/passenger-install-nginx-module 2013-05-28 21:13:08.000000000 +0000 @@ -27,6 +27,7 @@ require 'phusion_passenger' require 'optparse' require 'fileutils' +require 'tmpdir' require 'phusion_passenger/platform_info/ruby' require 'phusion_passenger/dependencies' require 'phusion_passenger/abstract_installer' @@ -108,14 +109,12 @@ def before_install super myself = `whoami`.strip - @working_dir = "/tmp/#{myself}-passenger-#{Process.pid}" - FileUtils.rm_rf(@working_dir) - FileUtils.mkdir_p(@working_dir) + @working_dir = Dir.mktmpdir("passenger.") end def after_install super - FileUtils.rm_rf(@working_dir) + FileUtils.remove_entry_secure(@working_dir) if @working_dir end private diff -Nru passenger-3.0.19+112~precise1/debian/bzr-builder.manifest passenger-3.0.21/debian/bzr-builder.manifest --- passenger-3.0.19+112~precise1/debian/bzr-builder.manifest 2013-01-30 19:16:23.000000000 +0000 +++ passenger-3.0.21/debian/bzr-builder.manifest 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -# bzr-builder format 0.3 deb-version {debupstream}+112 -lp:~brightbox/ruby-passenger/deb-passenger-stable revid:git-v1:fac1809051fa4c3370fa9885f272c69b5b6aa951 diff -Nru passenger-3.0.19+112~precise1/debian/changelog passenger-3.0.21/debian/changelog --- passenger-3.0.19+112~precise1/debian/changelog 2013-01-30 19:16:23.000000000 +0000 +++ passenger-3.0.21/debian/changelog 2013-05-29 16:00:44.000000000 +0000 @@ -1,8 +1,8 @@ -passenger (3.0.19+112~precise1) precise; urgency=low +passenger (3.0.21-1bbox1) precise; urgency=high - * Auto build. + * New upstream release, 3.0.21. Fixes CVE-2013-2119 - -- John Leach Wed, 30 Jan 2013 19:16:23 +0000 + -- John Leach Wed, 29 May 2013 16:59:56 +0100 passenger (3.0.19-1bbox1) precise; urgency=low diff -Nru passenger-3.0.19+112~precise1/debian/rules passenger-3.0.21/debian/rules --- passenger-3.0.19+112~precise1/debian/rules 2013-01-30 19:16:22.000000000 +0000 +++ passenger-3.0.21/debian/rules 2013-05-29 15:59:13.000000000 +0000 @@ -3,7 +3,6 @@ export DH_VERBOSE=1 export CFLAGS="-g -O0 -burgers" include /usr/share/cdbs/1/rules/debhelper.mk -include /usr/share/cdbs/1/rules/simple-patchsys.mk DEB_DH_INSTALL_SOURCEDIR := $(DEB_DESTDIR) DEB_INSTALL_DOCS_passenger-doc += DEVELOPERS.TXT $(DEB_DESTDIR)/usr/share/doc/phusion-passenger/ diff -Nru passenger-3.0.19+112~precise1/debian/source/format passenger-3.0.21/debian/source/format --- passenger-3.0.19+112~precise1/debian/source/format 1970-01-01 00:00:00.000000000 +0000 +++ passenger-3.0.21/debian/source/format 2013-05-29 16:13:15.185572391 +0000 @@ -0,0 +1 @@ +3.0 (quilt) diff -Nru passenger-3.0.19+112~precise1/doc/Architectural overview.html passenger-3.0.21/doc/Architectural overview.html --- passenger-3.0.19+112~precise1/doc/Architectural overview.html 1970-01-01 00:00:00.000000000 +0000 +++ passenger-3.0.21/doc/Architectural overview.html 2013-05-29 12:10:00.000000000 +0000 @@ -0,0 +1,2054 @@ + + + + + +Phusion Passenger design & architecture + + + + + + + +
+ +
+

1. Introduction to related technologies

+
+
+

1.1. Web application models

+

Before we describe Phusion Passenger, it is important to understand how typical web +applications work from the viewpoint of someone who wants to connect the +application to a web server.

+

A typical, isolated, web application accepts an HTTP request from some I/O +channel, processes it internally, and outputs an HTTP response, which is sent +back to the client. This is done in a loop, until the application is commanded +to exit. This does not necessarily mean that the web application speaks HTTP +directly: it just means that the web application accepts some kind of +representation of an HTTP request.

+

+Architecture of a typical web application in isolation +

+

Few web applications are accessible directly by HTTP clients. Common models +are:

+
    +
  1. +

    +The web application is contained in an application server. This application +server may or may not be able to contain multiple web applications. The +application server is then connected to the web server through some kind of +protocol. This protocol may be HTTP, FastCGI, SCGI, AJP or whatever. The web server +dispatches requests to the application server, which in turn dispatches +requests to the correct web application, in a format that the web application +understands. Conversely, HTTP responses outputted by the web application are +sent to the application server, which in turn sends them to the web server, +and eventually to the HTTP client. +

    +

    Typical examples of such a model:

    +
      +
    • +

      +A J2EE application, contained in the Tomcat application server, proxied + behind the Apache web server. Tomcat can contain multiple web applications + in a single Tomcat instance. +

      +
    • +
    • +

      +Most Ruby application servers besides Phusion Passenger (Thin, Unicorn, + Goliath, etc). These application servers can only contain a single Ruby + web application per instance. They load the web application into their + own process and are put behind a web server (Apache, Nginx) in a reverse + proxy setup. +

      +
    • +
    +
  2. +
  3. +

    +The web application is contained in a web server. In this case, the web +server acts like an application server. This is the case for PHP applications +on Apache servers with mod_php. Note that this does not necessarily mean +that the web application is run inside the same process as the web server: +it just means that the web server manages applications. In case of mod_php +however PHP does run directly inside the Apache worker processes. +

    +

    Phusion Passenger for Apache and Phusion Passenger for Nginx implement this model.

    +
  4. +
  5. +

    +The web application is a web server, and can accept HTTP requests +directly. This is the case for the Trac bug tracking system, running in its +standalone server. In most setups they are reverse proxied behind a real +web server such as Apache or Nginx, instead of accepting HTTP requests directly. +

    +

    Phusion Passenger Standalone implements this model. You can expose Phusion Passenger +Standalone directly to the Internet because it uses Nginx internally.

    +
  6. +
  7. +

    +The web application does not speak HTTP directly, but is connected directly +to the web server through some communication adapter. CGI, FastCGI and SCGI +are good examples of this. +

    +
  8. +
+

These descriptions are true for virtually all web applications, whether they’re +based on PHP, Django, J2EE, ASP.NET, Ruby on Rails, or whatever. Note that all +of these models provide the same functionality, i.e. no model can do something +that a different model can’t. The critical reader will notice that all of these +models are identical to the one described in the first diagram, if the +combination of web servers, application servers, web applications etc. are +considered to be a single entity; a black box if you will.

+

It should also be noted that these models do not enforce any particular +I/O processing implementation. The web servers, application servers, web +applications, etc. could process I/O serially (i.e. one request at a time), +could multiplex I/O with a single thread (e.g. by using select(2) or +poll(2)) or it could process I/O with multiple threads and/or multiple +processes.

+

Of course, there are many variations possible. For example, load balancers +could be used. But that is outside the scope of this document.

+
+

1.1.1. Why reverse proxy?

+

As you’ve seen, it is often necessary to put the web application or its +application server behind a real web server in a reverse proxy setup even +when the web app/app server already speaks HTTP. This is because implementing +HTTP in a proper, secure way involves more than just speaking the protocol. +The public Internet is a hostile environment where clients can send any +arbitrary data and can exhibit any arbitrary I/O patterns. Web servers like +Apache and Nginx have already implemented world-class I/O and connection +handling code and it would be a waste to reinvent their wheel. In the end, +putting the application in a reverse proxying setup makes the whole system +more robust and and more secure.

+

A typical problem involves dealing with slow clients. These clients may send +HTTP requests slowly and read HTTP responses slowly, perhaps taking many seconds +to complete their work. A naive single-threaded HTTP server implementation +that reads an HTTP requests, processes, and sends the HTTP response in a loop +may end up spending so much time waiting for I/O that spends very little time +doing actual work. Worse: suppose that the client is malicious, just leaves the +socket open and never reads the HTTP response, then the server will spend +forever waiting for the client, not being able to handle any more requests.

+
+
An example of a naive HTTP server implementation
+
+
while true
+    client = accept_next_client()
+    request = read_http_request(client)
+    response = process_request(request)
+    send_http_response(client, response)
+end
+
+
+

There are many ways to solve this problem. One could use one thread per client, +one could implement I/O timeouts, one could use an evented I/O architecture, one +could have a dedicated I/O thread or process buffer requests and responses. +The point is, implementing all this properly is non-trivial. Instead of +reimplementing these over and over in each application server, it’s better to +let a real web server deal with all the details and let the application server +and the web application do what they’re best at: their own core business logic.

+
+
+
+

1.2. Ruby Rack and Ruby on Rails

+

The de-facto standard interface for Ruby web applications is Rack. +Rack specifies an programming interface for web application developers to implement. +This interface covers HTTP request and response handling, and is not dependent on +any particular application server. The idea is that any Rack-compliant application +server can implement the Rack specification and work with all Rack-compliant web applications.

+

+images/rack.png +

+

In the distant past, each Ruby web framework had its own interface, so application +servers needed to explicitly add support for each web framework. Nowadays application +servers just support Rack.

+

+images/many_web_framework_protocols.png +

+

Ruby on Rails has been fully Rack compliant since version 3.0. Rails 2.3 was partially +Rack-compliant while earlier versions were not Rack-compliant at all. Phusion Passenger +supports Rack as well as all Rails 1.x and 2.x versions.

+

A particularly interesting thing to note is that a lot of the memory +occupied by Ruby on Rails applications is spent on storing the program code +(i.e. the abstract +syntax tree (AST)) in memory. This is observed through the use of the +memory statistics function in Ruby +Enterprise Edition. Also, a lot of the startup time of a Ruby on Rails +application is spent on bootstrapping the Rails framework.

+
+
+

1.3. Apache

+

The Apache web server has a dynamic module system and a pluggable I/O +multiprocessing (the ability to +handle more than 1 concurrent HTTP client at the same time) architecture. An +Apache module which implements a particular multiprocessing strategy, is called +a Multi-Processing Module (MPM). The single-threaded multi-process +prefork MPM had been +the default and the most popular one for a long time, but in recent times the +hybrid multi-threaded/multi-process worker MPM +is becoming increasingly popular because of its better performance and scalability. +Furthermore, Apache 2.4 introduced the event MPM +which is a hybrid evented/multi-threaded/multi-process MPM and offers even more +scalability benefits.

+

The prefork MPM remains in wide use today because it’s the only MPM that works well with mod_php.

+

The prefork MPM spawns multiple worker child processes. HTTP requests are first accepted by a +so-called control process, and then forwarded to one of the worker processes. +The next section contains a diagram which shows the prefork MPM’s architecture.

+
+
+

1.4. Nginx

+

Nginx is a lightweight web server that is becoming increasingly popular. It is known +to be smaller, lighter weight and more scalable than Apache thanks to its evented I/O +architecture. That said, Nginx is less flexible than Apache. For example it has no +dynamic module system: all modules must be statically compiled into Nginx.

+
+
+
+
+

2. Phusion Passenger architecture

+
+
+

2.1. Overview

+

Phusion Passenger’s architecture is a lot like model #2 described in +Web application models. In other words, +Phusion Passenger extends Apache/Nginx and allows it to act like an +application server. This is shown in the following diagram:

+

+Passenger’s architecture +

+

Phusion Passenger consists of:

+
    +
  • +

    +an Apache module, mod_passenger. This is written in C++, and can be found in the directory ext/apache2. +

    +
  • +
  • +

    +an Nginx module ngx_http_passenger_module. This is written in C, and can be found in the directory ext/nginx. +

    +
  • +
  • +

    +Common code used by both the Apache and the Nginx module. For example the helper agent is among this code. This code is mostly C++ and can be found in the directory ext/common. +

    +
  • +
+

The module is active all Apache/Nginx processes. When an HTTP request comes in, the Phusion Passenger module checks whether the request should be handled by a Phusion Passenger-served application. If so, then the module spawns one or more processes for the corresponding application (if necessary), forwards the request to that application process and forwards its generated response back to the client. This is all done with the assistance of the Phusion Passenger helper agent, which stores state that must be shared among all web server worker processes and handles much of the internal I/O between the web server and the application processes.

+

It should be noted that applications do not run in the same address space as the web server. +This differentiates Passenger from other +application-server-inside-web-server software such as mod_php, mod_perl and +mod_ruby. If the application crashes or leak memory, it will have no +effect on the web server. In fact, stability is one of our highest goals. Phusion Passenger +is carefully designed and implemented so that the web server shouldn’t crash because +of Phusion Passenger.

+
+
+

2.2. Spawning and caching of code and applications

+

A very naive implementation of an application server would spawn an application +process every time an HTTP request is received, just like CGI would. +However, spawning Ruby applications is typically expensive. It can take a few +seconds on a modern computer, and possibly much longer on a heavily loaded server. +A less naive implementation would keep spawned application processes alive, +similar to how Lighttpd’s FastCGI implementation works. +However, this still has several problems:

+
    +
  1. +

    +The first request to a Rails website will be slow, and subsequent requests + will be fast. But the first request to a different Rails website - on the + same web server - will still be slow. +

    +
  2. +
  3. +

    +As we’ve explained earlier in this article, a lot of memory in a Rails + application is spent on storing the AST of the Ruby on Rails framework and + the application. Especially on shared hosts and on memory-constrained + Virtual Private Servers (VPS), this can be a problem. +

    +
  4. +
+

Both of these problems are very much solvable, and we’ve chosen to do just +that.

+

The first problem can be solved by preloading Rails applications, i.e. by +running the Rails application before a request is ever made to that website. +This is the approach taken by most Rails hosts, for example in the form of a +Mongrel cluster which is running all the time. However, this is unacceptable +for a shared host: such an application would just sit there and waste memory +even if it’s not doing anything. Instead, we’ve chosen to take a different +approach, which solves both of the aforementioned problems.

+

We spawn Rails applications via a spawn server. The spawn server caches Ruby +on Rails framework code and application code in memory. Spawning a Rails +application for the first time will still be slow, but subsequent spawn +attempts will be very fast. Furthermore, because the framework code is cached +independently from the application code, spawning a different Rails application +will also be very fast, as long as that application is using a Rails framework +version that has already been cached.

+

Another implication of the spawn server is that different Ruby on Rails will +share memory with each other, thus solving problem #2. This is described in +detail in the next section.

+

But despite the caching of framework code and application code, spawning is +still expensive compared to an HTTP request. We want to avoid spawning whenever +possible. This is why we’ve introduced the application pool. Spawned +application instances are kept alive, and their handles are stored into this +pool, allowing each application instance to be reused later. Thus, Passenger +has very good average case performance.

+

The application pool is shared between different worker processes. Because the +worker processes cannot share memory with each other, either shared memory must +be used to implement the application pool, or a client/server architecture must +be implemented. We’ve chosen the latter because it is easier +to implement. The Apache control process acts like a server for the application +pool. However, this does not mean that all HTTP request/response data go +through the control process. A worker process queries the pool for a connection +session with a Rails application. Once this session has been obtained, the +worker process will communicate directly with the Rails application.

+

The application pool is implemented inside mod_passenger. One can find +detailed documentation about it in +the C++ API documentation, +in particular the documentation about the ApplicationPool, +StandardApplicationPool and ApplicationPoolServer classes.

+

The application pool is responsible for spawning applications, caching +spawned applications' handles, and cleaning up applications which have been +idle for an extended period of time.

+
+
+

2.3. The spawn server

+

The spawn server is written in Ruby, and its code can be found in the directory +lib/passenger. Its main executable is bin/passenger-spawn-server. +The spawn server’s RDoc documentation documents the +implementation in detail.

+

The spawn server consists of 3 logical layers:

+
    +
  1. +

    +The spawn manager. This is the topmost layer, and acts like a fascade for + all the underlying layers. Clients who use the spawn server only communicate + with this layer. +

    +
  2. +
  3. +

    +The framework spawner server. The spawn manager spawns a framework spawner + server for each unique Ruby on Rails framework version. Each framework + spawner server caches the code for exactly one Ruby on Rails framework + version. A spawn request for an application is forwarded to the framework + spawner server that contains the correct Ruby on Rails version for the + application. +

    +
  4. +
  5. +

    +The application spawner server. This is to the framework spawner server + what the framework spawner server is to the spawn manager. The framework + spawner server spawns an application spawner server for each unique Ruby on + Rails application (here “application” does not mean a running process, but + a set of (source code) files). An application spawner server caches the + code for exactly one application. +

    +
  6. +
+

+The spawn server’s architecture +

+

As you can see, we have two layers of code caching: when the spawn server +receives a request to spawn a new application instance, it will forward the +request to the correct framework spawner server (and will spawn that framework +spawner server if it doesn’t already exist), which — in turn — will forward +it to the correct application spawner server (which will, again, be created if +it doesn’t already exist).

+

Each layer is only responsible for the layer directly below. The spawn manager +only knows about framework spawner servers, and a framework spawner server only +knows about its application spawner servers. The application spawner server is, +however, not responsible for managing spawned application instances. If an +application instance is spawned by mod_passenger, its information will be sent +back to mod_passenger, which will be fully responsible for managing the +application instance’s life time (through the application pool).

+

Also note that each layer is a seperate process. This is required because a +single Ruby process can only load a single Ruby on Rails framework and a +single application.

+
+

2.3.1. Memory sharing

+

On most modern Unix operating systems, when a child process is created, it will +share most of its memory with the parent process. Processes are not supposed to +be able to access each others' memory, so the operating system makes a copy of +a piece of memory when it is written to by the parent process or the child +process. This is called copy-on-write (COW). Detailed background information +can be found on Ruby Enterprise +Edition’s website.

+

The spawn server makes use of this useful fact. Each layer shares its Ruby AST +memory with all of its lower layers, as long as the AST nodes in question +haven’t been written to. This means that all spawned Rails applications will — if possible — share the Ruby on Rails framework’s code, as well as its own +application code, with each other. This results in a dramatic reduction in +memory usage.

+
+ + + +
+Note + +

Sharing memory only works if Ruby +Enterprise Edition is used. This is because the standard Ruby interpreter’s +garbage collector isn’t copy-on-write friendly. Please visit the Ruby +Enterprise Edition website for technical details.

+

Passenger works fine with standard Ruby. You still get to enjoy reduced Rails +startup times. You just won’t be able to benefit from memory sharing.

+
+
+

Note that Rubinius's garbage collector is already +copy-on-write friendly.

+
+
+
+

2.4. Handling of concurrent requests

+

As explained earlier, a single Rails application instance can only handle a +single request at the same time. This is obviously undesirable. But before we +dive into the solution, let us take a look how the “competition” solves this +problem. PHP has similar problems: a single PHP script can also process only +one HTTP request at a time.

+
    +
  • +

    +mod_php “solves” this problem by using Apache’s MPM. In other words, + mod_php doesn’t do anything by itself at all. A single Apache worker + process/thread can only handle 1 PHP request at a time, but Apache spawns + multiple worker processes/threads. +

    +
  • +
  • +

    +PHP-FastCGI solves the problem by spawning multiple persistent PHP servers. + The number of PHP servers is independent from the number of Apache worker + processes/threads. This approach is a lot like existing Rails setups, in + which a frontend web server proxies requests to a persistent Mongrel cluster. +

    +
  • +
+

Passenger cannot use the mod_php way because it would force us to spawn a new +Rails application for each request, which is — as explained earlier — unacceptably slow. Instead, Passenger uses the PHP-FastCGI approach. We +maintain a pool of application instances, and whenever a request is received, +we forward the request to one of the application instances in the pool. The +size of the pool is configurable, which is useful for administrators of servers +that are either heavily loaded or have little memory.

+

The reader might also be interested in studying the application pool’s +algorithm, which is non-trivial. The algorithm is documented in detail in +ApplicationPool algorithm.txt.

+
+
+
+
+

3. Appendix A: About this document

+
+

The text of this document is licensed under the +Creative Commons +Attribution-Share Alike 3.0 Unported License.

+

+ +images/by_sa.png + +

+
+
+
+

+ + + + diff -Nru passenger-3.0.19+112~precise1/doc/Security of user switching support.html passenger-3.0.21/doc/Security of user switching support.html --- passenger-3.0.19+112~precise1/doc/Security of user switching support.html 1970-01-01 00:00:00.000000000 +0000 +++ passenger-3.0.21/doc/Security of user switching support.html 2013-05-29 12:09:58.000000000 +0000 @@ -0,0 +1,1833 @@ + + + + + +Security of user switching support in Passenger + + + + + + + +
+
+

1. Problem description

+
+
+ + + +
+Tip +It is strongly recommended that you first read our +Architectural Overview.
+
+

A straightforward implementation of Passenger will spawn Rails applications in +the same user context as Apache itself. On server machines which host multiple +websites for multiple users, this may not be desired. All Rails applications +spawned by Passenger will be able to read and write to all directories that the +web server can. So for example, Joe’s Rails applications could read Jane’s +Rails application’s database.yml or delete her application files. This is +also a problem that typically plagues PHP web hosts.

+

There are multiple ways to solve this problem. The goal of this document is to +inform the reader about the solutions have we have analyzed, so that +Passenger’s security may be peer reviewed.

+
+
+
+

2. Analysis of possible solutions

+
+

It seems that the only way to solve this problem on Unix, is to run each Rails +application server as its owner’s user and group. Passenger can make use of +one of the following methods to implement this:

+
    +
  1. +

    +Apache (and thus Passenger) must already be running as root. +

    +
  2. +
  3. +

    +Using Apache’s suEXEC. +

    +
  4. +
  5. +

    +A setuid root wrapper application must exist, to allow non-root processes + to obtain root privileges (or at least, the privilege to switch user). +

    +
  6. +
  7. +

    +For each user $X that Passenger will need to switch to, there must exist + a setuid $X wrapper application. +

    +
  8. +
  9. +

    +Using su. +

    +
  10. +
  11. +

    +Using sudo. +

    +
  12. +
+

Let us take a look at each method in detail.

+
+

2.1. Apache must already be running as root

+

First, let us take a look at the typical Apache setup, in which Apache is bound +to port 80, and uses the prefork MPM. Binding to any port lower than 1024 +requires root privileges, so Apache is typically run as root. This poses an +unacceptable security risk, so Apache’s prefork MPM will, upon receiving an +HTTP request, spawn a child process with the privileges of a normal user, +typically www-data or nobody. +See the documentation for the +prefork MPM - in particular the “User” and “Group” directives - for details. +The process which is responsible for spawning child processes (also called the +control process) is run as root. This is also true for +the worker MPM.

+

Since Passenger has access to the control process, in the typical Apache setup, +Passenger can already launch Rails applications as a different user. But now we +have to ask this question:

+
+
+

If Apache is not running as root, are there still any Passenger users who +want to run Rails applications as different users?

+
+
+

If the answer is yes, then we cannot use this method.

+

The advantage of this method is that setting up Apache to run as root is +incredibly easy, and requires no new framework to be written. However, testing +this method in automated unit tests will require running the unit test suit as +root.

+
+
+

2.2. Using Apache’s suEXEC

+

Apache’s suEXEC allows one to +run CGI processes as different users. But it seems that suEXEC can only be +used for CGI, and is not a general-purpose mechanism. The +PHP-suEXEC software allows one to run +PHP applications via suEXEC, but it requires patching suEXEC. If Passenger is +to use suEXEC, then it is likely that we’ll have to patch suEXEC. The suEXEC +website strongly discourages patching.

+
+
+

2.3. Using a setuid root wrapper application

+

If we use this method, we must be extremely careful. It must not be possible +for arbitrary processes to gain root privileges. We want Passenger, and only +Passenger, to be able to gain root privileges.

+

There are multiple ways to implement this security. The first one is to use +a password file, which only Apache and the wrapper can read, through +the use of proper file permissions. The password file must never be world +readable or writable.

+

It works as follows:

+
    +
  1. +

    +Passenger runs the wrapper. +

    +
  2. +
  3. +

    +Passenger passes the content of the password file to the wrapper, via + an anonymous pipe (or some other anonymous channel, that no other + processes can access). +

    +
  4. +
  5. +

    +The wrapper checks whether the passed content is the same as what is in + the password file. If it is, then it is proven that whatever application + ran the wrapper has read access to the password file, and thus is authorized + to use the wrapper. +

    +
  6. +
+

An obvious problem that arises is: how does the wrapper locate its own password +file? We obviously do not want to be able to specify the password filename as +an argument to the wrapper: that would defeat the point of the password file. +The solution is that the filename is to be hardcoded into the binary during +compile time.

+

Another way to implement security is to use a whitelist of users that are +allowed to use the wrapper. The wrapper can then check whether the calling +process’s user is in the whitelist.

+

Writing a wrapper is not too hard. Furthermore, unit tests do not have to be +run as root, in contrast to the run-Apache-as-root method.

+
+
+

2.4. Using a setuid $X wrapper application

+

A setuid $X wrapper will work in a fashion similar to the setuid root wrapper, +i.e. it will use a password file for authorization.

+

Passenger does not spawn Rails applications itself, but does so via the spawn +server. This spawn server is also responsible for preloading the Rails +framework and the Rails application code, in order to speed up the spawning +of Rails applications. See the design document of the spawn server for details. +The spawn server never calls exec(): doing so will make preloading useless. +If Passenger is to use a setuid $X wrapper, then it must start the spawn +server via the wrapper. The spawn server itself cannot use the wrapper.

+

However, doing so will make preloading less efficient. Passenger will be forced +to run a spawn server for each user. The different spawn servers do not share +memory with each other, so a lot of memory is wasted compared to the other +methods.

+

Implementing this will also take more work. One has to create a different +wrapper for each user, and to install it.

+
+
+

2.5. Using su +

+

The standard Unix su tool asks for the root password. It’s a bad idea for +Apache to know the root password, so using su is not a viable alternative.

+
+
+

2.6. Using sudo +

+

It might be possible to use the sudo utility. sudo can be configured in +such a way that the user Apache runs as can use sudo without having to enter a +password.

+

However, Passenger uses an anonymous communication channel (an unnamed Unix +socket) to communicate with the spawn server. sudo seems to close all file +descriptors before executing an application, so Passenger will have to +communicate with the spawn server via a non-anonymous channel, such as a named +Unix socket. Because other processes can access this channel, it can introduce +potential security problems. Note that passing information via program arguments +is not secure: it is possible to view that information with tools like ps, +or (on Linux) by reading the file /proc/$PID/cmdline.

+

So it seems sudo is not a viable alternative.

+
+
+

2.7. Common security issues

+

Whatever method Passenger will use, the following security principles must be +honored:

+
    +
  • +

    +Rails applications must never be run as root. +

    +
  • +
+

It might also be worthy to look into suEXEC’s security model for inspiration.

+

Also, the following questions remain:

+
    +
  • +

    +Is there a need for a user whitelist/blacklist? That is, is there a need for + the ability to restrict the set of users that Passenger can switch to? +

    +
  • +
+
+
+
+
+

3. Chosen solution

+
+

Running Apache as root and writing a setuid root wrapper are the main +contestants. The former is preferred, because it’s easier to implement.

+

We have had some conversations with people on the IRC channel #rubyonrails. +Among those people, nobody has ever run Apache as non-root. Because of this +we have chosen to implement the Running Apache as root +solution, until a significant number of users request us to implement the +setuid root wrapper solution.

+

Please read the Ruby API documentation — in particular +that of the ApplicationSpawner class — for implementation details. But to +make a long story short: it will switch to the owner of the file +config/environment.rb. User whitelisting/blacklisting is currently not +implemented. We rely on the system administrator to set the correct owner +on that file.

+

We have also not implemented suEXEC’s security model. suEXEC’s model is quite +paranoid, and although paranoia is good to a certain extend, it can be in the +way of usability while proving little extra security. We are not entirely +convinced that implementing suEXEC’s full security model will provide +significant benefits, but if you have good reasons to think otherwise, please +feel free to discuss it with us.

+
+
+
+

+ + + + diff -Nru passenger-3.0.19+112~precise1/doc/Users guide Apache.html passenger-3.0.21/doc/Users guide Apache.html --- passenger-3.0.19+112~precise1/doc/Users guide Apache.html 1970-01-01 00:00:00.000000000 +0000 +++ passenger-3.0.21/doc/Users guide Apache.html 2013-05-29 12:09:52.000000000 +0000 @@ -0,0 +1,6548 @@ + + + + + +Phusion Passenger users guide + + + + + + + +
+ +
+

1. Support information

+
+
+

1.1. Supported operating systems

+

Phusion Passenger works on any POSIX-compliant operating system. In other +words: practically any operating system on earth, except Microsoft Windows.

+

Phusion Passenger is confirmed on a large number of operating systems and Linux +distributions, including, but not limited to, Ubuntu, Debian, CentOS/Fedora/RHEL, +Gentoo, Mac OS X, FreeBSD and Solaris. Both 32-bit and 64-bit platforms are supported.

+

The only POSIX-compliant operating system on which Phusion Passenger for Apache is +known not to work at this time, is OpenBSD. Please use Phusion Passenger for Nginx +instead.

+

Please +report a bug +or +join our discussion forum +if it doesn’t work on your POSIX-compliant operating system.

+
+
+

1.2. Where to get support

+
+
+
+
+
+

2. Installing, upgrading and uninstalling Phusion Passenger

+
+
+

2.1. Generic installation instructions

+
+

2.1.1. Overview of installation methods

+

There are three ways to install Phusion Passenger:

+
    +
  1. +

    +By installing the Phusion Passenger gem, as instructed on the + “Install” page on the Phusion + Passenger website. +

    +
  2. +
  3. +

    +By downloading the source tarball from the Phusion Passenger website + (passenger-x.x.x.tar.gz). +

    +
  4. +
  5. +

    +By installing a native Linux package (e.g. Debian package). +

    +
  6. +
+

The following sections will explain each installation method. Please read the +section for the installation method that you prefer. In our opinion, installing +the gem or the native package is easiest. For these two installation methods, +Phusion Passenger provides an easy-to-use installer.

+
+
+

2.1.2. Preparation (gem and source tarball only)

+

If you want to install Phusion Passenger via the gem or the source tarball, +then some preparations might be required. You can skip this subsection if +you’re installing Phusion Passenger via a native Linux package, because no +compilation is necessary.

+
+
Switching to a root command prompt
+

Before installing, you will probably need to switch to the root user first. +When you install Phusion Passenger via a gem or a source tarball, some Phusion +Passenger files have to be compiled, which requires write access to the +directory in which the Phusion Passenger files are located. On Unix systems, +the root user is the user who has write access to the entire system. So unless +you know that your normal user account has write access to the Phusion Passenger +directory, you should switch to root before installing Phusion Passenger.

+

You can switch to root by typing the following command:

+
+
+
sudo -s
+
+
+

This will open a command prompt as the root user, from which you can proceed +with installing Phusion Passenger.

+

If your system does not have sudo installed, please type the following command instead, which should do the same thing:

+
+
+
su
+
+
+
+
+
Specifying the correct Apache installation
+

The Phusion Passenger installer will attempt to automatically detect Apache, +and compile Phusion Passenger against that Apache version. It does this by +looking for the apxs or apxs2 command in the PATH environment variable. +Apxs is an integral part of any Apache installation.

+

However, some systems have multiple Apache installations. This is likely +the case on MacOS X: the OS ships with Apache, but users tend to install +another Apache version seperately, e.g. via MacPorts. If your system has +multiple Apache installations, then you will need to tell the Phusion Passenger +installer which one to use. It is very important that you specify the +correct Apache installation, because if you load Phusion Passenger in an +Apache installation that it wasn’t compiled against, then it will likely +crash.

+

On yet other systems, Apache is installed in a non-standard location, +preventing the Phusion Passenger installer from detecting Apache. This +is most likely the case on systems on which Apache was installed by hand +from source, i.e. as opposed to installed through the system’s native +package manager. If this is the case, then you will also have to tell +the installer where it can find Apache.

+

To do so, set the APXS2 environment variable to the full path of the +correct apxs or apxs2 command. Suppose that you want to use the Apache +installation in /opt/apache2. Then, assuming that the corresponding +apxs program’s path is /opt/apache2/bin/apxs, type:

+
+
+
export APXS2=/opt/apache2/bin/apxs
+
+
+
+ + + +
+Note +On some systems, the apxs program might be called apxs2, and it might +be located in the sbin folder instead of the bin folder.
+
+
+ + + +
+Note + +
Environment variables and sudo +
By default, the sudo command will erase any environment variables that it +doesn’t recognize, prior to executing the given command. So if you set APXS2 as a +normal user, then run sudo passenger-install-apache2-module (which is the command +for the Phusion Passenger installer), then the installer will not receive the +environment variable value that you set. To solve this problem, please become root +prior to setting any environment variables, as described in the previous subsection.
+
+
+
+
Specifying the correct Ruby installation
+

If your system has multiple Ruby installations — which is likely the case on +MacOS X, or if you’ve also installed +Ruby Enterprise Edition — then you +will need to tell the operating system which Ruby installation to use, prior to +running the Phusion Passenger installer. If you only have one Ruby installation +(the case on most Linux systems), then you can skip this section because Phusion +Passenger will automatically detect it.

+

To specify a Ruby installation, prepend your Ruby installation’s bin +directory to the PATH environment variable. For example, if you have the +following Ruby installations:

+
    +
  • +

    +/usr/bin/ruby +

    +
  • +
  • +

    +/opt/myruby/bin/ruby +

    +
  • +
+

and you want to use the latter, then type:

+
+
+
export PATH=/opt/myruby/bin:$PATH
+
+
+
+
+
+

2.1.3. Installing via the gem

+

Please install the gem and then run the Phusion Passenger installer, by typing the +following commands:

+
+
+
gem install passenger-x.x.x.gem
+passenger-install-apache2-module
+
+
+

Please follow the instructions given by the installer.

+
+
+

2.1.4. Installing via the source tarball

+

Extract the tarball to whatever location you prefer. The Phusion Passenger files +are to reside in that location permanently. For example, if you would like +Phusion Passenger to reside in /opt/passenger-x.x.x:

+
+
+
cd /opt
+tar xzvf ~/YourDownloadsFolder/passenger-x.x.x.tar.gz
+
+
+

Next, run the included installer:

+
+
+
/opt/passenger-x.x.x/bin/passenger-install-apache2-module
+
+
+

Please follow the instructions given by the installer.

+
+ + + +
+Important +Please do not remove the passenger-x.x.x folder after +installation. Furthermore, the passenger-x.x.x folder must be accessible by Apache.
+
+
+
+

2.1.5. Installing via a native Linux package

+

John Leach from Brightbox has kindly provided a Ubuntu packages for Phusion Passenger. The package is available from the Brightbox repository.

+
+
+

2.1.6. What does the installer do?

+

Although we call it an “installer”, it doesn’t actually install anything. +The installer checks whether all required dependencies are installed, +compiles Phusion Passenger for you, and tells you how to modify the Apache +configuration file, but it doesn’t copy any files around.

+

passenger-install-apache2-module is actually just a user-friendly frontend +around the command rake apache2, which performs the actual compilation of +Phusion Passenger.

+
+
+
+

2.2. Operating system-specific instructions and information

+
+

2.2.1. MacOS X

+

Ben Ruebenstein has written an excellent +tutorial +on installing Phusion Passenger on OS X.

+
+
+

2.2.2. Ubuntu Linux

+ +
+
+

2.2.3. OpenSolaris

+

J Aaron Farr has written a guide +about setting up Ruby on Rails and Phusion Passenger on OpenSolaris and EC2.

+
+
+
+

2.3. Upgrading or downgrading Phusion Passenger

+

Upgrading or downgrading Phusion Passenger for Apache involves several steps.

+
    +
  1. +

    +First, you have to obtain and install the files associated with the version that you want to upgrade or downgrade to. You can do this in three ways: by using RubyGems, by downloading a tarball, or by installing a native Linux package. If you installed a native Linux package, then skip to the last step. If not, read on. +

    +
  2. +
  3. +

    +Then you have to recompile the Phusion Passenger Apache module by invoking +

    +
    +
    +
    # If you used RubyGems
    +sudo passenger-install-apache2-module
    +
    +# If you used the tarball
    +sudo /path-to-passenger/bin/passenger-install-apache2-module
    +
    +
    +
  4. +
  5. +

    +Finally, passenger-install-apache2-module will tell you to copy & paste some settings in the configuration file. Something that looks along the lines of: +

    +
    +
    +
    LoadModule passenger_module ...
    +PassengerRoot ...
    +PassengerRuby ...
    +
    +
    +

    Because you already had Phusion Passenger installed, you already had similar settings +in your Apache configuration file, just with different values. Replace the old settings with +the new ones that the installer outputs. It is important that the old settings are removed, +otherwise Phusion Passenger may malfunction. +4. Restart Apache. You’re now done.

    +
  6. +
+

Obtaining Phusion Passenger files with RubyGems

+
+
Open source
+

You can obtain the files associated with the latest open source Phusion Passenger release by invoking the following command:

+
+
+
+
sudo gem install passenger
+
+
+

You can also obtain a specific version by specifying the -v argument, like this:

+
+
+
sudo gem install passenger -v 3.0.0
+
+
+
+
Enterprise
+

If you’re using Phusion Passenger Enterprise then you should obtain the gem from the Customer Area instead. Login with your order reference and password. The Customer Area will show you a list of files. Download the gem file for the version you want (passenger-enterprise-server-x.x.x.gem) and install it with:

+
+
+
+
sudo gem install passenger-enterprise-server-x.x.x.gem
+
+
+

Obtaining Phusion Passenger files through a tarball

+

You can obtain the files associated with the latest open source Phusion Passenger release by downloading the tarball linked from the Phusion Passenger download page. If you want a specific version, please refer to the release archive on RubyForge.

+

If you’re using Phusion Passenger Enterprise then you should obtain the tarball from the Customer Area instead. Login with your order reference and password. The Customer Area will show you a list of files. Download the tarball for the version you want (passenger-enterprise-server-x.x.x.tar.gz).

+

Once you’ve obtained the tarball, extract it somewhere:

+

Upgrading with native Linux packages

+

When using native Linux packages, it is only possible to upgrade, not downgrade. Native Linux packages are only available for the open source Phusion Passenger, not for Phusion Passenger Enterprise.

+

Native Linux packages are contributed by third parties. Although they update pretty quickly, they lag behind gem and tarball releases, perhaps by a few days. Please learn more about native Linux packages at the Phusion Passenger website.

+
+
+

2.4. Unloading (disabling) Phusion Passenger from Apache without uninstalling it

+

You can temporarily unload (disable) Phusion Passenger from Apache, without +uninstalling the Phusion Passenger files, so that Apache behaves as if Phusion +Passenger was never installed in the first place. This might be useful to you if, +for example, you seem to be experiencing a problem caused by Phusion Passenger, +but you want to make sure whether that’s actually the case, without having +to through the hassle of uninstalling Phusion Passenger completely. When disabled, +Phusion Passenger will not occupy any memory or CPU or otherwise interfere with +Apache.

+

To unload Phusion Passenger from Apache, edit your Apache configuration file(s) +and comment out:

+
    +
  • +

    +all Phusion Passenger configuration directives. +

    +
  • +
  • +

    +the LoadModule passenger_module directive. +

    +
  • +
+

For example, if your configuration file looks like this…

+
+
+
Listen *:80
+NameVirtualHosts *:80
+....
+
+LoadModule passenger_module /somewhere/passenger-x.x.x/ext/apache2/mod_passenger.so
+
+PassengerRuby /usr/bin/ruby
+PassengerRoot /somewhere/passenger/x.x.x
+PassengerMaxPoolSize 10
+
+<VirtualHost *:80>
+    ServerName www.foo.com
+    DocumentRoot /webapps/foo/public
+    RailsBaseURI /rails
+</VirtualHost>
+
+
+

…then comment out the relevant directives, so that it looks like this:

+
+
+
Listen *:80
+NameVirtualHosts *:80
+....
+
+# LoadModule passenger_module /somewhere/passenger-x.x.x/ext/apache2/mod_passenger.so
+
+# PassengerRuby /usr/bin/ruby
+# PassengerRoot /somewhere/passenger/x.x.x
+# PassengerMaxPoolSize 10
+
+<VirtualHost *:80>
+    ServerName www.foo.com
+    DocumentRoot /webapps/foo/public
+    # RailsBaseURI /rails
+</VirtualHost>
+
+
+

After you’ve done this, save the file and restart Apache.

+
+
+

2.5. Uninstalling Phusion Passenger

+

To uninstall Phusion Passenger, please first remove all Phusion Passenger +configuration directives from your Apache configuration file(s). After you’ve +done this, you need to remove the Phusion Passenger files.

+
    +
  • +

    +If you installed Phusion Passenger via a gem, then type gem uninstall passenger. + You might have to run this as root. +

    +
  • +
  • +

    +If you installed Phusion Passenger via a source tarball, then remove the directory + in which you placed the extracted Phusion Passenger files. This directory is the + same as the one pointed to the by PassengerRoot configuration directive. +

    +
  • +
  • +

    +If you installed Phusion Passenger via a Debian package, then remove type + sudo apt-get remove libapache2-mod-passenger. +

    +
  • +
+
+
+
+
+

3. Deploying a Ruby on Rails 1.x or 2.x (but NOT Rails >= 3.x) application

+
+

Suppose you have a Ruby on Rails application in /webapps/mycook, and you own +the domain www.mycook.com. You can either deploy your application to the +virtual host’s root (i.e. the application will be accessible from the root URL, +http://www.mycook.com/), or in a sub URI (i.e. the application will be +accessible from a sub URL, such as http://www.mycook.com/railsapplication).

+
+ + + +
+Note +The default RAILS_ENV environment in which deployed Rails applications +are run, is “production”. You can change this by changing the +RailsEnv configuration option.
+
+
+

3.1. Deploying to a virtual host’s root

+

Add a virtual host entry to your Apache configuration file. Make sure that the +following conditions are met:

+
    +
  • +

    +The virtual host’s document root must point to your Ruby on Rails application’s + public folder. +

    +
  • +
  • +

    +The Apache per-directory permissions must allow access to this folder. +

    +
  • +
  • +

    +MultiViews must be disabled for this folder. +

    +
  • +
+

For example:

+
+
+
<VirtualHost *:80>
+    ServerName www.mycook.com
+    DocumentRoot /webapps/mycook/public
+    <Directory /webapps/mycook/public>
+        Allow from all
+        Options -MultiViews
+    </Directory>
+</VirtualHost>
+
+
+

You may also need to tweak your file/folder permissions. Make sure that the +following folders are readable and executable by Apache:

+
    +
  • +

    +this public folder. +

    +
  • +
  • +

    +the application’s config folder. +

    +
  • +
  • +

    +all parent folders. That is, /webapps/mycook and /webapps must also be readable and executable by Apache. +

    +
  • +
+

Then restart Apache. The application has now been deployed.

+
+
+

3.2. Deploying to a sub URI

+

Suppose that you already have a virtual host:

+
+
+
<VirtualHost *:80>
+    ServerName www.phusion.nl
+    DocumentRoot /websites/phusion
+    <Directory /websites/phusion>
+        Allow from all
+    </Directory>
+</VirtualHost>
+
+
+

And you want your Ruby on Rails application to be accessible from the URL +http://www.phusion.nl/rails.

+

To do this, make a symlink in the virtual host’s document root, and have it +point to your Ruby on Rails application’s public folder. For example:

+
+
+
ln -s /webapps/mycook/public /websites/phusion/rails
+
+
+

Next, add a RailsBaseURI option to the virtual host configuration, +and also make sure that:

+
    +
  • +

    +The Apache per-directory permissions allow access to this folder. +

    +
  • +
  • +

    +MultiViews is disabled for this folder. +

    +
  • +
+

For example:

+
+
+
<VirtualHost *:80>
+    ServerName www.phusion.nl
+    DocumentRoot /websites/phusion
+    <Directory /websites/phusion>
+        Allow from all
+    </Directory>
+
+    RailsBaseURI /rails                   # <-- These lines have
+    <Directory /websites/phusion/rails>   # <-- been added.
+        Options -MultiViews               # <--
+    </Directory>                          # <--
+</VirtualHost>
+
+
+

Then restart Apache. The application has now been deployed.

+
+ + + +
+Note +If you’re deploying to a sub-URI then please make sure that your view +templates correctly handles references to sub-URI static assets! Otherwise +you may find broken links to images, CSS files, JavaScripts, etc. Please read +How to fix broken images/CSS/JavaScript URIs in sub-URI deployments +for more information.
+
+
+ + + +
+Tip + +

You can deploy multiple Rails applications under a virtual host, by specifying +RailsBaseURI multiple times. For example:

+
+
+
<VirtualHost *:80>
+    ....
+    RailsBaseURI /app1
+    RailsBaseURI /app2
+    RailsBaseURI /app3
+</VirtualHost>
+
+
+
+
+
+
+

3.3. Redeploying (restarting the Ruby on Rails application)

+

Deploying a new version of a Ruby on Rails application is as simple as +re-uploading the application files, and restarting the application.

+

There are two ways to restart the application:

+
    +
  1. +

    +By restarting Apache. +

    +
  2. +
  3. +

    +By creating or modifying the file tmp/restart.txt in the Rails + application’s root folder. Phusion Passenger will + automatically restart the application during the next request. +

    +
  4. +
+

For example, to restart our example MyCook application, we type this in the +command line:

+
+
+
touch /webapps/mycook/tmp/restart.txt
+
+
+

Please note that, unlike earlier versions of Phusion Passenger, restart.txt +is not automatically deleted. Phusion Passenger checks whether the timestamp +of this file has changed in order to determine whether the application should +be restarted.

+
+
+

3.4. Migrations

+

Phusion Passenger is not related to Ruby on Rails migrations in any way. To +run migrations on your deployment server, please login to your deployment +server (e.g. with ssh) and type rake db:migrate RAILS_ENV=production in +a shell console, just like one would normally run migrations.

+
+
+

3.5. Capistrano integration

+ +
+
+
+
+

4. Deploying a Rack-based Ruby application (including Rails >= 3)

+
+

Phusion Passenger supports arbitrary Ruby web applications that follow the +Rack interface.

+

Phusion Passenger assumes that Rack application directories have a certain layout. +Suppose that you have a Rack application in /webapps/rackapp. Then that +folder must contain at least three entries:

+
    +
  • +

    +config.ru, a Rackup file for starting the Rack application. This file must contain + the complete logic for initializing the application. +

    +
  • +
  • +

    +public/, a folder containing public static web assets, like images and stylesheets. +

    +
  • +
  • +

    +tmp/, used for restart.txt (our application restart mechanism). This will + be explained in a following subsection. +

    +
  • +
+

So /webapps/rackapp must, at minimum, look like this:

+
+
+
/webapps/rackapp
+  |
+  +-- config.ru
+  |
+  +-- public/
+  |
+  +-- tmp/
+
+
+

Suppose you own the domain www.rackapp.com. You can either deploy your application +to the virtual host’s root (i.e. the application will be accessible from the root URL, +http://www.rackapp.com/), or in a sub URI (i.e. the application will be +accessible from a sub URL, such as http://www.rackapp.com/rackapp).

+
+ + + +
+Note +The default RACK_ENV environment in which deployed Rack applications +are run, is “production”. You can change this by changing the +RackEnv configuration option.
+
+
+

4.1. Tutorial/example: writing and deploying a Hello World Rack application

+

First we create a Phusion Passenger-compliant Rack directory structure:

+
+
+
$ mkdir /webapps/rack_example
+$ mkdir /webapps/rack_example/public
+$ mkdir /webapps/rack_example/tmp
+
+
+

Next, we write a minimal "hello world" Rack application:

+
+
+
$ cd /webapps/rack_example
+$ some_awesome_editor config.ru
+...type in some source code...
+$ cat config.ru
+app = proc do |env|
+    [200, { "Content-Type" => "text/html" }, ["hello <b>world</b>"]]
+end
+run app
+
+
+

Finally, we deploy it by adding the following configuration options to +the Apache configuration file:

+
+
+
<VirtualHost *:80>
+    ServerName www.rackexample.com
+    DocumentRoot /webapps/rack_example/public
+    <Directory /webapps/rack_example/public>
+        Allow from all
+        Options -MultiViews
+    </Directory>
+</VirtualHost>
+
+
+

And we’re done! After an Apache restart, the above Rack application will be available +under the URL http://www.rackexample.com/.

+
+
+

4.2. Deploying to a virtual host’s root

+

Add a virtual host entry to your Apache configuration file. Make sure that the +following conditions are met:

+
    +
  • +

    +The virtual host’s document root must point to your Rack application’s + public folder. +

    +
  • +
  • +

    +The Apache per-directory permissions must allow access to this folder. +

    +
  • +
  • +

    +MultiViews must be disabled for this folder. +

    +
  • +
+

For example:

+
+
+
<VirtualHost *:80>
+    ServerName www.rackapp.com
+    DocumentRoot /webapps/rackapp/public
+    <Directory /webapps/rackapp/public>
+        Allow from all
+        Options -MultiViews
+    </Directory>
+</VirtualHost>
+
+
+

You may also need to tweak your file/folder permissions. Make sure that the +following folders are readable and executable by Apache:

+
    +
  • +

    +this public folder. +

    +
  • +
  • +

    +the application’s config folder. +

    +
  • +
  • +

    +all parent folders. That is, /webapps/rackapp and /webapps must also be readable and executable by Apache. +

    +
  • +
+

Then restart Apache. The application has now been deployed.

+
+
+

4.3. Deploying to a sub URI

+

Suppose that you already have a virtual host:

+
+
+
<VirtualHost *:80>
+    ServerName www.phusion.nl
+    DocumentRoot /websites/phusion
+    <Directory /websites/phusion>
+        Allow from all
+    </Directory>
+</VirtualHost>
+
+
+

And you want your Rack application to be accessible from the URL +http://www.phusion.nl/rack.

+

To do this, make a symlink in the virtual host’s document root, and have it +point to your Rack application’s public folder. For example:

+
+
+
ln -s /webapps/rackapp/public /websites/phusion/rack
+
+
+

Next, add a RackBaseURI option to the virtual host configuration, +and also make sure that:

+
    +
  • +

    +The Apache per-directory permissions allow access to this folder. +

    +
  • +
  • +

    +MultiViews is disabled for this folder. +

    +
  • +
+

For example:

+
+
+
<VirtualHost *:80>
+    ServerName www.phusion.nl
+    DocumentRoot /websites/phusion
+    <Directory /websites/phusion>
+        Allow from all
+    </Directory>
+
+    RackBaseURI /rack                     # <-- These lines have
+    <Directory /websites/phusion/rack>    # <-- been added.
+        Options -MultiViews               # <--
+    </Directory>                          # <--
+</VirtualHost>
+
+
+

Then restart Apache. The application has now been deployed.

+
+ + + +
+Tip + +

You can deploy multiple Rack applications under a virtual host, by specifying +RackBaseURI multiple times. For example:

+
+
+
<VirtualHost *:80>
+    ....
+    RackBaseURI /app1
+    RackBaseURI /app2
+    RackBaseURI /app3
+</VirtualHost>
+
+
+
+
+
+
+

4.4. Redeploying (restarting the Rack application)

+

Deploying a new version of a Rack application is as simple as +re-uploading the application files, and restarting the application.

+

There are two ways to restart the application:

+
    +
  1. +

    +By restarting Apache. +

    +
  2. +
  3. +

    +By creating or modifying the file tmp/restart.txt in the Rack + application’s root folder. Phusion Passenger will + automatically restart the application. +

    +
  4. +
+

For example, to restart our example application, we type this in the +command line:

+
+
+
touch /webapps/rackapp/tmp/restart.txt
+
+
+
+
+

4.5. Rackup specifications for various web frameworks

+

This subsection shows example config.ru files for various web frameworks.

+
+

4.5.1. Camping

+
+
+
require 'rubygems'
+require 'rack'
+require 'camping'
+
+##### Begin Camping application
+Camping.goes :Blog
+
+...your application code here...
+##### End Camping application
+
+run Rack::Adapter::Camping.new(Blog)
+
+
+

For Camping versions 2.0 and up, using run Blog as the final line will do.

+
+
+

4.5.2. Halcyon

+
+
+
require 'rubygems'
+require 'halcyon'
+$LOAD_PATH.unshift(Halcyon.root / 'lib')
+Halcyon::Runner.load_config Halcyon.root/'config'/'config.yml'
+run Halcyon::Runner.new
+
+
+
+
+

4.5.3. Mack

+
+
+
ENV["MACK_ENV"] = ENV["RACK_ENV"]
+load("Rakefile")
+require 'rubygems'
+require 'mack'
+run Mack::Utils::Server.build_app
+
+
+
+
+

4.5.4. Merb

+
+
+
require 'rubygems'
+require 'merb-core'
+
+Merb::Config.setup(
+  :merb_root   => ::File.expand_path(::File.dirname(__FILE__)),
+  :environment => ENV['RACK_ENV']
+)
+Merb.environment = Merb::Config[:environment]
+Merb.root = Merb::Config[:merb_root]
+Merb::BootLoader.run
+
+run Merb::Rack::Application.new
+
+
+
+
+

4.5.5. Ramaze

+
+
+
require "rubygems"
+require "ramaze"
+Ramaze.trait[:essentials].delete Ramaze::Adapter
+require "start"
+Ramaze.start!
+run Ramaze::Adapter::Base
+
+
+
+
+

4.5.6. Sinatra

+
+
+
require 'rubygems'
+require 'sinatra'
+require 'app.rb'
+
+run Sinatra::Application
+
+
+
+
+
+
+
+

5. Configuring Phusion Passenger

+
+

After installation, Phusion Passenger does not need any further configurations. +Nevertheless, the system administrator may be interested in changing +Phusion Passenger’s behavior. Phusion Passenger’s Apache module supports the +following configuration options:

+
+

5.1. PassengerRoot <directory>

+

The location to the Phusion Passenger root directory. This configuration option +is essential to Phusion Passenger, and allows Phusion Passenger to locate its own +data files. The correct value is given by the installer.

+

If you’ve moved Phusion Passenger to a different directory then you need to update +this option as well. Please read +Moving Phusion Passenger to a different directory for more information.

+

This required option may only occur once, in the global server configuration.

+
+
+

5.2. PassengerRuby <filename>

+

This option allows one to specify the Ruby interpreter to use.

+

This option may only occur once, in the global server configuration. +The default is ruby.

+
+
+

5.3. PassengerAppRoot <path/to/root>

+

By default, Phusion Passenger assumes that the application’s root directory +is the parent directory of the public directory. This option allows one to +specify the application’s root independently from the DocumentRoot, which +is useful if the public directory lives in a non-standard place.

+

This option may occur in the following places:

+
    +
  • +

    +In the global server configuration. +

    +
  • +
  • +

    +In a virtual host configuration block. +

    +
  • +
  • +

    +In a <Directory> or <Location> block. +

    +
  • +
  • +

    +In .htaccess, if AllowOverride Options is on. +

    +
  • +
+

In each place, it may be specified at most once.

+

Example:

+
+
+
<VirtualHost test.host>
+    DocumentRoot /var/rails/zena/sites/example.com/public
+    PassengerAppRoot /var/rails/zena   # <-- normally Phusion Passenger would
+                                       #     have assumed that the application
+                                       #     root is "/var/rails/zena/sites/example.com"
+</VirtualHost>
+
+
+
+
+

5.4. PassengerSpawnMethod <string>

+
+ + + +
+Tip + +
"What spawn method should I use?"
+

This subsection attempts to describe spawn methods, but it’s okay if you don’t (want to) +understand it, as it’s mostly a technical detail. You can basically follow this rule of thumb:

+
+
+

If your application works on Mongrel, but not on Phusion Passenger, then set +PassengerSpawnMethod to conservative. Otherwise, leave it at smart-lv2 (the default).

+
+
+

However, we do recommend you to try to understand it. The smart and smart-lv2 spawn +methods bring many benefits.

+
+
+

Internally, Phusion Passenger spawns multiple Ruby application processes in order to handle +requests. But there are multiple ways with which processes can be spawned, each having +its own set of pros and cons. Supported spawn methods are:

+
+
+smart +
+
+

+When this spawn method is used, Phusion Passenger will attempt to cache any +framework code (e.g. Ruby on Rails itself) and application code for a limited +period of time. Please read Spawning methods explained +for a more detailed explanation of what smart spawning exactly does. +

+

Pros: +This can significantly decrease spawn time (by as much as 90%). And, when Ruby Enterprise +Edition is used, memory usage can be reduced by 33% on average.

+

Cons: +Some applications and libraries are not compatible with smart spawning. +If that’s the case for your application, then you should use conservative as +spawning method. Please read Spawning methods explained +for possible compatibility issues.

+
+
+smart-lv2 +
+
+

+This spawning method is similar to smart but it skips the framework spawner +and uses the application spawner directly. This means the framework code is not +cached between multiple applications, although it is still cached within +instances of the same application. Please read +Spawning methods explained for a more detailed +explanation of what smart-lv2 spawning exactly does. +

+

Pros: It is compatible with a larger number of applications when compared to +the smart method, and still performs some caching.

+

Cons: It is slower than smart spawning if you have many applications which +use the same framework version. It is therefore advised that shared hosts use the +smart method instead.

+
+
+conservative +
+
+

+This spawning method is similar to the one used in Mongrel Cluster. It does not +perform any code caching at all. Please read +Spawning methods explained for a more detailed +explanation of what conservative spawning exactly does. +

+

Pros: +Conservative spawning is guaranteed to be compatible with all applications +and libraries.

+

Cons: +Much slower than smart spawning. Every spawn action will be equally slow, though no slower than +the startup time of a single server in Mongrel Cluster. Conservative spawning will also +render Ruby Enterprise Edition’s memory reduction technology useless.

+
+
+

This option may occur in the following places:

+
    +
  • +

    +In the global server configuration. +

    +
  • +
  • +

    +In a virtual host configuration block. +

    +
  • +
+

In each place, it may be specified at most once. The default value is smart-lv2.

+
+
+

5.5. PassengerUseGlobalQueue <on|off>

+

Turns the use of global queuing on or off.

+

This option may occur in the following places:

+
    +
  • +

    +In the global server configuration. +

    +
  • +
  • +

    +In a virtual host configuration block. +

    +
  • +
+

In each place, it may be specified at most once. The default value is on.

+

This feature is sponsored by 37signals.

+
+
What does this option do?
+

Recall that Phusion Passenger spawns multiple backend processes (e.g. multiple +Ruby on Rails processes), each which processes HTTP requests serially. One of +Phusion Passenger’s jobs is to forward HTTP requests to a suitable backend +process. A backend process may take an arbitrary amount of time to process a +specific HTTP request. If the websites are (temporarily) under high load, and +the backend processes cannot process the requests fast enough, then some +requests may have to be queued.

+
+

If global queuing is turned off, then Phusion Passenger will use fair load +balancing. This means that each backend process will have its own private +queue. Phusion Passenger will forward an HTTP request to the backend process +that has the least amount of requests in its queue.

+

If global queuing is turned on, then Phusion Passenger will use a global queue +that’s shared between all backend processes. If an HTTP request comes in, and +all the backend processes are still busy, then Phusion Passenger will wait until +at least one backend process is done, and will then forward the request to that +process.

+
+
When to turn on global queuing?
+

You should turn on global queuing if one of your web applications may have +long-running requests.

+
+

For example suppose that:

+
    +
  • +

    +global queuing is turned off. +

    +
  • +
  • +

    +we’re currently in a state where all backend processes have 3 requests in + their queue, except for a single backend process, which has 1 request in its + queue. +

    +
  • +
+

The situation looks like this:

+
+
+
Backend process A:  [*     ]  (1 request in queue)
+Backend process B:  [***   ]  (3 requests in queue)
+Backend process C:  [***   ]  (3 requests in queue)
+Backend process D:  [***   ]  (3 requests in queue)
+
+
+

Each process is currently serving short-running requests.

+

Phusion Passenger will forward the next request to backend process A. A will +now have 2 items in its queue. We’ll mark this new request with an X:

+
+
+
Backend process A:  [*X    ]  (2 request in queue)
+Backend process B:  [***   ]  (3 requests in queue)
+Backend process C:  [***   ]  (3 requests in queue)
+Backend process D:  [***   ]  (3 requests in queue)
+
+
+

Assuming that B, C and D still aren’t done with their current request, the next +HTTP request - let’s call this Y - will be forwarded to backend process A as +well, because it has the least number of items in its queue:

+
+
+
Backend process A:  [*XY   ]  (3 requests in queue)
+Backend process B:  [***   ]  (3 requests in queue)
+Backend process C:  [***   ]  (3 requests in queue)
+Backend process D:  [***   ]  (3 requests in queue)
+
+
+

But if request X happens to be a long-running request that needs 60 seconds to +complete, then we’ll have a problem. Y won’t be processed for at least 60 +seconds. It would have been a better idea if Y was forward to processes B, C or +D instead, because they only have short-living requests in their queues.

+

This problem will be avoided entirely if you turn global queuing on. With global +queuing, all backend processes will share the same queue. The first backend +process that becomes available will take from the queue, and so this +“queuing-behind-long-running-request” problem will never occur.

+
+
+

5.6. PassengerEnabled <on|off>

+

You can set this option to off to completely disable Phusion Passenger for +a certain location. This is useful if, for example, you want to integrate a PHP +application into the same virtual host as a Rails application.

+

Suppose that you have a Rails application in /apps/foo. Suppose that you’ve +dropped Wordpress — a blogging application written in PHP — in +/apps/foo/public/wordpress. You can then configure Phusion Passenger as +follows:

+
+
+
<VirtualHost *:80>
+    ServerName www.foo.com
+    DocumentRoot /apps/foo/public
+    <Directory /apps/foo/public/wordpress>
+        PassengerEnabled off
+        AllowOverride all      # <-- Makes Wordpress's .htaccess file work.
+    </Directory>
+</VirtualHost>
+
+
+

This way, Phusion Passenger will not interfere with Wordpress.

+

PassengerEnabled may occur in the following places:

+
    +
  • +

    +In the global server configuration. +

    +
  • +
  • +

    +In a virtual host configuration block. +

    +
  • +
  • +

    +In a <Directory> or <Location> block. +

    +
  • +
  • +

    +In .htaccess. +

    +
  • +
+

In each place, it may be specified at most once. The default value is on.

+
+
+

5.7. PassengerTempDir <directory>

+

Specifies the directory that Phusion Passenger should use for storing temporary +files. This includes things such as Unix socket files, buffered file uploads +(see also PassengerUploadBufferDir), etc.

+

This option may be specified once, in the global server configuration. The +default temp directory that Phusion Passenger uses is /tmp.

+

This option is especially useful if Apache is not allowed to write to /tmp +(which is the case on some systems with strict SELinux policies) or if the +partition that /tmp lives on doesn’t have enough disk space.

+
+
Command line tools
+

Some Phusion Passenger command line administration tools, such as +passenger-status, must know what Phusion Passenger’s temp directory is +in order to function properly. You can pass the directory through the +PASSENGER_TMPDIR environment variable, or the TMPDIR environment variable +(the former will be used if both are specified).

+
+

For example, if you set PassengerTempDir to /my_temp_dir, then invoke +passenger-status after you’ve set the PASSENGER_TMPDIR or TMPDIR +environment variable, like this:

+
+
+
export PASSENGER_TMPDIR=/my_temp-dir
+sudo -E passenger-status
+# The -E option tells 'sudo' to preserve environment variables.
+
+
+
+
+

5.8. PassengerUploadBufferDir <directory>

+

Phusion Passenger buffers large file uploads to disk in order prevent slow file +uploads from blocking web applications. By default, a subdirectory in the +system’s temporary files directory (or a subdirectory in the directory specified +in PassengerTempDir, if set) is automatically created for +storing these buffered file uploads.

+

This configuration directive allows you to specify a different directory for storing +buffered file uploads. If you’ve specified such a directory (as opposed to using +Phusion Passenger’s default) then you must ensure that this directory exists.

+

This configuration directive is also useful if you’re using apache2-mpm-itk. +The buffered file upload directory that Phusion Passenger creates by default has +very strict permissions: it can only be accessed by the Apache worker processes. +However, Phusion Passenger assumes that all Apache worker processes are running +as the same user. apache2-mpm-itk breaks this assumption by running multiple +Apache worker processes as different users. So if you’re using apace2-mpm-itk, +you should set this option to a directory that is writable by all Apache worker +processes, such as /tmp.

+

You may specify PassengerUploadBufferDir in the following places:

+
    +
  • +

    +In the global server configuration. +

    +
  • +
  • +

    +In a virtual host configuration block. +

    +
  • +
  • +

    +In a <Directory> or <Location> block. +

    +
  • +
  • +

    +In .htaccess, if AllowOverrides Options is enabled. +

    +
  • +
+

In each place, it may be specified at most once.

+
+
+

5.9. PassengerRestartDir <directory>

+

As described in the deployment chapters of this document, Phusion Passenger +checks the file tmp/restart.txt in the applications' +root directory for restarting applications. Sometimes it +may be desirable for Phusion Passenger to look in a different directory instead, +for example for security reasons (see below). This option allows you to +customize the directory in which restart.txt is searched for.

+

You may specify PassengerRestartDir in the following places:

+
    +
  • +

    +In the global server configuration. +

    +
  • +
  • +

    +In a virtual host configuration block. +

    +
  • +
  • +

    +In a <Directory> or <Location> block. +

    +
  • +
  • +

    +In .htaccess, if AllowOverrides Options is enabled. +

    +
  • +
+

In each place, it may be specified at most once.

+

You can either set it to an absolute directory, or to a directory relative to +the application root. Examples:

+
+
+
<VirtualHost *:80>
+    ServerName www.foo.com
+    # Phusion Passenger will check for /apps/foo/public/tmp/restart.txt
+    DocumentRoot /apps/foo/public
+</VirtualHost>
+
+<VirtualHost *:80>
+    ServerName www.bar.com
+    DocumentRoot /apps/bar/public
+    # An absolute filename is given; Phusion Passenger will
+    # check for /restart_files/bar/restart.txt
+    PassengerRestartDir /restart_files/bar
+</VirtualHost>
+
+<VirtualHost *:80>
+    ServerName www.baz.com
+    DocumentRoot /apps/baz/public
+    # A relative filename is given; Phusion Passenger will
+    # check for /apps/baz/restart_files/restart.txt
+    #
+    # Note that this directory is relative to the APPLICATION ROOT, *not*
+    # the value of DocumentRoot!
+    PassengerRestartDir restart_files
+</VirtualHost>
+
+
+
+
What are the security reasons for wanting to customize PassengerRestartDir?
+

Touching restart.txt will cause Phusion Passenger to restart the application. +So anybody who can touch restart.txt can effectively cause a Denial-of-Service +attack by touching restart.txt over and over. If your web server or one of your +web applications has the permission to touch restart.txt, and one of them has a +security flaw which allows an attacker to touch restart.txt, then that will +allow the attacker to cause a Denial-of-Service.

+
+

You can prevent this from happening by pointing PassengerRestartDir to a +directory that’s readable by Apache, but only writable by administrators.

+
+
+

5.10. PassengerBufferResponse <on|off>

+

When turned on, application-generated responses are buffered in memory. By buffering +responses, protection is provided against slow HTTP clients that can not read your +response immediately.

+

For example, consider an HTTP client that’s on a dial-up modem link, and your +application process generates a 2 MB response. If response buffering is turned +off then your application process will be blocked until the entire 2 MB has been +sent out to the HTTP client. This disallows your application process to do any useful +work in the mean time. By enabling response buffering, Phusion Passenger will read +the application response as quickly as possible and will take care of slow clients.

+

However, keep in mind that enabling this option will make streaming responses +impossible. Consider for example this piece of Rails code:

+
+
+
render :text => lambda { |response, output|
+    10.times do |i|
+        output.write("entry #{i}\n")
+        output.flush
+        sleep 1
+    end
+}
+
+
+

…or this piece of Rack code:

+
+
+
class Response
+    def each
+        10.times do |i|
+            yield("entry #{i}\n")
+            sleep 1
+        end
+    end
+end
+
+app = lambda do |env|
+    [200, { "Content-Type" => "text/plain" }, Response.new]
+end
+
+
+

When response buffering is turned on, Phusion Passenger will wait until +the application is done sending the entire response before forwarding it +to the client. The client will not receive anything for 10 seconds, +after which it receives the entire response at once. +When response buffering is turned off, it works as expected: the client +receives an "entry X" message every second for 10 seconds.

+

This option may occur in the following places:

+
    +
  • +

    +In the global server configuration. +

    +
  • +
  • +

    +In a virtual host configuration block. +

    +
  • +
  • +

    +In a <Directory> or <Location> block. +

    +
  • +
  • +

    +In .htaccess. +

    +
  • +
+

In each place, it may be specified at most once. The default value is on.

+
+ + + +
+Note + +

The PassengerBufferResponse directive should be turned off +if responses can be huge. Because entire responses are buffered in memory when turned on.

+
+
+
+
+

5.11. PassengerRollingRestarts <on|off>

+

This feature is only available in Phusion Passenger Enterprise. It was introduced in version 3.0.0. Buy Phusion Passenger Enterprise here.

+

Enables or disables support for rolling restarts. Normally when you +restart an application (by touching restart.txt), Phusion Passenger would +shut down all application processes and spawn a new one. The spawning +of a new application process could take a while, and any requests that +come in during this time will be blocked until this first application +process has spawned.

+

But when rolling restarts are enabled, Phusion Passenger Enterprise will:

+
    +
  1. +

    +Spawn a new process in the background. +

    +
  2. +
  3. +

    +When it’s done spawning, Phusion Passenger Enterprise will replace one of the old processes with this newly spawned one. +

    +
  4. +
  5. +

    +Step 1 and 2 are repeated until all processes have been replaced. +

    +
  6. +
+

This way, visitors will not experience any delays when you are restarting your application. This allows you to, for example, upgrade your application often without degrading user experience.

+

Rolling restarts have a few caveat however that you should be aware of:

+
    +
  • +

    +Upgrading an application sometimes involves upgrading the database schema. + With rolling restarts, there may be a point in time during which processes + belonging to the previous version and processes belonging to the new version + both exist at the same time. Any database schema upgrades you perform must + therefore be backwards-compatible with the old application version. +

    +
  • +
  • +

    +Because there’s no telling which process will serve a request, users may + not see changes brought about by the new version until all processes have + been restarted. It is for this reason that you should not use rolling + restarts in development, only in production. +

    +
  • +
+

This option may occur in the following places:

+
    +
  • +

    +In the global server configuration. +

    +
  • +
  • +

    +In a virtual host configuration block. +

    +
  • +
  • +

    +In a <Directory> or <Location> block. +

    +
  • +
  • +

    +In .htaccess, if AllowOverride Options is on. +

    +
  • +
+

In each place, it may be specified at most once. The default value is off.

+
+
+

5.12. PassengerResistDeploymentErrors <on|off>

+

This feature is only available in Phusion Passenger Enterprise. It was introduced in version 3.0.0. Buy Phusion Passenger Enterprise here.

+

Enables or disables resistance against deployment errors.

+

Suppose you’ve upgraded your application and you’ve issues a command to restart it (by touching restart.txt), but the application code contains an error that prevents Phusion Passenger from successfully spawning a process (e.g. a syntax error). Phusion Passenger would normally display an error message in response to this.

+

By enabling deployment error resistance, Phusion Passenger Enterprise would instead do this:

+
    +
  • +

    +It passes the request to one of the existing application processes (that belong to the previous version of the application). The visitor will not see a Phusion Passenger process spawning error message. +

    +
  • +
  • +

    +It logs the error to the global web server error log file. +

    +
  • +
  • +

    +It sets an internal flag so that no processes for this application will be spawned (even when the current traffic would normally result in more processes being spawned) and no processes will be idle cleaned. Processes could still be shutdown because of other events, e.g. because their memory limit have been reached. +

    +
  • +
+

This way, visitors will suffer minimally from deployment errors. Phusion Passenger will attempt to restart the application again next time restart.txt is touched.

+

Enabling deployment error resistance only works if rolling restart is also enabled.

+

This option may occur in the following places:

+
    +
  • +

    +In the global server configuration. +

    +
  • +
  • +

    +In a virtual host configuration block. +

    +
  • +
  • +

    +In a <Directory> or <Location> block. +

    +
  • +
  • +

    +In .htaccess, if AllowOverride Options is on. +

    +
  • +
+

In each place, it may be specified at most once. The default value is off.

+
+
+

5.13. Security options

+
+

5.13.1. PassengerUserSwitching <on|off>

+

Whether to enable user switching support.

+

This option may only occur once, in the global server configuration. +The default value is on.

+
+
+

5.13.2. PassengerUser <username>

+

If user switching support is enabled, then Phusion Passenger will +by default run the web application as the owner of the file config/environment.rb +(for Rails apps) or config.ru (for Rack apps). This option allows you to override +that behavior and explicitly set a user to run the web application as, regardless +of the ownership of environment.rb/config.ru.

+

This option may occur in the following places:

+
    +
  • +

    +In the global server configuration. +

    +
  • +
  • +

    +In a virtual host configuration block. +

    +
  • +
  • +

    +In a <Directory> or <Location> block. +

    +
  • +
+

In each place, it may be specified at most once.

+
+
+

5.13.3. PassengerGroup <group name>

+

If user switching support is enabled, then Phusion Passenger will +by default run the web application as the primary group of the owner of the file +config/environment.rb (for Rails apps) or config.ru (for Rack apps). This option +allows you to override that behavior and explicitly set a group to run the web application +as, regardless of the ownership of environment.rb/config.ru.

+

<group name> may also be set to the special value !STARTUP_FILE!, in which case +the web application’s group will be set to environment.rb/config.ru's group.

+

This option may occur in the following places:

+
    +
  • +

    +In the global server configuration. +

    +
  • +
  • +

    +In a virtual host configuration block. +

    +
  • +
  • +

    +In a <Directory> or <Location> block. +

    +
  • +
+

In each place, it may be specified at most once.

+
+
+

5.13.4. PassengerDefaultUser <username>

+

Phusion Passenger enables user switching support by default. +This configuration option allows one to specify the user that applications must +run as, if user switching fails or is disabled.

+

This option may only occur once, in the global server configuration. +The default value is nobody.

+
+
+

5.13.5. PassengerDefaultGroup <group name>

+

Phusion Passenger enables user switching support by default. +This configuration option allows one to specify the group that applications must +run as, if user switching fails or is disabled.

+

This option may only occur once, in the global server configuration. +The default value is the primary group of the user specifified by +PassengerDefaultUser.

+
+
+

5.13.6. PassengerFriendlyErrorPages <on|off>

+

Phusion Passenger can display friendly error pages whenever an application fails +to start. This friendly error page presents the startup error message, some +suggestions for solving the problem, and a backtrace. This feature is very useful +during application development and useful for less experienced system administrators, +but the page might reveal potentially sensitive information, depending on the +application. Experienced system administrators who are using Phusion Passenger +on serious production servers should consider turning this feature off.

+

This option may occur in the following places:

+
    +
  • +

    +In the global server configuration. +

    +
  • +
  • +

    +In a virtual host configuration block. +

    +
  • +
  • +

    +In a <Directory> or <Location> block. +

    +
  • +
  • +

    +In .htaccess, if AllowOverride Options is on. +

    +
  • +
+

In each place, it may be specified at most once. The default value is on.

+
+
+
+

5.14. Resource control and optimization options

+
+

5.14.1. PassengerMaxPoolSize <integer>

+

The maximum number of application processes that may +simultaneously exist. A larger number results in higher memory usage, +but improved ability to handle concurrent HTTP clients.

+

The optimal value depends on your system’s hardware and the server’s average +load. You should experiment with different values. But generally speaking, +the value should be at least equal to the number of CPUs (or CPU cores) that +you have. If your system has 2 GB of RAM, then we recommend a value of 15. +If your system is a Virtual Private Server (VPS) and has about 256 MB RAM, and +is also running other services such as MySQL, then we recommend a value of 2.

+

If you find that your server is unable to handle the load on your Rails/Rack websites +(i.e. running out of memory) then you should lower this value. (Though if your +sites are really that popular, then you should strongly consider upgrading your +hardware or getting more servers.)

+

This option may only occur once, in the global server configuration. +The default value is 6.

+
+ + + +
+Tip +We strongly recommend you to use Ruby Enterprise Edition. This allows you to reduce the memory usage of your Ruby on Rails applications +by about 33%, and it’s not hard to install.
+
+
+
+

5.14.2. PassengerMinInstances <integer>

+

This specifies the minimum number of application processes that should exist for a +given application. You should set this option to a +non-zero value if you want to avoid potentially long startup times after a website +has been idle for an extended period.

+

Please note that this option does not pre-start application processes during Apache +startup. It just makes sure that when the application is first accessed:

+
    +
  1. +

    +at least the given number of processes will be spawned. +

    +
  2. +
  3. +

    +the given number of processes will be kept around even when processes are being + idle cleaned (see PassengerPoolIdleTime). +

    +
  4. +
+

If you want to pre-start application processes during Apache startup, then you should use the PassengerPreStart directive, possibly in combination with +PassengerMinInstances. This behavior might seem counter-intuitive at first sight, +but PassengerPreStart explains the rationale behind it.

+

For example, suppose that you have the following configuration:

+
+
+
PassengerMaxPoolSize 15
+PassengerPoolIdleTime 10
+
+<VirtualHost *:80>
+    ServerName foobar.com
+    DocumentRoot /webapps/foobar/public
+    PassengerMinInstances 3
+</VirtualHost>
+
+
+

When you start Apache, there are 0 application processes for foobar.com. Things will +stay that way until someone visits foobar.com. Suppose that there is only 1 visitor. +1 application process will be started immediately to serve the visitor, while 2 will +be spawned in the background. After 10 seconds, when the idle timeout has +been reached, these 3 application processes will not be cleaned up.

+

Now suppose that there’s a sudden spike of traffic, and 100 users visit foobar.com +simultanously. Phusion Passenger will start 12 more application processes. After the idle +timeout of 10 seconds have passed, Phusion Passenger will clean up 12 application +processes, keeping 3 processes around.

+

The PassengerMinInstances option may occur in the following places:

+
    +
  • +

    +In the global server configuration. +

    +
  • +
  • +

    +In a virtual host configuration block. +

    +
  • +
  • +

    +In a <Directory> or <Location> block. +

    +
  • +
  • +

    +In .htaccess, if AllowOverride Limits is on. +

    +
  • +
+

In each place, it may be specified at most once. The default value is 1.

+
+
+

5.14.3. PassengerMaxInstances <integer>

+

This feature is only available in Phusion Passenger Enterprise. It was introduced in version 3.0.0. Buy Phusion Passenger Enterprise here.

+

The maximum number of application processes that may simultaneously exist +for an application. This helps to make sure that a single application +will not occupy all available slots in the application pool.

+

This value must be less than PassengerMaxPoolSize. A value of 0 +means that there is no limit placed on the number of processes a single application +may spawn, i.e. only the global limit of PassengerMaxPoolSize +will be enforced.

+

This option may occur in the following places:

+
    +
  • +

    +In the global server configuration. +

    +
  • +
  • +

    +In a virtual host configuration block. +

    +
  • +
+

In each place, it may be specified at most once. The default value is 0.

+
+ + + +
+Tip + +
Practical usage example
+

Suppose that you’re hosting two web applications on your server, a personal +blog and an e-commerce website. You’ve set PassengerMaxPoolSize +to 10. The e-commerce website is more important to you. You can then set +PassengerMaxInstances to 3 for your blog, so that it will never spawn more +than 3 processes, even if it suddenly gets a lot of traffic. Your e-commerce website +on the other hand will be free to spawn up to 10 processes if it gets a lot of traffic.

+
+
+
+
+

5.14.4. PassengerMaxInstancesPerApp <integer>

+

The maximum number of application processes that may simultaneously exist +for a single application. This helps to make sure that a single application +will not occupy all available slots in the application pool.

+

This value must be less than PassengerMaxPoolSize. A value of 0 +means that there is no limit placed on the number of processes a single application +may use, i.e. only the global limit of PassengerMaxPoolSize +will be enforced.

+

This option may only occur once, in the global server configuration. +The default value is 0.

+
+ + + +
+Tip + +
Practical usage example
+

Suppose that you’re hosting two blogs (blog A and B) on your server, and that +you’ve set PassengerMaxPoolSize to 10. Under normal +circumstances, if blog A suddenly gets a lot of traffic, then A will use all 10 +pool slots. If blog B suddenly gets some traffic, then it will only be able to +use 1 pool slot (forcefully releasing 1 slot from A) until A’s traffic has +settled down and it has released more pool slots.

+

If you consider both blogs equally important, then you can set +PassengerMaxInstancesPerApp to 5. This way, both blogs will never use more +than 5 pool slots.

+
+
+
+ + + +
+Note + +
Relation with PassengerMaxInstances
+

Unlike PassengerMaxInstances, this configuration +option is global and applies to all applications. PassengerMaxInstances on the +other hand is per-virtual host.

+

Suppose that you’re hosting two web applications on your server, a personal +blog and an e-commerce website. You’ve set PassengerMaxPoolSize +to 10. The e-commerce website is more important to you. You can then set +PassengerMaxInstances to 3 for your blog, so that it will never use more than +3 pool slots, even if it suddenly gets a lot of traffic. Your e-commerce website +on the other hand will be free to use up all 10 slots if it gets a lot of traffic.

+

In summary, PassengerMaxInstancesPerApp divides the pool equally among the +different web applications, while PassengerMaxInstances allows one to divide +the pool unequally, according to each web application’s relative importance.

+
+
+
+
+

5.14.5. PassengerPoolIdleTime <integer>

+

The maximum number of seconds that an application process may be idle. That is, +if an application process hasn’t received any traffic after the given number of +seconds, then it will be shutdown in order to conserve memory.

+

Decreasing this value means that applications will have to be spawned +more often. Since spawning is a relatively slow operation, some visitors may +notice a small delay when they visit your Rails/Rack website. However, it will also +free up resources used by applications more quickly.

+

The optimal value depends on the average time that a visitor spends on a single +Rails/Rack web page. We recommend a value of 2 * x, where x is the average +number of seconds that a visitor spends on a single Rails/Rack web page. But your +mileage may vary.

+

When this value is set to 0, application processes will not be shutdown unless +it’s really necessary, i.e. when Phusion Passenger is out of application processes +for a given application and one of the inactive application processes needs to +make place for another application process. Setting the value to 0 is +recommended if you’re on a non-shared host that’s only running a few +applications, each which must be available at all times.

+

This option may only occur once, in the global server configuration. +The default value is 300.

+
+
+

5.14.6. PassengerMaxRequests <integer>

+

The maximum number of requests an application process will process. After +serving that many requests, the application process will be shut down and +Phusion Passenger will restart it. A value of 0 means that there is no maximum: +an application process will thus be shut down when its idle timeout has been +reached.

+

This option is useful if your application is leaking memory. By shutting +it down after a certain number of requests, all of its memory is guaranteed +to be freed by the operating system.

+

This option may occur in the following places:

+
    +
  • +

    +In the global server configuration. +

    +
  • +
  • +

    +In a virtual host configuration block. +

    +
  • +
  • +

    +In a <Directory> or <Location> block. +

    +
  • +
  • +

    +In .htaccess, if AllowOverride Limits is on. +

    +
  • +
+

In each place, it may be specified at most once. The default value is 0.

+
+ + + +
+Caution + +

The PassengerMaxRequests directive should be considered +as a workaround for misbehaving applications. It is advised that you fix the +problem in your application rather than relying on these directives as a +measure to avoid memory leaks.

+
+
+
+
+

5.14.7. PassengerMaxRequestTime <seconds>

+

This feature is only available in Phusion Passenger Enterprise. It was introduced in version 3.0.0. Buy Phusion Passenger Enterprise here.

+

The maximum amount of time, in seconds, that an application process may take +to process a request. If the request takes longer than this amount of time, +then the application process will be forcefully shut down, and possibly +restarted upon the next request. A value of 0 means that there is no time limit.

+

This option is useful for preventing your application from freezing for an +indefinite period of time.

+

This option may occur in the following places:

+
    +
  • +

    +In the global server configuration. +

    +
  • +
  • +

    +In a virtual host configuration block. +

    +
  • +
  • +

    +In a <Directory> or <Location> block. +

    +
  • +
  • +

    +In .htaccess, if AllowOverride Limits is on. +

    +
  • +
+

In each place, it may be specified at most once. The default value is 0.

+
+
Example
+

Suppose that most of your requests are known to finish within 2 seconds. +However, there is one URI, /expensive_computation, which is known to take up +to 10 seconds. You can then configure Phusion Passenger as follows:

+
+
+
+
<VirtualHost *:80>
+    ServerName www.example.com
+    DocumentRoot /webapps/my_app/public
+
+    PassengerMaxRequestTime 2
+    <Location /expensive_computation>
+        PassengerMaxRequestTime 10
+    </Location>
+</VirtualHost>
+
+
+

If a request to /expensive_computation takes more than 10 seconds, +or if a request to any other URI takes more than 2 seconds, +then the corresponding application process will be forced to shutdown.

+
+ + + +
+Caution + +

The PassengerMaxRequestTime directive should be +considered as a workaround for misbehaving applications. It is advised that you +fix the problem in your application rather than relying on these directives as a +measure to avoid freezing applications.

+
+
+
+
+

5.14.8. PassengerMemoryLimit <integer>

+

This feature is only available in Phusion Passenger Enterprise. It was introduced in version 3.0.0. Buy Phusion Passenger Enterprise here.

+

The maximum amount of memory that an application process may use, in megabytes. +Once an application process has surpassed its memory limit, it will process +all the requests currently present in its queue and then shut down. +A value of 0 means that there is no maximum: the application’s memory usage +will not be checked.

+

This option is useful if your application is leaking memory. By shutting +it down, all of its memory is guaranteed to be freed by the operating system.

+

This option may occur in the following places:

+
    +
  • +

    +In the global server configuration. +

    +
  • +
  • +

    +In a virtual host configuration block. +

    +
  • +
  • +

    +In a <Directory> or <Location> block. +

    +
  • +
  • +

    +In .htaccess, if AllowOverride Limits is on. +

    +
  • +
+

In each place, it may be specified at most once. The default value is 200.

+
+ + + +
+Note + +
A word about permissions
+

The PassengerMemoryLimit directive requires that the +user that the application is running as (see PassengerUserSwitching) +to have access to the /proc file system, or to be able to inspect its status +with ps (which on Linux and FreeBSD systems basically means the same thing, since ps +reads process information from /proc). Therefore, on servers running with +tight permissions on /proc, this directive may not work. If you wish to use +this directive and your /proc permissions are too tight, then please consider +untightening the permissions.

+
+
+
+ + + +
+Tip + +
FreeBSD and /proc +
+

On many FreeBSD systems, /proc is not mounted by default. /proc must be +mounted in order for PassengerMemoryLimit to work.

+

It is also advised that you mount /proc with the linprocfs filesystem type +instead of the regular FreeBSD proc filesystem type. The linprocfs filesystem +type allows Phusion Passenger to read memory information from /proc directly, +which is very fast. If you mount /proc with a different filesystem type, then +Phusion Passenger must resort to querying memory information from the ps command, +which is a lot slower.

+
+
+
+ + + +
+Caution + +

The PassengerMaxRequests and +PassengerMemoryLimit directives should be considered +as workarounds for misbehaving applications. It is advised that you fix the +problem in your application rather than relying on these directives as a +measure to avoid memory leaks.

+
+
+
+
+

5.14.9. PassengerStatThrottleRate <integer>

+

By default, Phusion Passenger performs several filesystem checks (or, in +programmers jargon, stat() calls) each time a request is processed:

+
    +
  • +

    +It checks whether config/environment.rb, config.ru or passenger_wsgi.py + is present, in order to autodetect Rails, Rack and WSGI applications. +

    +
  • +
  • +

    +It checks whether restart.txt has changed or whether always_restart.txt + exists, in order to determine whether the application should be restarted. +

    +
  • +
+

On some systems where disk I/O is expensive, e.g. systems where the harddisk is +already being heavily loaded, or systems where applications are stored on NFS +shares, these filesystem checks can incur a lot of overhead.

+

You can decrease or almost entirely eliminate this overhead by setting +PassengerStatThrottleRate. Setting this option to a value of x means that +the above list of filesystem checks will be performed at most once every x +seconds. Setting it to a value of 0 means that no throttling will take place, +or in other words, that the above list of filesystem checks will be performed on +every request.

+

This option may occur in the following places:

+
    +
  • +

    +In the global server configuration. +

    +
  • +
  • +

    +In a virtual host configuration block. +

    +
  • +
  • +

    +In a <Directory> or <Location> block. +

    +
  • +
  • +

    +In .htaccess, if AllowOverride Limits is on. +

    +
  • +
+

In each place, it may be specified at most once. The default value is 0.

+
+
+

5.14.10. PassengerPreStart <url>

+

By default, Phusion Passenger does not start any application processes until said +web application is first accessed. The result is that the first visitor of said +web application might experience a small delay as Phusion Passenger is starting +the web application on demand. If that is undesirable, then this directive can be +used to pre-started application processes during Apache startup.

+

A few things to be careful of:

+
    +
  • +

    +This directive accepts the URL of the web application you want to pre-start, + not a on/off value! This might seem a bit weird, but read on for rationale. As + for the specifics of the URL: +

    +
      +
    • +

      +The domain part of the URL must be equal to the value of the ServerName + directive of the VirtualHost block that defines the web application. +

      +
    • +
    • +

      +Unless the web application is deployed on port 80, the URL should contain + the web application’s port number too. +

      +
    • +
    • +

      +The path part of the URL must point to some URI that the web application + handles. +

      +
    • +
    +
  • +
  • +

    +You will probably want to combine this option with + PassengerMinInstances because application processes + started with PassengerPreStart are subject to the usual idle timeout rules. + See the example below for an explanation. +

    +
  • +
+

This option may occur in the following places:

+
    +
  • +

    +In the global server configuration. +

    +
  • +
  • +

    +In a virtual host configuration block. +

    +
  • +
+

In each place, it may be specified any number of times.

+
+
Example 1: basic usage
+

Suppose that you have the following web applications.

+
+
+
<VirtualHost *:80>
+   ServerName foo.com
+   DocumentRoot /webapps/foo/public
+</VirtualHost>
+
+<VirtualHost *:3500>
+   ServerName bar.com
+   DocumentRoot /webapps/bar/public
+</VirtualHost>
+
+
+

You want both of them to be pre-started during Apache startup. The URL for +foo.com is http://foo.com/ (or, equivalently, http://foo.com:80/) and +the URL for bar.com is http://bar.com:3500/. So we add two PassengerPreStart +directives, like this:

+
+
+
<VirtualHost *:80>
+   ServerName foo.com
+   DocumentRoot /webapps/foo/public
+</VirtualHost>
+
+<VirtualHost *:3500>
+   ServerName bar.com
+   DocumentRoot /webapps/bar/public
+</VirtualHost>
+
+PassengerPreStart http://foo.com/           # <--- added
+PassengerPreStart http://bar.com:3500/      # <--- added
+
+
+
+
+
Example 2: pre-starting apps that are deployed in sub-URIs
+

Suppose that you have a web application deployed in a sub-URI /store, like this:

+
+
+
<VirtualHost *:80>
+   ServerName myblog.com
+   DocumentRoot /webapps/wordpress
+   RailsBaseURI /store
+</VirtualHost>
+
+
+

Then specify the domain name of its containing virtual host followed by the sub-URI, +like this:

+
+
+
<VirtualHost *:80>
+   ServerName myblog.com
+   DocumentRoot /webapps/wordpress
+   RailsBaseURI /store
+</VirtualHost>
+
+PassengerPreStart http://myblog.com/store    # <----- added
+
+
+

The sub-URI must be included; if you don’t then the directive will have no effect. +The following example is wrong and won’t pre-start the store web application:

+
+
+
PassengerPreStart http://myblog.com/    # <----- WRONG! Missing "/store" part.
+
+
+
+
+
Example 3: combining with PassengerMinInstances
+

Application processes started with PassengerPreStart are +also subject to the idle timeout rules as specified by +PassengerPoolIdleTime! That means that by default, +the pre-started application processes for foo.com are bar.com are shut down +after a few minutes of inactivity. If you don’t want that to happen, then +you should combine PassengerPreStart with +PassengerMinInstances, like this:

+
+
+
<VirtualHost *:80>
+   ServerName foo.com
+   DocumentRoot /webapps/foo/public
+   # Added!
+   PassengerMinInstances 1
+</VirtualHost>
+
+<VirtualHost *:3500>
+   ServerName bar.com
+   DocumentRoot /webapps/bar/public
+   # Added!
+   PassengerMinInstances 1
+</VirtualHost>
+
+PassengerPreStart http://foo.com/
+PassengerPreStart http://bar.com:3500/
+
+
+
+
+
So why a URL? Why not just an on/off flag?
+

A directive that accepts a simple on/off flag is definitely more intuitive, +but due technical difficulties w.r.t. the way Apache works, it’s very hard +to implement it like that:

+
    +
  • +

    +It is very hard to obtain a full list of web applications defined in the + Apache configuration file(s). In other words, it’s hard for Phusion Passenger + to know which web applications are deployed on Apache until a web application + is first accessed, and without such a list Phusion Passenger wouldn’t know + which web applications to pre-start. It’s probably not completely impossible + to obtain such a list, but this brings us to the following point; +

    +
  • +
  • +

    +Users expect things like mod_env to work even in combination with Phusion + Passenger. For example some people put “SetEnv PATH=….” in their virtual + host block and they expect the web application to pick that environment variable + up when it’s started. Information like this is stored in module-specific + locations that Phusion Passenger cannot access directly. Even if the previous + bullet point is solved and we can obtain a list of web applications, + we cannot start the application with the correct mod_env information. + mod_env is just one such example; there are probably many other Apache modules, + all of which people expect to work, but we cannot answer to those expectations + if PassengerPreStart is implemented as a simple on/off flag. +

    +
  • +
+

So as a compromise, we made it accept a URL. This is easier to implement for +us and altough it looks weird, it behaves consistently w.r.t. cooperation +with other Apache modules.

+
+
+
What does Phusion Passenger do with the URL?
+

During Apache startup, Phusion Passenger will send a dummy HEAD request to the +given URL and discard the result. In other words, Phusion Passenger simulates a +web access at the given URL. However this simulated request is always sent to +localhost, not to the IP that the domain resolves to. Suppose that bar.com +in example 1 resolves to 209.85.227.99; Phusion Passenger will +send the following HTTP request to 127.0.0.1 port 3500 (and not to 209.85.227.99 +port 3500):

+
+
+
HEAD / HTTP/1.1
+Host: bar.com
+Connection: close
+
+
+

Similarly, for example 2, Phusion Passenger will send the following HTTP request +to 127.0.0.1 port 80:

+
+
+
HEAD /store HTTP/1.1
+Host: myblog.com
+Connection: close
+
+
+
+
+
Do I need to edit /etc/hosts and point the domain in the URL to 127.0.0.1?
+

No. See previous subsection.

+
+
+
My web application consists of multiple web servers. What URL do I need to specify, and in which web server’s Apache config file?
+

Put the web application’s virtual host’s ServerName value and the virtual host’s +port in the URL, and put +PassengerPreStart on all machines that you want to pre-start the web application +on. The simulated web request is always sent to 127.0.0.1, with the domain name +in the URL as value for the Host HTTP header, so you don’t need to worry about +the request ending up at a different web server in the cluster.

+
+
+
Does PassengerPreStart support https:// URLs?
+

Yes. And it does not perform any certificate validation.

+
+
+
+

5.14.11. PassengerHighPerformance <on|off>

+

By default, Phusion Passenger is compatible with mod_rewrite and most other +Apache modules. However, a lot of effort is required in order to be compatible. +If you turn PassengerHighPerformance to on, then Phusion Passenger will be +a little faster, in return for reduced compatibility with other Apache modules.

+

In places where PassengerHighPerformance is turned on, mod_rewrite rules will +likely not work. mod_autoindex (the module which displays a directory index) +will also not work. Other Apache modules may or may not work, depending on what +they exactly do. We recommend you to find out how other modules behave in high +performance mode via testing.

+

This option is not an all-or-nothing global option: you can enable high +performance mode for certain virtual hosts or certain URLs only. +The PassengerHighPerformance option may occur in the following places:

+
    +
  • +

    +In the global server configuration. +

    +
  • +
  • +

    +In a virtual host configuration block. +

    +
  • +
  • +

    +In a <Directory> or <Location> block. +

    +
  • +
  • +

    +In .htaccess. +

    +
  • +
+

In each place, it may be specified at most once. The default value is off, +so high performance mode is disabled by default, and you have to explicitly +enable it.

+
+
When to enable high performance mode?
+

If you do not use mod_rewrite or other Apache modules then it might make +sense to enable high performance mode.

+
+

It’s likely that some of your applications depend on mod_rewrite or other +Apache modules, while some do not. In that case you can enable high performance +for only those applications that don’t use other Apache modules. For example:

+
+
+
<VirtualHost *:80>
+    ServerName www.foo.com
+    DocumentRoot /apps/foo/public
+    .... mod_rewrite rules or options for other Apache modules here ...
+</VirtualHost>
+
+<VirtualHost *:80>
+    ServerName www.bar.com
+    DocumentRoot /apps/bar/public
+    PassengerHighPerformance on
+</VirtualHost>
+
+
+

In the above example, high performance mode is only enabled for www.bar.com. +It is disabled for everything else.

+

If your application generally depends on mod_rewrite or other Apache modules, +but a certain URL that’s accessed often doesn’t depend on those other modules, +then you can enable high performance mode for a certain URL only. For example:

+
+
+
<VirtualHost *:80>
+    ServerName www.foo.com
+    DocumentRoot /apps/foo/public
+    .... mod_rewrite rules or options for other Apache modules here ...
+
+    <Location /chatroom/ajax_update_poll>
+        PassengerHighPerformance on
+    </Location>
+</VirtualHost>
+
+
+

This enables high performance mode for +http://www.foo.com/chatroom/ajax_update_poll only.

+
+
+
+

5.15. Compatibility options

+
+

5.15.1. PassengerResolveSymlinksInDocumentRoot <on|off>

+

Configures whether Phusion Passenger should resolve symlinks in the document root. +Please refer to How Phusion Passenger detects whether a virtual host is a web application for more information.

+

This option may occur in the following places:

+
    +
  • +

    +In the global server configuration. +

    +
  • +
  • +

    +In a virtual host configuration block. +

    +
  • +
  • +

    +In a <Directory> or <Location> block. +

    +
  • +
  • +

    +In .htaccess, if AllowOverride Options is on. +

    +
  • +
+

In each place, it may be specified at most once. It is off by default.

+
+
+

5.15.2. PassengerAllowEncodedSlashes <on|off>

+

By default, Apache doesn’t support URLs with encoded slashes (%2f), e.g. URLs like +this: /users/fujikura%2fyuu. If you access such an URL then Apache will return a +404 Not Found error. This can be solved by turning on PassengerAllowEncodedSlashes +as well as Apache’s +AllowEncodedSlashes.

+

Is it important that you turn on both AllowEncodedSlashes and PassengerAllowEncodedSlashes, +otherwise this feature will not work properly.

+

PassengerAllowEncodedSlashes may occur in the following places:

+
    +
  • +

    +In the global server configuration. +

    +
  • +
  • +

    +In a virtual host configuration block. +

    +
  • +
  • +

    +In a <Directory> or <Location> block. +

    +
  • +
  • +

    +In .htaccess, if AllowOverride Options is on. +

    +
  • +
+

In each place, it may be specified at most once. It is off by default.

+

Please note however that turning on support for encoded slashes will break support for +mod_rewrite passthrough rules. Because of bugs/limitations in Apache, Phusion Passenger +can support either encoded slashes or mod_rewrite passthrough rules, but not both at the +same time. Luckily this option can be specified anywhere, so you can enable it only for +virtual hosts or URLs that need it:

+
+
+
<VirtualHost *:80>
+    ServerName www.example.com
+    DocumentRoot /webapps/example/public
+    AllowEncodedSlashes on
+    RewriteEngine on
+
+    # Check for maintenance file and redirect all requests
+    RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
+    RewriteCond %{SCRIPT_FILENAME} !maintenance.html
+    RewriteRule ^.*$ /system/maintenance.html [L]
+
+    # Make /about an alias for /info/about.
+    RewriteRule ^/about$ /info/about [PT,L]
+
+    <Location ~ "^/users/">
+        # In a location block so that it doesn't interfere with the
+        # above /about mod_rewrite rule.
+        PassengerAllowEncodedSlashes on
+    </Location>
+</VirtualHost>
+
+
+

With this, http://www.example.com/users/fujikura%2fyuu will work properly, and +accessing http://www.example.com/about will properly display the result of +http://www.example.com/info/about. Notice that PassengerAllowEncodedSlashes only +interferes with passthrough rules, not with any other mod_rewrite rules. The rules for +displaying maintenance.html will work fine even for URLs starting with "/users".

+
+
+
+

5.16. Logging and debugging options

+
+

5.16.1. PassengerLogLevel <integer>

+

This option allows one to specify how much information Phusion Passenger should +write to the Apache error log file. A higher log level value means that more +information will be logged.

+

Possible values are:

+
    +
  • +

    +0: Show only errors and warnings. +

    +
  • +
  • +

    +1: Show the most important debugging information. This might be useful for + system administrators who are trying to figure out the cause of a + problem. +

    +
  • +
  • +

    +2: Show more debugging information. This is typically only useful for developers. +

    +
  • +
  • +

    +3: Show even more debugging information. +

    +
  • +
+

This option may only occur once, in the global server configuration. +The default is 0.

+
+
+

5.16.2. PassengerDebugLogFile <filename>

+

By default Phusion Passenger debugging and error messages are written to the global +web server error log. This option allows one to specify the file that debugging and +error messages should be written to instead.

+

This option may only occur once, in the global server configuration.

+
+
+

5.16.3. PassengerDebugger <on|off>

+

This feature is only available in Phusion Passenger Enterprise. It was introduced in version 3.0.0. Buy Phusion Passenger Enterprise here.

+

Turns support for application debugging on or off. In case of Ruby applications, +turning this option on will cause them to load the ruby-debug gem (when on Ruby 1.8) +or the debugger gem (when on Ruby 1.9). If you’re using Bundler, you should add +this to your Gemfile:

+
+
+
gem 'ruby-debug', :platforms => :ruby_18
+gem 'debugger', :platforms => :ruby_19
+
+
+

Once debugging is turned on, you can use the command passenger-irb --debug <PID> to attach an rdebug console to the application process with the given PID. Attaching will succeed once the application process executes a debugger command.

+

This option may occur in the following places:

+
    +
  • +

    +In the global server configuration. +

    +
  • +
  • +

    +In a virtual host configuration block. +

    +
  • +
  • +

    +In a <Directory> or <Location> block. +

    +
  • +
  • +

    +In .htaccess, if AllowOverride Options is on. +

    +
  • +
+

In each place, it may be specified at most once. The default value is off.

+
+
+
+

5.17. Ruby on Rails-specific options

+
+

5.17.1. RailsAutoDetect <on|off>

+

Whether Phusion Passenger should automatically detect whether a virtual host’s +document root is a Ruby on Rails application. The default is on.

+

This option may occur in the global server configuration or in a virtual host +configuration block.

+

For example, consider the following configuration:

+
+
+
RailsAutoDetect off
+<VirtualHost *:80>
+    ServerName www.mycook.com
+    DocumentRoot /webapps/mycook/public
+</VirtualHost>
+
+
+

If one goes to http://www.mycook.com/, the visitor will see the contents of +the /webapps/mycook/public folder, instead of the output of the Ruby on Rails +application.

+

It is possible to explicitly specify that the host is a Ruby on Rails +application by using the RailsBaseURI configuration option:

+
+
+
RailsAutoDetect off
+<VirtualHost *:80>
+    ServerName www.mycook.com
+    DocumentRoot /webapps/mycook/public
+    RailsBaseURI /           # This line has been added.
+</VirtualHost>
+
+
+
+
+

5.17.2. RailsBaseURI <uri>

+

Used to specify that the given URI is a Rails application. See +Deploying Rails to a sub URI for an example.

+

It is allowed to specify this option multiple times. Do this to deploy multiple +Rails applications in different sub-URIs under the same virtual host.

+

This option may occur in the following places:

+
    +
  • +

    +In the global server configuration. +

    +
  • +
  • +

    +In a virtual host configuration block. +

    +
  • +
  • +

    +In a <Directory> or <Location> block. +

    +
  • +
  • +

    +In .htaccess, if AllowOverride Options is on. +

    +
  • +
+
+
+

5.17.3. RailsEnv <string>

+

This option allows one to specify the default RAILS_ENV value.

+

This option may occur in the following places:

+
    +
  • +

    +In the global server configuration. +

    +
  • +
  • +

    +In a virtual host configuration block. +

    +
  • +
  • +

    +In a <Directory> or <Location> block. +

    +
  • +
  • +

    +In .htaccess, if AllowOverride Options is on. +

    +
  • +
+

In each place, it may be specified at most once. The default value is production.

+
+
+

5.17.4. RailsFrameworkSpawnerIdleTime <integer>

+

The FrameworkSpawner server (explained in Spawning methods explained) has an idle timeout, just like the backend processes spawned by +Phusion Passenger do. That is, it will automatically shutdown if it hasn’t done +anything for a given period.

+

This option allows you to set the FrameworkSpawner server’s idle timeout, in +seconds. A value of 0 means that it should never idle timeout.

+

Setting a higher value will mean that the FrameworkSpawner server is kept around +longer, which may slightly increase memory usage. But as long as the +FrameworkSpawner server is running, the time to spawn a Ruby on Rails backend +process only takes about 40% of the time that is normally needed, assuming that +you’re using the smart spawning method. So if your +system has enough memory, is it recommended that you set this option to a high +value or to 0.

+

This option may occur in the following places:

+
    +
  • +

    +In the global server configuration. +

    +
  • +
  • +

    +In a virtual host configuration block. +

    +
  • +
+

In each place, it may be specified at most once. The default value is 1800 (30 minutes).

+
+
+

5.17.5. RailsAppSpawnerIdleTime <integer>

+

The ApplicationSpawner server (explained in Spawning methods explained) has an idle timeout, just like the backend processes spawned by +Phusion Passenger do. That is, it will automatically shutdown if it hasn’t done +anything for a given period.

+

This option allows you to set the ApplicationSpawner server’s idle timeout, in +seconds. A value of 0 means that it should never idle timeout.

+

Setting a higher value will mean that the ApplicationSpawner server is kept around +longer, which may slightly increase memory usage. But as long as the +ApplicationSpawner server is running, the time to spawn a Ruby on Rails backend +process only takes about 10% of the time that is normally needed, assuming that +you’re using the smart or smart-lv2 spawning method. So if your +system has enough memory, is it recommended that you set this option to a high +value or to 0.

+

This option may occur in the following places:

+
    +
  • +

    +In the global server configuration. +

    +
  • +
  • +

    +In a virtual host configuration block. +

    +
  • +
+

In each place, it may be specified at most once. The default value is 600 (10 minutes).

+
+
+
+

5.18. Rack and Rails >= 3 specific options

+
+

5.18.1. RackAutoDetect <on|off>

+

Whether Phusion Passenger should automatically detect whether a virtual host’s +document root is a Rack application. The default is on.

+

This option may occur in the global server configuration or in a virtual host +configuration block.

+

For example, consider the following configuration:

+
+
+
RackAutoDetect off
+<VirtualHost *:80>
+    ServerName www.rackapp.com
+    DocumentRoot /webapps/my_rack_app/public
+</VirtualHost>
+
+
+

If one goes to http://www.rackapp.com/, the visitor will see the contents of +the /webapps/my_rack_app/public folder, instead of the output of the Rack +application.

+

It is possible to explicitly specify that the host is a Rack +application by using the RackBaseURI configuration option:

+
+
+
RackAutoDetect off
+<VirtualHost *:80>
+    ServerName www.rackapp.com
+    DocumentRoot /webapps/my_rack_app/public
+    RackBaseURI /       # This line was added
+</VirtualHost>
+
+
+
+
+

5.18.2. RackBaseURI <uri>

+

Used to specify that the given URI is a Rack application. See +Deploying Rack to a sub URI for an example.

+

It is allowed to specify this option multiple times. Do this to deploy multiple +Rack applications in different sub-URIs under the same virtual host.

+

This option may occur in the following places:

+
    +
  • +

    +In the global server configuration. +

    +
  • +
  • +

    +In a virtual host configuration block. +

    +
  • +
  • +

    +In a <Directory> or <Location> block. +

    +
  • +
  • +

    +In .htaccess, if AllowOverride Options is on. +

    +
  • +
+
+
+

5.18.3. RackEnv <string>

+

The given value will be accessible in Rack applications in the RACK_ENV +environment variable. This allows one to define the environment in which +Rack applications are run, very similar to RAILS_ENV.

+

This option may occur in the following places:

+
    +
  • +

    +In the global server configuration. +

    +
  • +
  • +

    +In a virtual host configuration block. +

    +
  • +
  • +

    +In a <Directory> or <Location> block. +

    +
  • +
  • +

    +In .htaccess, if AllowOverride Options is on. +

    +
  • +
+

In each place, it may be specified at most once. The default value is production.

+
+
+
+

5.19. Deprecated options

+

The following options have been deprecated, but are still supported for backwards +compatibility reasons.

+
+

5.19.1. RailsRuby

+

Deprecated in favor of PassengerRuby.

+
+
+

5.19.2. RailsUserSwitching

+

Deprecated in favor of PassengerUserSwitching.

+
+
+

5.19.3. RailsDefaultUser

+

Deprecated in favor of PassengerDefaultUser.

+
+
+

5.19.4. RailsAllowModRewrite

+

This option doesn’t do anything anymore in recent versions of Phusion Passenger.

+
+
+

5.19.5. RailsSpawnMethod

+

Deprecated in favor of PassengerSpawnMethod.

+
+
+
+
+
+

6. Troubleshooting

+
+
+

6.1. Operating system-specific problems

+
+

6.1.1. MacOS X: The installer cannot locate MAMP’s Apache

+
+
+
Symptoms
+

The installer finds Apache 2 development headers at /Applications/MAMP/Library/bin/apxs. +However, Apache cannot be found. The installer also outputs the following error:

+
+
+
cannot open /Applications/MAMP/Library/build/config_vars.mk:
+No such file or directory at /Applications/MAMP/Library/bin/apxs line 218.
+
+
+
+
+

Your MAMP installation seems to be broken. In particular, config_vars.mk is missing. +Please read this forum topic to learn how +to fix this problem.

+

See also this bug report.

+
+
+
+

6.2. Problems during installation

+
+

6.2.1. Ruby development headers aren’t installed

+
+
+
Symptoms
+

Installing Phusion Passenger fails because of one of the following errors:

+
    +
  • +

    +The Phusion Passenger installer tells you that the Ruby development headers + aren’t installed. +

    +
  • +
  • +

    +The error message “'no such file to load — mkmf”' occurs. +

    +
  • +
  • +

    +The error message “'ruby.h: No such file or directory”' occurs. +

    +
  • +
+
+
+

Phusion Passenger makes use of a native extension, so the Ruby development headers +must be installed. On most Linux systems, Ruby and the Ruby development headers +are contained in separate packages, so having Ruby installed does not +automatically imply having the development headers installed.

+

Here’s how you can install the development headers:

+
+
+Ubuntu/Debian +
+
+

+ Please type: +

+
+
+
sudo apt-get install ruby1.8-dev
+
+
+
+
+Fedora/CentOS/RHEL +
+
+

+ Please type: +

+
+
+
su -c 'yum install ruby-devel'
+
+
+
+
+FreeBSD +
+
+

+ Please install Ruby from ports or with pkg_add. If that fails, + please install Ruby from source. +

+
+
+MacOS X +
+
+

+ Please install Ruby from source. +

+
+
+Other operating systems +
+
+

+ Please consult your operating system’s native package database. + There should be a package containing the Ruby development headers. + If that fails, please install Ruby from source. +

+
+
+
+ + + +
+Note +If you’ve installed a new Ruby version (i.e. your system now contains +multiple Ruby installations), then you will need to tell Phusion Passenger +which Ruby installation you want to use. Please read +Specifying the correct Ruby installation.
+
+
+
+

6.2.2. Apache development headers aren’t installed

+
+
+
Symptoms
+

Installing Phusion Passenger fails because of one of the following errors:

+
    +
  • +

    +The installer says that the Apache development headers aren’t installed. +

    +
  • +
  • +

    +The error message “'httpd.h: No such file or directory”' occurs. +

    +

    (Instead of httpd.h, the message might also be http_config.h or something +else similar to http_*.h.)

    +
  • +
+
+
+
+
+Ubuntu +
+
+

+ Please type: +

+
+
+
sudo apt-get install apache2-prefork-dev
+
+
+
+
+Debian +
+
+

+ Please type: +

+
+
+
sudo apt-get install apache2-dev
+
+
+
+
+Fedora/CentOS/RHEL +
+
+

+ Please type: +

+
+
+
su -c 'yum install httpd-devel'
+
+
+
+
+FreeBSD +
+
+

+ Please install Apache from ports or with pkg_add. If that fails, + please install Apache from source. +

+
+
+MacOS X +
+
+

+ Please install Apache from source. +

+
+
+Other operating systems +
+
+

+ Please consult your operating system’s native package database. + There should be a package containing the Apache development headers. + If that fails, please install Apache from source. +

+
+
+
+
+

6.2.3. APR development headers aren’t installed

+
+
+
Symptoms
+

Installing Phusion Passenger fails because one of the following errors:

+
    +
  • +

    +The installer tells you that APR development headers aren’t installed. +

    +
  • +
  • +

    +The error message “'apr_pools.h: No such file or directory”' occurs. +

    +
  • +
  • +

    +The error message “'apr_strings.h: No such file or directory”' occurs. +

    +
  • +
+
+
+
+
+Ubuntu +
+
+

+ Please type: +

+
+
+
sudo apt-get install libapr1-dev
+
+
+
+
+Debian +
+
+

+ Please type: +

+
+
+
sudo apt-get install libapr1-dev
+
+
+
+
+Fedora/CentOS/RHEL +
+
+

+ Please type: +

+
+
+
su -c 'yum install apr-devel'
+
+
+
+
+Other Linux distributions +
+
+

+ Please consult your distribution’s package database. There should be a + package which provides APR development headers. +

+
+
+Other operating systems +
+
+

+ The APR development are bundled with Apache. If the APR headers aren’t, + then it probably means that they have been removed after Apache’s been + installed. Please reinstall Apache to get back the APR headers. +

+
+
+
+
+

6.2.4. Phusion Passenger is using the wrong Apache during installation

+

Please Specifying the correct Apache installation, and re-run the Phusion Passenger installer.

+
+
+

6.2.5. Phusion Passenger is using the wrong Ruby during installation

+

Please Specifying the correct Ruby installation, and re-run the Phusion Passenger installer.

+
+
+
+

6.3. Problems after installation

+
+ + + +
+Tip + +
The golden tip: read your Apache error logs!
+

mod_passenger will write all errors to the Apache error log. So if +you’re experiencing post-installation problems, please look +inside the Apache error logs. It will tell you what exactly went wrong.

+
+
+
+

6.3.1. My Rails application works on Mongrel, but not on Phusion Passenger

+

Please try setting PassengerSpawnMethod to conservative.

+
+
+

6.3.2. Phusion Passenger has been compiled against the wrong Apache installation

+
+
+
Symptoms
+

Apache crashes during startup (after being daemonized). The Apache error log +says “'seg fault or similar nasty error detected in the parent process”'.

+
+
+

This problem is most likely to occur on MacOS X. Most OS X users have multiple +Apache installations on their system.

+ +
+
+

6.3.3. I get a "403 Forbidden" error

+

See next subsection.

+
+
+

6.3.4. Static assets such as images and stylesheets aren’t being displayed

+

Static assets are accelerated, i.e. they are served directly by Apache and do not +go through the Rails stack. There are two reasons why Apache doesn’t serve static +assets correctly:

+
    +
  1. +

    +Your Apache configuration is too strict, and does not allow HTTP clients to + access static assets. This can be achieved with an Allow from all directive + in the correct place. For example: +

    +
    +
    +
    <Directory "/webapps/mycook/public">
    +   Options FollowSymLinks
    +   AllowOverride None
    +   Order allow,deny
    +   Allow from all
    +</Directory>
    +
    +
    +

    See also this discussion.

    +
  2. +
  3. +

    +The Apache process doesn’t have permission to access your Rails application’s folder. + Please make sure that the Rails application’s folder, as well as all of its parent folders, + have the correct permissions and/or ownerships. +

    +
  4. +
+
+
+

6.3.5. The Apache error log says that the spawn manager script does not exist, or that it does not have permission to execute it

+

If you are sure that the PassengerRoot configuration option is set correctly, +then this problem is most likely caused by the fact that you’re running Apache +with SELinux. On Fedora, CentOS and RedHat Enterprise Linux, Apache is locked +down by SELinux policies.

+

To solve this problem, you must set some permissions on the Phusion Passenger files +and folders, so that Apache can access them.

+
    +
  • +

    +If you’ve installed Phusion Passenger via a gem, then run this command to determine + Phusion Passenger’s root folder: +

    +
    +
    +
    passenger-config --root
    +
    +
    +

    Next, run the following command:

    +
    +
    +
    chcon -R -h -t httpd_sys_content_t /path-to-passenger-root
    +
    +
    +

    where /path-to-passenger-root should be replaced with whatever +passenger-config --root printed.

    +
  • +
  • +

    +If you’ve installed Phusion Passenger via the source tarball, then run the following + command: +

    +
    +
    +
    chcon -R -h -t httpd_sys_content_t /path/to/passenger/folder
    +
    +
    +
  • +
+

Once the permissions are fixed, restart Apache.

+
+
+

6.3.6. The Rails application reports that it’s unable to start because of a permission error

+

Please check whether your Rails application’s folder has the correct +permissions. By default, Rails applications are started as the owner of the +file config/environment.rb, except if the file is owned by root. If the +file is owned by root, then the Rails application will be started as nobody +(or as the user specify by RailsDefaultUser, if that’s +specified).

+

Please read User switching (security) for details.

+
+
+

6.3.7. My Rails application’s log file is not being written to

+

There are a couple things that you should be aware of:

+
    +
  • +

    +By default, Phusion Passenger runs Rails applications in production mode, + so please be sure to check production.log instead of development.log. See + RailsEnv for configuration. +

    +
  • +
  • +

    +By default, Phusion Passenger runs Rails applications as the owner of environment.rb. + So the log file can only be written to if that user has write permission to the + log file. Please chmod or chown your log file accordingly. +

    +

    See User switching (security) for details.

    +
  • +
+

If you’re using a RedHat-derived Linux distribution (such as Fedora or CentOS) +then it is possible +that SELinux is interfering. RedHat’s SELinux policy only allows Apache to read/write +directories that have the httpd_sys_content_t security context. Please run the +following command to give your Rails application folder that context:

+
+
+
chcon -R -h -t httpd_sys_content_t /path/to/your/rails/app
+
+
+
+
+

6.3.8. I’ve deployed my app on SSL, but the app thinks its not on SSL

+

Rails and many other frameworks infers whether it’s running on SSL through the CGI +environment variable HTTPS. Apache always sets this variable when on SSL, +except when SSL is incorrectly configured.

+

Most Apache installations already configure SSL by default on port 443 +(conf/extra/httpd-ssl.conf). Some people think they can save some typing in +subsequent SSL vhost blocks, and omit important options like SSLEngine on, +like this:

+
+
+
# httpd-ssl.conf contains something like:
+# <VirtualHost _default_:443>
+#     SSLEngine on
+#     ...
+# </VirtualHost>
+Include conf/extra/httpd-ssl.conf
+
+<VirtualHost *:443>
+    ServerName www.example.com
+    DocumentRoot /webapps/example/public
+</Virtualhost>
+
+
+

This is wrong! In each SSL vhost block you must re-specify all the SSL options. +Otherwise Apache won’t properly detect the vhost as an SSL vhost block. Here’s +the corrected example:

+
+
+
Include conf/extra/httpd-ssl.conf
+
+<VirtualHost *:443>
+    ServerName www.example.com
+    DocumentRoot /webapps/example/public
+    SSLEngine on
+    ...more SSL options here...
+</Virtualhost>
+
+
+
+
+
+

6.4. Conflicting Apache modules

+
+

6.4.1. mod_userdir

+

mod_userdir is not compatible with Phusion Passenger at the moment.

+
+
+

6.4.2. MultiViews (mod_negotiation)

+

MultiViews is not compatible with Phusion Passenger. You should disable MultiViews +for all Phusion Passenger hosts.

+
+
+

6.4.3. VirtualDocumentRoot

+

VirtualDocumentRoot is not compatible with Phusion Passenger at the moment.

+
+
+
+
+
+

7. Analysis and system maintenance

+
+

Phusion Passenger provides a set of tools, which are useful for system analysis, +maintenance and troubleshooting.

+
+

7.1. Inspecting memory usage

+

Process inspection tools such as ps and top are useful, but they +rarely show the correct memory usage. +The real memory usage is usually lower than what ps and top report.

+

There are many technical reasons why this is so, but an explanation is beyond +the scope of this Users Guide. We kindly refer the interested reader to +operating systems literature about virtual memory and copy-on-write.

+

The tool passenger-memory-stats allows one to easily analyze Phusion Passenger’s +and Apache’s real memory usage. For example:

+
+
+
[bash@localhost root]# passenger-memory-stats
+------------- Apache processes --------------.
+PID    PPID  Threads  VMSize   Private  Name
+---------------------------------------------.
+5947   1     9        90.6 MB  0.5 MB   /usr/sbin/apache2 -k start
+5948   5947  1        18.9 MB  0.7 MB   /usr/sbin/fcgi-pm -k start
+6029   5947  1        42.7 MB  0.5 MB   /usr/sbin/apache2 -k start
+6030   5947  1        42.7 MB  0.5 MB   /usr/sbin/apache2 -k start
+6031   5947  1        42.5 MB  0.3 MB   /usr/sbin/apache2 -k start
+6033   5947  1        42.5 MB  0.4 MB   /usr/sbin/apache2 -k start
+6034   5947  1        50.5 MB  0.4 MB   /usr/sbin/apache2 -k start
+23482  5947  1        82.6 MB  0.4 MB   /usr/sbin/apache2 -k start
+### Processes: 8
+### Total private dirty RSS: 3.50 MB
+
+--------- Passenger processes ---------.
+PID    Threads  VMSize   Private  Name
+---------------------------------------.
+6026   1        10.9 MB  4.7 MB   Passenger spawn server
+23481  1        26.7 MB  3.0 MB   Passenger FrameworkSpawner: 2.0.2
+23791  1        26.8 MB  2.9 MB   Passenger ApplicationSpawner: /var/www/projects/app1-foobar
+23793  1        26.9 MB  17.1 MB  Rails: /var/www/projects/app1-foobar
+### Processes: 4
+### Total private dirty RSS: 27.76 M
+
+
+

The Private or private dirty RSS field shows the real memory usage of processes. Here, +we see that all the Apache worker processes only take less than 1 MB memory each. +This is a lot less than the 50 MB-ish memory usage as shown in the VMSize column +(which is what a lot of people think is the real memory usage, but is actually not).

+
+ + + +
+Note +Private dirty RSS reporting only works on Linux. Unfortunately other operating systems +don’t provide facilities for determining processes' private dirty RSS. On non-Linux systems, +the Resident Set Size is reported instead.
+
+
+
+

7.2. Inspecting Phusion Passenger’s internal status

+

One can inspect Phusion Passenger’s internal status with the tool passenger-status. +This tool must typically be run as root. For example:

+
+
+
[bash@localhost root]# passenger-status
+----------- General information -----------
+max      = 6
+count    = 1
+active   = 0
+inactive = 1
+
+----------- Domains -----------
+/var/www/projects/app1-foobar:
+  PID: 9617      Sessions: 0    Processed: 7       Uptime: 2m 23s
+
+
+

The general information section shows the following information:

+
+
+max +
+
+

+The maximum number of application instances that Phusion Passenger will +spawn. This equals the value given for PassengerMaxPoolSize (Apache) +or passenger_max_pool_size (Nginx). +

+
+
+count +
+
+

+The number of application instances that are currently alive. This value +is always less than or equal to max. +

+
+
+active +
+
+

+The number of application instances that are currently processing +requests. This value is always less than or equal to count. +

+
+
+inactive +
+
+

+The number of application instances that are currently not processing +requests, i.e. are idle. Idle application instances will be shutdown after a while, +as can be specified with PassengerPoolIdleTime (Apache)/passenger_pool_idle_time (Nginx) (unless this +value is set to 0, in which case application instances are never shut down via idle +time). The value of inactive equals count - active. +

+
+
+

The domains section shows, for each application directory, information about running +application instances:

+
+
+Sessions +
+
+

+Shows how many HTTP client are currently in the queue of that application +Instance, waiting to be processed. +

+
+
+Processed +
+
+

+Indicates how many requests the instance has served until now. Tip: it’s +possible to limit this number with the PassengerMaxRequests +configuration directive. +

+
+
+Uptime +
+
+

+Shows for how long the application instance has been running. +

+
+
+

Since Phusion Passenger uses fair load balancing by default, the number of sessions for the +application instances should be fairly close to each other. For example, this is fairly +normal:

+
+
+
  PID: 4281      Sessions: 2      Processed: 7      Uptime: 5m 11s
+  PID: 4268      Sessions: 0      Processed: 5      Uptime: 4m 52s
+  PID: 4265      Sessions: 1      Processed: 6      Uptime: 5m 38s
+  PID: 4275      Sessions: 1      Processed: 7      Uptime: 3m 14s
+
+
+

But if you see a "spike", i.e. an application instance has an unusually high number of +sessions compared to the others, then there might be a problem:

+
+
+
  PID: 4281      Sessions: 2      Processed: 7      Uptime: 5m 11s
+  PID: 17468     Sessions: 8 <-+  Processed: 2      Uptime: 4m 47s
+  PID: 4265      Sessions: 1   |  Processed: 6      Uptime: 5m 38s
+  PID: 4275      Sessions: 1   |  Processed: 7      Uptime: 3m 14s
+                               |
+                               +---- "spike"
+
+
+

Possible reasons why spikes can occur:

+
    +
  1. +

    +Your application is busy processing a request that takes a very long time. + If this is the case, then you might want to turn + global queuing on. +

    +
  2. +
  3. +

    +Your application is frozen, i.e. has stopped responding. See + Debugging frozen applications for tips. +

    +
  4. +
+
+
+

7.3. Debugging frozen applications

+

If one of your application instances is frozen (stopped responding), then you +can figure out where it is frozen by killing it with SIGABRT. This will cause the +application to raise an exception, with a backtrace.

+

The exception (with full backtrace information) is normally logged into the Apache +error log. But if your application or if its web framework has its own exception logging +routines, then exceptions might be logged into the application’s log files instead. +This is the case with Ruby on Rails. So if you kill a Ruby on Rails application with +SIGABRT, please check the application’s production.log first (assuming that you’re +running it in a production environment). If you don’t see a backtrace there, check +the Apache error log.

+
+ + + +
+Note +It is safe to kill application instances, even in live environments. Phusion Passenger +will restart killed application instances, as if nothing bad happened.
+
+
+
+

7.4. Accessing individual application processes

+

When a request is sent to the web server, Phusion Passenger will automatically forward +the request to the most suitable application process, but sometimes it is desirable to +be able to directly access the individual application processes. Use cases include, but +are not limited to:

+
    +
  • +

    +One wants to debug a memory leak or memory bloat problem that only seems to appear on + certain URIs. One can send a request to a specific process to see whether that request + causes the process’s memory usage to rise. +

    +
  • +
  • +

    +The application caches data in local memory, and one wants to tell a specific + application process to clear that local data. +

    +
  • +
  • +

    +Other debugging use cases. +

    +
  • +
+

All individual application processes are accessible via HTTP, so you can use standard +HTTP tools like curl. The exact addresses can be obtained with the command +passenger-status --verbose. These sockets are all bound to 127.0.0.1, but the port +number is dynamically assigned. As a security measure, the sockets are also protected +with a process-specific random password, which you can see in the +passenger-status --verbose output. This password must be sent through the +“X-Passenger-Connect-Password” HTTP header.

+

Example:

+
+
+
bash# passenger-status --verbose
+----------- General information -----------
+max      = 6
+count    = 2
+active   = 0
+inactive = 2
+Waiting on global queue: 0
+
+----------- Application groups -----------
+/Users/hongli/Sites/rack.test:
+  App root: /Users/hongli/Sites/rack.test
+  * PID: 24235   Sessions: 0    Processed: 7       Uptime: 17s
+      URL     : http://127.0.0.1:58122
+      Password: nFfVOX1F8LjZ90HJh28Sd_htJOsgRsNne2QXKf8NIXw
+  * PID: 24250   Sessions: 0    Processed: 4       Uptime: 1s
+      URL     : http://127.0.0.1:57933
+      Password: _RGXlQ9EGDGJKLevQ_qflUtF1KmxEo2UiRzMwIE1sBY
+
+
+

Here we see that the web application rack.test has two processes. +Process 24235 is accessible via http://127.0.0.1:58122, and +process 24250 is accessible via http://127.0.0.1:57933.

+

To access 24235 we must send its password, nFfVOX1F8LjZ90HJh28Sd_htJOsgRsNne2QXKf8NIXw, +through the X-Passenger-Connect-Password HTTP header, like this:

+
+
+
bash# curl -H "X-Passenger-Connect-Password: nFfVOX1F8LjZ90HJh28Sd_htJOsgRsNne2QXKf8NIXw" http://127.0.0.1:58122/
+
+
+
+
+

7.5. Attaching an IRB console to an application process

+

Available in Phusion Passenger Enterprise since version 3.0.0.

+

You can attach an IRB console to any application process and inspect its state by executing arbitrary Ruby code. Do this by invoking passenger-irb <PID> where <PID> is the PID of the application process you wish to inspect. Note that the IRB console is currently only available for Ruby apps, not for apps in any other languages.

+
+
+
+
+

8. Tips

+
+
+

8.1. User switching (security)

+

There is a problem that plagues most PHP web hosts, namely the fact that all PHP +applications are run in the same user context as the web server. So for +example, Joe’s PHP application will be able to read Jane’s PHP application’s +passwords. This is obviously undesirable on many servers.

+

Phusion Passenger solves this problem by implementing user switching. A Rails +application is started as the owner of the file config/environment.rb, +and a Rack application is started as the owner of the file config.ru. +So if /home/webapps/foo/config/environment.rb is owned by joe, then Phusion +Passenger will launch the corresponding Rails application as joe as well.

+

This behavior is the default, and you don’t need to configure anything. But +there are things that you should keep in mind:

+
    +
  • +

    +The owner of environment.rb/config.ru must have read access to the application’s + root directory, and read/write access to the application’s logs directory. +

    +
  • +
  • +

    +This feature is only available if Apache is started by root. This is the + case on most Apache installations. +

    +
  • +
  • +

    +Under no circumstances will applications be run as root. If + environment.rb/config.ru is owned as root or by an unknown user, then the + Rails/Rack application will run as the user specified by + PassengerDefaultUser and + PassengerDefaultGroup. +

    +
  • +
+

User switching can be disabled with the +PassengerUserSwitching +option.

+
+
+

8.2. Reducing memory consumption of Ruby on Rails applications by 33%

+

Is it possible to reduce memory consumption of your Rails applications by 33% on average, +by using Ruby Enterprise Edition. +Please visit the website for details.

+

Note that this feature does not apply to Rack applications.

+
+
+

8.3. Capistrano recipe

+

Phusion Passenger can be combined with Capistrano. +The following Capistrano recipe demonstrates Phusion Passenger support. +It assumes that you’re using Git as version control system.

+
+
+
set :application, "myapp"
+set :domain,      "example.com"
+set :repository,  "ssh://#{domain}/path-to-your-git-repo/#{application}.git"
+set :use_sudo,    false
+set :deploy_to,   "/path-to-your-web-app-directory/#{application}"
+set :scm,         "git"
+
+role :app, domain
+role :web, domain
+role :db,  domain, :primary => true
+
+namespace :deploy do
+  task :start, :roles => :app do
+    run "touch #{current_release}/tmp/restart.txt"
+  end
+
+  task :stop, :roles => :app do
+    # Do nothing.
+  end
+
+  desc "Restart Application"
+  task :restart, :roles => :app do
+    run "touch #{current_release}/tmp/restart.txt"
+  end
+end
+
+
+
+
+

8.4. Bundler support

+

Phusion Passenger has automatic support for Bundler. +It works as follows:

+
    +
  • +

    +If you have a .bundle/environment.rb in your application root, then Phusion + Passenger will require that file before loading your application. +

    +
  • +
  • +

    +Otherwise, if you have a Gemfile, then Phusion Passenger will automatically call + Bundler.setup() before loading your application. +

    +
  • +
+

It’s possible that your application also calls Bundler.setup during loading, e.g. in +config.ru or in config/boot.rb. This is the case with Rails 3, and is also the case if you +modified your config/boot.rb according to the +Bundler Rails 2.3 instructions. +This leads to Bundler.setup being called twice, once before the application startup file +is required and once during application startup. However this is harmless and doesn’t +have any negative effects.

+

Phusion Passenger assumes that you’re using Bundler >= 0.9.5. If you don’t want Phusion +Passenger to run its Bundler support code, e.g. because you need to use an older version +of Bundler with an incompatible API or because you use a system other than Bundler, then +you can override Phusion Passenger’s Bundler support code by creating a file +config/setup_load_paths.rb. If this file exists then it will be required before loading +the application startup file. In this file you can do whatever you need to setup Bundler +or a similar system.

+
+
+

8.5. Moving Phusion Passenger to a different directory

+

It is possible to relocate the Phusion Passenger files to a different directory. It +involves two steps:

+
    +
  1. +

    +Moving the directory. +

    +
  2. +
  3. +

    +Updating the “PassengerRoot” configuration option in Apache. +

    +
  4. +
+

For example, if Phusion Passenger is located in /opt/passenger/, and you’d like to +move it to /usr/local/passenger/, then do this:

+
    +
  1. +

    +Run the following command: +

    +
    +
    +
    mv /opt/passenger /usr/local/passenger
    +
    +
    +
  2. +
  3. +

    +Edit your Apache configuration file, and set: +

    +
    +
    +
    PassengerRoot /usr/local/passenger
    +
    +
    +
  4. +
+
+
+

8.6. Installing multiple Ruby on Rails versions

+

Each Ruby on Rails applications that are going to be deployed may require a +specific Ruby on Rails version. You can install a specific version with +this command:

+
+
+
gem install rails -v X.X.X
+
+
+

where X.X.X is the version number of Ruby on Rails.

+

All of these versions will exist in parallel, and will not conflict with each +other. Phusion Passenger will automatically make use of the correct version.

+
+
+

8.7. Making the application restart after each request

+

In some situations it might be desirable to restart the web application after +each request, for example when developing a non-Rails application that doesn’t +support code reloading, or when developing a web framework.

+

To achieve this, simply create the file tmp/always_restart.txt in your +application’s root folder. Unlike restart.txt, Phusion Passenger does not +check for this file’s timestamp: Phusion Passenger will always restart the +application, as long as always_restart.txt exists.

+
+ + + +
+Note +If you’re just developing a Rails application then you probably don’t need +this feature. If you set RailsEnv development in your Apache configuration, +then Rails will automatically reload your application code after each request. +always_restart.txt is only useful if you’re working on Ruby on Rails itself, +or when you’re not developing a Rails application and your web framework +does not support code reloading.
+
+
+
+

8.8. How to fix broken images/CSS/JavaScript URIs in sub-URI deployments

+

Some people experience broken images and other broken static assets when they +deploy their application to a sub-URI (i.e. http://mysite.com/railsapp/). +The reason for this usually is that you used a +static URI for your image in the views. This means your img source probably refers +to something like /images/foo.jpg. The leading slash means that it’s an absolute URI: +you’re telling the browser to always load http://mysite.com/images/foo.jpg no +matter what. The problem is that the image is actually at +http://mysite.com/railsapp/images/foo.jpg. There are two ways to fix this.

+

The first way (not recommended) is to change your view templates to refer to +images/foo.jpg. This is a relative URI: note the lack of a leading slash). What +this does is making the path relative to the current URI. The problem is that if you +use restful URIs, then your images will probably break again when you add a level to +the URI. +For example, when you’re at http://mysite.com/railsapp the browser will look for +http://mysite.com/railsapp/images/foo.jpg. But when you’re at +http://mysite.com/railsapp/controller. the browser will look for +http://mysite.com/railsapp/controller/images/foo.jpg. +So relative URIs usually don’t work well with layout templates.

+

The second and highly recommended way is to always use Rails helper methods to +output tags for static assets. These helper methods automatically take care +of prepending the base URI that you’ve deployed the application to. For images +there is image_tag, for JavaScript there is javascript_include_tag and for +CSS there is stylesheet_link_tag. In the above example you would simply remove +the <img> HTML tag and replace it with inline Ruby like this:

+
+
+
<%= image_tag("foo.jpg") %>
+
+
+

This will generate the proper image tag to $RAILS_ROOT/public/images/foo.jpg +so that your images will always work no matter what sub-URI you’ve deployed to.

+

These helper methods are more valuable than you may think. For example they also +append a timestamp to the URI to better facilitate HTTP caching. For more information, +please refer to +the Rails API docs.

+
+
+

8.9. X-Sendfile support

+

Phusion Passenger does not provide X-Sendfile support by itself. Please install +mod_xsendfile for X-Sendfile support.

+
+
+

8.10. Upload progress

+

Phusion Passenger does not provide upload progress support by itself. Please +try drogus’s +Apache upload progress module instead.

+
+
+
+
+

9. Under the hood

+
+

Phusion Passenger hides a lot of complexity for the end user (i.e. the web server +system administrator), but sometimes it is desirable to know what is going on. +This section describes a few things that Phusion Passenger does under the hood.

+
+

9.1. Static assets serving

+

Phusion Passenger accelerates serving of static files. This means that, if an URI +maps to a file that exists, then Phusion Passenger will let Apache serve that file +directly, without hitting the web application.

+

Phusion Passenger does all this without the need for any mod_rewrite rules. People +who are switching from an old Mongrel-based setup might have mod_rewrite rules such +as these:

+
+
+
# Check whether this request has a corresponding file; if that
+# exists, let Apache serve it, otherwise forward the request to
+# Mongrel.
+RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
+RewriteRule ^(.*)$ balancer://mongrel%{REQUEST_URI} [P,QSA,L]
+
+
+

These kind of mod_rewrite rules are no longer required, and you can safely remove +them.

+
+
+

9.2. Page caching support

+

For each HTTP request, Phusion Passenger will automatically look for a corresponding +page cache file, and serve that if it exists. It does this by appending ".html" to +the filename that the URI normally maps to, and checking whether that file exists. +This check occurs after checking whether the original mapped filename exists (as part +of static asset serving). All this is done without the need for special mod_rewrite +rules.

+

For example, suppose that the browser requests /foo/bar.

+
    +
  1. +

    +Phusion Passenger will first check whether this URI maps to a static file, i.e. + whether the file foo/bar exists in the web application’s public directory. + If it does then Phusion Passenger will serve this file through Apache immediately. +

    +
  2. +
  3. +

    +If that doesn’t exist, then Phusion Passenger will check whether the file + foo/bar.html exists. If it does then Phusion Passenger will serve this file + through Apache immediately. +

    +
  4. +
  5. +

    +If foo/bar.html doesn’t exist either, then Phusion Passenger will forward the + request to the underlying web application. +

    +
  6. +
+

Note that Phusion Passenger’s page caching support doesn’t work if your web +application uses a non-standard page cache directory, i.e. if it doesn’t cache to +the public directory. In that case you’ll need to use mod_rewrite to serve such +page cache files.

+
+
+

9.3. How Phusion Passenger detects whether a virtual host is a web application

+

After you’ve read the deployment instructions you might wonder how Phusion Passenger +knows that the DocumentRoot points to a web application that Phusion Passenger is +able to serve, and how it knows what kind of web application it is (e.g. Rails or Rack).

+

Phusion Passenger checks whether the virtual host is a Rails application by checking +whether the following file exists:

+
+
+
dirname(DocumentRoot) + "/config/environment.rb"
+
+
+

If you’re not a programmer and don’t understand the above pseudo-code snippet, it means +that Phusion Passenger will:

+
    +
  1. +

    +Extract the parent directory filename from the value of the DocumentRoot directory. +

    +
  2. +
  3. +

    +Append the text "/config/environment.rb" to the result, and check whether the resulting + filename exists. +

    +
  4. +
+

So suppose that your document root is /webapps/foo/public. Phusion Passenger will check +whether the file /webapps/foo/config/environment.rb exists.

+

Note that Phusion Passenger does not resolve any symlinks in the document root path by +default since version 2.2.0 — in contrast to versions earlier than 2.2.0, which do resolve +symlinks. +So for example, suppose that your DocumentRoot points to /home/www/example.com, which in +turn is a symlink to /webapps/example.com/public. In versions earlier than 2.2.0, Phusion +Passenger will check whether /webapps/example.com/config/environment.rb exists because it +resolves all symlinks. Phusion Passenger 2.2.0 and later however will check for +/home/www/config/environment.rb. This file of course doesn’t exist, and as a result Phusion +Passenger will not activate itself for this virtual host, and you’ll most likely see an Apache +mod_dirindex directory listing.

+

If you need the old symlink-resolving behavior for whatever reason, then you can turn on +PassengerResolveSymlinksInDocumentRoot.

+

Another way to solve this situation is to explicitly tell Phusion Passenger what the +correct application root is through the PassengerAppRoot configuration +directive.

+

Autodetection of Rack applications happens through the same mechanism, exception that +Phusion Passenger will look for config.ru instead of config/environment.rb.

+
+
+
+
+

10. Appendix A: About this document

+
+

The text of this document is licensed under the +Creative Commons +Attribution-Share Alike 3.0 Unported License.

+

+ +images/by_sa.png + +

+

Phusion Passenger is brought to you by Phusion.

+

+ +images/phusion_banner.png + +

+

Phusion Passenger is a trademark of Hongli Lai & Ninh Bui.

+
+
+
+

11. Appendix B: Terminology

+
+
+

11.1. Application root

+

The root directory of an application that’s served by Phusion Passenger.

+

In case of Ruby on Rails applications, this is the directory that contains +Rakefile, app/, config/, public/, etc. In other words, the directory +pointed to by RAILS_ROOT. For example, take the following directory structure:

+
+
+
/apps/foo/       <------ This is the Rails application's application root!
+   |
+   +- app/
+   |   |
+   |   +- controllers/
+   |   |
+   |   +- models/
+   |   |
+   |   +- views/
+   |
+   +- config/
+   |   |
+   |   +- environment.rb
+   |   |
+   |   +- ...
+   |
+   +- public/
+   |   |
+   |   +- ...
+   |
+   +- ...
+
+
+

In case of Rack applications, this is the directory that contains config.ru. +For example, take the following directory structure:

+
+
+
/apps/bar/      <----- This is the Rack application's application root!
+   |
+   +- public/
+   |    |
+   |    +- ...
+   |
+   +- config.ru
+   |
+   +- ...
+
+
+

In case of Python (WSGI) applications, this is the directory that contains +passenger_wsgi.py. For example, take the following directory structure:

+
+
+
/apps/baz/      <----- This is the WSGI application's application root!
+   |
+   +- public/
+   |    |
+   |    +- ...
+   |
+   +- passenger_wsgi.py
+   |
+   +- ...
+
+
+
+
+

11.2. Idle process

+

An "idle process" refers to a process that hasn’t processed any requests for a while.

+
+
+

11.3. Inactive process

+

An "inactive process" refers to a process that’s current not processing any requests. An idle process is always inactive, but an inactive process is not always considered idle.

+
+
+
+
+

12. Appendix C: Spawning methods explained

+
+

At its core, Phusion Passenger is an HTTP proxy and process manager. It spawns +Ruby on Rails/Rack/WSGI worker processes (which may also be referred to as +backend processes), and forwards incoming HTTP request to one of the worker +processes.

+

While this may sound simple, there’s not just one way to spawn worker processes. +Let’s go over the different spawning methods. For simplicity’s sake, let’s +assume that we’re only talking about Ruby on Rails applications.

+
+

12.1. The most straightforward and traditional way: conservative spawning

+

Phusion Passenger could create a new Ruby process, which will then load the +Rails application along with the entire Rails framework. This process will then +enter an request handling main loop.

+

This is the most straightforward way to spawn worker processes. If you’re +familiar with the Mongrel application server, then this approach is exactly +what mongrel_cluster performs: it creates N worker processes, each which loads +a full copy of the Rails application and the Rails framework in memory. The Thin +application server employs pretty much the same approach.

+

Note that Phusion Passenger’s version of conservative spawning differs slightly +from mongrel_cluster. Mongrel_cluster creates entirely new Ruby processes. In +programmers jargon, mongrel_cluster creates new Ruby processes by forking the +current process and exec()-ing a new Ruby interpreter. Phusion Passenger on the +other hand creates processes that reuse the already loaded Ruby interpreter. In +programmers jargon, Phusion Passenger calls fork(), but not exec().

+
+
+

12.2. The smart spawning method

+
+ + + +
+Note +Smart spawning is supported for all Ruby applications but not for WSGI applications.
+
+

While conservative spawning works well, it’s not as efficient as it could be +because each worker process has its own private copy of the Rails application +as well as the Rails framework. This wastes memory as well as startup time.

+

+Worker processes and conservative spawning +
+Figure: Worker processes and conservative spawning. Each worker process has its +own private copy of the application code and Rails framework code.

+

It is possible to make the different worker processes share the memory occupied +by application and Rails framework code, by utilizing so-called +copy-on-write semantics of the virtual memory system on modern operating +systems. As a side effect, the startup time is also reduced. This is technique +is exploited by Phusion Passenger’s smart and smart-lv2 spawn methods.

+
+

12.2.1. How it works

+

When the smart-lv2 spawn method is being used, Phusion Passenger will first +create a so-called ApplicationSpawner server process. This process loads the +entire Rails application along with the Rails framework, by loading +environment.rb. Then, whenever Phusion Passenger needs a new worker process, +it will instruct the ApplicationSpawner server to do so. The ApplicationSpawner +server will create a worker new process +that reuses the already loaded Rails application/framework. Creating a worker +process through an already running ApplicationSpawner server is very fast, about +10 times faster than loading the Rails application/framework from scratch. If +the Ruby interpreter is copy-on-write friendly (that is, if you’re running +Ruby Enterprise Edition) then all created worker +processes will share as much common +memory as possible. That is, they will all share the same application and Rails +framework code.

+

+images/smart-lv2.png +
+Figure: Worker processes and the smart-lv2 spawn method. All worker processes, +as well as the ApplicationSpawner, share the same application code and Rails +framework code.

+

The smart spawn method goes even further, by caching the Rails framework in +another process called the FrameworkSpawner server. This process only loads +the Rails framework, not the application. When a FrameworkSpawner server is +instructed to create a new worker process, it will create a new +ApplicationSpawner to which the instruction will be delegated. All those +ApplicationSpawner servers, as well as all worker processes created by those +ApplicationSpawner servers, will share the same Rails framework code.

+

The smart-lv2 method allows different worker processes that belong to the same +application to share memory. The smart method allows different worker +processes - that happen to use the same Rails version - to share memory, even if +they don’t belong to the same application.

+

Notes:

+
    +
  • +

    +Vendored Rails frameworks cannot be shared by different applications, even if + both vendored Rails frameworks are the same version. So for efficiency reasons + we don’t recommend vendoring Rails. +

    +
  • +
  • +

    +ApplicationSpawner and FrameworkSpawner servers have an idle timeout just + like worker processes. If an ApplicationSpawner/FrameworkSpawner server hasn’t + been instructed to do anything for a while, it will be shutdown in order to + conserve memory. This idle timeout is configurable. +

    +
  • +
+
+
+

12.2.2. Summary of benefits

+

Suppose that Phusion Passenger needs a new worker process for an application +that uses Rails 2.2.1.

+
    +
  • +

    +If the smart-lv2 spawning method is used, and an ApplicationSpawner server + for this application is already running, then worker process creation time is + about 10 times faster than conservative spawning. This worker process will also + share application and Rails framework code memory with the ApplicationSpawner + server and the worker processes that had been spawned by this ApplicationSpawner + server. +

    +
  • +
  • +

    +If the smart spawning method is used, and a FrameworkSpawner server for + Rails 2.2.1 is already running, but no ApplicationSpawner server for this + application is running, then worker process creation time is about 2 times + faster than conservative spawning. If there is an ApplicationSpawner server + for this application running, then worker process creation time is about 10 + times faster. This worker process will also share application and Rails + framework code memory with the ApplicationSpawner and FrameworkSpawner + servers. +

    +
  • +
+

You could compare ApplicationSpawner and FrameworkSpawner servers with stem +cells, that have the ability to quickly change into more specific cells (worker +process).

+

In practice, the smart spawning methods could mean a memory saving of about 33%, +assuming that your Ruby interpreter is copy-on-write friendly.

+

Of course, smart spawning is not without gotchas. But if you understand the +gotchas you can easily reap the benefits of smart spawning.

+
+
+
+

12.3. Smart spawning gotcha #1: unintentional file descriptor sharing

+

Because worker processes are created by forking from an ApplicationSpawner +server, it will share all file descriptors that are opened by the +ApplicationSpawner server. (This is part of the semantics of the Unix +fork() system call. You might want to Google it if you’re not familiar with +it.) A file descriptor is a handle which can be an opened file, an opened socket +connection, a pipe, etc. If different worker processes write to such a file +descriptor at the same time, then their write calls will be interleaved, which +may potentially cause problems.

+

The problem commonly involves socket connections that are unintentionally being +shared. You can fix it by closing and reestablishing the connection when Phusion +Passenger is creating a new worker process. Phusion Passenger provides the API +call PhusionPassenger.on_event(:starting_worker_process) to do so. So you +could insert the following code in your environment.rb:

+
+
+ +
if defined?(PhusionPassenger)
+    PhusionPassenger.on_event(:starting_worker_process) do |forked|
+        if forked
+            # We're in smart spawning mode.
+            ... code to reestablish socket connections here ...
+        else
+            # We're in conservative spawning mode. We don't need to do anything.
+        end
+    end
+end
+
+
+

Note that Phusion Passenger automatically reestablishes the connection to the +database upon creating a new worker process, which is why you normally do not +encounter any database issues when using smart spawning mode.

+
+

12.3.1. Example 1: Memcached connection sharing (harmful)

+

Suppose we have a Rails application that connects to a Memcached server in +environment.rb. This causes the ApplicationSpawner to have a socket connection +(file descriptor) to the Memcached server, as shown in the following figure:

+
+
+
+--------------------+
+| ApplicationSpawner |-----------[Memcached server]
++--------------------+
+
+
+

Phusion Passenger then proceeds with creating a new Rails worker process, which +is to process incoming HTTP requests. The result will look like this:

+
+
+
+--------------------+
+| ApplicationSpawner |------+----[Memcached server]
++--------------------+      |
+                            |
++--------------------+      |
+| Worker process 1   |-----/
++--------------------+
+
+
+

Since a fork() makes a (virtual) complete copy of a process, all its file +descriptors will be copied as well. What we see here is that ApplicationSpawner +and Worker process 1 both share the same connection to Memcached.

+

Now supposed that your site gets Slashdotted and Phusion Passenger needs to +spawn another worker process. It does so by forking ApplicationSpawner. The +result is now as follows:

+
+
+
+--------------------+
+| ApplicationSpawner |------+----[Memcached server]
++--------------------+      |
+                            |
++--------------------+      |
+| Worker process 1   |-----/|
++--------------------+      |
+                            |
++--------------------+      |
+| Worker process 2   |-----/
++--------------------+
+
+
+

As you can see, Worker process 1 and Worker process 2 have the same Memcached +connection.

+

Suppose that users Joe and Jane visit your website at the same time. Joe’s +request is handled by Worker process 1, and Jane’s request is handled by Worker +process 2. Both worker processes want to fetch something from Memcached. Suppose +that in order to do that, both handlers need to send a "FETCH" command to Memcached.

+

But suppose that, after worker process 1 having only sent "FE", a context switch +occurs, and worker process 2 starts sending a "FETCH" command to Memcached as +well. If worker process 2 succeeds in sending only one bye, F, then Memcached +will receive a command which begins with "FEF", a command that it does not +recognize. In other words: the data from both handlers get interleaved. And thus +Memcached is forced to handle this as an error.

+

This problem can be solved by reestablishing the connection to Memcached after forking:

+
+
+
+--------------------+
+| ApplicationSpawner |------+----[Memcached server]
++--------------------+      |                   |
+                            |                   |
++--------------------+      |                   |
+| Worker process 1   |-----/|                   |
++--------------------+      |                   |  <--- created this
+                            X                   |       new
+                                                |       connection
+                            X <-- closed this   |
++--------------------+      |     old           |
+| Worker process 2   |-----/      connection    |
++--------------------+                          |
+          |                                     |
+          +-------------------------------------+
+
+
+

Worker process 2 now has its own, separate communication channel with Memcached. +The code in environment.rb looks like this:

+
+
+ +
if defined?(PhusionPassenger)
+    PhusionPassenger.on_event(:starting_worker_process) do |forked|
+        if forked
+            # We're in smart spawning mode.
+            reestablish_connection_to_memcached
+        else
+            # We're in conservative spawning mode. We don't need to do anything.
+        end
+    end
+end
+
+
+
+
+

12.3.2. Example 2: Log file sharing (not harmful)

+

There are also cases in which unintentional file descriptor sharing is not harmful. +One such case is log file file descriptor sharing. Even if two processes write +to the log file at the same time, the worst thing that can happen is that the +data in the log file is interleaved.

+

To guarantee that the data written to the log file is never interleaved, you +must synchronize write access via an inter-process synchronization mechanism, +such as file locks. Reopening the log file, like you would have done in the +Memcached example, doesn’t help.

+
+
+
+

12.4. Smart spawning gotcha #2: the need to revive threads

+

Another part of the fork() system call’s semantics is the fact that threads +disappear after a fork call. So if you’ve created any threads in environment.rb, +then those threads will no longer be running in newly created worker process. +You need to revive them when a new worker process is created. Use the +:starting_worker_process event that Phusion Passenger provides, like this:

+
+
+ +
if defined?(PhusionPassenger)
+    PhusionPassenger.on_event(:starting_worker_process) do |forked|
+        if forked
+            # We're in smart spawning mode.
+            ... code to revive threads here ...
+        else
+            # We're in conservative spawning mode. We don't need to do anything.
+        end
+    end
+end
+
+
+
+
+

12.5. Smart spawning gotcha #3: code load order

+

This gotcha is only applicable to the smart spawn method, not the smart-lv2 +spawn method.

+

If your application expects the Rails framework to be not loaded during the +beginning of environment.rb, then it can cause problems when an +ApplicationSpawner is created from a FrameworkSpawner, which already has the +Rails framework loaded. The most common case is when applications try to patch +Rails by dropping a modified file that has the same name as Rails’s own file, +in a path that comes earlier in the Ruby search path.

+

For example, suppose that we have an application which has a patched version +of active_record/base.rb located in RAILS_ROOT/lib/patches, and +RAILS_ROOT/lib/patches comes first in the Ruby load path. When conservative +spawning is used, the patched version of base.rb is properly loaded. When +smart (not smart-lv2) spawning is used, the original base.rb is used +because it was already loaded, so a subsequent require "active_record/base" +has no effect.

+
+
+
+
+

+ + + + diff -Nru passenger-3.0.19+112~precise1/doc/Users guide Apache.idmap.txt passenger-3.0.21/doc/Users guide Apache.idmap.txt --- passenger-3.0.19+112~precise1/doc/Users guide Apache.idmap.txt 2013-01-30 19:16:22.000000000 +0000 +++ passenger-3.0.21/doc/Users guide Apache.idmap.txt 2013-05-29 12:09:52.000000000 +0000 @@ -18,36 +18,6 @@ 1.2. Where to get support => where-to-get-support-f3pbrb -10. Appendix A: About this document => appendix-a-about-this-document-103toqs - -11. Appendix B: Terminology => appendix-b-terminology-h4eaf4 - -11.1. Application root => application-root-otx6xf - -11.2. Idle process => idle-process-potb6g - -11.3. Inactive process => inactive-process-16gjv2e - -12. Appendix C: Spawning methods explained => appendix-c-spawning-methods-explained-owghi9 - -12.1. The most straightforward and traditional way: conservative spawning => the-most-straightforward-and-traditional-way-conservative-spawning-1ybbli2 - -12.2. The smart spawning method => the-smart-spawning-method-1cvu9dd - -12.2.1. How it works => how-it-works-672zja - -12.2.2. Summary of benefits => summary-of-benefits-1yrihfb - -12.3. Smart spawning gotcha #1: unintentional file descriptor sharing => smart-spawning-gotcha-1-unintentional-file-descriptor-sharing-z1y55l - -12.3.1. Example 1: Memcached connection sharing (harmful) => example-1-memcached-connection-sharing-harmful--c71wqw - -12.3.2. Example 2: Log file sharing (not harmful) => example-2-log-file-sharing-not-harmful--1p2yuol - -12.4. Smart spawning gotcha #2: the need to revive threads => smart-spawning-gotcha-2-the-need-to-revive-threads-1k6cj7d - -12.5. Smart spawning gotcha #3: code load order => smart-spawning-gotcha-3-code-load-order-nkotiy - 2. Installing, upgrading and uninstalling Phusion Passenger => installing-upgrading-and-uninstalling-phusion-passenger-laryvs 2.1. Generic installation instructions => generic-installation-instructions-17jo43j @@ -118,6 +88,22 @@ 5.1. PassengerRoot => passengerroot-directory--sere8l +5.2. PassengerRuby => passengerruby-filename--1r3fv73 + +5.3. PassengerAppRoot => passengerapproot-path-to-root--uf24yd + +5.4. PassengerSpawnMethod => passengerspawnmethod-string--sodg2y + +5.5. PassengerUseGlobalQueue => passengeruseglobalqueue-on-off--1ki369 + +5.6. PassengerEnabled => passengerenabled-on-off--74rzth + +5.7. PassengerTempDir => passengertempdir-directory--68h2ng + +5.8. PassengerUploadBufferDir => passengeruploadbufferdir-directory--kdr8at + +5.9. PassengerRestartDir => passengerrestartdir-directory--1fmhmv0 + 5.10. PassengerBufferResponse => passengerbufferresponse-on-off--1y7ilka 5.11. PassengerRollingRestarts => passengerrollingrestarts @@ -142,10 +128,6 @@ 5.14.1. PassengerMaxPoolSize => passengermaxpoolsize-integer--am64q8 -5.14.10. PassengerPreStart => passengerprestart-url--1dvgku9 - -5.14.11. PassengerHighPerformance => passengerhighperformance-on-off--zgc547 - 5.14.2. PassengerMinInstances => passengermininstances-integer--wegq6b 5.14.3. PassengerMaxInstances => passengermaxinstances @@ -162,6 +144,10 @@ 5.14.9. PassengerStatThrottleRate => passengerstatthrottlerate +5.14.10. PassengerPreStart => passengerprestart-url--1dvgku9 + +5.14.11. PassengerHighPerformance => passengerhighperformance-on-off--zgc547 + 5.15. Compatibility options => compatibility-options-8jve5a 5.15.1. PassengerResolveSymlinksInDocumentRoot => passengerresolvesymlinksindocumentroot-on-off--1r0qcp8 @@ -208,22 +194,6 @@ 5.19.5. RailsSpawnMethod => railsspawnmethod-1aljgpa -5.2. PassengerRuby => passengerruby-filename--1r3fv73 - -5.3. PassengerAppRoot => passengerapproot-path-to-root--uf24yd - -5.4. PassengerSpawnMethod => passengerspawnmethod-string--sodg2y - -5.5. PassengerUseGlobalQueue => passengeruseglobalqueue-on-off--1ki369 - -5.6. PassengerEnabled => passengerenabled-on-off--74rzth - -5.7. PassengerTempDir => passengertempdir-directory--68h2ng - -5.8. PassengerUploadBufferDir => passengeruploadbufferdir-directory--kdr8at - -5.9. PassengerRestartDir => passengerrestartdir-directory--1fmhmv0 - 6. Troubleshooting => troubleshooting-2ihihi 6.1. Operating system-specific problems => operating-system-specific-problems-327gbk @@ -284,8 +254,6 @@ 8.1. User switching (security) => user-switching-security--8njx1x -8.10. Upload progress => upload-progress-71cyl7 - 8.2. Reducing memory consumption of Ruby on Rails applications by 33% => reducing-memory-consumption-of-ruby-on-rails-applications-by-33--1ubxnq0 8.3. Capistrano recipe => capistrano-recipe-syzgo7 @@ -302,6 +270,8 @@ 8.9. X-Sendfile support => x-sendfile-support-1cgyykw +8.10. Upload progress => upload-progress-71cyl7 + 9. Under the hood => under-the-hood-21ue5t 9.1. Static assets serving => static-assets-serving-wo2d9v @@ -310,6 +280,39 @@ 9.3. How Phusion Passenger detects whether a virtual host is a web application => how-phusion-passenger-detects-whether-a-virtual-host-is-a-web-application-179mp8m +10. Appendix A: About this document => appendix-a-about-this-document-103toqs + +11. Appendix B: Terminology => appendix-b-terminology-h4eaf4 + +11.1. Application root => application-root-otx6xf + +11.2. Idle process => idle-process-potb6g + +11.3. Inactive process => inactive-process-16gjv2e + +12. Appendix C: Spawning methods explained => appendix-c-spawning-methods-explained-owghi9 + +12.1. The most straightforward and traditional way: conservative spawning => the-most-straightforward-and-traditional-way-conservative-spawning-1ybbli2 + +12.2. The smart spawning method => the-smart-spawning-method-1cvu9dd + +12.2.1. How it works => how-it-works-672zja + +12.2.2. Summary of benefits => summary-of-benefits-1yrihfb + +12.3. Smart spawning gotcha #1: unintentional file descriptor sharing => smart-spawning-gotcha-1-unintentional-file-descriptor-sharing-z1y55l + +12.3.1. Example 1: Memcached connection sharing (harmful) => example-1-memcached-connection-sharing-harmful--c71wqw + +12.3.2. Example 2: Log file sharing (not harmful) => example-2-log-file-sharing-not-harmful--1p2yuol + +12.4. Smart spawning gotcha #2: the need to revive threads => smart-spawning-gotcha-2-the-need-to-revive-threads-1k6cj7d + +12.5. Smart spawning gotcha #3: code load order => smart-spawning-gotcha-3-code-load-order-nkotiy + + +### These sections appear to have been removed. Please check. + Obtaining Phusion Passenger files through a tarball => obtaining-phusion-passenger-files-through-a-tarball-evcm0j Obtaining Phusion Passenger files with RubyGems => obtaining-phusion-passenger-files-with-rubygems-8fz7a8 diff -Nru passenger-3.0.19+112~precise1/doc/Users guide Nginx.html passenger-3.0.21/doc/Users guide Nginx.html --- passenger-3.0.19+112~precise1/doc/Users guide Nginx.html 1970-01-01 00:00:00.000000000 +0000 +++ passenger-3.0.21/doc/Users guide Nginx.html 2013-05-29 12:09:57.000000000 +0000 @@ -0,0 +1,5291 @@ + + + + + +Phusion Passenger users guide, Nginx version + + + + + + + +
+ +
+

1. Support information

+
+
+

1.1. Supported operating systems

+

Phusion Passenger works on any POSIX-compliant operating system. In other +words: practically any operating system on earth, except Microsoft Windows.

+

Phusion Passenger is confirmed on a large number of operating systems and Linux +distributions, including, but not limited to, Ubuntu, Debian, CentOS/Fedora/RHEL, +Gentoo, Mac OS X, FreeBSD and Solaris. Both 32-bit and 64-bit platforms are supported. +Please +report a bug +or +join our discussion forum +if it doesn’t work on your POSIX-compliant operating system.

+
+
+

1.2. Where to get support

+
+
+
+
+
+

2. Installing Phusion Passenger

+
+
+

2.1. Overview

+

As you might already know, Nginx does not support loadable modules, in contrast +to most other web servers (e.g. Apache). Therefore, to install Phusion Passenger +for Nginx, one must recompile and reinstall Nginx with Phusion Passenger support. +There are two ways to do this:

+
    +
  1. +

    +By running the Phusion Passenger installer for Nginx. This installer will + guide you through the entire installation process, including downloading, + compiling and installing Nginx. You should be able to get Nginx with Phusion + Passenger support up-and-running in a matter of minutes. This is the + recommended installation method. +

    +
  2. +
  3. +

    +By manually configuring and compiling Nginx with Phusion Passenger support, + through Nginx’s --add-module configure option. Generally, using our + installer is easier, so you should only use this method if you’re already + familiar with compiling Nginx. +

    +
  4. +
+
+ + + +
+Tip +You might have to run the installation commands in the following sections +as root. If the installer fails because of permission errors, it will tell +you.
+
+
+
+

2.2. Specifying the correct Ruby installation

+

If your system has multiple Ruby installations — which is likely the case on +MacOS X, or if you’ve also installed +Ruby Enterprise Edition — then you +will need to tell the operating system which Ruby installation to use, prior to +running the Phusion Passenger installer. If you only have one Ruby installation +(the case on most Linux systems), then you can skip this section because Phusion +Passenger will automatically detect it.

+

To specify a Ruby installation, prepend your Ruby installation’s bin +directory to the PATH environment variable. For example, if you have the +following Ruby installations:

+
    +
  • +

    +/usr/bin/ruby +

    +
  • +
  • +

    +/opt/myruby/bin/ruby +

    +
  • +
+

and you want to use the latter, then type:

+
+
+
export PATH=/opt/myruby/bin:$PATH
+
+
+
+
+

2.3. Installing Phusion Passenger for Nginx through the installer

+
+

2.3.1. Obtaining the Phusion Passenger files and running the installer

+

You must obtain the Phusion Passenger files in order to run the installer. +This can be done either by installing the Phusion Passenger gem, or by +downloading the source tarball.

+
+
Gem
+

First, install the Phusion Passenger gem by running:

+
+
+
gem install passenger
+
+
+

Next, run the Phusion Passenger installer for Nginx:

+
+
+
passenger-install-nginx-module
+
+
+

Please follow the instructions given by the installer.

+
+
+
Source tarball
+

The source tarball can be download from the +Phusion Passenger website. Extract the tarball to +whatever location you prefer. The Phusion Passenger files are to reside in that +location permanently. For example, if you would like Phusion Passenger to +reside in /opt/passenger-x.x.x, then type:

+
+
+
cd /opt
+tar xzvf ~/YourDownloadsFolder/passenger-x.x.x.tar.gz
+
+
+

Next, run the Phusion Passenger installer for Nginx:

+
+
+
/opt/passenger-x.x.x/bin/passenger-install-nginx-module
+
+
+

Please follow the instructions given by the installer.

+
+ + + +
+Important +Please do not remove the passenger-x.x.x folder after installation. +Furthermore, the passenger-x.x.x folder must be accessible by Nginx.
+
+
+
+
+

2.3.2. Non-interactive/automatic installation

+

By default, the installer is interactive. If you want to automate installation, +then you can do so by passing various answers to the installer through command +line options.

+

Please run the installer with --help for a list of available command line +options.

+
+
+
+

2.4. Installing Phusion Passenger for Nginx manually

+

You can also install Phusion Passenger the way you install any other Nginx module. +To do this, run Nginx’s configure script with --add-module=/path-to-passenger-root/ext/nginx.

+

If you installed Phusion Passenger via the gem, then path-to-passenger-root +can be obtained with the command:

+
+
+
passenger-config --root
+
+
+

This will probably output something along the lines of /usr/lib/ruby/gems/1.8/gems/passenger-x.x.x, +so you’ll probably have to specify something like --add-module=/usr/lib/ruby/gems/1.8/gems/passenger-x.x.x/ext/nginx.

+

If you installed Phusion Passenger via a source tarball, then path-to-passenger-root +is the directory which contains the Phusion Passenger source code. So if you +extracted the Phusion Passenger source code to /opt/passenger-x.x.x, then you’ll +have to specify --add-module=/opt/passenger-x.x.x/ext/nginx.

+

After having installed Nginx with Phusion Passenger support, you must paste the following +line into your Nginx configuration file:

+
+
+
passenger_root /path-to-passenger-root;
+
+
+

After having done so, restart Nginx.

+
+
+

2.5. Upgrading or downgrading Phusion Passenger or Nginx itself

+

Whether you’re upgrading/downgrading Phusion Passenger or Nginx itself (or perhaps both), +Nginx will have to be recompiled and reinstalled. The procedure is exactly the same as +a normal installation so just follow the instructions in section 2.3 or 2.4.

+

When following the installation instructions, eventually passenger-install-nginx-module +or this document will instruct you to copy & paste some settings into the Nginx +configuration file; something that looks along the lines of:

+
+
+
passenger_root ...;
+passenger_ruby ...;
+
+
+

Because you already had Phusion Passenger installed, you already had similar settings +in your Nginx configuration file, just with different values. Replace the old settings with +the new ones that you are instructed to paste. It is important that the old settings are +removed, otherwise Phusion Passenger may malfunction.

+

When you’re done, restart Nginx.

+
+
+

2.6. Unloading (disabling) Phusion Passenger from Nginx without uninstalling it

+

You can temporarily unload (disable) Phusion Passenger from Nginx, without +uninstalling the Phusion Passenger files, so that Nginx behaves as if Phusion +Passenger was never installed in the first place. This might be useful to you if, +for example, you seem to be experiencing a problem caused by Phusion Passenger, +but you want to make sure whether that’s actually the case, without having +to go through the hassle of uninstalling Phusion Passenger completely. When disabled, +Phusion Passenger will not occupy any memory or CPU or otherwise interfere with +Nginx.

+

To unload Phusion Passenger, edit your Nginx configuration file(s) +and comment out all Phusion Passenger configuration directives.

+

For example, if your configuration file looks like this…

+
+
+
...
+
+http {
+    passenger_root /somewhere/passenger-x.x.x;
+    passenger_ruby /usr/bin/ruby;
+    passenger_max_pool_size 10;
+
+    gzip on;
+
+    server {
+        server_name www.foo.com;
+        listen 80;
+        root /webapps/foo/public;
+        passenger_enabled on;
+        passenger_use_global_queue on;
+    }
+}
+
+
+

…then comment out the relevant directives, so that it looks like this:

+
+
+
...
+
+http {
+    # passenger_root /somewhere/passenger-x.x.x;
+    # passenger_ruby /usr/bin/ruby;
+    # passenger_max_pool_size 10;
+
+    gzip on;
+
+    server {
+        server_name www.foo.com;
+        listen 80;
+        root /webapps/foo/public;
+        # passenger_enabled on;
+        # passenger_use_global_queue on;
+    }
+}
+
+
+

After you’ve done this, save the file and restart Nginx.

+
+
+

2.7. Uninstalling Phusion Passenger

+

To uninstall Phusion Passenger, please first remove all Phusion Passenger +configuration directives from your Nginx configuration file(s). After you’ve +done this, you need to remove the Phusion Passenger files.

+
    +
  • +

    +If you installed Phusion Passenger via a gem, then type gem uninstall passenger. + You might have to run this as root. +

    +
  • +
  • +

    +If you installed Phusion Passenger via a source tarball, then remove the directory + in which you placed the extracted Phusion Passenger files. This directory is the + same as the one pointed to the by PassengerRoot configuration directive. +

    +
  • +
+

After having done so, recompile and reinstall Nginx itself, this time without +Phusion Passenger support, in order to purge any Phusion Passenger code from the +Nginx binary.

+
+
+
+
+

3. Deploying a Ruby on Rails 1.x or 2.x (but NOT Rails >= 3) application

+
+

Suppose you have a Ruby on Rails application in /webapps/mycook, and you own +the domain www.mycook.com. You can either deploy your application to the +virtual host’s root (i.e. the application will be accessible from the root URL, +http://www.mycook.com/), or in a sub URI (i.e. the application will be +accessible from a sub URL, such as http://www.mycook.com/railsapplication).

+
+ + + +
+Note +The default RAILS_ENV environment in which deployed Rails applications +are run, is “production”. You can change this by changing the +rails_env configuration option.
+
+
+

3.1. Deploying to a virtual host’s root

+

Add a server virtual host entry to your Nginx configuration file. The virtual +host’s root must point to your Ruby on Rails application’s public folder.

+

Inside the server block, set passenger_enabled on.

+

For example:

+
+
+
http {
+    ...
+
+    server {
+        listen 80;
+        server_name www.mycook.com;
+        root /webapps/mycook/public;
+        passenger_enabled on;
+    }
+
+    ...
+}
+
+
+

Then restart Nginx. The application has now been deployed.

+
+
+

3.2. Deploying to a sub URI

+

Suppose that you already have a server virtual host entry:

+
+
+
http {
+    ...
+
+    server {
+        listen 80;
+        server_name www.phusion.nl;
+        root /websites/phusion;
+    }
+
+    ...
+}
+
+
+

And you want your Ruby on Rails application to be accessible from the URL +http://www.phusion.nl/rails.

+

To do this, make a symlink in the virtual host’s document root, and have it +point to your Ruby on Rails application’s public folder. For example:

+
+
+
ln -s /webapps/mycook/public /websites/phusion/rails
+
+
+

Next, set passenger_enabled on and add a passenger_base_uri +option to the server block:

+
+
+
http {
+    ...
+
+    server {
+        listen 80;
+        server_name www.phusion.nl;
+        root /websites/phusion;
+        passenger_enabled on;        # <--- These lines have
+        passenger_base_uri /rails;   # <--- been added.
+    }
+
+    ...
+}
+
+
+

Then restart Nginx. The application has now been deployed.

+
+ + + +
+Tip + +

You can deploy multiple Rails applications under a virtual host, by specifying +passenger_base_uri multiple times. For example:

+
+
+
server {
+    ...
+    passenger_base_uri /app1;
+    passenger_base_uri /app2;
+    passenger_base_uri /app3;
+}
+
+
+
+
+
+
+

3.3. Redeploying (restarting the Ruby on Rails application)

+

Deploying a new version of a Ruby on Rails application is as simple as +re-uploading the application files, and restarting the application.

+

There are two ways to restart the application:

+
    +
  1. +

    +By restarting Nginx. +

    +
  2. +
  3. +

    +By creating or modifying the file tmp/restart.txt in the Rails + application’s root folder. Phusion Passenger will + automatically restart the application during the next request. +

    +
  4. +
+

For example, to restart our example MyCook application, we type this in the +command line:

+
+
+
touch /webapps/mycook/tmp/restart.txt
+
+
+

Please note that, unlike earlier versions of Phusion Passenger, restart.txt +is not automatically deleted. Phusion Passenger checks whether the timestamp +of this file has changed in order to determine whether the application should +be restarted.

+
+
+

3.4. Migrations

+

Phusion Passenger is not related to Ruby on Rails migrations in any way. To +run migrations on your deployment server, please login to your deployment +server (e.g. with ssh) and type rake db:migrate RAILS_ENV=production in +a shell console, just like one would normally run migrations.

+
+
+

3.5. Capistrano integration

+ +
+
+
+
+

4. Deploying a Rack-based Ruby application (including Rails >= 3)

+
+

Phusion Passenger supports arbitrary Ruby web applications that follow the +Rack interface.

+

Phusion Passenger assumes that Rack application directories have a certain layout. +Suppose that you have a Rack application in /webapps/rackapp. Then that +folder must contain at least three entries:

+
    +
  • +

    +config.ru, a Rackup file for starting the Rack application. This file must contain + the complete logic for initializing the application. +

    +
  • +
  • +

    +public/, a folder containing public static web assets, like images and stylesheets. +

    +
  • +
  • +

    +tmp/, used for restart.txt (our application restart mechanism). This will + be explained in a following subsection. +

    +
  • +
+

So /webapps/rackapp must, at minimum, look like this:

+
+
+
/webapps/rackapp
+  |
+  +-- config.ru
+  |
+  +-- public/
+  |
+  +-- tmp/
+
+
+

Suppose you own the domain www.rackapp.com. You can either deploy your application +to the virtual host’s root (i.e. the application will be accessible from the root URL, +http://www.rackapp.com/), or in a sub URI (i.e. the application will be +accessible from a sub URL, such as http://www.rackapp.com/rackapp).

+
+ + + +
+Note +The default RACK_ENV environment in which deployed Rack applications +are run, is “production”. You can change this by changing the +rack_env configuration option.
+
+
+

4.1. Tutorial/example: writing and deploying a Hello World Rack application

+

First we create a Phusion Passenger-compliant Rack directory structure:

+
+
+
$ mkdir /webapps/rack_example
+$ mkdir /webapps/rack_example/public
+$ mkdir /webapps/rack_example/tmp
+
+
+

Next, we write a minimal "hello world" Rack application:

+
+
+
$ cd /webapps/rack_example
+$ some_awesome_editor config.ru
+...type in some source code...
+$ cat config.ru
+app = proc do |env|
+    [200, { "Content-Type" => "text/html" }, ["hello <b>world</b>"]]
+end
+run app
+
+
+

Finally, we deploy it by adding the following configuration options to +the Nginx configuration file:

+
+
+
http {
+    ...
+    server {
+        listen 80;
+        server_name www.rackexample.com;
+        root /webapps/rack_example/public;
+        passenger_enabled on;
+    }
+    ...
+}
+
+
+

And we’re done! After an Nginx restart, the above Rack application will be available +under the URL http://www.rackexample.com/.

+
+
+

4.2. Deploying to a virtual host’s root

+

Add a server virtual host entry to your Nginx configuration file. The virtual host’s +root must point to your Rack application’s public folder. You must also set +passenger_enabled on in the server block.

+

For example:

+
+
+
http {
+    ...
+    server {
+        listen 80;
+        server_name www.rackapp.com;
+        root /webapps/rackapp/public;
+        passenger_enabled on;
+    }
+    ...
+}
+
+
+

Then restart Nginx. The application has now been deployed.

+
+
+

4.3. Deploying to a sub URI

+

Suppose that you already have a virtual host:

+
+
+
http {
+    ...
+
+    server {
+        listen 80;
+        server_name www.phusion.nl;
+        root /websites/phusion;
+        passenger_enabled on;
+    }
+
+    ...
+}
+
+
+

And you want your Rack application to be accessible from the URL +http://www.phusion.nl/rack.

+

To do this, make a symlink in the virtual host’s document root, and have it +point to your Rack application’s public folder. For example:

+
+
+
ln -s /webapps/rackapp/public /websites/phusion/rack
+
+
+

Next, set passenger_enabled on and add a passenger_base_uri +option to the server block:

+
+
+
http {
+    ...
+
+    server {
+        listen 80;
+        server_name www.phusion.nl;
+        root /websites/phusion;
+        passenger_enabled on;        # <--- These lines have
+        passenger_base_uri /rack;    # <--- been added.
+    }
+
+    ...
+}
+
+
+

Then restart Nginx. The application has now been deployed.

+
+ + + +
+Tip + +

You can deploy multiple Rack applications under a virtual host, by specifying +passenger_base_uri multiple times. For example:

+
+
+
server {
+    ...
+    passenger_base_uri /app1;
+    passenger_base_uri /app2;
+    passenger_base_uri /app3;
+}
+
+
+
+
+
+
+

4.4. Redeploying (restarting the Rack application)

+

Deploying a new version of a Rack application is as simple as +re-uploading the application files, and restarting the application.

+

There are two ways to restart the application:

+
    +
  1. +

    +By restarting Nginx. +

    +
  2. +
  3. +

    +By creating or modifying the file tmp/restart.txt in the Rack + application’s root folder. Phusion Passenger will + automatically restart the application. +

    +
  4. +
+

For example, to restart our example application, we type this in the +command line:

+
+
+
touch /webapps/rackapp/tmp/restart.txt
+
+
+
+
+

4.5. Rackup specifications for various web frameworks

+

This subsection shows example config.ru files for various web frameworks.

+
+

4.5.1. Camping

+
+
+
require 'rubygems'
+require 'rack'
+require 'camping'
+
+##### Begin Camping application
+Camping.goes :Blog
+
+...your application code here...
+##### End Camping application
+
+run Rack::Adapter::Camping.new(Blog)
+
+
+

For Camping versions 2.0 and up, using run Blog as the final line will do.

+
+
+

4.5.2. Halcyon

+
+
+
require 'rubygems'
+require 'halcyon'
+$LOAD_PATH.unshift(Halcyon.root / 'lib')
+Halcyon::Runner.load_config Halcyon.root/'config'/'config.yml'
+run Halcyon::Runner.new
+
+
+
+
+

4.5.3. Mack

+
+
+
ENV["MACK_ENV"] = ENV["RACK_ENV"]
+load("Rakefile")
+require 'rubygems'
+require 'mack'
+run Mack::Utils::Server.build_app
+
+
+
+
+

4.5.4. Merb

+
+
+
require 'rubygems'
+require 'merb-core'
+
+Merb::Config.setup(
+  :merb_root   => ::File.expand_path(::File.dirname(__FILE__)),
+  :environment => ENV['RACK_ENV']
+)
+Merb.environment = Merb::Config[:environment]
+Merb.root = Merb::Config[:merb_root]
+Merb::BootLoader.run
+
+run Merb::Rack::Application.new
+
+
+
+
+

4.5.5. Ramaze

+
+
+
require "rubygems"
+require "ramaze"
+Ramaze.trait[:essentials].delete Ramaze::Adapter
+require "start"
+Ramaze.start!
+run Ramaze::Adapter::Base
+
+
+
+
+

4.5.6. Sinatra

+
+
+
require 'rubygems'
+require 'sinatra'
+require 'app.rb'
+
+run Sinatra::Application
+
+
+
+
+
+
+
+

5. Configuring Phusion Passenger

+
+

After installation, Phusion Passenger does not need any further configurations. +Nevertheless, the system administrator may be interested in changing +Phusion Passenger’s behavior. Phusion Passenger supports the following configuration +options in the Nginx configuration file:

+
+

5.1. passenger_root <directory>

+

The location to the Phusion Passenger root directory. This configuration option +is essential to Phusion Passenger, and allows Phusion Passenger to locate its own +data files. The correct value is given by the installer.

+

If you’ve moved Phusion Passenger to a different directory then you need to update +this option as well. Please read +Moving Phusion Passenger to a different directory for more information.

+

This required option may only occur once, in the http configuration block.

+
+
+

5.2. passenger_ruby <filename>

+

This option allows one to specify the Ruby interpreter to use.

+

This option may only occur once, in the http configuration block. +The default is ruby.

+
+
+

5.3. passenger_spawn_method <string>

+
+ + + +
+Tip + +
"What spawn method should I use?"
+

This subsection attempts to describe spawn methods, but it’s okay if you don’t (want to) +understand it, as it’s mostly a technical detail. You can basically follow this rule of thumb:

+
+
+

If your application works on Mongrel, but not on Phusion Passenger, then set +passenger_spawn_method to conservative. Otherwise, leave it at smart-lv2 (the default).

+
+
+

However, we do recommend you to try to understand it. The smart and smart-lv2 spawn +methods bring many benefits.

+
+
+

Internally, Phusion Passenger spawns multiple Ruby application processes in order to handle +requests. But there are multiple ways with which processes can be spawned, each having +its own set of pros and cons. Supported spawn methods are:

+
+
+smart +
+
+

+When this spawn method is used, Phusion Passenger will attempt to cache any +framework code (e.g. Ruby on Rails itself) and application code for a limited +period of time. Please read Spawning methods explained +for a more detailed explanation of what smart spawning exactly does. +

+

Pros: +This can significantly decrease spawn time (by as much as 90%). And, when Ruby Enterprise +Edition is used, memory usage can be reduced by 33% on average.

+

Cons: +Some applications and libraries are not compatible with smart spawning. +If that’s the case for your application, then you should use conservative as +spawning method. Please read Spawning methods explained +for possible compatibility issues.

+
+
+smart-lv2 +
+
+

+This spawning method is similar to smart but it skips the framework spawner +and uses the application spawner directly. This means the framework code is not +cached between multiple applications, although it is still cached within +instances of the same application. Please read +Spawning methods explained for a more detailed +explanation of what smart-lv2 spawning exactly does. +

+

Pros: It is compatible with a larger number of applications when compared to +the smart method, and still performs some caching.

+

Cons: It is slower than smart spawning if you have many applications which +use the same framework version. It is therefore advised that shared hosts use the +smart method instead.

+
+
+conservative +
+
+

+This spawning method is similar to the one used in Mongrel Cluster. It does not +perform any code caching at all. Please read +Spawning methods explained for a more detailed +explanation of what conservative spawning exactly does. +

+

Pros: +Conservative spawning is guaranteed to be compatible with all applications +and libraries.

+

Cons: +Much slower than smart spawning. Every spawn action will be equally slow, though no slower than +the startup time of a single server in Mongrel Cluster. Conservative spawning will also +render Ruby Enterprise Edition’s memory reduction technology useless.

+
+
+

This option may occur in the following places:

+
    +
  • +

    +In the http configuration block. +

    +
  • +
  • +

    +In a server configuration block. +

    +
  • +
  • +

    +In a location configuration block. +

    +
  • +
  • +

    +In an if configuration scope. +

    +
  • +
+

In each place, it may be specified at most once. The default value is smart-lv2.

+
+
+

5.4. passenger_rolling_restarts <on|off>

+

This feature is only available in Phusion Passenger Enterprise. It was introduced in version 3.0.0. Buy Phusion Passenger Enterprise here.

+

Enables or disables support for rolling restarts. Normally when you +restart an application (by touching restart.txt), Phusion Passenger would +shut down all application processes and spawn a new one. The spawning +of a new application process could take a while, and any requests that +come in during this time will be blocked until this first application +process has spawned.

+

But when rolling restarts are enabled, Phusion Passenger Enterprise will:

+
    +
  1. +

    +Spawn a new process in the background. +

    +
  2. +
  3. +

    +When it’s done spawning, Phusion Passenger Enterprise will replace one of the old processes with this newly spawned one. +

    +
  4. +
  5. +

    +Step 1 and 2 are repeated until all processes have been replaced. +

    +
  6. +
+

This way, visitors will not experience any delays when you are restarting your application. This allows you to, for example, upgrade your application often without degrading user experience.

+

Rolling restarts have a few caveat however that you should be aware of:

+
    +
  • +

    +Upgrading an application sometimes involves upgrading the database schema. + With rolling restarts, there may be a point in time during which processes + belonging to the previous version and processes belonging to the new version + both exist at the same time. Any database schema upgrades you perform must + therefore be backwards-compatible with the old application version. +

    +
  • +
  • +

    +Because there’s no telling which process will serve a request, users may + not see changes brought about by the new version until all processes have + been restarted. It is for this reason that you should not use rolling + restarts in development, only in production. +

    +
  • +
+

This option may occur in the following places:

+
    +
  • +

    +In the http configuration block. +

    +
  • +
  • +

    +In a server configuration block. +

    +
  • +
  • +

    +In a location configuration block. +

    +
  • +
  • +

    +In an if configuration scope. +

    +
  • +
+

In each place, it may be specified at most once. The default value is off.

+
+
+

5.5. passenger_resist_deployment_errors <on|off>

+

This feature is only available in Phusion Passenger Enterprise. It was introduced in version 3.0.0. Buy Phusion Passenger Enterprise here.

+

Enables or disables resistance against deployment errors.

+

Suppose you’ve upgraded your application and you’ve issues a command to restart it (by touching restart.txt), but the application code contains an error that prevents Phusion Passenger from successfully spawning a process (e.g. a syntax error). Phusion Passenger would normally display an error message in response to this.

+

By enabling deployment error resistance, Phusion Passenger Enterprise would instead do this:

+
    +
  • +

    +It passes the request to one of the existing application processes (that belong to the previous version of the application). The visitor will not see a Phusion Passenger process spawning error message. +

    +
  • +
  • +

    +It logs the error to the global web server error log file. +

    +
  • +
  • +

    +It sets an internal flag so that no processes for this application will be spawned (even when the current traffic would normally result in more processes being spawned) and no processes will be idle cleaned. Processes could still be shutdown because of other events, e.g. because their memory limit have been reached. +

    +
  • +
+

This way, visitors will suffer minimally from deployment errors. Phusion Passenger will attempt to restart the application again next time restart.txt is touched.

+

Enabling deployment error resistance only works if rolling restart is also enabled.

+

This option may occur in the following places:

+
    +
  • +

    +In the http configuration block. +

    +
  • +
  • +

    +In a server configuration block. +

    +
  • +
  • +

    +In a location configuration block. +

    +
  • +
  • +

    +In an if configuration scope. +

    +
  • +
+

In each place, it may be specified at most once. The default value is off.

+
+
+

5.6. Important deployment options

+
+

5.6.1. passenger_enabled <on|off>

+

This option may be specified in the http configuration block, a +server configuration block, a location configuration block or +an if configuration scope, to enable or disable Phusion Passenger +for that server or that location.

+

Phusion Passenger is disabled by default, so you must explicitly enable +it for server blocks that you wish to serve through Phusion Passenger. +Please see Deploying a Ruby on Rails application +and Deploying a Rack-based Ruby application +for examples.

+
+
+

5.6.2. passenger_base_uri <uri>

+

Used to specify that the given URI is an distinct application that should +be served by Phusion Passenger. This option can be used for both Rails and +Rack applications. See Deploying Rails to a sub URI +for an example.

+

It is allowed to specify this option multiple times. Do this to deploy multiple +applications in different sub-URIs under the same virtual host.

+

This option may occur in the following places:

+
    +
  • +

    +In the http configuration block. +

    +
  • +
  • +

    +In a server configuration block. +

    +
  • +
  • +

    +In a location configuration block. +

    +
  • +
  • +

    +In an if configuration scope. +

    +
  • +
+
+
+
+

5.7. Connection handling options

+
+

5.7.1. passenger_use_global_queue <on|off>

+

Turns the use of global queuing on or off.

+

This option may occur in the following places:

+
    +
  • +

    +In the http configuration block. +

    +
  • +
  • +

    +In a server configuration block. +

    +
  • +
  • +

    +In a location configuration block. +

    +
  • +
  • +

    +In an if configuration scope. +

    +
  • +
+

In each place, it may be specified at most once. The default value is on.

+

This feature is sponsored by 37signals.

+
+
What does this option do?
+

Recall that Phusion Passenger spawns multiple backend processes (e.g. multiple +Ruby on Rails processes), each which processes HTTP requests serially. One of +Phusion Passenger’s jobs is to forward HTTP requests to a suitable backend +process. A backend process may take an arbitrary amount of time to process a +specific HTTP request. If the websites are (temporarily) under high load, and +the backend processes cannot process the requests fast enough, then some +requests may have to be queued.

+
+

If global queuing is turned off, then Phusion Passenger will use fair load +balancing. This means that each backend process will have its own private +queue. Phusion Passenger will forward an HTTP request to the backend process +that has the least amount of requests in its queue.

+

If global queuing is turned on, then Phusion Passenger will use a global queue +that’s shared between all backend processes. If an HTTP request comes in, and +all the backend processes are still busy, then Phusion Passenger will wait until +at least one backend process is done, and will then forward the request to that +process.

+
+
When to turn on global queuing?
+

You should turn on global queuing if one of your web applications may have +long-running requests.

+
+

For example suppose that:

+
    +
  • +

    +global queuing is turned off. +

    +
  • +
  • +

    +we’re currently in a state where all backend processes have 3 requests in + their queue, except for a single backend process, which has 1 request in its + queue. +

    +
  • +
+

The situation looks like this:

+
+
+
Backend process A:  [*     ]  (1 request in queue)
+Backend process B:  [***   ]  (3 requests in queue)
+Backend process C:  [***   ]  (3 requests in queue)
+Backend process D:  [***   ]  (3 requests in queue)
+
+
+

Each process is currently serving short-running requests.

+

Phusion Passenger will forward the next request to backend process A. A will +now have 2 items in its queue. We’ll mark this new request with an X:

+
+
+
Backend process A:  [*X    ]  (2 request in queue)
+Backend process B:  [***   ]  (3 requests in queue)
+Backend process C:  [***   ]  (3 requests in queue)
+Backend process D:  [***   ]  (3 requests in queue)
+
+
+

Assuming that B, C and D still aren’t done with their current request, the next +HTTP request - let’s call this Y - will be forwarded to backend process A as +well, because it has the least number of items in its queue:

+
+
+
Backend process A:  [*XY   ]  (3 requests in queue)
+Backend process B:  [***   ]  (3 requests in queue)
+Backend process C:  [***   ]  (3 requests in queue)
+Backend process D:  [***   ]  (3 requests in queue)
+
+
+

But if request X happens to be a long-running request that needs 60 seconds to +complete, then we’ll have a problem. Y won’t be processed for at least 60 +seconds. It would have been a better idea if Y was forward to processes B, C or +D instead, because they only have short-living requests in their queues.

+

This problem will be avoided entirely if you turn global queuing on. With global +queuing, all backend processes will share the same queue. The first backend +process that becomes available will take from the queue, and so this +“queuing-behind-long-running-request” problem will never occur.

+
+
+

5.7.2. passenger_ignore_client_abort <on|off>

+

Normally, when the HTTP client aborts the connection (e.g. when the user clicked on "Stop" +in the browser), the connection with the application process will be closed too. If the +application process continues to send its response, then that will result in EPIPE errors +in the application, which will be printed in the error log if the application doesn’t +handle them gracefully.

+

If this option is turned on then upon client abort Phusion Passenger will continue to +read the application process’s response while discarding all the read data. This prevents +EPIPE errors but it’ll also mean the backend process will be unavailable for new requests +until it is done sending its response.

+

This option may occur in the following places:

+
    +
  • +

    +In the http configuration block. +

    +
  • +
  • +

    +In a server configuration block. +

    +
  • +
  • +

    +In a location configuration block. +

    +
  • +
  • +

    +In an if configuration scope. +

    +
  • +
+

In each place, it may be specified at most once. The default value is off.

+
+
+

5.7.3. passenger_set_cgi_param <CGI environment name> <value>

+

Allows one to define additional CGI environment variables to pass to the backend +application. This is equivalent to ngx_http_fastcgi_module’s fastcgi_param +directive, and is comparable to ngx_http_proxy_module’s proxy_set_header option. +Nginx variables in the value are interpolated.

+

For example:

+
+
+
# Application will see a CGI environment "APP_NAME" with value "my super blog".
+passenger_set_cgi_param APP_NAME "my super blog";
+
+# Nginx variables are interpolated.
+passenger_set_cgi_param EXTRA_REQUEST_METHOD method=$request_method;
+
+
+

If you want to set an HTTP header, then you must set it in the CGI environment name +format, i.e. HTTP_*:

+
+
+
# !!!THIS IS WRONG!!! Don't do this!
+passenger_set_cgi_param X-Forwarded-For 127.0.0.2;
+
+# Instead, write it like this:
+passenger_set_cgi_param HTTP_X_FORWARDED_FOR 127.0.0.2;
+
+
+

This option may occur in the following places:

+
    +
  • +

    +In the http configuration block. +

    +
  • +
  • +

    +In a server configuration block. +

    +
  • +
  • +

    +In a location configuration block. +

    +
  • +
  • +

    +In an if configuration scope. +

    +
  • +
+
+
+

5.7.4. passenger_pass_header <header name>

+

Some headers generated by backend applications are not forwarded to the HTTP client, +e.g. X-Accel-Redirect which is directly processed by Nginx and then discarded from +the final response. This directive allows one to force Nginx to pass those headers +anyway, similar to how proxy_pass_header works.

+

For example:

+
+
+
location / {
+   passenger_pass_header X-Accel-Redirect;
+}
+
+
+

This option may occur in the following places:

+
    +
  • +

    +In the http configuration block. +

    +
  • +
  • +

    +In a server configuration block. +

    +
  • +
  • +

    +In a location configuration block. +

    +
  • +
  • +

    +In an if configuration scope. +

    +
  • +
+
+
+

5.7.5. passenger_buffer_response <on|off>

+

When turned on, application-generated responses are buffered in memory and also on +disk if the response is larger than a certain threshold. By buffering responses, +protection is provided against slow HTTP clients that can not read your response +immediately.

+

For example, consider an HTTP client that’s on a dial-up modem link, and your +application process generates a 2 MB response. If response buffering is turned +off then your application process will be blocked until the entire 2 MB has been +sent out to the HTTP client. This disallows your application process to do any useful +work in the mean time. By enabling response buffering, Phusion Passenger will read +the application response as quickly as possible and will take care of slow clients.

+

However, keep in mind that enabling this option will make streaming responses +impossible. Consider for example this piece of Rails code:

+
+
+
render :text => lambda { |response, output|
+    10.times do |i|
+        output.write("entry #{i}\n")
+        output.flush
+        sleep 1
+    end
+}
+
+
+

…or this piece of Rack code:

+
+
+
class Response
+    def each
+        10.times do |i|
+            yield("entry #{i}\n")
+            sleep 1
+        end
+    end
+end
+
+app = lambda do |env|
+    [200, { "Content-Type" => "text/plain" }, Response.new]
+end
+
+
+

When response buffering is turned on, Phusion Passenger will wait until +the application is done sending the entire response before forwarding it +to the client. The client will not receive anything for 10 seconds, +after which it receives the entire response at once. +When response buffering is turned off, it works as expected: the client +receives an "entry X" message every second for 10 seconds.

+

This option may occur in the following places:

+
    +
  • +

    +In the http configuration block. +

    +
  • +
  • +

    +In a server configuration block. +

    +
  • +
  • +

    +In a location configuration block. +

    +
  • +
  • +

    +In an if configuration scope. +

    +
  • +
+

In each place, it may be specified at most once. The default value is on.

+
+
+

5.7.6. passenger_buffer_size

+
+
+

5.7.7. passenger_buffers

+
+
+

5.7.8. passenger_busy_buffer_size

+

These options have the same effect as proxy_module’s similarly named options. +They can be used to modify the maximum allowed HTTP header size.

+
+
+
+

5.8. Security options

+
+

5.8.1. passenger_user_switching <on|off>

+

Whether to enable user switching support.

+

This option may only occur once, in the http configuration block. +The default value is on.

+
+
+

5.8.2. passenger_user <username>

+

If user switching support is enabled, then Phusion Passenger will +by default run the web application as the owner of the file config/environment.rb +(for Rails apps) or config.ru (for Rack apps). This option allows you to override +that behavior and explicitly set a user to run the web application as, regardless +of the ownership of environment.rb/config.ru.

+

This option may occur in the following places:

+
    +
  • +

    +In the http configuration block. +

    +
  • +
  • +

    +In a server configuration block. +

    +
  • +
  • +

    +In a location configuration block. +

    +
  • +
  • +

    +In an if configuration scope. +

    +
  • +
+

In each place, it may be specified at most once.

+
+
+

5.8.3. passenger_group <group name>

+

If user switching support is enabled, then Phusion Passenger will +by default run the web application as the primary group of the owner of the file +config/environment.rb (for Rails apps) or config.ru (for Rack apps). This option +allows you to override that behavior and explicitly set a group to run the web application +as, regardless of the ownership of environment.rb/config.ru.

+

<group name> may also be set to the special value !STARTUP_FILE!, in which case +the web application’s group will be set to environment.rb/config.ru's group.

+

This option may occur in the following places:

+
    +
  • +

    +In the http configuration block. +

    +
  • +
  • +

    +In a server configuration block. +

    +
  • +
  • +

    +In a location configuration block. +

    +
  • +
  • +

    +In an if configuration scope. +

    +
  • +
+

In each place, it may be specified at most once.

+
+
+

5.8.4. passenger_default_user <username>

+

Phusion Passenger enables user switching support by default. +This configuration option allows one to specify the user that applications must +run as, if user switching fails or is disabled.

+

This option may only occur once, in the http configuration block. +The default value is nobody.

+
+
+

5.8.5. Passenger_default_group <group name>

+

Phusion Passenger enables user switching support by default. +This configuration option allows one to specify the group that applications must +run as, if user switching fails or is disabled.

+

This option may only occur once, in the http configuration block. +The default value is the primary group of the user specifified by +passenger_default_user.

+
+
+

5.8.6. passenger_friendly_error_pages <on|off>

+

Phusion Passenger can display friendly error pages whenever an application fails +to start. This friendly error page presents the startup error message, some +suggestions for solving the problem, and a backtrace. This feature is very useful +during application development and useful for less experienced system administrators, +but the page might reveal potentially sensitive information, depending on the +application. Experienced system administrators who are using Phusion Passenger +on serious production servers should consider turning this feature off.

+

This option may occur in the following places:

+
    +
  • +

    +In the http configuration block. +

    +
  • +
  • +

    +In a server configuration block. +

    +
  • +
  • +

    +In a location configuration block. +

    +
  • +
  • +

    +In an if configuration scope. +

    +
  • +
+

In each place, it may be specified at most once. The default value is on.

+
+
+
+

5.9. Resource control and optimization options

+
+

5.9.1. passenger_max_pool_size <integer>

+

The maximum number of application processes that may +simultanously exist. A larger number results in higher memory usage, +but improved ability to handle concurrent HTTP clients.

+

The optimal value depends on your system’s hardware and the server’s average +load. You should experiment with different values. But generally speaking, +the value should be at least equal to the number of CPUs (or CPU cores) that +you have. If your system has 2 GB of RAM, then we recommend a value of 15. +If your system is a Virtual Private Server (VPS) and has about 256 MB RAM, and +is also running other services such as MySQL, then we recommend a value of 2.

+

If you find that your server is unable to handle the load on your Rails/Rack websites +(i.e. running out of memory) then you should lower this value. (Though if your +sites are really that popular, then you should strongly consider upgrading your +hardware or getting more servers.)

+

This option may only occur once, in the http configuration bock. +The default value is 6.

+
+ + + +
+Tip +We strongly recommend you to use Ruby Enterprise Edition. This allows you to reduce the memory usage of your Ruby on Rails applications +by about 33%, and it’s not hard to install.
+
+
+
+

5.9.2. passenger_min_instances <integer>

+

This specifies the minimum number of application processes that should exist for a +given application. You should set this option to a +non-zero value if you want to avoid potentially long startup times after a website +has been idle for an extended period.

+

Please note that this option does not pre-start application processes during Nginx +startup. It just makes sure that when the application is first accessed:

+
    +
  1. +

    +at least the given number of processes will be spawned. +

    +
  2. +
  3. +

    +the given number of processes will be kept around even when processes are being + idle cleaned (see passenger_pool_idle_time). +

    +
  4. +
+

If you want to pre-start application processes during Nginx startup, then you should use the passenger_pre_start directive, possibly in combination with +passenger_min_instances. This behavior might seem counter-intuitive at first sight, +but passenger_pre_start explains the rationale behind it.

+

For example, suppose that you have the following configuration:

+
+
+
http {
+    ...
+    passenger_max_pool_size 15;
+    passenger_pool_idle_time 10;
+
+    server {
+        listen 80;
+        server_name foobar.com;
+        root /webapps/foobar/public;
+        passenger_min_instances 3;
+    }
+}
+
+
+

When you start Nginx, there are 0 application processes for foobar.com. Things will +stay that way until someone visits foobar.com. Suppose that there is only 1 visitor. +1 application process will be started immediately to serve the visitor, while 2 will +be spawned in the background. After 10 seconds, when the idle timeout has +been reached, these 3 application processes will not be cleaned up.

+

Now suppose that there’s a sudden spike of traffic, and 100 users visit foobar.com +simultanously. Phusion Passenger will start 12 more application processes. After the idle +timeout of 10 seconds have passed, Phusion Passenger will clean up 12 application +processes, keeping 3 processes around.

+

The passenger_min_instances option may occur in the following places:

+
    +
  • +

    +In the http configuration block. +

    +
  • +
  • +

    +In a server configuration block. +

    +
  • +
  • +

    +In a location configuration block. +

    +
  • +
  • +

    +In an if configuration scope. +

    +
  • +
+

In each place, it may be specified at most once. The default value is 1.

+
+
+

5.9.3. passenger_max_instances <integer>

+

This feature is only available in Phusion Passenger Enterprise. It was introduced in version 3.0.0. Buy Phusion Passenger Enterprise here.

+

The maximum number of application processes that may simultaneously exist +for an application. This helps to make sure that a single application +will not occupy all available slots in the application pool.

+

This value must be less than passenger_max_pool_size. A value of 0 +means that there is no limit placed on the number of processes a single application +may spawn, i.e. only the global limit of passenger_max_pool_size +will be enforced.

+

This option may occur in the following places:

+
    +
  • +

    +In the http configuration block. +

    +
  • +
  • +

    +In a server configuration block. +

    +
  • +
  • +

    +In a location configuration block. +

    +
  • +
  • +

    +In an if configuration scope. +

    +
  • +
+

In each place, it may be specified at most once. The default value is 0.

+
+ + + +
+Tip + +
Practical usage example
+

Suppose that you’re hosting two web applications on your server, a personal +blog and an e-commerce website. You’ve set passenger_max_pool_size +to 10. The e-commerce website is more important to you. You can then set +passenger_max_instances to 3 for your blog, so that it will never spawn more +than 3 processes, even if it suddenly gets a lot of traffic. Your e-commerce website +on the other hand will be free to spawn up to 10 processes if it gets a lot of traffic.

+
+
+
+
+

5.9.4. passenger_max_instances_per_app <integer>

+

The maximum number of application processes that may simultaneously exist +for a single application. This helps to make sure that a single application +will not occupy all available slots in the application pool.

+

This value must be less than passenger_max_pool_size. A value of 0 +means that there is no limit placed on the number of processes a single application +may use, i.e. only the global limit of passenger_max_pool_size +will be enforced.

+

This option may only occur once, in the http configuration block. +The default value is 0.

+
+
+

5.9.5. passenger_pool_idle_time <integer>

+

The maximum number of seconds that an application process may be idle. That is, +if an application process hasn’t received any traffic after the given number of +seconds, then it will be shutdown in order to conserve memory.

+

Decreasing this value means that applications will have to be spawned +more often. Since spawning is a relatively slow operation, some visitors may +notice a small delay when they visit your Rails/Rack website. However, it will also +free up resources used by applications more quickly.

+

The optimal value depends on the average time that a visitor spends on a single +Rails/Rack web page. We recommend a value of 2 * x, where x is the average +number of seconds that a visitor spends on a single Rails/Rack web page. But your +mileage may vary.

+

When this value is set to 0, application processes will not be shutdown unless +it’s really necessary, i.e. when Phusion Passenger is out of worker processes +for a given application and one of the inactive application processes needs to +make place for another application process. Setting the value to 0 is +recommended if you’re on a non-shared host that’s only running a few +applications, each which must be available at all times.

+

This option may only occur once, in the http configuration block. +The default value is 300.

+
+
+

5.9.6. passenger_max_requests <integer>

+

The maximum number of requests an application process will process. After +serving that many requests, the application process will be shut down and +Phusion Passenger will restart it. A value of 0 means that there is no maximum: +an application process will thus be shut down when its idle timeout has been +reached.

+

This option is useful if your application is leaking memory. By shutting +it down after a certain number of requests, all of its memory is guaranteed +to be freed by the operating system.

+

This option may occur in the following places:

+
    +
  • +

    +In the http configuration block. +

    +
  • +
  • +

    +In a server configuration block. +

    +
  • +
  • +

    +In a location configuration block. +

    +
  • +
  • +

    +In an if configuration scope. +

    +
  • +
+

In each place, it may be specified at most once. The default value is 0.

+
+ + + +
+Caution + +

The passenger_max_requests directive should be considered +as a workaround for misbehaving applications. It is advised that you fix the +problem in your application rather than relying on these directives as a +measure to avoid memory leaks.

+
+
+
+
+

5.9.7. passenger_max_request_time <seconds>

+

This feature is only available in Phusion Passenger Enterprise. It was introduced in version 3.0.0. Buy Phusion Passenger Enterprise here.

+

The maximum amount of time, in seconds, that an application process may take +to process a request. If the request takes longer than this amount of time, +then the application process will be forcefully shut down, and possibly +restarted upon the next request. A value of 0 means that there is no time limit.

+

This option is useful for preventing your application from freezing for an +indefinite period of time.

+

This option may occur in the following places:

+
    +
  • +

    +In the http configuration block. +

    +
  • +
  • +

    +In a server configuration block. +

    +
  • +
  • +

    +In a location configuration block. +

    +
  • +
  • +

    +In an if configuration scope. +

    +
  • +
+

In each place, it may be specified at most once. The default value is 0.

+
+
Example
+

Suppose that most of your requests are known to finish within 2 seconds. +However, there is one URI, /expensive_computation, which is known to take up +to 10 seconds. You can then configure Phusion Passenger as follows:

+
+
+
+
server {
+    listen 80;
+    server_name www.example.com;
+    root /webapps/my_app/public;
+    passenger_enabled on;
+    passenger_max_request_time 2;
+    location /expensive_compuation {
+        passenger_enabled on;
+        passenger_max_request_time 10;
+    }
+}
+
+
+

If a request to /expensive_computation takes more than 10 seconds, +or if a request to any other URI takes more than 2 seconds, +then the corresponding application process will be forced to shutdown.

+
+ + + +
+Caution + +

The passenger_max_request_time directive should be +considered as a workaround for misbehaving applications. It is advised that you +fix the problem in your application rather than relying on these directives as a +measure to avoid freezing applications.

+
+
+
+
+

5.9.8. passenger_memory_limit <integer>

+

This feature is only available in Phusion Passenger Enterprise. It was introduced in version 3.0.0. Buy Phusion Passenger Enterprise here.

+

The maximum amount of memory that an application process may use, in megabytes. +Once an application process has surpassed its memory limit, it will process +all the requests currently present in its queue and then shut down. +A value of 0 means that there is no maximum: the application’s memory usage +will not be checked.

+

This option is useful if your application is leaking memory. By shutting +it down, all of its memory is guaranteed to be freed by the operating system.

+

This option may occur in the following places:

+
    +
  • +

    +In the http configuration block. +

    +
  • +
  • +

    +In a server configuration block. +

    +
  • +
  • +

    +In a location configuration block. +

    +
  • +
  • +

    +In an if configuration scope. +

    +
  • +
+

In each place, it may be specified at most once. The default value is 200.

+
+ + + +
+Note + +
A word about permissions
+

The passenger_memory_limit directive requires that the +user that the application is running as (see passenger_user_switching) +to have access to the /proc file system, or to be able to inspect its status +with ps (which on Linux and FreeBSD systems basically means the same thing, since ps +reads process information from /proc). Therefore, on servers running with +tight permissions on /proc, this directive may not work. If you wish to use +this directive and your /proc permissions are too tight, then please consider +untightening the permissions.

+
+
+
+ + + +
+Tip + +
FreeBSD and /proc +
+

On many FreeBSD systems, /proc is not mounted by default. /proc must be +mounted in order for passenger_memory_limit to work.

+

It is also advised that you mount /proc with the linprocfs filesystem type +instead of the regular FreeBSD proc filesystem type. The linprocfs filesystem +type allows Phusion Passenger to read memory information from /proc directly, +which is very fast. If you mount /proc with a different filesystem type, then +Phusion Passenger must resort to querying memory information from the ps command, +which is a lot slower.

+
+
+
+ + + +
+Caution + +

The passenger_max_requests and +passenger_memory_limit directives should be considered +as workarounds for misbehaving applications. It is advised that you fix the +problem in your application rather than relying on these directives as a +measure to avoid memory leaks.

+
+
+
+
+

5.9.9. passenger_pre_start <url>

+

By default, Phusion Passenger does not start any application processes until said +web application is first accessed. The result is that the first visitor of said +web application might experience a small delay as Phusion Passenger is starting +the web application on demand. If that is undesirable, then this directive can be +used to pre-started application processes during Nginx startup.

+

A few things to be careful of:

+
    +
  • +

    +This directive accepts the URL of the web application you want to pre-start, + not a on/off value! This might seem a bit weird, but read on for rationale. As + for the specifics of the URL: +

    +
      +
    • +

      +The domain part of the URL must be equal to the value of the server_name + directive of the server block that defines the web application. +

      +
    • +
    • +

      +Unless the web application is deployed on port 80, the URL should contain + the web application’s port number too. +

      +
    • +
    • +

      +The path part of the URL must point to some URI that the web application + handles. +

      +
    • +
    +
  • +
  • +

    +You will probably want to combine this option with + passenger_min_instances because application processes + started with passenger_pre_start are subject to the usual idle timeout rules. + See the example below for an explanation. +

    +
  • +
+

This option may only occur in the http configuration block. It may be specified +any number of times.

+
+
Example 1: basic usage
+

Suppose that you have the following web applications.

+
+
+
server {
+    listen 80;
+    server_name foo.com;
+    root /webapps/foo/public;
+    passenger_enabled on;
+}
+
+server {
+    listen 3500;
+    server_name bar.com;
+    root /webapps/bar/public;
+    passenger_enabled on;
+}
+
+
+

You want both of them to be pre-started during Nginx startup. The URL for +foo.com is http://foo.com/ (or, equivalently, http://foo.com:80/) and +the URL for bar.com is http://bar.com:3500/. So we add two passenger_pre_start +directives, like this:

+
+
+
server {
+    listen 80;
+    server_name foo.com;
+    root /webapps/foo/public;
+    passenger_enabled on;
+}
+
+server {
+    listen 3500;
+    server_name bar.com;
+    root /webapps/bar/public;
+    passenger_enabled on;
+}
+
+passenger_pre_start http://foo.com/;           # <--- added
+passenger_pre_start http://bar.com:3500/;      # <--- added
+
+
+
+
+
Example 2: pre-starting apps that are deployed in sub-URIs
+

Suppose that you have a web application deployed in a sub-URI /store, like this:

+
+
+
server {
+    listen 80;
+    server_name myblog.com;
+    root /webapps/wordpress;
+    rails_base_uri /store;
+}
+
+
+

Then specify the server_name value followed by the sub-URI, like this:

+
+
+
server {
+    listen 80;
+    server_name myblog.com;
+    root /webapps/wordpress;
+    rails_base_uri /store;
+}
+
+passenger_pre_start http://myblog.com/store;    # <----- added
+
+
+

The sub-URI must be included; if you don’t then the directive will have no effect. +The following example is wrong and won’t pre-start the store web application:

+
+
+
passenger_pre_start http://myblog.com/;    # <----- WRONG! Missing "/store" part.
+
+
+
+
+
Example 3: combining with passenger_min_instances
+

Application processes started with passenger_pre_start are +also subject to the idle timeout rules as specified by +passenger_pool_idle_time! That means that by default, +the pre-started application processes for foo.com are bar.com are shut down +after a few minutes of inactivity. If you don’t want that to happen, then +you should combine passenger_pre_start with +passenger_min_instances, like this:

+
+
+
server {
+    listen 80;
+    server_name foo.com;
+    root /webapps/foo/public;
+    passenger_enabled on;
+    passenger_min_instances 1;      # <--- added
+}
+
+server {
+    listen 3500;
+    server_name bar.com;
+    root /webapps/bar/public;
+    passenger_enabled on;
+    passenger_min_instances 1;      # <--- added
+}
+
+passenger_pre_start http://foo.com/;
+passenger_pre_start http://bar.com:3500/;
+
+
+
+
+
So why a URL? Why not just an on/off flag?
+

A directive that accepts a simple on/off flag is definitely more intuitive, +but due technical difficulties w.r.t. the way Nginx works, it’s very hard +to implement it like that:

+

It is very hard to obtain a full list of web applications defined in the +Nginx configuration file(s). In other words, it’s hard for Phusion Passenger +to know which web applications are deployed on Nginx until a web application +is first accessed, and without such a list Phusion Passenger wouldn’t know +which web applications to pre-start. So as a compromise, we made it accept a +URL.

+
+
+
What does Phusion Passenger do with the URL?
+

During Nginx startup, Phusion Passenger will send a dummy HEAD request to the +given URL and discard the result. In other words, Phusion Passenger simulates a +web access at the given URL. However this simulated request is always sent to +localhost, not to the IP that the domain resolves to. Suppose that bar.com +in example 1 resolves to 209.85.227.99; Phusion Passenger will +send the following HTTP request to 127.0.0.1 port 3500 (and not to 209.85.227.99 +port 3500):

+
+
+
HEAD / HTTP/1.1
+Host: bar.com
+Connection: close
+
+
+

Similarly, for example 2, Phusion Passenger will send the following HTTP request +to 127.0.0.1 port 80:

+
+
+
HEAD /store HTTP/1.1
+Host: myblog.com
+Connection: close
+
+
+
+
+
Do I need to edit /etc/hosts and point the domain in the URL to 127.0.0.1?
+

No. See previous subsection.

+
+
+
My web application consists of multiple web servers. What URL do I need to specify, and in which web server’s Nginx config file?
+

Put the web application’s server_name value and the server block’s +port in the URL, and put +passenger_pre_start on all machines that you want to pre-start the web application +on. The simulated web request is always sent to 127.0.0.1, with the domain name +in the URL as value for the Host HTTP header, so you don’t need to worry about +the request ending up at a different web server in the cluster.

+
+
+
Does passenger_pre_start support https:// URLs?
+

Yes. And it does not perform any certificate validation.

+
+
+
+
+

5.10. Logging and debugging options

+
+

5.10.1. passenger_log_level <integer>

+

This option allows one to specify how much information Phusion Passenger should +write to the Nginx error log file. A higher log level value means that more +information will be logged.

+

Possible values are:

+
    +
  • +

    +0: Show only errors and warnings. +

    +
  • +
  • +

    +1: Show the most important debugging information. This might be useful for + system administrators who are trying to figure out the cause of a + problem. +

    +
  • +
  • +

    +2: Show more debugging information. This is typically only useful for developers. +

    +
  • +
  • +

    +3: Show even more debugging information. +

    +
  • +
+

This option may only occur once, in the http configuration block. +The default is 0.

+
+
+

5.10.2. passenger_debug_log_file <filename>

+

By default Phusion Passenger debugging and error messages are written to the global +web server error log. This option allows one to specify the file that debugging and +error messages should be written to instead.

+

This option may only occur once, in the http configuration block.

+
+
+

5.10.3. passenger_debugger <on|off>

+

This feature is only available in Phusion Passenger Enterprise. It was introduced in version 3.0.0. Buy Phusion Passenger Enterprise here.

+

Turns support for application debugging on or off. In case of Ruby applications, +turning this option on will cause them to load the ruby-debug gem (when on Ruby 1.8) +or the debugger gem (when on Ruby 1.9). If you’re using Bundler, you should add +this to your Gemfile:

+
+
+
gem 'ruby-debug', :platforms => :ruby_18
+gem 'debugger', :platforms => :ruby_19
+
+
+

Once debugging is turned on, you can use the command passenger-irb --debug <PID> to attach an rdebug console to the application process with the given PID. Attaching will succeed once the application process executes a debugger command.

+

This option may occur in the following places:

+
    +
  • +

    +In the http configuration block. +

    +
  • +
  • +

    +In a server configuration block. +

    +
  • +
  • +

    +In a location configuration block. +

    +
  • +
  • +

    +In an if configuration scope. +

    +
  • +
+

In each place, it may be specified at most once. The default value is off.

+
+
+
+

5.11. Ruby on Rails-specific options

+
+

5.11.1. rails_env <string>

+

This option allows one to specify the default RAILS_ENV value.

+

This option may occur in the following places:

+
    +
  • +

    +In the http configuration block. +

    +
  • +
  • +

    +In a server configuration block. +

    +
  • +
  • +

    +In a location configuration block. +

    +
  • +
  • +

    +In an if configuration scope. +

    +
  • +
+

In each place, it may be specified at most once. The default value is production.

+
+
+

5.11.2. rails_framework_spawner_idle_time <integer>

+

The FrameworkSpawner server (explained in Spawning methods explained) has an idle timeout, just like the backend processes spawned by +Phusion Passenger do. That is, it will automatically shutdown if it hasn’t done +anything for a given period.

+

This option allows you to set the FrameworkSpawner server’s idle timeout, in +seconds. A value of 0 means that it should never idle timeout.

+

Setting a higher value will mean that the FrameworkSpawner server is kept around +longer, which may slightly increase memory usage. But as long as the +FrameworkSpawner server is running, the time to spawn a Ruby on Rails backend +process only takes about 40% of the time that is normally needed, assuming that +you’re using the smart spawning method. So if your +system has enough memory, is it recommended that you set this option to a high +value or to 0.

+

This option may occur in the following places:

+
    +
  • +

    +In the http configuration block. +

    +
  • +
  • +

    +In a server configuration block. +

    +
  • +
  • +

    +In a location configuration block. +

    +
  • +
  • +

    +In an if configuration scope. +

    +
  • +
+

In each place, it may be specified at most once. The default value is 1800 (30 minutes).

+
+
+

5.11.3. rails_app_spawner_idle_time <integer>

+

The ApplicationSpawner server (explained in Spawning methods explained) has an idle timeout, just like the backend processes spawned by +Phusion Passenger do. That is, it will automatically shutdown if it hasn’t done +anything for a given period.

+

This option allows you to set the ApplicationSpawner server’s idle timeout, in +seconds. A value of 0 means that it should never idle timeout.

+

Setting a higher value will mean that the ApplicationSpawner server is kept around +longer, which may slightly increase memory usage. But as long as the +ApplicationSpawner server is running, the time to spawn a Ruby on Rails backend +process only takes about 10% of the time that is normally needed, assuming that +you’re using the smart or smart-lv2 spawning method. So if your +system has enough memory, is it recommended that you set this option to a high +value or to 0.

+

This option may occur in the following places:

+
    +
  • +

    +In the http configuration block. +

    +
  • +
  • +

    +In a server configuration block. +

    +
  • +
  • +

    +In a location configuration block. +

    +
  • +
  • +

    +In an if configuration scope. +

    +
  • +
+

In each place, it may be specified at most once. The default value is 600 (10 minutes).

+
+
+
+

5.12. Rack and Rails >= 3 specific options

+
+

5.12.1. rack_env <string>

+

This option allows one to specify the default RACK_ENV value.

+

This option may occur in the following places:

+
    +
  • +

    +In the http configuration block. +

    +
  • +
  • +

    +In a server configuration block. +

    +
  • +
  • +

    +In a location configuration block. +

    +
  • +
  • +

    +In an if configuration scope. +

    +
  • +
+

In each place, it may be specified at most once. The default value is production.

+
+
+
+

5.13. Deprecated options

+

The following options have been deprecated, but are still supported for backwards +compatibility reasons.

+
+

5.13.1. rails_spawn_method

+

Deprecated in favor of passenger_spawn_method.

+
+
+
+
+
+

6. Analysis and system maintenance

+
+

Phusion Passenger provides a set of tools, which are useful for system analysis, +maintenance and troubleshooting.

+
+

6.1. Inspecting memory usage

+

Process inspection tools such as ps and top are useful, but they +rarely show the correct memory usage. +The real memory usage is usually lower than what ps and top report.

+

There are many technical reasons why this is so, but an explanation is beyond +the scope of this Users Guide. We kindly refer the interested reader to +operating systems literature about virtual memory and copy-on-write.

+

The tool passenger-memory-stats allows one to easily analyze Phusion Passenger’s +and Apache’s real memory usage. For example:

+
+
+
[bash@localhost root]# passenger-memory-stats
+------------- Apache processes --------------.
+PID    PPID  Threads  VMSize   Private  Name
+---------------------------------------------.
+5947   1     9        90.6 MB  0.5 MB   /usr/sbin/apache2 -k start
+5948   5947  1        18.9 MB  0.7 MB   /usr/sbin/fcgi-pm -k start
+6029   5947  1        42.7 MB  0.5 MB   /usr/sbin/apache2 -k start
+6030   5947  1        42.7 MB  0.5 MB   /usr/sbin/apache2 -k start
+6031   5947  1        42.5 MB  0.3 MB   /usr/sbin/apache2 -k start
+6033   5947  1        42.5 MB  0.4 MB   /usr/sbin/apache2 -k start
+6034   5947  1        50.5 MB  0.4 MB   /usr/sbin/apache2 -k start
+23482  5947  1        82.6 MB  0.4 MB   /usr/sbin/apache2 -k start
+### Processes: 8
+### Total private dirty RSS: 3.50 MB
+
+--------- Passenger processes ---------.
+PID    Threads  VMSize   Private  Name
+---------------------------------------.
+6026   1        10.9 MB  4.7 MB   Passenger spawn server
+23481  1        26.7 MB  3.0 MB   Passenger FrameworkSpawner: 2.0.2
+23791  1        26.8 MB  2.9 MB   Passenger ApplicationSpawner: /var/www/projects/app1-foobar
+23793  1        26.9 MB  17.1 MB  Rails: /var/www/projects/app1-foobar
+### Processes: 4
+### Total private dirty RSS: 27.76 M
+
+
+

The Private or private dirty RSS field shows the real memory usage of processes. Here, +we see that all the Apache worker processes only take less than 1 MB memory each. +This is a lot less than the 50 MB-ish memory usage as shown in the VMSize column +(which is what a lot of people think is the real memory usage, but is actually not).

+
+ + + +
+Note +Private dirty RSS reporting only works on Linux. Unfortunately other operating systems +don’t provide facilities for determining processes' private dirty RSS. On non-Linux systems, +the Resident Set Size is reported instead.
+
+
+
+

6.2. Inspecting Phusion Passenger’s internal status

+

One can inspect Phusion Passenger’s internal status with the tool passenger-status. +This tool must typically be run as root. For example:

+
+
+
[bash@localhost root]# passenger-status
+----------- General information -----------
+max      = 6
+count    = 1
+active   = 0
+inactive = 1
+
+----------- Domains -----------
+/var/www/projects/app1-foobar:
+  PID: 9617      Sessions: 0    Processed: 7       Uptime: 2m 23s
+
+
+

The general information section shows the following information:

+
+
+max +
+
+

+The maximum number of application instances that Phusion Passenger will +spawn. This equals the value given for PassengerMaxPoolSize (Apache) +or passenger_max_pool_size (Nginx). +

+
+
+count +
+
+

+The number of application instances that are currently alive. This value +is always less than or equal to max. +

+
+
+active +
+
+

+The number of application instances that are currently processing +requests. This value is always less than or equal to count. +

+
+
+inactive +
+
+

+The number of application instances that are currently not processing +requests, i.e. are idle. Idle application instances will be shutdown after a while, +as can be specified with PassengerPoolIdleTime (Apache)/passenger_pool_idle_time (Nginx) (unless this +value is set to 0, in which case application instances are never shut down via idle +time). The value of inactive equals count - active. +

+
+
+

The domains section shows, for each application directory, information about running +application instances:

+
+
+Sessions +
+
+

+Shows how many HTTP client are currently in the queue of that application +Instance, waiting to be processed. +

+
+
+Processed +
+
+

+Indicates how many requests the instance has served until now. Tip: it’s +possible to limit this number with the PassengerMaxRequests +configuration directive. +

+
+
+Uptime +
+
+

+Shows for how long the application instance has been running. +

+
+
+

Since Phusion Passenger uses fair load balancing by default, the number of sessions for the +application instances should be fairly close to each other. For example, this is fairly +normal:

+
+
+
  PID: 4281      Sessions: 2      Processed: 7      Uptime: 5m 11s
+  PID: 4268      Sessions: 0      Processed: 5      Uptime: 4m 52s
+  PID: 4265      Sessions: 1      Processed: 6      Uptime: 5m 38s
+  PID: 4275      Sessions: 1      Processed: 7      Uptime: 3m 14s
+
+
+

But if you see a "spike", i.e. an application instance has an unusually high number of +sessions compared to the others, then there might be a problem:

+
+
+
  PID: 4281      Sessions: 2      Processed: 7      Uptime: 5m 11s
+  PID: 17468     Sessions: 8 <-+  Processed: 2      Uptime: 4m 47s
+  PID: 4265      Sessions: 1   |  Processed: 6      Uptime: 5m 38s
+  PID: 4275      Sessions: 1   |  Processed: 7      Uptime: 3m 14s
+                               |
+                               +---- "spike"
+
+
+

Possible reasons why spikes can occur:

+
    +
  1. +

    +Your application is busy processing a request that takes a very long time. + If this is the case, then you might want to turn + global queuing on. +

    +
  2. +
  3. +

    +Your application is frozen, i.e. has stopped responding. See + Debugging frozen applications for tips. +

    +
  4. +
+
+
+

6.3. Debugging frozen applications

+

If one of your application instances is frozen (stopped responding), then you +can figure out where it is frozen by killing it with SIGABRT. This will cause the +application to raise an exception, with a backtrace.

+

The exception (with full backtrace information) is normally logged into the Apache +error log. But if your application or if its web framework has its own exception logging +routines, then exceptions might be logged into the application’s log files instead. +This is the case with Ruby on Rails. So if you kill a Ruby on Rails application with +SIGABRT, please check the application’s production.log first (assuming that you’re +running it in a production environment). If you don’t see a backtrace there, check +the Apache error log.

+
+ + + +
+Note +It is safe to kill application instances, even in live environments. Phusion Passenger +will restart killed application instances, as if nothing bad happened.
+
+
+
+

6.4. Accessing individual application processes

+

When a request is sent to the web server, Phusion Passenger will automatically forward +the request to the most suitable application process, but sometimes it is desirable to +be able to directly access the individual application processes. Use cases include, but +are not limited to:

+
    +
  • +

    +One wants to debug a memory leak or memory bloat problem that only seems to appear on + certain URIs. One can send a request to a specific process to see whether that request + causes the process’s memory usage to rise. +

    +
  • +
  • +

    +The application caches data in local memory, and one wants to tell a specific + application process to clear that local data. +

    +
  • +
  • +

    +Other debugging use cases. +

    +
  • +
+

All individual application processes are accessible via HTTP, so you can use standard +HTTP tools like curl. The exact addresses can be obtained with the command +passenger-status --verbose. These sockets are all bound to 127.0.0.1, but the port +number is dynamically assigned. As a security measure, the sockets are also protected +with a process-specific random password, which you can see in the +passenger-status --verbose output. This password must be sent through the +“X-Passenger-Connect-Password” HTTP header.

+

Example:

+
+
+
bash# passenger-status --verbose
+----------- General information -----------
+max      = 6
+count    = 2
+active   = 0
+inactive = 2
+Waiting on global queue: 0
+
+----------- Application groups -----------
+/Users/hongli/Sites/rack.test:
+  App root: /Users/hongli/Sites/rack.test
+  * PID: 24235   Sessions: 0    Processed: 7       Uptime: 17s
+      URL     : http://127.0.0.1:58122
+      Password: nFfVOX1F8LjZ90HJh28Sd_htJOsgRsNne2QXKf8NIXw
+  * PID: 24250   Sessions: 0    Processed: 4       Uptime: 1s
+      URL     : http://127.0.0.1:57933
+      Password: _RGXlQ9EGDGJKLevQ_qflUtF1KmxEo2UiRzMwIE1sBY
+
+
+

Here we see that the web application rack.test has two processes. +Process 24235 is accessible via http://127.0.0.1:58122, and +process 24250 is accessible via http://127.0.0.1:57933.

+

To access 24235 we must send its password, nFfVOX1F8LjZ90HJh28Sd_htJOsgRsNne2QXKf8NIXw, +through the X-Passenger-Connect-Password HTTP header, like this:

+
+
+
bash# curl -H "X-Passenger-Connect-Password: nFfVOX1F8LjZ90HJh28Sd_htJOsgRsNne2QXKf8NIXw" http://127.0.0.1:58122/
+
+
+
+
+

6.5. Attaching an IRB console to an application process

+

Available in Phusion Passenger Enterprise since version 3.0.0.

+

You can attach an IRB console to any application process and inspect its state by executing arbitrary Ruby code. Do this by invoking passenger-irb <PID> where <PID> is the PID of the application process you wish to inspect. Note that the IRB console is currently only available for Ruby apps, not for apps in any other languages.

+
+
+
+
+

7. Tips

+
+
+

7.1. User switching (security)

+

There is a problem that plagues most PHP web hosts, namely the fact that all PHP +applications are run in the same user context as the web server. So for +example, Joe’s PHP application will be able to read Jane’s PHP application’s +passwords. This is obviously undesirable on many servers.

+

Phusion Passenger solves this problem by implementing user switching. A Rails +application is started as the owner of the file config/environment.rb, +and a Rack application is started as the owner of the file config.ru. +So if /home/webapps/foo/config/environment.rb is owned by joe, then Phusion +Passenger will launch the corresponding Rails application as joe as well.

+

This behavior is the default, and you don’t need to configure anything. But +there are things that you should keep in mind:

+
    +
  • +

    +The owner of environment.rb/config.ru must have read access to the application’s + root directory, and read/write access to the application’s logs directory. +

    +
  • +
  • +

    +This feature is only available if Apache is started by root. This is the + case on most Apache installations. +

    +
  • +
  • +

    +Under no circumstances will applications be run as root. If + environment.rb/config.ru is owned as root or by an unknown user, then the + Rails/Rack application will run as the user specified by + passenger_default_user and + passenger_default_group. +

    +
  • +
+

User switching can be disabled with the +passenger_user_switching +option.

+
+
+

7.2. Reducing memory consumption of Ruby on Rails applications by 33%

+

Is it possible to reduce memory consumption of your Rails applications by 33% on average, +by using Ruby Enterprise Edition. +Please visit the website for details.

+

Note that this feature does not apply to Rack applications.

+
+
+

7.3. Capistrano recipe

+

Phusion Passenger can be combined with Capistrano. +The following Capistrano recipe demonstrates Phusion Passenger support. +It assumes that you’re using Git as version control system.

+
+
+
set :application, "myapp"
+set :domain,      "example.com"
+set :repository,  "ssh://#{domain}/path-to-your-git-repo/#{application}.git"
+set :use_sudo,    false
+set :deploy_to,   "/path-to-your-web-app-directory/#{application}"
+set :scm,         "git"
+
+role :app, domain
+role :web, domain
+role :db,  domain, :primary => true
+
+namespace :deploy do
+  task :start, :roles => :app do
+    run "touch #{current_release}/tmp/restart.txt"
+  end
+
+  task :stop, :roles => :app do
+    # Do nothing.
+  end
+
+  desc "Restart Application"
+  task :restart, :roles => :app do
+    run "touch #{current_release}/tmp/restart.txt"
+  end
+end
+
+
+
+
+

7.4. Bundler support

+

Phusion Passenger has automatic support for Bundler. +It works as follows:

+
    +
  • +

    +If you have a .bundle/environment.rb in your application root, then Phusion + Passenger will require that file before loading your application. +

    +
  • +
  • +

    +Otherwise, if you have a Gemfile, then Phusion Passenger will automatically call + Bundler.setup() before loading your application. +

    +
  • +
+

It’s possible that your application also calls Bundler.setup during loading, e.g. in +config.ru or in config/boot.rb. This is the case with Rails 3, and is also the case if you +modified your config/boot.rb according to the +Bundler Rails 2.3 instructions. +This leads to Bundler.setup being called twice, once before the application startup file +is required and once during application startup. However this is harmless and doesn’t +have any negative effects.

+

Phusion Passenger assumes that you’re using Bundler >= 0.9.5. If you don’t want Phusion +Passenger to run its Bundler support code, e.g. because you need to use an older version +of Bundler with an incompatible API or because you use a system other than Bundler, then +you can override Phusion Passenger’s Bundler support code by creating a file +config/setup_load_paths.rb. If this file exists then it will be required before loading +the application startup file. In this file you can do whatever you need to setup Bundler +or a similar system.

+
+
+

7.5. Moving Phusion Passenger to a different directory

+

It is possible to relocate the Phusion Passenger files to a different directory. It +involves two steps:

+
    +
  1. +

    +Moving the directory. +

    +
  2. +
  3. +

    +Updating the “PassengerRoot” configuration option in Apache. +

    +
  4. +
+

For example, if Phusion Passenger is located in /opt/passenger/, and you’d like to +move it to /usr/local/passenger/, then do this:

+
    +
  1. +

    +Run the following command: +

    +
    +
    +
    mv /opt/passenger /usr/local/passenger
    +
    +
    +
  2. +
  3. +

    +Edit your Apache configuration file, and set: +

    +
    +
    +
    PassengerRoot /usr/local/passenger
    +
    +
    +
  4. +
+
+
+

7.6. Installing multiple Ruby on Rails versions

+

Each Ruby on Rails applications that are going to be deployed may require a +specific Ruby on Rails version. You can install a specific version with +this command:

+
+
+
gem install rails -v X.X.X
+
+
+

where X.X.X is the version number of Ruby on Rails.

+

All of these versions will exist in parallel, and will not conflict with each +other. Phusion Passenger will automatically make use of the correct version.

+
+
+

7.7. Making the application restart after each request

+

In some situations it might be desirable to restart the web application after +each request, for example when developing a non-Rails application that doesn’t +support code reloading, or when developing a web framework.

+

To achieve this, simply create the file tmp/always_restart.txt in your +application’s root folder. Unlike restart.txt, Phusion Passenger does not +check for this file’s timestamp: Phusion Passenger will always restart the +application, as long as always_restart.txt exists.

+
+ + + +
+Note +If you’re just developing a Rails application then you probably don’t need +this feature. If you set RailsEnv development in your Apache configuration, +then Rails will automatically reload your application code after each request. +always_restart.txt is only useful if you’re working on Ruby on Rails itself, +or when you’re not developing a Rails application and your web framework +does not support code reloading.
+
+
+
+

7.8. How to fix broken images/CSS/JavaScript URIs in sub-URI deployments

+

Some people experience broken images and other broken static assets when they +deploy their application to a sub-URI (i.e. http://mysite.com/railsapp/). +The reason for this usually is that you used a +static URI for your image in the views. This means your img source probably refers +to something like /images/foo.jpg. The leading slash means that it’s an absolute URI: +you’re telling the browser to always load http://mysite.com/images/foo.jpg no +matter what. The problem is that the image is actually at +http://mysite.com/railsapp/images/foo.jpg. There are two ways to fix this.

+

The first way (not recommended) is to change your view templates to refer to +images/foo.jpg. This is a relative URI: note the lack of a leading slash). What +this does is making the path relative to the current URI. The problem is that if you +use restful URIs, then your images will probably break again when you add a level to +the URI. +For example, when you’re at http://mysite.com/railsapp the browser will look for +http://mysite.com/railsapp/images/foo.jpg. But when you’re at +http://mysite.com/railsapp/controller. the browser will look for +http://mysite.com/railsapp/controller/images/foo.jpg. +So relative URIs usually don’t work well with layout templates.

+

The second and highly recommended way is to always use Rails helper methods to +output tags for static assets. These helper methods automatically take care +of prepending the base URI that you’ve deployed the application to. For images +there is image_tag, for JavaScript there is javascript_include_tag and for +CSS there is stylesheet_link_tag. In the above example you would simply remove +the <img> HTML tag and replace it with inline Ruby like this:

+
+
+
<%= image_tag("foo.jpg") %>
+
+
+

This will generate the proper image tag to $RAILS_ROOT/public/images/foo.jpg +so that your images will always work no matter what sub-URI you’ve deployed to.

+

These helper methods are more valuable than you may think. For example they also +append a timestamp to the URI to better facilitate HTTP caching. For more information, +please refer to +the Rails API docs.

+
+
+
+
+

8. Under the hood

+
+

Phusion Passenger hides a lot of complexity for the end user (i.e. the web server +system administrator), but sometimes it is desirable to know what is going on. +This section describes a few things that Phusion Passenger does under the hood.

+
+

8.1. Page caching support

+

For each HTTP request, Phusion Passenger will automatically look for a corresponding +page cache file, and serve that if it exists. It does this by appending ".html" to +the filename that the URI normally maps to, and checking whether that file exists. +This check occurs after checking whether the original mapped filename exists (as part +of static asset serving). All this is done without the need for special mod_rewrite +rules.

+

For example, suppose that the browser requests /foo/bar.

+
    +
  1. +

    +Phusion Passenger will first check whether this URI maps to a static file, i.e. + whether the file foo/bar exists in the web application’s public directory. + If it does then Phusion Passenger will serve this file through Apache immediately. +

    +
  2. +
  3. +

    +If that doesn’t exist, then Phusion Passenger will check whether the file + foo/bar.html exists. If it does then Phusion Passenger will serve this file + through Apache immediately. +

    +
  4. +
  5. +

    +If foo/bar.html doesn’t exist either, then Phusion Passenger will forward the + request to the underlying web application. +

    +
  6. +
+

Note that Phusion Passenger’s page caching support doesn’t work if your web +application uses a non-standard page cache directory, i.e. if it doesn’t cache to +the public directory. In that case you’ll need to use mod_rewrite to serve such +page cache files.

+
+
+

8.2. How Phusion Passenger detects whether a virtual host is a web application

+

After you’ve read the deployment instructions you might wonder how Phusion Passenger +knows that the server root points to a web application that Phusion Passenger is +able to serve, and how it knows what kind of web application it is (e.g. Rails or Rack).

+

Phusion Passenger checks whether the virtual host is a Rails application by checking +whether the following file exists:

+
+
+
dirname(DocumentRoot) + "/config/environment.rb"
+
+
+

If you’re not a programmer and don’t understand the above pseudo-code snippet, it means +that Phusion Passenger will:

+
    +
  1. +

    +Extract the parent directory filename from the value of the “root” directive. +

    +
  2. +
  3. +

    +Append the text "/config/environment.rb" to the result, and check whether the resulting + filename exists. +

    +
  4. +
+

So suppose that your server root is /webapps/foo/public. Phusion Passenger will check +whether the file /webapps/foo/config/environment.rb exists.

+

Note that Phusion Passenger for Nginx does not resolve any symlinks in the root path. +So for example, suppose that your root points to /home/www/example.com, which in +turn is a symlink to /webapps/example.com/public. Phusion Passenger for Nginx will check for +/home/www/config/environment.rb, not /webapps/example.com/config/environment.rb. +This file of course doesn’t exist, and as a result Phusion Passenger will not activate +itself for this virtual host, and you’ll most likely see some output generated by the +Nginx default directory handler such as a Forbidden error message.

+

Detection of Rack applications happens through the same mechanism, exception that +Phusion Passenger will look for config.ru instead of config/environment.rb.

+
+
+
+
+

9. Appendix A: About this document

+
+

The text of this document is licensed under the +Creative Commons +Attribution-Share Alike 3.0 Unported License.

+

+ +images/by_sa.png + +

+

Phusion Passenger is brought to you by Phusion.

+

+ +images/phusion_banner.png + +

+

Phusion Passenger is a trademark of Hongli Lai & Ninh Bui.

+
+
+
+

10. Appendix B: Terminology

+
+
+

10.1. Application root

+

The root directory of an application that’s served by Phusion Passenger.

+

In case of Ruby on Rails applications, this is the directory that contains +Rakefile, app/, config/, public/, etc. In other words, the directory +pointed to by RAILS_ROOT. For example, take the following directory structure:

+
+
+
/apps/foo/       <------ This is the Rails application's application root!
+   |
+   +- app/
+   |   |
+   |   +- controllers/
+   |   |
+   |   +- models/
+   |   |
+   |   +- views/
+   |
+   +- config/
+   |   |
+   |   +- environment.rb
+   |   |
+   |   +- ...
+   |
+   +- public/
+   |   |
+   |   +- ...
+   |
+   +- ...
+
+
+

In case of Rack applications, this is the directory that contains config.ru. +For example, take the following directory structure:

+
+
+
/apps/bar/      <----- This is the Rack application's application root!
+   |
+   +- public/
+   |    |
+   |    +- ...
+   |
+   +- config.ru
+   |
+   +- ...
+
+
+

In case of Python (WSGI) applications, this is the directory that contains +passenger_wsgi.py. For example, take the following directory structure:

+
+
+
/apps/baz/      <----- This is the WSGI application's application root!
+   |
+   +- public/
+   |    |
+   |    +- ...
+   |
+   +- passenger_wsgi.py
+   |
+   +- ...
+
+
+
+
+

10.2. Idle process

+

An "idle process" refers to a process that hasn’t processed any requests for a while.

+
+
+

10.3. Inactive process

+

An "inactive process" refers to a process that’s current not processing any requests. An idle process is always inactive, but an inactive process is not always considered idle.

+
+
+
+
+

11. Appendix C: Spawning methods explained

+
+

At its core, Phusion Passenger is an HTTP proxy and process manager. It spawns +Ruby on Rails/Rack/WSGI worker processes (which may also be referred to as +backend processes), and forwards incoming HTTP request to one of the worker +processes.

+

While this may sound simple, there’s not just one way to spawn worker processes. +Let’s go over the different spawning methods. For simplicity’s sake, let’s +assume that we’re only talking about Ruby on Rails applications.

+
+

11.1. The most straightforward and traditional way: conservative spawning

+

Phusion Passenger could create a new Ruby process, which will then load the +Rails application along with the entire Rails framework. This process will then +enter an request handling main loop.

+

This is the most straightforward way to spawn worker processes. If you’re +familiar with the Mongrel application server, then this approach is exactly +what mongrel_cluster performs: it creates N worker processes, each which loads +a full copy of the Rails application and the Rails framework in memory. The Thin +application server employs pretty much the same approach.

+

Note that Phusion Passenger’s version of conservative spawning differs slightly +from mongrel_cluster. Mongrel_cluster creates entirely new Ruby processes. In +programmers jargon, mongrel_cluster creates new Ruby processes by forking the +current process and exec()-ing a new Ruby interpreter. Phusion Passenger on the +other hand creates processes that reuse the already loaded Ruby interpreter. In +programmers jargon, Phusion Passenger calls fork(), but not exec().

+
+
+

11.2. The smart spawning method

+
+ + + +
+Note +Smart spawning is supported for all Ruby applications but not for WSGI applications.
+
+

While conservative spawning works well, it’s not as efficient as it could be +because each worker process has its own private copy of the Rails application +as well as the Rails framework. This wastes memory as well as startup time.

+

+Worker processes and conservative spawning +
+Figure: Worker processes and conservative spawning. Each worker process has its +own private copy of the application code and Rails framework code.

+

It is possible to make the different worker processes share the memory occupied +by application and Rails framework code, by utilizing so-called +copy-on-write semantics of the virtual memory system on modern operating +systems. As a side effect, the startup time is also reduced. This is technique +is exploited by Phusion Passenger’s smart and smart-lv2 spawn methods.

+
+

11.2.1. How it works

+

When the smart-lv2 spawn method is being used, Phusion Passenger will first +create a so-called ApplicationSpawner server process. This process loads the +entire Rails application along with the Rails framework, by loading +environment.rb. Then, whenever Phusion Passenger needs a new worker process, +it will instruct the ApplicationSpawner server to do so. The ApplicationSpawner +server will create a worker new process +that reuses the already loaded Rails application/framework. Creating a worker +process through an already running ApplicationSpawner server is very fast, about +10 times faster than loading the Rails application/framework from scratch. If +the Ruby interpreter is copy-on-write friendly (that is, if you’re running +Ruby Enterprise Edition) then all created worker +processes will share as much common +memory as possible. That is, they will all share the same application and Rails +framework code.

+

+images/smart-lv2.png +
+Figure: Worker processes and the smart-lv2 spawn method. All worker processes, +as well as the ApplicationSpawner, share the same application code and Rails +framework code.

+

The smart spawn method goes even further, by caching the Rails framework in +another process called the FrameworkSpawner server. This process only loads +the Rails framework, not the application. When a FrameworkSpawner server is +instructed to create a new worker process, it will create a new +ApplicationSpawner to which the instruction will be delegated. All those +ApplicationSpawner servers, as well as all worker processes created by those +ApplicationSpawner servers, will share the same Rails framework code.

+

The smart-lv2 method allows different worker processes that belong to the same +application to share memory. The smart method allows different worker +processes - that happen to use the same Rails version - to share memory, even if +they don’t belong to the same application.

+

Notes:

+
    +
  • +

    +Vendored Rails frameworks cannot be shared by different applications, even if + both vendored Rails frameworks are the same version. So for efficiency reasons + we don’t recommend vendoring Rails. +

    +
  • +
  • +

    +ApplicationSpawner and FrameworkSpawner servers have an idle timeout just + like worker processes. If an ApplicationSpawner/FrameworkSpawner server hasn’t + been instructed to do anything for a while, it will be shutdown in order to + conserve memory. This idle timeout is configurable. +

    +
  • +
+
+
+

11.2.2. Summary of benefits

+

Suppose that Phusion Passenger needs a new worker process for an application +that uses Rails 2.2.1.

+
    +
  • +

    +If the smart-lv2 spawning method is used, and an ApplicationSpawner server + for this application is already running, then worker process creation time is + about 10 times faster than conservative spawning. This worker process will also + share application and Rails framework code memory with the ApplicationSpawner + server and the worker processes that had been spawned by this ApplicationSpawner + server. +

    +
  • +
  • +

    +If the smart spawning method is used, and a FrameworkSpawner server for + Rails 2.2.1 is already running, but no ApplicationSpawner server for this + application is running, then worker process creation time is about 2 times + faster than conservative spawning. If there is an ApplicationSpawner server + for this application running, then worker process creation time is about 10 + times faster. This worker process will also share application and Rails + framework code memory with the ApplicationSpawner and FrameworkSpawner + servers. +

    +
  • +
+

You could compare ApplicationSpawner and FrameworkSpawner servers with stem +cells, that have the ability to quickly change into more specific cells (worker +process).

+

In practice, the smart spawning methods could mean a memory saving of about 33%, +assuming that your Ruby interpreter is copy-on-write friendly.

+

Of course, smart spawning is not without gotchas. But if you understand the +gotchas you can easily reap the benefits of smart spawning.

+
+
+
+

11.3. Smart spawning gotcha #1: unintentional file descriptor sharing

+

Because worker processes are created by forking from an ApplicationSpawner +server, it will share all file descriptors that are opened by the +ApplicationSpawner server. (This is part of the semantics of the Unix +fork() system call. You might want to Google it if you’re not familiar with +it.) A file descriptor is a handle which can be an opened file, an opened socket +connection, a pipe, etc. If different worker processes write to such a file +descriptor at the same time, then their write calls will be interleaved, which +may potentially cause problems.

+

The problem commonly involves socket connections that are unintentionally being +shared. You can fix it by closing and reestablishing the connection when Phusion +Passenger is creating a new worker process. Phusion Passenger provides the API +call PhusionPassenger.on_event(:starting_worker_process) to do so. So you +could insert the following code in your environment.rb:

+
+
+ +
if defined?(PhusionPassenger)
+    PhusionPassenger.on_event(:starting_worker_process) do |forked|
+        if forked
+            # We're in smart spawning mode.
+            ... code to reestablish socket connections here ...
+        else
+            # We're in conservative spawning mode. We don't need to do anything.
+        end
+    end
+end
+
+
+

Note that Phusion Passenger automatically reestablishes the connection to the +database upon creating a new worker process, which is why you normally do not +encounter any database issues when using smart spawning mode.

+
+

11.3.1. Example 1: Memcached connection sharing (harmful)

+

Suppose we have a Rails application that connects to a Memcached server in +environment.rb. This causes the ApplicationSpawner to have a socket connection +(file descriptor) to the Memcached server, as shown in the following figure:

+
+
+
+--------------------+
+| ApplicationSpawner |-----------[Memcached server]
++--------------------+
+
+
+

Phusion Passenger then proceeds with creating a new Rails worker process, which +is to process incoming HTTP requests. The result will look like this:

+
+
+
+--------------------+
+| ApplicationSpawner |------+----[Memcached server]
++--------------------+      |
+                            |
++--------------------+      |
+| Worker process 1   |-----/
++--------------------+
+
+
+

Since a fork() makes a (virtual) complete copy of a process, all its file +descriptors will be copied as well. What we see here is that ApplicationSpawner +and Worker process 1 both share the same connection to Memcached.

+

Now supposed that your site gets Slashdotted and Phusion Passenger needs to +spawn another worker process. It does so by forking ApplicationSpawner. The +result is now as follows:

+
+
+
+--------------------+
+| ApplicationSpawner |------+----[Memcached server]
++--------------------+      |
+                            |
++--------------------+      |
+| Worker process 1   |-----/|
++--------------------+      |
+                            |
++--------------------+      |
+| Worker process 2   |-----/
++--------------------+
+
+
+

As you can see, Worker process 1 and Worker process 2 have the same Memcached +connection.

+

Suppose that users Joe and Jane visit your website at the same time. Joe’s +request is handled by Worker process 1, and Jane’s request is handled by Worker +process 2. Both worker processes want to fetch something from Memcached. Suppose +that in order to do that, both handlers need to send a "FETCH" command to Memcached.

+

But suppose that, after worker process 1 having only sent "FE", a context switch +occurs, and worker process 2 starts sending a "FETCH" command to Memcached as +well. If worker process 2 succeeds in sending only one bye, F, then Memcached +will receive a command which begins with "FEF", a command that it does not +recognize. In other words: the data from both handlers get interleaved. And thus +Memcached is forced to handle this as an error.

+

This problem can be solved by reestablishing the connection to Memcached after forking:

+
+
+
+--------------------+
+| ApplicationSpawner |------+----[Memcached server]
++--------------------+      |                   |
+                            |                   |
++--------------------+      |                   |
+| Worker process 1   |-----/|                   |
++--------------------+      |                   |  <--- created this
+                            X                   |       new
+                                                |       connection
+                            X <-- closed this   |
++--------------------+      |     old           |
+| Worker process 2   |-----/      connection    |
++--------------------+                          |
+          |                                     |
+          +-------------------------------------+
+
+
+

Worker process 2 now has its own, separate communication channel with Memcached. +The code in environment.rb looks like this:

+
+
+ +
if defined?(PhusionPassenger)
+    PhusionPassenger.on_event(:starting_worker_process) do |forked|
+        if forked
+            # We're in smart spawning mode.
+            reestablish_connection_to_memcached
+        else
+            # We're in conservative spawning mode. We don't need to do anything.
+        end
+    end
+end
+
+
+
+
+

11.3.2. Example 2: Log file sharing (not harmful)

+

There are also cases in which unintentional file descriptor sharing is not harmful. +One such case is log file file descriptor sharing. Even if two processes write +to the log file at the same time, the worst thing that can happen is that the +data in the log file is interleaved.

+

To guarantee that the data written to the log file is never interleaved, you +must synchronize write access via an inter-process synchronization mechanism, +such as file locks. Reopening the log file, like you would have done in the +Memcached example, doesn’t help.

+
+
+
+

11.4. Smart spawning gotcha #2: the need to revive threads

+

Another part of the fork() system call’s semantics is the fact that threads +disappear after a fork call. So if you’ve created any threads in environment.rb, +then those threads will no longer be running in newly created worker process. +You need to revive them when a new worker process is created. Use the +:starting_worker_process event that Phusion Passenger provides, like this:

+
+
+ +
if defined?(PhusionPassenger)
+    PhusionPassenger.on_event(:starting_worker_process) do |forked|
+        if forked
+            # We're in smart spawning mode.
+            ... code to revive threads here ...
+        else
+            # We're in conservative spawning mode. We don't need to do anything.
+        end
+    end
+end
+
+
+
+
+

11.5. Smart spawning gotcha #3: code load order

+

This gotcha is only applicable to the smart spawn method, not the smart-lv2 +spawn method.

+

If your application expects the Rails framework to be not loaded during the +beginning of environment.rb, then it can cause problems when an +ApplicationSpawner is created from a FrameworkSpawner, which already has the +Rails framework loaded. The most common case is when applications try to patch +Rails by dropping a modified file that has the same name as Rails’s own file, +in a path that comes earlier in the Ruby search path.

+

For example, suppose that we have an application which has a patched version +of active_record/base.rb located in RAILS_ROOT/lib/patches, and +RAILS_ROOT/lib/patches comes first in the Ruby load path. When conservative +spawning is used, the patched version of base.rb is properly loaded. When +smart (not smart-lv2) spawning is used, the original base.rb is used +because it was already loaded, so a subsequent require "active_record/base" +has no effect.

+
+
+
+
+

+ + + + diff -Nru passenger-3.0.19+112~precise1/doc/Users guide Nginx.idmap.txt passenger-3.0.21/doc/Users guide Nginx.idmap.txt --- passenger-3.0.19+112~precise1/doc/Users guide Nginx.idmap.txt 2013-01-30 19:16:22.000000000 +0000 +++ passenger-3.0.21/doc/Users guide Nginx.idmap.txt 2013-05-29 12:09:57.000000000 +0000 @@ -18,34 +18,6 @@ 1.2. Where to get support => where-to-get-support-2s9na5 -10. Appendix B: Terminology => appendix-b-terminology-wzv5ro - -10.1. Application root => application-root-1fd6bqv - -10.2. Idle process => idle-process-13byfw9 - -10.3. Inactive process => inactive-process-1d2h0po - -11. Appendix C: Spawning methods explained => appendix-c-spawning-methods-explained-tcp8e6 - -11.1. The most straightforward and traditional way: conservative spawning => the-most-straightforward-and-traditional-way-conservative-spawning-civ29z - -11.2. The smart spawning method => the-smart-spawning-method-7nhgtj - -11.2.1. How it works => how-it-works-f9umga - -11.2.2. Summary of benefits => summary-of-benefits-qovyvk - -11.3. Smart spawning gotcha #1: unintentional file descriptor sharing => smart-spawning-gotcha-1-unintentional-file-descriptor-sharing-cebw6q - -11.3.1. Example 1: Memcached connection sharing (harmful) => example-1-memcached-connection-sharing-harmful--1wfs3ad - -11.3.2. Example 2: Log file sharing (not harmful) => example-2-log-file-sharing-not-harmful--ox4yfy - -11.4. Smart spawning gotcha #2: the need to revive threads => smart-spawning-gotcha-2-the-need-to-revive-threads-1ey176o - -11.5. Smart spawning gotcha #3: code load order => smart-spawning-gotcha-3-code-load-order-12ydsn8 - 2. Installing Phusion Passenger => installing-phusion-passenger-hn03ac 2.1. Overview => overview-kvhzi4 @@ -106,30 +78,6 @@ 5.1. passenger_root => passenger-root-directory--bqvhhz -5.10. Logging and debugging options => logging-and-debugging-options-14e91ni - -5.10.1. passenger_log_level => passenger-log-level-integer--17snhon - -5.10.2. passenger_debug_log_file => passenger-debug-log-file-filename--21ubaj - -5.10.3. passenger_debugger => passenger-debugger-on-off--1wkuq85 - -5.11. Ruby on Rails-specific options => ruby-on-rails-specific-options-12vfokt - -5.11.1. rails_env => rails-env-string--jlh7v9 - -5.11.2. rails_framework_spawner_idle_time => rails-framework-spawner-idle-time-integer--q5ljd5 - -5.11.3. rails_app_spawner_idle_time => rails-app-spawner-idle-time-integer--1xjqe4b - -5.12. Rack and Rails >= 3 specific options => rack-specific-options-13yvdxs - -5.12.1. rack_env => rack-env-string--tqmrt0 - -5.13. Deprecated options => deprecated-options-1dtzo0g - -5.13.1. rails_spawn_method => rails-spawn-method-17vdnpt - 5.2. passenger_ruby => passenger-ruby-filename--1gnok5k 5.3. passenger_spawn_method => passenger-spawn-method-string--1sc6njl @@ -196,6 +144,30 @@ 5.9.9. passenger_pre_start => passenger-pre-start-url--1f2phk7 +5.10. Logging and debugging options => logging-and-debugging-options-14e91ni + +5.10.1. passenger_log_level => passenger-log-level-integer--17snhon + +5.10.2. passenger_debug_log_file => passenger-debug-log-file-filename--21ubaj + +5.10.3. passenger_debugger => passenger-debugger-on-off--1wkuq85 + +5.11. Ruby on Rails-specific options => ruby-on-rails-specific-options-12vfokt + +5.11.1. rails_env => rails-env-string--jlh7v9 + +5.11.2. rails_framework_spawner_idle_time => rails-framework-spawner-idle-time-integer--q5ljd5 + +5.11.3. rails_app_spawner_idle_time => rails-app-spawner-idle-time-integer--1xjqe4b + +5.12. Rack and Rails >= 3 specific options => rack-specific-options-13yvdxs + +5.12.1. rack_env => rack-env-string--tqmrt0 + +5.13. Deprecated options => deprecated-options-1dtzo0g + +5.13.1. rails_spawn_method => rails-spawn-method-17vdnpt + 6. Analysis and system maintenance => analysis-and-system-maintenance-1nnlnj8 6.1. Inspecting memory usage => inspecting-memory-usage-1k6y8v0 @@ -234,3 +206,31 @@ 9. Appendix A: About this document => appendix-a-about-this-document-zfvixm +10. Appendix B: Terminology => appendix-b-terminology-wzv5ro + +10.1. Application root => application-root-1fd6bqv + +10.2. Idle process => idle-process-13byfw9 + +10.3. Inactive process => inactive-process-1d2h0po + +11. Appendix C: Spawning methods explained => appendix-c-spawning-methods-explained-tcp8e6 + +11.1. The most straightforward and traditional way: conservative spawning => the-most-straightforward-and-traditional-way-conservative-spawning-civ29z + +11.2. The smart spawning method => the-smart-spawning-method-7nhgtj + +11.2.1. How it works => how-it-works-f9umga + +11.2.2. Summary of benefits => summary-of-benefits-qovyvk + +11.3. Smart spawning gotcha #1: unintentional file descriptor sharing => smart-spawning-gotcha-1-unintentional-file-descriptor-sharing-cebw6q + +11.3.1. Example 1: Memcached connection sharing (harmful) => example-1-memcached-connection-sharing-harmful--1wfs3ad + +11.3.2. Example 2: Log file sharing (not harmful) => example-2-log-file-sharing-not-harmful--ox4yfy + +11.4. Smart spawning gotcha #2: the need to revive threads => smart-spawning-gotcha-2-the-need-to-revive-threads-1ey176o + +11.5. Smart spawning gotcha #3: code load order => smart-spawning-gotcha-3-code-load-order-12ydsn8 + diff -Nru passenger-3.0.19+112~precise1/doc/Users guide Standalone.html passenger-3.0.21/doc/Users guide Standalone.html --- passenger-3.0.19+112~precise1/doc/Users guide Standalone.html 1970-01-01 00:00:00.000000000 +0000 +++ passenger-3.0.21/doc/Users guide Standalone.html 2013-05-29 12:09:57.000000000 +0000 @@ -0,0 +1,1829 @@ + + + + + +Phusion Passenger Standalone users guide + + + + + + + +
+ +
+

1. Installation

+
+
+
+
gem install passenger
+
+
+
+
+
+

2. Usage

+
+

Go to your application’s root directory, and run:

+
+
+
passenger start
+
+
+

This will start Phusion Passenger on port 3000. If you want to run it on a different port, +use the -p option, e.g.:

+
+
+
sudo passenger start -p 80
+
+
+

See --help for all available options.

+
+
+
+

+ + + + Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/doc/images/._phusion_banner.png and /tmp/P8JBulQLrq/passenger-3.0.21/doc/images/._phusion_banner.png differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/._bind.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/._bind.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/._checked_delete.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/._checked_delete.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/._enable_shared_from_this.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/._enable_shared_from_this.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/._exception_ptr.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/._exception_ptr.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/._function_equal.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/._function_equal.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/._get_pointer.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/._get_pointer.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/._io_fwd.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/._io_fwd.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/._is_placeholder.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/._is_placeholder.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/._limits.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/._limits.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/._make_shared.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/._make_shared.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/._mem_fn.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/._mem_fn.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/._memory_order.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/._memory_order.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/._next_prior.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/._next_prior.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/._non_type.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/._non_type.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/._noncopyable.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/._noncopyable.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/._none_t.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/._none_t.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/._optional.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/._optional.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/._ref.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/._ref.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/._scoped_array.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/._scoped_array.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/._scoped_ptr.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/._scoped_ptr.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/._shared_array.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/._shared_array.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/._shared_ptr.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/._shared_ptr.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/._thread.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/._thread.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/._token_iterator.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/._token_iterator.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/._tokenizer.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/._tokenizer.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/._type.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/._type.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/._visit_each.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/._visit_each.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/._weak_ptr.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/._weak_ptr.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/algorithm/string/._case_conv.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/algorithm/string/._case_conv.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/algorithm/string/._compare.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/algorithm/string/._compare.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/algorithm/string/._concept.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/algorithm/string/._concept.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/algorithm/string/._config.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/algorithm/string/._config.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/algorithm/string/._constants.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/algorithm/string/._constants.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/algorithm/string/._erase.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/algorithm/string/._erase.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/algorithm/string/._find_format.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/algorithm/string/._find_format.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/algorithm/string/._finder.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/algorithm/string/._finder.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/algorithm/string/._replace.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/algorithm/string/._replace.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/algorithm/string/._sequence_traits.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/algorithm/string/._sequence_traits.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/algorithm/string/._yes_no_type.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/algorithm/string/._yes_no_type.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/algorithm/string/detail/._finder.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/algorithm/string/detail/._finder.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/algorithm/string/detail/._replace_storage.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/algorithm/string/detail/._replace_storage.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/algorithm/string/detail/._sequence.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/algorithm/string/detail/._sequence.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/algorithm/string/detail/._util.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/algorithm/string/detail/._util.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/bind/._arg.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/bind/._arg.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/bind/._bind_cc.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/bind/._bind_cc.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/bind/._bind_mf2_cc.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/bind/._bind_mf2_cc.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/bind/._bind_mf_cc.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/bind/._bind_mf_cc.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/bind/._bind_template.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/bind/._bind_template.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/bind/._mem_fn.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/bind/._mem_fn.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/bind/._mem_fn_cc.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/bind/._mem_fn_cc.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/bind/._mem_fn_template.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/bind/._mem_fn_template.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/bind/._placeholders.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/bind/._placeholders.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/bind/._storage.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/bind/._storage.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/concept/._assert.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/concept/._assert.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/concept/._usage.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/concept/._usage.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/concept/detail/._concept_def.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/concept/detail/._concept_def.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/concept/detail/._concept_undef.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/concept/detail/._concept_undef.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/concept/detail/._general.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/concept/detail/._general.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/concept/detail/._has_constraints.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/concept/detail/._has_constraints.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/config/._abi_prefix.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/config/._abi_prefix.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/config/._abi_suffix.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/config/._abi_suffix.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/config/._posix_features.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/config/._posix_features.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/config/._requires_threads.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/config/._requires_threads.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/config/._user.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/config/._user.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/config/abi/._borland_prefix.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/config/abi/._borland_prefix.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/config/abi/._borland_suffix.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/config/abi/._borland_suffix.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/config/abi/._msvc_prefix.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/config/abi/._msvc_prefix.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/config/abi/._msvc_suffix.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/config/abi/._msvc_suffix.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/config/compiler/._comeau.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/config/compiler/._comeau.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/config/compiler/._compaq_cxx.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/config/compiler/._compaq_cxx.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/config/compiler/._greenhills.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/config/compiler/._greenhills.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/config/compiler/._kai.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/config/compiler/._kai.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/config/compiler/._sgi_mipspro.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/config/compiler/._sgi_mipspro.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/config/no_tr1/._cmath.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/config/no_tr1/._cmath.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/config/no_tr1/._complex.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/config/no_tr1/._complex.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/config/no_tr1/._functional.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/config/no_tr1/._functional.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/config/no_tr1/._memory.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/config/no_tr1/._memory.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/config/no_tr1/._utility.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/config/no_tr1/._utility.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/config/platform/._aix.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/config/platform/._aix.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/config/platform/._amigaos.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/config/platform/._amigaos.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/config/platform/._beos.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/config/platform/._beos.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/config/platform/._hpux.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/config/platform/._hpux.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/config/platform/._irix.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/config/platform/._irix.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/config/platform/._qnxnto.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/config/platform/._qnxnto.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/config/platform/._solaris.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/config/platform/._solaris.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/config/platform/._vxworks.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/config/platform/._vxworks.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/date_time/._special_values_parser.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/date_time/._special_values_parser.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/date_time/posix_time/._posix_time_types.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/date_time/posix_time/._posix_time_types.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/detail/._indirect_traits.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/detail/._indirect_traits.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/detail/._iterator.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/detail/._iterator.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/detail/._lcast_precision.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/detail/._lcast_precision.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/detail/._limits.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/detail/._limits.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/detail/._no_exceptions_support.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/detail/._no_exceptions_support.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/detail/._reference_content.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/detail/._reference_content.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/detail/._workaround.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/detail/._workaround.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/exception/._current_exception_cast.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/exception/._current_exception_cast.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/exception/._get_error_info.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/exception/._get_error_info.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/exception/._to_string.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/exception/._to_string.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/exception/._to_string_stub.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/exception/._to_string_stub.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/exception/detail/._is_output_streamable.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/exception/detail/._is_output_streamable.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/exception/detail/._object_hex_dump.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/exception/detail/._object_hex_dump.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/function/._function_fwd.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/function/._function_fwd.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/function/detail/._function_iterate.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/function/detail/._function_iterate.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/function/detail/._maybe_include.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/function/detail/._maybe_include.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/function/detail/._prologue.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/function/detail/._prologue.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/io/._ios_state.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/io/._ios_state.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/iterator/._interoperable.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/iterator/._interoperable.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/iterator/._iterator_categories.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/iterator/._iterator_categories.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/iterator/._iterator_concepts.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/iterator/._iterator_concepts.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/iterator/._iterator_traits.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/iterator/._iterator_traits.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/iterator/detail/._config_def.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/iterator/detail/._config_def.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/iterator/detail/._config_undef.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/iterator/detail/._config_undef.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/iterator/detail/._enable_if.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/iterator/detail/._enable_if.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/iterator/detail/._facade_iterator_category.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/iterator/detail/._facade_iterator_category.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/iterator/detail/._minimum_category.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/iterator/detail/._minimum_category.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/mpl/aux_/config/._bcc.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/mpl/aux_/config/._bcc.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/mpl/aux_/preprocessed/gcc/._and.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/mpl/aux_/preprocessed/gcc/._and.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/mpl/aux_/preprocessed/gcc/._apply.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/mpl/aux_/preprocessed/gcc/._apply.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/mpl/aux_/preprocessed/gcc/._apply_fwd.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/mpl/aux_/preprocessed/gcc/._apply_fwd.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/mpl/aux_/preprocessed/gcc/._apply_wrap.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/mpl/aux_/preprocessed/gcc/._apply_wrap.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/mpl/aux_/preprocessed/gcc/._arg.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/mpl/aux_/preprocessed/gcc/._arg.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/mpl/aux_/preprocessed/gcc/._bind.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/mpl/aux_/preprocessed/gcc/._bind.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/mpl/aux_/preprocessed/gcc/._bind_fwd.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/mpl/aux_/preprocessed/gcc/._bind_fwd.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/mpl/aux_/preprocessed/gcc/._full_lambda.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/mpl/aux_/preprocessed/gcc/._full_lambda.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/mpl/aux_/preprocessed/gcc/._or.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/mpl/aux_/preprocessed/gcc/._or.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/mpl/aux_/preprocessed/gcc/._placeholders.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/mpl/aux_/preprocessed/gcc/._placeholders.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/mpl/aux_/preprocessed/gcc/._quote.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/mpl/aux_/preprocessed/gcc/._quote.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/mpl/aux_/preprocessed/gcc/._template_arity.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/mpl/aux_/preprocessed/gcc/._template_arity.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/._comma_if.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/._comma_if.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/._empty.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/._empty.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/._enum.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/._enum.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/._enum_params.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/._enum_params.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/._identity.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/._identity.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/._inc.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/._inc.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/._iterate.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/._iterate.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/._repeat.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/._repeat.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/._stringize.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/._stringize.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/arithmetic/._add.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/arithmetic/._add.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/arithmetic/._dec.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/arithmetic/._dec.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/arithmetic/._inc.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/arithmetic/._inc.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/arithmetic/._sub.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/arithmetic/._sub.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/array/._data.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/array/._data.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/array/._elem.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/array/._elem.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/array/._size.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/array/._size.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/control/._expr_iif.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/control/._expr_iif.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/control/._if.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/control/._if.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/control/._iif.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/control/._iif.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/control/._while.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/control/._while.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/control/detail/._while.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/control/detail/._while.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/debug/._error.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/debug/._error.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/detail/._auto_rec.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/detail/._auto_rec.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/detail/._check.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/detail/._check.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/detail/._is_binary.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/detail/._is_binary.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/facilities/._empty.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/facilities/._empty.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/facilities/._identity.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/facilities/._identity.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/iteration/detail/bounds/._lower1.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/iteration/detail/bounds/._lower1.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/iteration/detail/bounds/._upper1.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/iteration/detail/bounds/._upper1.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/list/._adt.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/list/._adt.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/list/._append.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/list/._append.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/list/._fold_left.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/list/._fold_left.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/list/._fold_right.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/list/._fold_right.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/list/._for_each_i.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/list/._for_each_i.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/list/._reverse.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/list/._reverse.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/list/._transform.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/list/._transform.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/list/detail/._fold_left.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/list/detail/._fold_left.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/list/detail/._fold_right.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/list/detail/._fold_right.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/logical/._and.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/logical/._and.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/logical/._bitand.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/logical/._bitand.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/logical/._bool.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/logical/._bool.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/logical/._compl.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/logical/._compl.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/punctuation/._comma.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/punctuation/._comma.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/punctuation/._comma_if.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/punctuation/._comma_if.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/repetition/._enum.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/repetition/._enum.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/repetition/._enum_binary_params.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/repetition/._enum_binary_params.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/repetition/._enum_params.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/repetition/._enum_params.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/repetition/._enum_trailing_params.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/repetition/._enum_trailing_params.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/repetition/._for.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/repetition/._for.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/repetition/._repeat.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/repetition/._repeat.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/repetition/._repeat_from_to.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/repetition/._repeat_from_to.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/repetition/detail/._for.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/repetition/detail/._for.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/seq/._elem.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/seq/._elem.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/seq/._enum.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/seq/._enum.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/seq/._for_each_i.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/seq/._for_each_i.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/seq/._seq.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/seq/._seq.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/slot/._slot.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/slot/._slot.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/slot/detail/._def.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/slot/detail/._def.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/preprocessor/slot/detail/._shared.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/preprocessor/slot/detail/._shared.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/range/._config.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/range/._config.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/range/._const_iterator.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/range/._const_iterator.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/range/._difference_type.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/range/._difference_type.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/range/._distance.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/range/._distance.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/range/._empty.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/range/._empty.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/range/._functions.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/range/._functions.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/range/._iterator.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/range/._iterator.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/range/._iterator_range.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/range/._iterator_range.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/range/._iterator_range_io.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/range/._iterator_range_io.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/range/._mutable_iterator.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/range/._mutable_iterator.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/range/._rbegin.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/range/._rbegin.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/range/._rend.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/range/._rend.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/range/._reverse_iterator.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/range/._reverse_iterator.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/range/._value_type.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/range/._value_type.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/range/detail/._common.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/range/detail/._common.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/range/detail/._extract_optional_type.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/range/detail/._extract_optional_type.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/range/detail/._implementation_help.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/range/detail/._implementation_help.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/range/detail/._misc_concept.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/range/detail/._misc_concept.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/range/detail/._sfinae.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/range/detail/._sfinae.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/range/detail/._str_types.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/range/detail/._str_types.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/smart_ptr/._bad_weak_ptr.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/smart_ptr/._bad_weak_ptr.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/smart_ptr/._enable_shared_from_this.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/smart_ptr/._enable_shared_from_this.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/smart_ptr/._scoped_array.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/smart_ptr/._scoped_array.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/smart_ptr/._scoped_ptr.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/smart_ptr/._scoped_ptr.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/smart_ptr/detail/._atomic_count.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/smart_ptr/detail/._atomic_count.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/smart_ptr/detail/._atomic_count_gcc.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/smart_ptr/detail/._atomic_count_gcc.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/smart_ptr/detail/._atomic_count_gcc_x86.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/smart_ptr/detail/._atomic_count_gcc_x86.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/smart_ptr/detail/._atomic_count_pthreads.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/smart_ptr/detail/._atomic_count_pthreads.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/smart_ptr/detail/._atomic_count_solaris.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/smart_ptr/detail/._atomic_count_solaris.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/smart_ptr/detail/._atomic_count_sync.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/smart_ptr/detail/._atomic_count_sync.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/smart_ptr/detail/._operator_bool.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/smart_ptr/detail/._operator_bool.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/smart_ptr/detail/._sp_convertible.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/smart_ptr/detail/._sp_convertible.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/smart_ptr/detail/._sp_counted_base_acc_ia64.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/smart_ptr/detail/._sp_counted_base_acc_ia64.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/smart_ptr/detail/._sp_counted_base_cw_ppc.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/smart_ptr/detail/._sp_counted_base_cw_ppc.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/smart_ptr/detail/._sp_counted_base_cw_x86.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/smart_ptr/detail/._sp_counted_base_cw_x86.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/smart_ptr/detail/._sp_counted_base_gcc_ia64.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/smart_ptr/detail/._sp_counted_base_gcc_ia64.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/smart_ptr/detail/._sp_counted_base_gcc_ppc.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/smart_ptr/detail/._sp_counted_base_gcc_ppc.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/smart_ptr/detail/._sp_counted_base_gcc_sparc.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/smart_ptr/detail/._sp_counted_base_gcc_sparc.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/smart_ptr/detail/._sp_counted_base_gcc_x86.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/smart_ptr/detail/._sp_counted_base_gcc_x86.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/smart_ptr/detail/._sp_counted_base_nt.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/smart_ptr/detail/._sp_counted_base_nt.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/smart_ptr/detail/._sp_counted_base_pt.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/smart_ptr/detail/._sp_counted_base_pt.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/smart_ptr/detail/._sp_counted_base_solaris.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/smart_ptr/detail/._sp_counted_base_solaris.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/smart_ptr/detail/._sp_counted_base_spin.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/smart_ptr/detail/._sp_counted_base_spin.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/smart_ptr/detail/._sp_counted_base_sync.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/smart_ptr/detail/._sp_counted_base_sync.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/smart_ptr/detail/._spinlock_nt.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/smart_ptr/detail/._spinlock_nt.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/smart_ptr/detail/._spinlock_pt.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/smart_ptr/detail/._spinlock_pt.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/smart_ptr/detail/._spinlock_sync.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/smart_ptr/detail/._spinlock_sync.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/smart_ptr/detail/._yield_k.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/smart_ptr/detail/._yield_k.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/thread/._condition.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/thread/._condition.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/thread/._condition_variable.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/thread/._condition_variable.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/thread/._mutex.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/thread/._mutex.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/thread/._recursive_mutex.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/thread/._recursive_mutex.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/thread/._tss.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/thread/._tss.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/thread/detail/._force_cast.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/thread/detail/._force_cast.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/thread/detail/._singleton.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/thread/detail/._singleton.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/thread/detail/._thread_group.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/thread/detail/._thread_group.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/thread/detail/._thread_heap_alloc.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/thread/detail/._thread_heap_alloc.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/thread/detail/._tss_hooks.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/thread/detail/._tss_hooks.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/thread/pthread/._timespec.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/thread/pthread/._timespec.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/._add_const.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/._add_const.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/._add_pointer.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/._add_pointer.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/._add_reference.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/._add_reference.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/._add_volatile.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/._add_volatile.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/._broken_compiler_spec.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/._broken_compiler_spec.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/._composite_traits.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/._composite_traits.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/._config.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/._config.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/._conversion_traits.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/._conversion_traits.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/._ice.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/._ice.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/._integral_constant.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/._integral_constant.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/._is_abstract.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/._is_abstract.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/._is_arithmetic.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/._is_arithmetic.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/._is_array.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/._is_array.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/._is_base_and_derived.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/._is_base_and_derived.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/._is_base_of.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/._is_base_of.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/._is_class.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/._is_class.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/._is_float.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/._is_float.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/._is_integral.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/._is_integral.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/._is_lvalue_reference.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/._is_lvalue_reference.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/._is_reference.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/._is_reference.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/._is_rvalue_reference.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/._is_rvalue_reference.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/._is_same.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/._is_same.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/._is_scalar.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/._is_scalar.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/._is_void.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/._is_void.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/._make_unsigned.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/._make_unsigned.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/._remove_const.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/._remove_const.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/detail/._false_result.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/detail/._false_result.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/detail/._ice_and.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/detail/._ice_and.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/detail/._ice_eq.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/detail/._ice_eq.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/detail/._ice_not.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/detail/._ice_not.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/detail/._ice_or.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/detail/._ice_or.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/detail/._is_function_ptr_helper.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/detail/._is_function_ptr_helper.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/detail/._is_mem_fun_pointer_impl.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/detail/._is_mem_fun_pointer_impl.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/detail/._template_arity_spec.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/detail/._template_arity_spec.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/type_traits/detail/._yes_no_type.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/type_traits/detail/._yes_no_type.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/units/detail/._utility.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/units/detail/._utility.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/utility/._addressof.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/utility/._addressof.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/utility/._compare_pointees.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/utility/._compare_pointees.hpp differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/boost/utility/._enable_if.hpp and /tmp/P8JBulQLrq/passenger-3.0.21/ext/boost/utility/._enable_if.hpp differ diff -Nru passenger-3.0.19+112~precise1/ext/common/Constants.h passenger-3.0.21/ext/common/Constants.h --- passenger-3.0.19+112~precise1/ext/common/Constants.h 2013-01-30 19:16:22.000000000 +0000 +++ passenger-3.0.21/ext/common/Constants.h 2013-05-29 10:21:55.000000000 +0000 @@ -26,7 +26,7 @@ #define _PASSENGER_CONSTANTS_H_ /* Don't forget to update lib/phusion_passenger.rb too. */ -#define PASSENGER_VERSION "3.0.19" +#define PASSENGER_VERSION "3.0.21" #define FEEDBACK_FD 3 Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/libev/._LICENSE and /tmp/P8JBulQLrq/passenger-3.0.21/ext/libev/._LICENSE differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/libev/._README and /tmp/P8JBulQLrq/passenger-3.0.21/ext/libev/._README differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/libev/._config.guess and /tmp/P8JBulQLrq/passenger-3.0.21/ext/libev/._config.guess differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/libev/._config.sub and /tmp/P8JBulQLrq/passenger-3.0.21/ext/libev/._config.sub differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/libev/._install-sh and /tmp/P8JBulQLrq/passenger-3.0.21/ext/libev/._install-sh differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/libev/._missing and /tmp/P8JBulQLrq/passenger-3.0.21/ext/libev/._missing differ Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/ext/libev/._mkinstalldirs and /tmp/P8JBulQLrq/passenger-3.0.21/ext/libev/._mkinstalldirs differ diff -Nru passenger-3.0.19+112~precise1/ext/libev/config.guess passenger-3.0.21/ext/libev/config.guess --- passenger-3.0.19+112~precise1/ext/libev/config.guess 1970-01-01 00:00:00.000000000 +0000 +++ passenger-3.0.21/ext/libev/config.guess 2013-01-08 22:58:14.000000000 +0000 @@ -0,0 +1,1526 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 +# Free Software Foundation, Inc. + +timestamp='2008-01-23' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Originally written by Per Bothner . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm:riscos:*:*|arm:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[456]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + case ${UNAME_MACHINE} in + pc98) + echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:[3456]*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + EM64T | authenticamd) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-gnu + else + echo ${UNAME_MACHINE}-unknown-linux-gnueabi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-gnu + exit ;; + frv:Linux:*:*) + echo frv-unknown-linux-gnu + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^CPU/{ + s: ::g + p + }'`" + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^CPU/{ + s: ::g + p + }'`" + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + or32:Linux:*:*) + echo or32-unknown-linux-gnu + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-gnu + exit ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^LIBC/{ + s: ::g + p + }'`" + test x"${LIBC}" != x && { + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit + } + test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix\n"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff -Nru passenger-3.0.19+112~precise1/ext/libev/config.h.in passenger-3.0.21/ext/libev/config.h.in --- passenger-3.0.19+112~precise1/ext/libev/config.h.in 1970-01-01 00:00:00.000000000 +0000 +++ passenger-3.0.21/ext/libev/config.h.in 2013-05-28 21:13:08.000000000 +0000 @@ -0,0 +1,121 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the `clock_gettime' function. */ +#undef HAVE_CLOCK_GETTIME + +/* "use syscall interface for clock_gettime" */ +#undef HAVE_CLOCK_SYSCALL + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you have the `epoll_ctl' function. */ +#undef HAVE_EPOLL_CTL + +/* Define to 1 if you have the `eventfd' function. */ +#undef HAVE_EVENTFD + +/* Define to 1 if you have the `inotify_init' function. */ +#undef HAVE_INOTIFY_INIT + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the `kqueue' function. */ +#undef HAVE_KQUEUE + +/* Define to 1 if you have the `m' library (-lm). */ +#undef HAVE_LIBM + +/* Define to 1 if you have the `rt' library (-lrt). */ +#undef HAVE_LIBRT + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the `nanosleep' function. */ +#undef HAVE_NANOSLEEP + +/* Define to 1 if you have the `poll' function. */ +#undef HAVE_POLL + +/* Define to 1 if you have the header file. */ +#undef HAVE_POLL_H + +/* Define to 1 if you have the `port_create' function. */ +#undef HAVE_PORT_CREATE + +/* Define to 1 if you have the header file. */ +#undef HAVE_PORT_H + +/* Define to 1 if you have the `select' function. */ +#undef HAVE_SELECT + +/* Define to 1 if you have the `signalfd' function. */ +#undef HAVE_SIGNALFD + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_EPOLL_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_EVENTFD_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_EVENT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_INOTIFY_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_QUEUE_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SELECT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SIGNALFD_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Version number of package */ +#undef VERSION diff -Nru passenger-3.0.19+112~precise1/ext/libev/config.sub passenger-3.0.21/ext/libev/config.sub --- passenger-3.0.19+112~precise1/ext/libev/config.sub 1970-01-01 00:00:00.000000000 +0000 +++ passenger-3.0.21/ext/libev/config.sub 2013-01-08 22:58:14.000000000 +0000 @@ -0,0 +1,1658 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 +# Free Software Foundation, Inc. + +timestamp='2008-01-16' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ + uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fido | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | mcore | mep \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | mt \ + | msp430 \ + | nios | nios2 \ + | ns16k | ns32k \ + | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | score \ + | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nios-* | nios2-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tile*) + basic_machine=tile-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff -Nru passenger-3.0.19+112~precise1/ext/libev/configure passenger-3.0.21/ext/libev/configure --- passenger-3.0.19+112~precise1/ext/libev/configure 2013-01-30 19:16:22.000000000 +0000 +++ passenger-3.0.21/ext/libev/configure 2013-05-28 21:13:08.000000000 +0000 @@ -1,60 +1,81 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.61. +# Generated by GNU Autoconf 2.69. +# +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# # -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; esac - fi - - -# PATH needs CR -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' else - PATH_SEPARATOR=: + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' fi - rm -f conf$$.sh + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' fi -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } fi @@ -63,20 +84,19 @@ # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) -as_nl=' -' IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. -case $0 in +as_myself= +case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done IFS=$as_save_IFS ;; @@ -87,354 +107,366 @@ as_myself=$0 fi if test ! -f "$as_myself"; then - echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (exit 1); exit 1; } + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 fi -# Work around bugs in pre-3.0 UWIN ksh. -for as_var in ENV MAIL MAILPATH -do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE # CDPATH. -$as_unset CDPATH - +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then - if (eval ":") 2>/dev/null; then - as_have_required=yes + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST else - as_have_required=no + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac fi - - if test $as_have_required = yes && (eval ": -(as_func_return () { - (exit \$1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = \"\$1\" ); then - : +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes else - exitcode=1 - echo positional parameters were not saved. + as_have_required=no fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : -test \$exitcode = 0) || { (exit 1); exit 1; } - -( - as_lineno_1=\$LINENO - as_lineno_2=\$LINENO - test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && - test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } -") 2> /dev/null; then - : else - as_candidate_shells= - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - case $as_dir in + as_found=: + case $as_dir in #( /*) for as_base in sh bash ksh sh5; do - as_candidate_shells="$as_candidate_shells $as_dir/$as_base" + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi done;; esac + as_found=false done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } IFS=$as_save_IFS - for as_shell in $as_candidate_shells $SHELL; do - # Try only shells that exist, to save several forks. - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { ("$as_shell") 2> /dev/null <<\_ASEOF -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - -: -_ASEOF -}; then - CONFIG_SHELL=$as_shell - as_have_required=yes - if { "$as_shell" 2> /dev/null <<\_ASEOF -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - -: -(as_func_return () { - (exit $1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = "$1" ); then - : -else - exitcode=1 - echo positional parameters were not saved. + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, +$0: including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 fi - -test $exitcode = 0) || { (exit 1); exit 1; } - -( - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } - -_ASEOF -}; then - break fi - fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS - done +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset - if test "x$CONFIG_SHELL" != x; then - for as_var in BASH_ENV ENV - do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - done - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} -fi +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ - if test $as_have_required = no; then - echo This script requires a shell more modern than all the - echo shells that I found on your system. Please install a - echo modern shell, or manually run the script under such a - echo shell if you do have one. - { (exit 1); exit 1; } -fi + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" -fi +} # as_fn_mkdir_p -fi +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith -(eval "as_func_return () { - (exit \$1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error -exitcode=0 -if as_func_success; then - : +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. + as_expr=false fi -if as_func_ret_success; then - : +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. + as_basename=false fi -if ( set x; as_func_ret_success y && test x = \"\$1\" ); then - : +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname else - exitcode=1 - echo positional parameters were not saved. + as_dirname=false fi -test \$exitcode = 0") || { - echo No shell found that supports shell functions. - echo Please tell autoconf@gnu.org about your system, - echo including any error possibly output before this - echo message -} +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, and appends - # trailing '-' during substitution so that $LINENO is not a special - # case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # scripts with optimization help from Paolo Bonzini. Blame Lee - # E. McMahon (1931-1989) for sed's syntax. :-) + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= @@ -451,9 +483,12 @@ s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). @@ -462,84 +497,55 @@ exit } - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in +case `echo -n x` in #((((( -n*) - case `echo 'x\c'` in + case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. - *) ECHO_C='\c';; + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir - mkdir conf$$.dir + mkdir conf$$.dir 2>/dev/null fi -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi else - as_ln_s='cp -p' + as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then - as_mkdir_p=: + as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x +as_test_x='test -x' +as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -549,7 +555,6 @@ - # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} @@ -703,10 +708,11 @@ tagnames=${tagnames+${tagnames},}F77 -exec 7<&0 &1 +test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` @@ -721,7 +727,6 @@ subdirs= MFLAGS= MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME= @@ -729,6 +734,7 @@ PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= +PACKAGE_URL= ac_unique_file="ev_epoll.c" # Factoring default headers for most tests. @@ -767,116 +773,130 @@ # include #endif" -ac_subst_vars='SHELL -PATH_SEPARATOR -PACKAGE_NAME -PACKAGE_TARNAME -PACKAGE_VERSION -PACKAGE_STRING -PACKAGE_BUGREPORT -exec_prefix -prefix -program_transform_name -bindir -sbindir -libexecdir -datarootdir -datadir -sysconfdir -sharedstatedir -localstatedir -includedir -oldincludedir -docdir -infodir -htmldir -dvidir -pdfdir -psdir -libdir -localedir -mandir -DEFS -ECHO_C -ECHO_N -ECHO_T -LIBS -build_alias -host_alias -target_alias -INSTALL_PROGRAM -INSTALL_SCRIPT -INSTALL_DATA -am__isrc -CYGPATH_W -PACKAGE -VERSION -ACLOCAL -AUTOCONF -AUTOMAKE -AUTOHEADER -MAKEINFO -install_sh -STRIP -INSTALL_STRIP_PROGRAM -mkdir_p -AWK -SET_MAKE -am__leading_dot -AMTAR -am__tar -am__untar -MAINTAINER_MODE_TRUE -MAINTAINER_MODE_FALSE -MAINT -build -build_cpu -build_vendor -build_os -host -host_cpu -host_vendor -host_os -CC -CFLAGS -LDFLAGS -CPPFLAGS -ac_ct_CC -EXEEXT -OBJEXT -DEPDIR -am__include -am__quote -AMDEP_TRUE -AMDEP_FALSE -AMDEPBACKSLASH -CCDEPMODE -am__fastdepCC_TRUE -am__fastdepCC_FALSE -SED -GREP -EGREP -LN_S -ECHO -AR -RANLIB -DSYMUTIL -NMEDIT -CPP -CXX -CXXFLAGS -ac_ct_CXX -CXXDEPMODE -am__fastdepCXX_TRUE -am__fastdepCXX_FALSE -CXXCPP -F77 -FFLAGS -ac_ct_F77 -LIBTOOL +ac_subst_vars='LTLIBOBJS LIBOBJS -LTLIBOBJS' +LIBTOOL +ac_ct_F77 +FFLAGS +F77 +CXXCPP +am__fastdepCXX_FALSE +am__fastdepCXX_TRUE +CXXDEPMODE +ac_ct_CXX +CXXFLAGS +CXX +CPP +NMEDIT +DSYMUTIL +RANLIB +AR +ECHO +LN_S +EGREP +GREP +SED +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__quote +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +MAINT +MAINTAINER_MODE_FALSE +MAINTAINER_MODE_TRUE +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_maintainer_mode +enable_shared +enable_static +enable_fast_install +enable_dependency_tracking +with_gnu_ld +enable_libtool_lock +with_pic +with_tags +' ac_precious_vars='build_alias host_alias target_alias @@ -897,6 +917,8 @@ # Initialize some variables set by options. ac_init_help= ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null @@ -952,8 +974,9 @@ fi case $ac_option in - *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *) ac_optarg=yes ;; + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. @@ -995,13 +1018,20 @@ datarootdir=$ac_optarg ;; -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` - eval enable_$ac_feature=no ;; + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; @@ -1014,13 +1044,20 @@ dvidir=$ac_optarg ;; -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` - eval enable_$ac_feature=\$ac_optarg ;; + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ @@ -1211,22 +1248,36 @@ ac_init_version=: ;; -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/[-.]/_/g'` - eval with_$ac_package=\$ac_optarg ;; + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/[-.]/_/g'` - eval with_$ac_package=no ;; + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. @@ -1246,26 +1297,26 @@ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; - -*) { echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac @@ -1273,23 +1324,36 @@ if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac fi -# Be sure to have absolute directory names. +# Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac - { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; } + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' @@ -1303,8 +1367,6 @@ if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi @@ -1319,23 +1381,21 @@ ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - { echo "$as_me: error: Working directory cannot be determined" >&2 - { (exit 1); exit 1; }; } + as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - { echo "$as_me: error: pwd does not report name of working directory" >&2 - { (exit 1); exit 1; }; } + as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$0" || -$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X"$0" | + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -1362,13 +1422,11 @@ fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 - { (exit 1); exit 1; }; } + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then @@ -1408,7 +1466,7 @@ --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking...' messages + -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files @@ -1416,9 +1474,9 @@ Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] + [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] + [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify @@ -1428,25 +1486,25 @@ For better control, use the options below. Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF @@ -1467,6 +1525,7 @@ cat <<\_ACEOF Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-maintainer-mode enable make rules and dependencies not useful @@ -1479,108 +1538,667 @@ --enable-dependency-tracking do not reject slow dependency extractors --disable-libtool-lock avoid locking (might break parallel builds) -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --with-pic try to use only PIC/non-PIC objects [default=use - both] - --with-tags[=TAGS] include additional configurations [automatic] +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-tags[=TAGS] include additional configurations [automatic] + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + CXX C++ compiler command + CXXFLAGS C++ compiler flags + CXXCPP C++ preprocessor + F77 Fortran 77 compiler command + FFLAGS Fortran 77 compiler flags + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to the package provider. +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +configure +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_mongrel + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - CPP C preprocessor - CXX C++ compiler command - CXXFLAGS C++ compiler flags - CXXCPP C++ preprocessor - F77 Fortran 77 compiler command - FFLAGS Fortran 77 compiler flags +# ac_fn_cxx_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval -_ACEOF -ac_status=$? +} # ac_fn_cxx_try_compile + +# ac_fn_cxx_try_cpp LINENO +# ------------------------ +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || continue - ac_builddir=. +} # ac_fn_cxx_try_cpp -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; +# ac_fn_cxx_try_link LINENO +# ------------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_link + +# ac_fn_f77_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_f77_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done + ac_retval=1 fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -configure -generated by GNU Autoconf 2.61 +} # ac_fn_f77_try_compile -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit +# ac_fn_f77_try_link LINENO +# ------------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_f77_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_f77_try_link cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was -generated by GNU Autoconf 2.61. Invocation command line was +generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -1616,8 +2234,8 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - echo "PATH: $as_dir" -done + $as_echo "PATH: $as_dir" + done IFS=$as_save_IFS } >&5 @@ -1651,12 +2269,12 @@ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in - 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) - ac_configure_args1="$ac_configure_args1 '$ac_arg'" + as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else @@ -1672,13 +2290,13 @@ -* ) ac_must_keep_next=true ;; esac fi - ac_configure_args="$ac_configure_args '$ac_arg'" + as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done -$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } -$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there @@ -1690,11 +2308,9 @@ { echo - cat <<\_ASBOX -## ---------------- ## + $as_echo "## ---------------- ## ## Cache variables. ## -## ---------------- ## -_ASBOX +## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( @@ -1703,12 +2319,13 @@ case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( - *) $as_unset $ac_var ;; + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done @@ -1727,128 +2344,136 @@ ) echo - cat <<\_ASBOX -## ----------------- ## + $as_echo "## ----------------- ## ## Output variables. ## -## ----------------- ## -_ASBOX +## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - echo "$ac_var='\''$ac_val'\''" + $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then - cat <<\_ASBOX -## ------------------- ## + $as_echo "## ------------------- ## ## File substitutions. ## -## ------------------- ## -_ASBOX +## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - echo "$ac_var='\''$ac_val'\''" + $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then - cat <<\_ASBOX -## ----------- ## + $as_echo "## ----------- ## ## confdefs.h. ## -## ----------- ## -_ASBOX +## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" - echo "$as_me: exit $exit_status" + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h +$as_echo "/* confdefs.h */" > confdefs.h + # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF - cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF - cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF - cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF - cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + # Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE if test -n "$CONFIG_SITE"; then - set x "$CONFIG_SITE" + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac elif test "x$prefix" != xNONE; then - set x "$prefix/share/config.site" "$prefix/etc/config.site" + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site else - set x "$ac_default_prefix/share/config.site" \ - "$ac_default_prefix/etc/config.site" + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site fi -shift -for ac_site_file +for ac_site_file in "$ac_site_file1" "$ac_site_file2" do - if test -r "$ac_site_file"; then - { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -echo "$as_me: loading site script $ac_site_file" >&6;} + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then - { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else - { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi @@ -1862,60 +2487,56 @@ eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) - { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) - { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in - *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then - { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} - { (exit 1); exit 1; }; } -fi - - - - - - - - - - - - - - - - + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -1945,9 +2566,7 @@ fi done if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 -echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, @@ -1972,22 +2591,23 @@ # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. -{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in - ./ | .// | /cC/* | \ + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. @@ -1995,7 +2615,7 @@ # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. @@ -2005,17 +2625,29 @@ # program-specific install script used by HP pwplus--don't use. : else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi fi fi done done ;; esac -done + + done IFS=$as_save_IFS +rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then @@ -2028,8 +2660,8 @@ INSTALL=$ac_install_sh fi fi -{ echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. @@ -2039,8 +2671,8 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' -{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5 -echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file @@ -2063,11 +2695,8 @@ # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". - { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken -alias in your environment" >&5 -echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken -alias in your environment" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken +alias in your environment" "$LINENO" 5 fi test "$2" = conftest.file @@ -2076,26 +2705,20 @@ # Ok. : else - { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! -Check your system clock" >&5 -echo "$as_me: error: newly created file is older than distributed files! -Check your system clock" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 fi -{ echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. echo might interpret backslashes. +# Double any \ or $. # By default was `s,x,x', remove it if useless. -cat <<\_ACEOF >conftest.sed -s/[\\$]/&&/g;s/;s,x,x,$// -_ACEOF -program_transform_name=`echo $program_transform_name | sed -f conftest.sed` -rm -f conftest.sed +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` @@ -2106,24 +2729,24 @@ am_missing_run="$MISSING --run " else am_missing_run= - { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 -echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi -{ echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 -echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then - if test "${ac_cv_path_mkdir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do + for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do - { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ @@ -2133,11 +2756,12 @@ esac done done -done + done IFS=$as_save_IFS fi + test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else @@ -2145,12 +2769,11 @@ # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. - test -d ./--version && rmdir ./--version MKDIR_P="$ac_install_sh -d" fi fi -{ echo "$as_me:$LINENO: result: $MKDIR_P" >&5 -echo "${ECHO_T}$MKDIR_P" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in @@ -2162,10 +2785,10 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_AWK+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. @@ -2175,43 +2798,44 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then - { echo "$as_me:$LINENO: result: $AWK" >&5 -echo "${ECHO_T}$AWK" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi test -n "$AWK" && break done -{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } -set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; @@ -2221,12 +2845,12 @@ rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } SET_MAKE= else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi @@ -2245,9 +2869,7 @@ am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then - { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 -echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi @@ -2301,10 +2923,10 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. @@ -2314,25 +2936,25 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then - { echo "$as_me:$LINENO: result: $STRIP" >&5 -echo "${ECHO_T}$STRIP" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2341,10 +2963,10 @@ ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. @@ -2354,25 +2976,25 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then - { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 -echo "${ECHO_T}$ac_ct_STRIP" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then @@ -2380,12 +3002,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP @@ -2410,111 +3028,32 @@ ac_config_headers="$ac_config_headers config.h" -{ echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 -echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 +$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. -if test "${enable_maintainer_mode+set}" = set; then +if test "${enable_maintainer_mode+set}" = set; then : enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=no fi - { echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 -echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 +$as_echo "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= - MAINTAINER_MODE_FALSE='#' -else - MAINTAINER_MODE_TRUE='#' - MAINTAINER_MODE_FALSE= -fi - - MAINT=$MAINTAINER_MODE_TRUE - - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } -if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in - ./ | .// | /cC/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - done - done - ;; -esac -done -IFS=$as_save_IFS - - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= fi -{ echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6; } -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + MAINT=$MAINTAINER_MODE_TRUE + -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then +if test "${enable_shared+set}" = set; then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; @@ -2538,7 +3077,7 @@ # Check whether --enable-static was given. -if test "${enable_static+set}" = set; then +if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; @@ -2562,7 +3101,7 @@ # Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then +if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; @@ -2587,35 +3126,27 @@ # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 -echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} - { (exit 1); exit 1; }; } - -{ echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6; } -if test "${ac_cv_build+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && - { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 -echo "$as_me: error: cannot guess build type; you must specify one" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 -echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi -{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; -*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 -echo "$as_me: error: invalid value of canonical build" >&2;} - { (exit 1); exit 1; }; };; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' @@ -2631,28 +3162,24 @@ case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac -{ echo "$as_me:$LINENO: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6; } -if test "${ac_cv_host+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 -echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; -*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 -echo "$as_me: error: invalid value of canonical host" >&2;} - { (exit 1); exit 1; }; };; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' @@ -2680,8 +3207,8 @@ .PHONY: am__doit END # If we don't find an include directive, just comment out the code. -{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 -echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none @@ -2708,12 +3235,12 @@ fi -{ echo "$as_me:$LINENO: result: $_am_result" >&5 -echo "${ECHO_T}$_am_result" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then +if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi @@ -2738,10 +3265,10 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2751,25 +3278,25 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2778,10 +3305,10 @@ ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. @@ -2791,25 +3318,25 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then @@ -2817,12 +3344,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -2835,10 +3358,10 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2848,25 +3371,25 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2875,10 +3398,10 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2889,18 +3412,18 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then @@ -2919,11 +3442,11 @@ fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2934,10 +3457,10 @@ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2947,25 +3470,25 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2978,10 +3501,10 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. @@ -2991,25 +3514,25 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -3021,12 +3544,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -3036,51 +3555,37 @@ fi -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&5 -echo "$as_me: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. -echo "$as_me:$LINENO: checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (ac_try="$ac_compiler --version >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler --version >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -v >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -v >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -V >&5" +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -V >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3092,42 +3597,38 @@ } _ACEOF ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.exe b.out" +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } -ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -# -# List of possible output files, starting from the most likely. -# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) -# only as a last resort. b.out is created by i960 compilers. -ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' -# -# The IRIX 6 linker writes into existing files which may not be -# executable, retaining their permissions. Remove them first so a -# subsequent execution test works. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + ac_rmfiles= for ac_file in $ac_files do case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles -if { (ac_try="$ac_link_default" +if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, @@ -3137,14 +3638,14 @@ do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi @@ -3163,78 +3664,41 @@ else ac_file='' fi - -{ echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6; } -if test -z "$ac_file"; then - echo "$as_me: failed program was:" >&5 +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { echo "$as_me:$LINENO: error: C compiler cannot create executables -See \`config.log' for more details." >&5 -echo "$as_me: error: C compiler cannot create executables -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } -fi - +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } -# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 -# If not cross compiling, check that we can run a simple program. -if test "$cross_compiling" != yes; then - if { ac_try='./$ac_file' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { echo "$as_me:$LINENO: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - fi - fi -fi -{ echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } - -rm -f a.out a.exe conftest$ac_cv_exeext b.out +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } -{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6; } - -{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } -if { (ac_try="$ac_link" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with @@ -3242,37 +3706,90 @@ for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else - { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest$ac_cv_exeext -{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6; } + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT -{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } -if test "${ac_cv_objext+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3284,51 +3801,46 @@ } _ACEOF rm -f conftest.o conftest.obj -if { (ac_try="$ac_compile" +if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } fi - rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } -if test "${ac_cv_c_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3342,54 +3854,34 @@ return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_compiler_gnu=no + ac_compiler_gnu=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } -GCC=`test $ac_compiler_gnu = yes && echo yes` +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS -{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } -if test "${ac_cv_prog_cc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3400,34 +3892,11 @@ return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - CFLAGS="" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3438,35 +3907,12 @@ return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_c_try_compile "$LINENO"; then : - ac_c_werror_flag=$ac_save_c_werror_flag +else + ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3477,42 +3923,18 @@ return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi -{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then @@ -3528,23 +3950,18 @@ CFLAGS= fi fi -{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 -echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } -if test "${ac_cv_prog_cc_c89+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include -#include -#include +struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); @@ -3596,31 +4013,9 @@ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done @@ -3631,17 +4026,19 @@ # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) - { echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6; } ;; + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; xno) - { echo "$as_me:$LINENO: result: unsupported" >&5 -echo "${ECHO_T}unsupported" >&6; } ;; + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" - { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac +if test "x$ac_cv_prog_cc_c89" != xno; then : +fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -3651,10 +4048,10 @@ depcc="$CC" am_compiler_list= -{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } -if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up @@ -3742,8 +4139,8 @@ fi fi -{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 -echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if @@ -3757,10 +4154,10 @@ fi -{ echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 -echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6; } -if test "${lt_cv_path_SED+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${lt_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 else # Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. @@ -3771,7 +4168,7 @@ test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$lt_ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$lt_ac_prog$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done @@ -3813,48 +4210,43 @@ SED=$lt_cv_path_SED -{ echo "$as_me:$LINENO: result: $SED" >&5 -echo "${ECHO_T}$SED" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $SED" >&5 +$as_echo "$SED" >&6; } -{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 -echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } -if test "${ac_cv_path_GREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Extract the first word of "grep ggrep" to use in msg output -if test -z "$GREP"; then -set dummy grep ggrep; ac_prog_name=$2 -if test "${ac_cv_path_GREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 else + if test -z "$GREP"; then ac_path_GREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue - # Check for GNU ac_path_GREP and select it if it is found. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - echo 'GREP' >> "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` + as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" @@ -3866,77 +4258,61 @@ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac - - $ac_path_GREP_found && break 3 + $ac_path_GREP_found && break 3 + done + done done -done - -done IFS=$as_save_IFS - - -fi - -GREP="$ac_cv_path_GREP" -if test -z "$GREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } -fi - + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi else ac_cv_path_GREP=$GREP fi - fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 -echo "${ECHO_T}$ac_cv_path_GREP" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" -{ echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } -if test "${ac_cv_path_EGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else - # Extract the first word of "egrep" to use in msg output -if test -z "$EGREP"; then -set dummy egrep; ac_prog_name=$2 -if test "${ac_cv_path_EGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else + if test -z "$EGREP"; then ac_path_EGREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue - # Check for GNU ac_path_EGREP and select it if it is found. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - echo 'EGREP' >> "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` + as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" @@ -3948,39 +4324,28 @@ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac - - $ac_path_EGREP_found && break 3 + $ac_path_EGREP_found && break 3 + done + done done -done - -done IFS=$as_save_IFS - - -fi - -EGREP="$ac_cv_path_EGREP" -if test -z "$EGREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } -fi - + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi else ac_cv_path_EGREP=$EGREP fi - fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 -echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" # Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then +if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no @@ -3989,8 +4354,8 @@ ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. - { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 -echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw @@ -4019,14 +4384,14 @@ ;; esac elif test "$with_gnu_ld" = yes; then - { echo "$as_me:$LINENO: checking for GNU ld" >&5 -echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } else - { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 -echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } fi -if test "${lt_cv_path_LD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR @@ -4056,19 +4421,17 @@ LD="$lt_cv_path_LD" if test -n "$LD"; then - { echo "$as_me:$LINENO: result: $LD" >&5 -echo "${ECHO_T}$LD" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +$as_echo "$LD" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 -echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} - { (exit 1); exit 1; }; } -{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 -echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } -if test "${lt_cv_prog_gnu_ld+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 -echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld -{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 -echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; } -if test "${lt_cv_ld_reload_flag+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if ${lt_cv_ld_reload_flag+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi -{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 -echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; @@ -4110,10 +4473,10 @@ ;; esac -{ echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 -echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6; } -if test "${lt_cv_path_NM+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD-compatible nm" >&5 +$as_echo_n "checking for BSD-compatible nm... " >&6; } +if ${lt_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. @@ -4159,25 +4522,25 @@ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi fi -{ echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 -echo "${ECHO_T}$lt_cv_path_NM" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } NM="$lt_cv_path_NM" -{ echo "$as_me:$LINENO: checking whether ln -s works" >&5 -echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } else - { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 -echo "${ECHO_T}no, using $LN_S" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } fi -{ echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 -echo $ECHO_N "checking how to recognize dependent libraries... $ECHO_C" >&6; } -if test "${lt_cv_deplibs_check_method+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if ${lt_cv_deplibs_check_method+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= @@ -4360,8 +4723,8 @@ esac fi -{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 -echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown @@ -4380,7 +4743,7 @@ # Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then +if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi @@ -4392,11 +4755,11 @@ ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" @@ -4410,12 +4773,12 @@ ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 4413 "configure"' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + echo '#line 4776 "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) @@ -4449,11 +4812,11 @@ s390*-*linux*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in @@ -4502,10 +4865,10 @@ # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" - { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 -echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; } -if test "${lt_cv_cc_needs_belf+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if ${lt_cv_cc_needs_belf+:} false; then : + $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -4513,11 +4876,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -4528,34 +4887,13 @@ return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - lt_cv_cc_needs_belf=no + lt_cv_cc_needs_belf=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -4563,8 +4901,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu fi -{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 -echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" @@ -4573,11 +4911,11 @@ sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in @@ -4605,15 +4943,15 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then - if test "${ac_cv_prog_CPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" @@ -4627,11 +4965,7 @@ # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include @@ -4640,76 +4974,34 @@ #endif Syntax error _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_c_try_cpp "$LINENO"; then : +else # Broken: fails on valid input. continue fi - -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then +if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - # Passes both tests. ac_preproc_ok=: break fi - -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : break fi @@ -4721,8 +5013,8 @@ else ac_cv_prog_CPP=$CPP fi -{ echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do @@ -4732,11 +5024,7 @@ # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include @@ -4745,83 +5033,40 @@ #endif Syntax error _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_c_try_cpp "$LINENO"; then : +else # Broken: fails on valid input. continue fi - -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then +if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - # Passes both tests. ac_preproc_ok=: break fi - -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + else - { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&5 -echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c @@ -4831,16 +5076,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } -if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -4855,47 +5096,23 @@ return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_header_stdc=no + ac_cv_header_stdc=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then - : + $EGREP "memchr" >/dev/null 2>&1; then : + else ac_cv_header_stdc=no fi @@ -4905,18 +5122,14 @@ if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then - : + $EGREP "free" >/dev/null 2>&1; then : + else ac_cv_header_stdc=no fi @@ -4926,14 +5139,10 @@ if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then + if test "$cross_compiling" = yes; then : : else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -4960,113 +5169,35 @@ return 0; } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_c_try_run "$LINENO"; then : -( exit $ac_status ) -ac_cv_header_stdc=no +else + ac_cv_header_stdc=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then -cat >>confdefs.h <<\_ACEOF -#define STDC_HEADERS 1 -_ACEOF +$as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. - - - - - - - - - for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default - -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_Header=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_Header'}'` = yes; then +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi @@ -5074,140 +5205,12 @@ done - for ac_header in dlfcn.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -else - # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } - -# Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - - ;; -esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then +do : + ac_fn_c_check_header_mongrel "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define HAVE_DLFCN_H 1 _ACEOF fi @@ -5228,10 +5231,10 @@ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CXX+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. @@ -5241,25 +5244,25 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then - { echo "$as_me:$LINENO: result: $CXX" >&5 -echo "${ECHO_T}$CXX" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -5272,10 +5275,10 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CXX+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. @@ -5285,25 +5288,25 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then - { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 -echo "${ECHO_T}$ac_ct_CXX" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -5315,12 +5318,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX @@ -5330,49 +5329,36 @@ fi fi # Provide some information about the compiler. -echo "$as_me:$LINENO: checking for C++ compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (ac_try="$ac_compiler --version >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler --version >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -v >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -v >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -V >&5" +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -V >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - -{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; } -if test "${ac_cv_cxx_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if ${ac_cv_cxx_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -5386,54 +5372,34 @@ return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_compiler_gnu=no + ac_compiler_gnu=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi -{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; } -GXX=`test $ac_compiler_gnu = yes && echo yes` +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS -{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 -echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; } -if test "${ac_cv_prog_cxx_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if ${ac_cv_prog_cxx_g+:} false; then : + $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -5444,34 +5410,11 @@ return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - CXXFLAGS="" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -5482,35 +5425,12 @@ return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cxx_werror_flag=$ac_save_cxx_werror_flag +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -5521,42 +5441,18 @@ return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi -{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then @@ -5580,10 +5476,10 @@ depcc="$CXX" am_compiler_list= -{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } -if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CXX_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up @@ -5671,8 +5567,8 @@ fi fi -{ echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 -echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if @@ -5696,11 +5592,11 @@ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -{ echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 -echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then - if test "${ac_cv_prog_CXXCPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + if ${ac_cv_prog_CXXCPP+:} false; then : + $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" @@ -5714,11 +5610,7 @@ # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include @@ -5727,76 +5619,34 @@ #endif Syntax error _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_cxx_try_cpp "$LINENO"; then : +else # Broken: fails on valid input. continue fi - -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then +if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - # Passes both tests. ac_preproc_ok=: break fi - -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : break fi @@ -5808,8 +5658,8 @@ else ac_cv_prog_CXXCPP=$CXXCPP fi -{ echo "$as_me:$LINENO: result: $CXXCPP" >&5 -echo "${ECHO_T}$CXXCPP" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do @@ -5819,11 +5669,7 @@ # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include @@ -5832,83 +5678,40 @@ #endif Syntax error _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_cxx_try_cpp "$LINENO"; then : +else # Broken: fails on valid input. continue fi - -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then +if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - # Passes both tests. ac_preproc_ok=: break fi - -rm -f conftest.err conftest.$ac_ext +rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + else - { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check -See \`config.log' for more details." >&5 -echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=cpp @@ -5925,14 +5728,14 @@ ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu if test -n "$ac_tool_prefix"; then - for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn + for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgfortran pgf95 lf95 ftn nagfor do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_F77+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_F77+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$F77"; then ac_cv_prog_F77="$F77" # Let the user override the test. @@ -5942,25 +5745,25 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_F77="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi F77=$ac_cv_prog_F77 if test -n "$F77"; then - { echo "$as_me:$LINENO: result: $F77" >&5 -echo "${ECHO_T}$F77" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $F77" >&5 +$as_echo "$F77" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -5969,14 +5772,14 @@ fi if test -z "$F77"; then ac_ct_F77=$F77 - for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn + for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgfortran pgf95 lf95 ftn nagfor do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_F77+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_F77+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_F77"; then ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. @@ -5986,25 +5789,25 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_F77="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_F77=$ac_cv_prog_ac_ct_F77 if test -n "$ac_ct_F77"; then - { echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 -echo "${ECHO_T}$ac_ct_F77" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_F77" >&5 +$as_echo "$ac_ct_F77" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -6016,12 +5819,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac F77=$ac_ct_F77 @@ -6030,50 +5829,41 @@ # Provide some information about the compiler. -echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (ac_try="$ac_compiler --version >&5" +$as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 77 compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler --version >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -v >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -v >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -V >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -V >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done rm -f a.out # If we don't use `.F' as extension, the preprocessor is not run on the # input file. (Note that this only needs to work for GNU compilers.) ac_save_ext=$ac_ext ac_ext=F -{ echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6; } -if test "${ac_cv_f77_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran 77 compiler" >&5 +$as_echo_n "checking whether we are using the GNU Fortran 77 compiler... " >&6; } +if ${ac_cv_f77_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF + cat > conftest.$ac_ext <<_ACEOF program main #ifndef __GNUC__ choke me @@ -6081,82 +5871,42 @@ end _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_f77_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_f77_try_compile "$LINENO"; then : ac_compiler_gnu=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_compiler_gnu=no + ac_compiler_gnu=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_f77_compiler_gnu=$ac_compiler_gnu fi -{ echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_f77_compiler_gnu" >&5 +$as_echo "$ac_cv_f77_compiler_gnu" >&6; } ac_ext=$ac_save_ext ac_test_FFLAGS=${FFLAGS+set} ac_save_FFLAGS=$FFLAGS FFLAGS= -{ echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 -echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6; } -if test "${ac_cv_prog_f77_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $F77 accepts -g" >&5 +$as_echo_n "checking whether $F77 accepts -g... " >&6; } +if ${ac_cv_prog_f77_g+:} false; then : + $as_echo_n "(cached) " >&6 else FFLAGS=-g -cat >conftest.$ac_ext <<_ACEOF +cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_f77_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_f77_try_compile "$LINENO"; then : ac_cv_prog_f77_g=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_prog_f77_g=no + ac_cv_prog_f77_g=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 -echo "${ECHO_T}$ac_cv_prog_f77_g" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f77_g" >&5 +$as_echo "$ac_cv_prog_f77_g" >&6; } if test "$ac_test_FFLAGS" = set; then FFLAGS=$ac_save_FFLAGS elif test $ac_cv_prog_f77_g = yes; then @@ -6173,7 +5923,11 @@ fi fi -G77=`test $ac_compiler_gnu = yes && echo yes` +if test $ac_compiler_gnu = yes; then + G77=yes +else + G77= +fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -6184,10 +5938,10 @@ # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! # find the maximum length of command line arguments -{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 -echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; } -if test "${lt_cv_sys_max_cmd_len+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if ${lt_cv_sys_max_cmd_len+:} false; then : + $as_echo_n "(cached) " >&6 else i=0 teststring="ABCD" @@ -6296,11 +6050,11 @@ fi if test -n $lt_cv_sys_max_cmd_len ; then - { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 -echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } else - { echo "$as_me:$LINENO: result: none" >&5 -echo "${ECHO_T}none" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } fi @@ -6308,10 +6062,10 @@ # Check for command to grab the raw symbol name followed by C symbol from nm. -{ echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 -echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6; } -if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if ${lt_cv_sys_global_symbol_pipe+:} false; then : + $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. @@ -6413,18 +6167,18 @@ int main(){nm_test_var='a';nm_test_func();return(0);} EOF - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm - if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s "$nlist"; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" @@ -6475,11 +6229,11 @@ lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext}; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" @@ -6513,17 +6267,17 @@ lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { echo "$as_me:$LINENO: result: failed" >&5 -echo "${ECHO_T}failed" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } else - { echo "$as_me:$LINENO: result: ok" >&5 -echo "${ECHO_T}ok" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } fi -{ echo "$as_me:$LINENO: checking for objdir" >&5 -echo $ECHO_N "checking for objdir... $ECHO_C" >&6; } -if test "${lt_cv_objdir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if ${lt_cv_objdir+:} false; then : + $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null @@ -6535,8 +6289,8 @@ fi rmdir .libs 2>/dev/null fi -{ echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 -echo "${ECHO_T}$lt_cv_objdir" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir @@ -6587,10 +6341,10 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_AR+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. @@ -6600,25 +6354,25 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="${ac_tool_prefix}ar" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then - { echo "$as_me:$LINENO: result: $AR" >&5 -echo "${ECHO_T}$AR" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -6627,10 +6381,10 @@ ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_AR+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. @@ -6640,25 +6394,25 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="ar" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then - { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 -echo "${ECHO_T}$ac_ct_AR" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_AR" = x; then @@ -6666,12 +6420,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR @@ -6683,10 +6433,10 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. @@ -6696,25 +6446,25 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then - { echo "$as_me:$LINENO: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -6723,10 +6473,10 @@ ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. @@ -6736,25 +6486,25 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then - { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then @@ -6762,12 +6512,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB @@ -6779,10 +6525,10 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. @@ -6792,25 +6538,25 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then - { echo "$as_me:$LINENO: result: $STRIP" >&5 -echo "${ECHO_T}$STRIP" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -6819,10 +6565,10 @@ ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. @@ -6832,25 +6578,25 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then - { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 -echo "${ECHO_T}$ac_ct_STRIP" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then @@ -6858,12 +6604,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP @@ -6926,10 +6668,10 @@ case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 -echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; } -if test "${lt_cv_path_MAGIC_CMD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) @@ -6979,19 +6721,19 @@ MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then - { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 -echo "${ECHO_T}$MAGIC_CMD" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then - { echo "$as_me:$LINENO: checking for file" >&5 -echo $ECHO_N "checking for file... $ECHO_C" >&6; } -if test "${lt_cv_path_MAGIC_CMD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) @@ -7041,11 +6783,11 @@ MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then - { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 -echo "${ECHO_T}$MAGIC_CMD" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi else @@ -7063,10 +6805,10 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_DSYMUTIL+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. @@ -7076,25 +6818,25 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then - { echo "$as_me:$LINENO: result: $DSYMUTIL" >&5 -echo "${ECHO_T}$DSYMUTIL" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -7103,10 +6845,10 @@ ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. @@ -7116,25 +6858,25 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then - { echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5 -echo "${ECHO_T}$ac_ct_DSYMUTIL" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then @@ -7142,12 +6884,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL @@ -7159,10 +6897,10 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_NMEDIT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. @@ -7172,25 +6910,25 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then - { echo "$as_me:$LINENO: result: $NMEDIT" >&5 -echo "${ECHO_T}$NMEDIT" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -7199,10 +6937,10 @@ ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. @@ -7212,25 +6950,25 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then - { echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5 -echo "${ECHO_T}$ac_ct_NMEDIT" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then @@ -7238,12 +6976,8 @@ else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT @@ -7253,10 +6987,10 @@ fi - { echo "$as_me:$LINENO: checking for -single_module linker flag" >&5 -echo $ECHO_N "checking for -single_module linker flag... $ECHO_C" >&6; } -if test "${lt_cv_apple_cc_single_mod+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if ${lt_cv_apple_cc_single_mod+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then @@ -7274,22 +7008,18 @@ rm conftest.c fi fi -{ echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 -echo "${ECHO_T}$lt_cv_apple_cc_single_mod" >&6; } - { echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5 -echo $ECHO_N "checking for -exported_symbols_list linker flag... $ECHO_C" >&6; } -if test "${lt_cv_ld_exported_symbols_list+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if ${lt_cv_ld_exported_symbols_list+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -7300,39 +7030,18 @@ return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - lt_cv_ld_exported_symbols_list=no + lt_cv_ld_exported_symbols_list=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi -{ echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5 -echo "${ECHO_T}$lt_cv_ld_exported_symbols_list" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } case $host_os in rhapsody* | darwin1.[0123]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; @@ -7373,7 +7082,7 @@ enable_win32_dll=no # Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then +if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi @@ -7381,7 +7090,7 @@ # Check whether --with-pic was given. -if test "${with_pic+set}" = set; then +if test "${with_pic+set}" = set; then : withval=$with_pic; pic_mode="$withval" else pic_mode=default @@ -7444,10 +7153,10 @@ lt_prog_compiler_no_builtin_flag=' -fno-builtin' -{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext @@ -7462,11 +7171,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7465: $lt_compile\"" >&5) + (eval echo "\"\$as_me:7174: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:7469: \$? = $ac_status" >&5 + echo "$as_me:7178: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -7479,8 +7188,8 @@ $rm conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" @@ -7494,8 +7203,8 @@ lt_prog_compiler_pic= lt_prog_compiler_static= -{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 -echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' @@ -7726,18 +7435,18 @@ esac fi -{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5 +$as_echo "$lt_prog_compiler_pic" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then -{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_pic_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if ${lt_cv_prog_compiler_pic_works+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext @@ -7752,11 +7461,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7755: $lt_compile\"" >&5) + (eval echo "\"\$as_me:7464: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:7759: \$? = $ac_status" >&5 + echo "$as_me:7468: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -7769,8 +7478,8 @@ $rm conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_pic_works" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in @@ -7797,10 +7506,10 @@ # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_static_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" @@ -7825,8 +7534,8 @@ LDFLAGS="$save_LDFLAGS" fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_static_works" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : @@ -7835,10 +7544,10 @@ fi -{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_c_o+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $rm -r conftest 2>/dev/null @@ -7856,11 +7565,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7859: $lt_compile\"" >&5) + (eval echo "\"\$as_me:7568: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:7863: \$? = $ac_status" >&5 + echo "$as_me:7572: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -7882,34 +7591,34 @@ $rm conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user - { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 -echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no - { echo "$as_me:$LINENO: result: $hard_links" >&5 -echo "${ECHO_T}$hard_links" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } if test "$hard_links" = no; then - { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi -{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= @@ -8319,11 +8028,7 @@ # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -8334,24 +8039,7 @@ return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -8365,15 +8053,9 @@ if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" @@ -8385,11 +8067,7 @@ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -8400,24 +8078,7 @@ return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -8431,15 +8092,9 @@ if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" @@ -8889,8 +8544,8 @@ esac fi -{ echo "$as_me:$LINENO: result: $ld_shlibs" >&5 -echo "${ECHO_T}$ld_shlibs" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no # @@ -8910,16 +8565,16 @@ # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. - { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 -echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } 2>conftest.err; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext @@ -8933,11 +8588,11 @@ libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= - if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } then archive_cmds_need_lc=no else @@ -8948,16 +8603,16 @@ cat conftest.err 1>&5 fi $rm conftest* - { echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 -echo "${ECHO_T}$archive_cmds_need_lc" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc" >&5 +$as_echo "$archive_cmds_need_lc" >&6; } ;; esac fi ;; esac -{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 -echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= @@ -9570,19 +9225,19 @@ dynamic_linker=no ;; esac -{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 -echo "${ECHO_T}$dynamic_linker" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if ${lt_cv_sys_lib_search_path_spec+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if ${lt_cv_sys_lib_dlsearch_path_spec+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi @@ -9594,8 +9249,8 @@ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi -{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var" || \ @@ -9619,8 +9274,8 @@ # directories. hardcode_action=unsupported fi -{ echo "$as_me:$LINENO: result: $hardcode_action" >&5 -echo "${ECHO_T}$hardcode_action" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink; then # Fast installation is not supported @@ -9633,13 +9288,13 @@ striplib= old_striplib= -{ echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 -echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in @@ -9647,16 +9302,16 @@ if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi ;; *) - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } ;; esac fi @@ -9688,18 +9343,14 @@ darwin*) # if libdl is installed we need to link against it - { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } -if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -9717,39 +9368,18 @@ return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_dl_dlopen=no + ac_cv_lib_dl_dlopen=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } -if test $ac_cv_lib_dl_dlopen = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else @@ -9762,102 +9392,18 @@ ;; *) - { echo "$as_me:$LINENO: checking for shl_load" >&5 -echo $ECHO_N "checking for shl_load... $ECHO_C" >&6; } -if test "${ac_cv_func_shl_load+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define shl_load to an innocuous variant, in case declares shl_load. - For example, HP-UX 11i declares gettimeofday. */ -#define shl_load innocuous_shl_load - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char shl_load (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef shl_load - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_shl_load || defined __stub___shl_load -choke me -#endif - -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_func_shl_load=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_shl_load=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 -echo "${ECHO_T}$ac_cv_func_shl_load" >&6; } -if test $ac_cv_func_shl_load = yes; then + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes; then : lt_cv_dlopen="shl_load" else - { echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 -echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6; } -if test "${ac_cv_lib_dld_shl_load+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if ${ac_cv_lib_dld_shl_load+:} false; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -9875,137 +9421,32 @@ return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_dld_shl_load=no + ac_cv_lib_dld_shl_load=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; } -if test $ac_cv_lib_dld_shl_load = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes; then : lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else - { echo "$as_me:$LINENO: checking for dlopen" >&5 -echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; } -if test "${ac_cv_func_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define dlopen to an innocuous variant, in case declares dlopen. - For example, HP-UX 11i declares gettimeofday. */ -#define dlopen innocuous_dlopen - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char dlopen (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef dlopen - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_dlopen || defined __stub___dlopen -choke me -#endif - -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_func_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_dlopen=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 -echo "${ECHO_T}$ac_cv_func_dlopen" >&6; } -if test $ac_cv_func_dlopen = yes; then + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes; then : lt_cv_dlopen="dlopen" else - { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } -if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -10023,53 +9464,28 @@ return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_dl_dlopen=no + ac_cv_lib_dl_dlopen=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } -if test $ac_cv_lib_dl_dlopen = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else - { echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 -echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6; } -if test "${ac_cv_lib_svld_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if ${ac_cv_lib_svld_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -10087,53 +9503,28 @@ return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_svld_dlopen=no + ac_cv_lib_svld_dlopen=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6; } -if test $ac_cv_lib_svld_dlopen = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else - { echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 -echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6; } -if test "${ac_cv_lib_dld_dld_link+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if ${ac_cv_lib_dld_dld_link+:} false; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -10149,41 +9540,20 @@ return dld_link (); ; return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_dld_dld_link=no + ac_cv_lib_dld_dld_link=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6; } -if test $ac_cv_lib_dld_dld_link = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes; then : lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi @@ -10222,10 +9592,10 @@ save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" - { echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 -echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6; } -if test "${lt_cv_dlopen_self+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self+:} false; then : + $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross @@ -10233,7 +9603,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in @@ -10317,15 +9687,15 @@ fi -{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 -echo "${ECHO_T}$lt_cv_dlopen_self" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 -echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6; } -if test "${lt_cv_dlopen_self_static+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self_static+:} false; then : + $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross @@ -10333,7 +9703,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in @@ -10417,8 +9787,8 @@ fi -{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 -echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" @@ -10440,13 +9810,13 @@ # Report which library types will actually be built -{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 -echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } -{ echo "$as_me:$LINENO: result: $can_build_shared" >&5 -echo "${ECHO_T}$can_build_shared" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } -{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 -echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and @@ -10466,15 +9836,15 @@ fi ;; esac -{ echo "$as_me:$LINENO: result: $enable_shared" >&5 -echo "${ECHO_T}$enable_shared" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } -{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5 -echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes -{ echo "$as_me:$LINENO: result: $enable_static" >&5 -echo "${ECHO_T}$enable_static" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh @@ -10567,8 +9937,8 @@ cfgfile="${ofile}T" trap "$rm \"$cfgfile\"; exit 1" 1 2 15 $rm -f "$cfgfile" - { echo "$as_me:$LINENO: creating $ofile" >&5 -echo "$as_me: creating $ofile" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ofile" >&5 +$as_echo "$as_me: creating $ofile" >&6;} cat <<__EOF__ >> "$cfgfile" #! $SHELL @@ -10973,25 +10343,25 @@ # Check whether --with-tags was given. -if test "${with_tags+set}" = set; then +if test "${with_tags+set}" = set; then : withval=$with_tags; tagnames="$withval" fi if test -f "$ltmain" && test -n "$tagnames"; then if test ! -f "${ofile}"; then - { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 -echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: output file \`$ofile' does not exist" >&5 +$as_echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} fi if test -z "$LTCC"; then eval "`$SHELL ${ofile} --config | grep '^LTCC='`" if test -z "$LTCC"; then - { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 -echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: output file \`$ofile' does not look like a libtool script" >&5 +$as_echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} else - { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 -echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 +$as_echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} fi fi if test -z "$LTCFLAGS"; then @@ -11008,17 +10378,13 @@ # Check whether tagname contains only valid characters case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in "") ;; - *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 -echo "$as_me: error: invalid tag name: $tagname" >&2;} - { (exit 1); exit 1; }; } + *) as_fn_error $? "invalid tag name: $tagname" "$LINENO" 5 ;; esac if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null then - { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 -echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "tag name \"$tagname\" already exists" "$LINENO" 5 fi # Update the list of available tags. @@ -11151,7 +10517,7 @@ # Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then +if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no @@ -11160,8 +10526,8 @@ ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. - { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 -echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw @@ -11190,14 +10556,14 @@ ;; esac elif test "$with_gnu_ld" = yes; then - { echo "$as_me:$LINENO: checking for GNU ld" >&5 -echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } else - { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 -echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } fi -if test "${lt_cv_path_LD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR @@ -11227,19 +10593,17 @@ LD="$lt_cv_path_LD" if test -n "$LD"; then - { echo "$as_me:$LINENO: result: $LD" >&5 -echo "${ECHO_T}$LD" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +$as_echo "$LD" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 -echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} - { (exit 1); exit 1; }; } -{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 -echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } -if test "${lt_cv_prog_gnu_ld+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 -echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld @@ -11302,8 +10666,8 @@ fi # PORTME: fill in a description of your system's C++ link characteristics -{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) @@ -11399,11 +10763,7 @@ # -berok will link without error, but may produce a broken library. allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -11414,24 +10774,7 @@ return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -11445,15 +10788,9 @@ if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" @@ -11466,11 +10803,7 @@ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -11481,24 +10814,7 @@ return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -11512,15 +10828,9 @@ if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" @@ -12248,8 +11558,8 @@ ld_shlibs_CXX=no ;; esac -{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 -echo "${ECHO_T}$ld_shlibs_CXX" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" @@ -12265,11 +11575,11 @@ }; EOF -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. @@ -12424,8 +11734,8 @@ lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= -{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 -echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then @@ -12708,18 +12018,18 @@ esac fi -{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_CXX" >&5 +$as_echo "$lt_prog_compiler_pic_CXX" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then -{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 -echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_pic_works_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } +if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext @@ -12734,11 +12044,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:12737: $lt_compile\"" >&5) + (eval echo "\"\$as_me:12047: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:12741: \$? = $ac_status" >&5 + echo "$as_me:12051: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -12751,8 +12061,8 @@ $rm conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_CXX" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in @@ -12779,10 +12089,10 @@ # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" -{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_static_works_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS="$LDFLAGS" @@ -12807,8 +12117,8 @@ LDFLAGS="$save_LDFLAGS" fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_CXX" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_static_works_CXX" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then : @@ -12817,10 +12127,10 @@ fi -{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $rm -r conftest 2>/dev/null @@ -12838,11 +12148,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:12841: $lt_compile\"" >&5) + (eval echo "\"\$as_me:12151: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:12845: \$? = $ac_status" >&5 + echo "$as_me:12155: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -12864,34 +12174,34 @@ $rm conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user - { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 -echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no - { echo "$as_me:$LINENO: result: $hard_links" >&5 -echo "${ECHO_T}$hard_links" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } if test "$hard_links" = no; then - { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi -{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in @@ -12919,8 +12229,8 @@ esac exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' -{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 -echo "${ECHO_T}$ld_shlibs_CXX" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no # @@ -12940,16 +12250,16 @@ # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. - { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 -echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } 2>conftest.err; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext @@ -12963,11 +12273,11 @@ libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= - if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } then archive_cmds_need_lc_CXX=no else @@ -12978,16 +12288,16 @@ cat conftest.err 1>&5 fi $rm conftest* - { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 -echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc_CXX" >&5 +$as_echo "$archive_cmds_need_lc_CXX" >&6; } ;; esac fi ;; esac -{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 -echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= @@ -13548,19 +12858,19 @@ dynamic_linker=no ;; esac -{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 -echo "${ECHO_T}$dynamic_linker" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if ${lt_cv_sys_lib_search_path_spec+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if ${lt_cv_sys_lib_dlsearch_path_spec+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi @@ -13572,8 +12882,8 @@ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi -{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || \ test -n "$runpath_var_CXX" || \ @@ -13597,8 +12907,8 @@ # directories. hardcode_action_CXX=unsupported fi -{ echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 -echo "${ECHO_T}$hardcode_action_CXX" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 +$as_echo "$hardcode_action_CXX" >&6; } if test "$hardcode_action_CXX" = relink; then # Fast installation is not supported @@ -14136,13 +13446,13 @@ cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` -{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 -echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } -{ echo "$as_me:$LINENO: result: $can_build_shared" >&5 -echo "${ECHO_T}$can_build_shared" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } -{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 -echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and @@ -14161,15 +13471,15 @@ fi ;; esac -{ echo "$as_me:$LINENO: result: $enable_shared" >&5 -echo "${ECHO_T}$enable_shared" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } -{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5 -echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes -{ echo "$as_me:$LINENO: result: $enable_static" >&5 -echo "${ECHO_T}$enable_static" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } GCC_F77="$G77" LD_F77="$LD" @@ -14178,8 +13488,8 @@ lt_prog_compiler_pic_F77= lt_prog_compiler_static_F77= -{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 -echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl_F77='-Wl,' @@ -14410,18 +13720,18 @@ esac fi -{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_F77" >&5 +$as_echo "$lt_prog_compiler_pic_F77" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_F77"; then -{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 -echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_pic_works_F77+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... " >&6; } +if ${lt_cv_prog_compiler_pic_works_F77+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_F77=no ac_outfile=conftest.$ac_objext @@ -14436,11 +13746,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:14439: $lt_compile\"" >&5) + (eval echo "\"\$as_me:13749: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:14443: \$? = $ac_status" >&5 + echo "$as_me:13753: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -14453,8 +13763,8 @@ $rm conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_F77" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_F77" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_F77" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_F77" >&6; } if test x"$lt_cv_prog_compiler_pic_works_F77" = xyes; then case $lt_prog_compiler_pic_F77 in @@ -14481,10 +13791,10 @@ # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\" -{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_static_works_F77+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works_F77+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_F77=no save_LDFLAGS="$LDFLAGS" @@ -14509,8 +13819,8 @@ LDFLAGS="$save_LDFLAGS" fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_F77" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_static_works_F77" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_F77" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_F77" >&6; } if test x"$lt_cv_prog_compiler_static_works_F77" = xyes; then : @@ -14519,10 +13829,10 @@ fi -{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_F77+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_F77=no $rm -r conftest 2>/dev/null @@ -14540,11 +13850,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:14543: $lt_compile\"" >&5) + (eval echo "\"\$as_me:13853: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:14547: \$? = $ac_status" >&5 + echo "$as_me:13857: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -14566,34 +13876,34 @@ $rm conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_F77" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_F77" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user - { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 -echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no - { echo "$as_me:$LINENO: result: $hard_links" >&5 -echo "${ECHO_T}$hard_links" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } if test "$hard_links" = no; then - { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi -{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag_F77= @@ -15003,29 +14313,12 @@ # -berok will link without error, but may produce a broken library. allow_undefined_flag_F77='-berok' # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF + cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_f77_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_f77_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -15039,15 +14332,9 @@ if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" @@ -15059,29 +14346,12 @@ archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF + cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_f77_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_f77_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -15095,15 +14365,9 @@ if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" @@ -15553,8 +14817,8 @@ esac fi -{ echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 -echo "${ECHO_T}$ld_shlibs_F77" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_F77" >&5 +$as_echo "$ld_shlibs_F77" >&6; } test "$ld_shlibs_F77" = no && can_build_shared=no # @@ -15574,16 +14838,16 @@ # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. - { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 -echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } 2>conftest.err; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext @@ -15597,11 +14861,11 @@ libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_F77 allow_undefined_flag_F77= - if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } then archive_cmds_need_lc_F77=no else @@ -15612,16 +14876,16 @@ cat conftest.err 1>&5 fi $rm conftest* - { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 -echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc_F77" >&5 +$as_echo "$archive_cmds_need_lc_F77" >&6; } ;; esac fi ;; esac -{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 -echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= @@ -16182,19 +15446,19 @@ dynamic_linker=no ;; esac -{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 -echo "${ECHO_T}$dynamic_linker" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if ${lt_cv_sys_lib_search_path_spec+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if ${lt_cv_sys_lib_dlsearch_path_spec+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi @@ -16206,8 +15470,8 @@ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi -{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_F77= if test -n "$hardcode_libdir_flag_spec_F77" || \ test -n "$runpath_var_F77" || \ @@ -16231,8 +15495,8 @@ # directories. hardcode_action_F77=unsupported fi -{ echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 -echo "${ECHO_T}$hardcode_action_F77" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_F77" >&5 +$as_echo "$hardcode_action_F77" >&6; } if test "$hardcode_action_F77" = relink; then # Fast installation is not supported @@ -16742,10 +16006,10 @@ lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' -{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext @@ -16760,11 +16024,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:16763: $lt_compile\"" >&5) + (eval echo "\"\$as_me:16027: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:16767: \$? = $ac_status" >&5 + echo "$as_me:16031: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -16777,8 +16041,8 @@ $rm conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" @@ -16792,8 +16056,8 @@ lt_prog_compiler_pic_GCJ= lt_prog_compiler_static_GCJ= -{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 -echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl_GCJ='-Wl,' @@ -17024,18 +16288,18 @@ esac fi -{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_GCJ" >&5 +$as_echo "$lt_prog_compiler_pic_GCJ" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_GCJ"; then -{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 -echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_pic_works_GCJ+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... " >&6; } +if ${lt_cv_prog_compiler_pic_works_GCJ+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_GCJ=no ac_outfile=conftest.$ac_objext @@ -17050,11 +16314,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:17053: $lt_compile\"" >&5) + (eval echo "\"\$as_me:16317: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:17057: \$? = $ac_status" >&5 + echo "$as_me:16321: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -17067,8 +16331,8 @@ $rm conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_GCJ" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_GCJ" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_GCJ" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_GCJ" >&6; } if test x"$lt_cv_prog_compiler_pic_works_GCJ" = xyes; then case $lt_prog_compiler_pic_GCJ in @@ -17095,10 +16359,10 @@ # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\" -{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_static_works_GCJ+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works_GCJ+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_GCJ=no save_LDFLAGS="$LDFLAGS" @@ -17123,8 +16387,8 @@ LDFLAGS="$save_LDFLAGS" fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_GCJ" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_static_works_GCJ" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_GCJ" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_GCJ" >&6; } if test x"$lt_cv_prog_compiler_static_works_GCJ" = xyes; then : @@ -17133,10 +16397,10 @@ fi -{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_GCJ+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_GCJ=no $rm -r conftest 2>/dev/null @@ -17154,11 +16418,11 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:17157: $lt_compile\"" >&5) + (eval echo "\"\$as_me:16421: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:17161: \$? = $ac_status" >&5 + echo "$as_me:16425: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -17180,34 +16444,34 @@ $rm conftest* fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_GCJ" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user - { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 -echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no - { echo "$as_me:$LINENO: result: $hard_links" >&5 -echo "${ECHO_T}$hard_links" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } if test "$hard_links" = no; then - { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi -{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag_GCJ= @@ -17617,11 +16881,7 @@ # -berok will link without error, but may produce a broken library. allow_undefined_flag_GCJ='-berok' # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -17632,24 +16892,7 @@ return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -17663,15 +16906,9 @@ if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" @@ -17683,11 +16920,7 @@ archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -17698,24 +16931,7 @@ return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -17729,15 +16945,9 @@ if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" @@ -18187,8 +17397,8 @@ esac fi -{ echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 -echo "${ECHO_T}$ld_shlibs_GCJ" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_GCJ" >&5 +$as_echo "$ld_shlibs_GCJ" >&6; } test "$ld_shlibs_GCJ" = no && can_build_shared=no # @@ -18208,16 +17418,16 @@ # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. - { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 -echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } 2>conftest.err; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext @@ -18231,11 +17441,11 @@ libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ allow_undefined_flag_GCJ= - if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } then archive_cmds_need_lc_GCJ=no else @@ -18246,16 +17456,16 @@ cat conftest.err 1>&5 fi $rm conftest* - { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 -echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc_GCJ" >&5 +$as_echo "$archive_cmds_need_lc_GCJ" >&6; } ;; esac fi ;; esac -{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 -echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= @@ -18816,19 +18026,19 @@ dynamic_linker=no ;; esac -{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 -echo "${ECHO_T}$dynamic_linker" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if ${lt_cv_sys_lib_search_path_spec+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if ${lt_cv_sys_lib_dlsearch_path_spec+:} false; then : + $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi @@ -18840,8 +18050,8 @@ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi -{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_GCJ= if test -n "$hardcode_libdir_flag_spec_GCJ" || \ test -n "$runpath_var_GCJ" || \ @@ -18865,8 +18075,8 @@ # directories. hardcode_action_GCJ=unsupported fi -{ echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 -echo "${ECHO_T}$hardcode_action_GCJ" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_GCJ" >&5 +$as_echo "$hardcode_action_GCJ" >&6; } if test "$hardcode_action_GCJ" = relink; then # Fast installation is not supported @@ -19789,9 +18999,7 @@ ;; *) - { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 -echo "$as_me: error: Unsupported tag name: $tagname" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "Unsupported tag name: $tagname" "$LINENO" 5 ;; esac @@ -19809,9 +19017,7 @@ chmod +x "$ofile" else rm -f "${ofile}T" - { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 -echo "$as_me: error: unable to update list of available tagged configurations." >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "unable to update list of available tagged configurations." "$LINENO" 5 fi fi @@ -19850,148 +19056,13 @@ fi - - - - - - - - - for ac_header in sys/inotify.h sys/epoll.h sys/event.h sys/queue.h port.h poll.h sys/select.h sys/eventfd.h sys/signalfd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -else - # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } - -# Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - - ;; -esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi @@ -19999,201 +19070,28 @@ done - - - - - - - - for ac_func in inotify_init epoll_ctl kqueue port_create poll select eventfd signalfd -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_var'}'` = yes; then +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done -{ echo "$as_me:$LINENO: checking for clock_gettime" >&5 -echo $ECHO_N "checking for clock_gettime... $ECHO_C" >&6; } -if test "${ac_cv_func_clock_gettime+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define clock_gettime to an innocuous variant, in case declares clock_gettime. - For example, HP-UX 11i declares gettimeofday. */ -#define clock_gettime innocuous_clock_gettime - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char clock_gettime (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef clock_gettime - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char clock_gettime (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_clock_gettime || defined __stub___clock_gettime -choke me -#endif - -int -main () -{ -return clock_gettime (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_func_clock_gettime=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_clock_gettime=no -fi +ac_fn_c_check_func "$LINENO" "clock_gettime" "ac_cv_func_clock_gettime" +if test "x$ac_cv_func_clock_gettime" = xyes; then : -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_clock_gettime" >&5 -echo "${ECHO_T}$ac_cv_func_clock_gettime" >&6; } -if test $ac_cv_func_clock_gettime = yes; then - : else if test $(uname) = Linux; then - { echo "$as_me:$LINENO: checking for clock_gettime syscall" >&5 -echo $ECHO_N "checking for clock_gettime syscall... $ECHO_C" >&6; } - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime syscall" >&5 +$as_echo_n "checking for clock_gettime syscall... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -20203,59 +19101,31 @@ struct timespec ts; int status = syscall (SYS_clock_gettime, CLOCK_REALTIME, &ts) ; return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : ac_have_clock_syscall=1 -cat >>confdefs.h <<\_ACEOF -#define HAVE_CLOCK_SYSCALL 1 -_ACEOF +$as_echo "#define HAVE_CLOCK_SYSCALL 1" >>confdefs.h - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi if test -z "$LIBEV_M4_AVOID_LIBRT" && test -z "$ac_have_clock_syscall"; then - -{ echo "$as_me:$LINENO: checking for clock_gettime in -lrt" >&5 -echo $ECHO_N "checking for clock_gettime in -lrt... $ECHO_C" >&6; } -if test "${ac_cv_lib_rt_clock_gettime+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5 +$as_echo_n "checking for clock_gettime in -lrt... " >&6; } +if ${ac_cv_lib_rt_clock_gettime+:} false; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lrt $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -20273,39 +19143,18 @@ return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_rt_clock_gettime=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_rt_clock_gettime=no + ac_cv_lib_rt_clock_gettime=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_rt_clock_gettime" >&5 -echo "${ECHO_T}$ac_cv_lib_rt_clock_gettime" >&6; } -if test $ac_cv_lib_rt_clock_gettime = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_gettime" >&5 +$as_echo "$ac_cv_lib_rt_clock_gettime" >&6; } +if test "x$ac_cv_lib_rt_clock_gettime" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBRT 1 _ACEOF @@ -20315,95 +19164,12 @@ fi unset ac_cv_func_clock_gettime - -for ac_func in clock_gettime -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_var'}'` = yes; then + for ac_func in clock_gettime +do : + ac_fn_c_check_func "$LINENO" "clock_gettime" "ac_cv_func_clock_gettime" +if test "x$ac_cv_func_clock_gettime" = xyes; then : cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +#define HAVE_CLOCK_GETTIME 1 _ACEOF fi @@ -20414,105 +19180,20 @@ fi -{ echo "$as_me:$LINENO: checking for nanosleep" >&5 -echo $ECHO_N "checking for nanosleep... $ECHO_C" >&6; } -if test "${ac_cv_func_nanosleep+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define nanosleep to an innocuous variant, in case declares nanosleep. - For example, HP-UX 11i declares gettimeofday. */ -#define nanosleep innocuous_nanosleep - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char nanosleep (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef nanosleep - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char nanosleep (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_nanosleep || defined __stub___nanosleep -choke me -#endif - -int -main () -{ -return nanosleep (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_func_nanosleep=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_nanosleep=no -fi +ac_fn_c_check_func "$LINENO" "nanosleep" "ac_cv_func_nanosleep" +if test "x$ac_cv_func_nanosleep" = xyes; then : -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_nanosleep" >&5 -echo "${ECHO_T}$ac_cv_func_nanosleep" >&6; } -if test $ac_cv_func_nanosleep = yes; then - : else if test -z "$LIBEV_M4_AVOID_LIBRT"; then - -{ echo "$as_me:$LINENO: checking for nanosleep in -lrt" >&5 -echo $ECHO_N "checking for nanosleep in -lrt... $ECHO_C" >&6; } -if test "${ac_cv_lib_rt_nanosleep+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nanosleep in -lrt" >&5 +$as_echo_n "checking for nanosleep in -lrt... " >&6; } +if ${ac_cv_lib_rt_nanosleep+:} false; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lrt $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -20530,39 +19211,18 @@ return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_rt_nanosleep=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_rt_nanosleep=no + ac_cv_lib_rt_nanosleep=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_rt_nanosleep" >&5 -echo "${ECHO_T}$ac_cv_lib_rt_nanosleep" >&6; } -if test $ac_cv_lib_rt_nanosleep = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_nanosleep" >&5 +$as_echo "$ac_cv_lib_rt_nanosleep" >&6; } +if test "x$ac_cv_lib_rt_nanosleep" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBRT 1 _ACEOF @@ -20572,95 +19232,12 @@ fi unset ac_cv_func_nanosleep - -for ac_func in nanosleep -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_var'}'` = yes; then + for ac_func in nanosleep +do : + ac_fn_c_check_func "$LINENO" "nanosleep" "ac_cv_func_nanosleep" +if test "x$ac_cv_func_nanosleep" = xyes; then : cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +#define HAVE_NANOSLEEP 1 _ACEOF fi @@ -20671,19 +19248,14 @@ fi - -{ echo "$as_me:$LINENO: checking for ceil in -lm" >&5 -echo $ECHO_N "checking for ceil in -lm... $ECHO_C" >&6; } -if test "${ac_cv_lib_m_ceil+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ceil in -lm" >&5 +$as_echo_n "checking for ceil in -lm... " >&6; } +if ${ac_cv_lib_m_ceil+:} false; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lm $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -20701,39 +19273,18 @@ return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_m_ceil=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_m_ceil=no + ac_cv_lib_m_ceil=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_m_ceil" >&5 -echo "${ECHO_T}$ac_cv_lib_m_ceil" >&6; } -if test $ac_cv_lib_m_ceil = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_ceil" >&5 +$as_echo "$ac_cv_lib_m_ceil" >&6; } +if test "x$ac_cv_lib_m_ceil" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBM 1 _ACEOF @@ -20774,12 +19325,13 @@ case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( - *) $as_unset $ac_var ;; + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done @@ -20787,8 +19339,8 @@ (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" @@ -20810,13 +19362,24 @@ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then - test "x$cache_file" != "x/dev/null" && - { echo "$as_me:$LINENO: updating cache $cache_file" >&5 -echo "$as_me: updating cache $cache_file" >&6;} - cat confcache >$cache_file + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi else - { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 -echo "$as_me: not updating unwritable cache $cache_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -20829,14 +19392,15 @@ ac_libobjs= ac_ltlibobjs= +U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`echo "$ac_i" | sed "$ac_script"` + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. - ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs @@ -20844,40 +19408,30 @@ if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -: ${CONFIG_STATUS=./config.status} +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 -echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. @@ -20887,59 +19441,79 @@ debug=false ac_cs_recheck=false ac_cs_silent=false -SHELL=\${CONFIG_SHELL-$SHELL} -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; esac - fi - - -# PATH needs CR -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' else - PATH_SEPARATOR=: + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' fi - rm -f conf$$.sh + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' fi -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } fi @@ -20948,20 +19522,19 @@ # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) -as_nl=' -' IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. -case $0 in +as_myself= +case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done IFS=$as_save_IFS ;; @@ -20972,32 +19545,111 @@ as_myself=$0 fi if test ! -f "$as_myself"; then - echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (exit 1); exit 1; } + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 fi -# Work around bugs in pre-3.0 UWIN ksh. -for as_var in ENV MAIL MAILPATH -do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - fi -done +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + -# Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr @@ -21008,16 +19660,20 @@ if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else - as_basename=false + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false fi - -# Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X/"$0" | +$as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -21032,131 +19688,118 @@ } s/.*/./; q'` -# CDPATH. -$as_unset CDPATH - - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, and appends - # trailing '-' during substitution so that $LINENO is not a special - # case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # scripts with optimization help from Paolo Bonzini. Blame Lee - # E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in +case `echo -n x` in #((((( -n*) - case `echo 'x\c'` in + case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. - *) ECHO_C='\c';; + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir - mkdir conf$$.dir + mkdir conf$$.dir 2>/dev/null fi -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi else - as_ln_s='cp -p' + as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then - as_mkdir_p=: + as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -21166,13 +19809,19 @@ exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 -# Save the log message, to keep $[0] and so on meaningful, and to +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by $as_me, which was -generated by GNU Autoconf 2.61. Invocation command line was +generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -21185,7 +19834,16 @@ _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" @@ -21193,22 +19851,25 @@ _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. -Usage: $0 [OPTIONS] [FILE]... +Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit - -q, --quiet do not print progress messages + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE Configuration files: $config_files @@ -21219,16 +19880,17 @@ Configuration commands: $config_commands -Report bugs to ." +Report bugs to the package provider." _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ config.status -configured by $0, generated by GNU Autoconf 2.61, - with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" -Copyright (C) 2006 Free Software Foundation, Inc. +Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -21236,20 +19898,26 @@ srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in - --*=*) + --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; *) ac_option=$1 ac_optarg=$2 @@ -21262,34 +19930,41 @@ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - echo "$ac_cs_version"; exit ;; + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift - CONFIG_FILES="$CONFIG_FILES $ac_optarg" + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift - CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header - { echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; };; + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; --help | --hel | -h ) - echo "$ac_cs_usage"; exit ;; + $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. - -*) { echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } ;; + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; - *) ac_config_targets="$ac_config_targets $1" + *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac @@ -21304,27 +19979,29 @@ fi _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then - echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - CONFIG_SHELL=$SHELL + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' export CONFIG_SHELL - exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + exec "\$@" fi _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX - echo "$ac_log" + $as_echo "$ac_log" } >&5 _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # @@ -21332,7 +20009,7 @@ _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets @@ -21342,9 +20019,7 @@ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done @@ -21367,261 +20042,302 @@ # after its creation but before its name has been assigned to `$tmp'. $debug || { - tmp= + tmp= ac_tmp= trap 'exit_status=$? - { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 + trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" + test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") -} || -{ - echo "$me: cannot create a temporary directory in ." >&2 - { (exit 1); exit 1; } -} - -# -# Set up the sed scripts for CONFIG_FILES section. -# +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then -_ACEOF - - - -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - cat >conf$$subs.sed <<_ACEOF -SHELL!$SHELL$ac_delim -PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim -PACKAGE_NAME!$PACKAGE_NAME$ac_delim -PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim -PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim -PACKAGE_STRING!$PACKAGE_STRING$ac_delim -PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim -exec_prefix!$exec_prefix$ac_delim -prefix!$prefix$ac_delim -program_transform_name!$program_transform_name$ac_delim -bindir!$bindir$ac_delim -sbindir!$sbindir$ac_delim -libexecdir!$libexecdir$ac_delim -datarootdir!$datarootdir$ac_delim -datadir!$datadir$ac_delim -sysconfdir!$sysconfdir$ac_delim -sharedstatedir!$sharedstatedir$ac_delim -localstatedir!$localstatedir$ac_delim -includedir!$includedir$ac_delim -oldincludedir!$oldincludedir$ac_delim -docdir!$docdir$ac_delim -infodir!$infodir$ac_delim -htmldir!$htmldir$ac_delim -dvidir!$dvidir$ac_delim -pdfdir!$pdfdir$ac_delim -psdir!$psdir$ac_delim -libdir!$libdir$ac_delim -localedir!$localedir$ac_delim -mandir!$mandir$ac_delim -DEFS!$DEFS$ac_delim -ECHO_C!$ECHO_C$ac_delim -ECHO_N!$ECHO_N$ac_delim -ECHO_T!$ECHO_T$ac_delim -LIBS!$LIBS$ac_delim -build_alias!$build_alias$ac_delim -host_alias!$host_alias$ac_delim -target_alias!$target_alias$ac_delim -INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim -INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim -INSTALL_DATA!$INSTALL_DATA$ac_delim -am__isrc!$am__isrc$ac_delim -CYGPATH_W!$CYGPATH_W$ac_delim -PACKAGE!$PACKAGE$ac_delim -VERSION!$VERSION$ac_delim -ACLOCAL!$ACLOCAL$ac_delim -AUTOCONF!$AUTOCONF$ac_delim -AUTOMAKE!$AUTOMAKE$ac_delim -AUTOHEADER!$AUTOHEADER$ac_delim -MAKEINFO!$MAKEINFO$ac_delim -install_sh!$install_sh$ac_delim -STRIP!$STRIP$ac_delim -INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim -mkdir_p!$mkdir_p$ac_delim -AWK!$AWK$ac_delim -SET_MAKE!$SET_MAKE$ac_delim -am__leading_dot!$am__leading_dot$ac_delim -AMTAR!$AMTAR$ac_delim -am__tar!$am__tar$ac_delim -am__untar!$am__untar$ac_delim -MAINTAINER_MODE_TRUE!$MAINTAINER_MODE_TRUE$ac_delim -MAINTAINER_MODE_FALSE!$MAINTAINER_MODE_FALSE$ac_delim -MAINT!$MAINT$ac_delim -build!$build$ac_delim -build_cpu!$build_cpu$ac_delim -build_vendor!$build_vendor$ac_delim -build_os!$build_os$ac_delim -host!$host$ac_delim -host_cpu!$host_cpu$ac_delim -host_vendor!$host_vendor$ac_delim -host_os!$host_os$ac_delim -CC!$CC$ac_delim -CFLAGS!$CFLAGS$ac_delim -LDFLAGS!$LDFLAGS$ac_delim -CPPFLAGS!$CPPFLAGS$ac_delim -ac_ct_CC!$ac_ct_CC$ac_delim -EXEEXT!$EXEEXT$ac_delim -OBJEXT!$OBJEXT$ac_delim -DEPDIR!$DEPDIR$ac_delim -am__include!$am__include$ac_delim -am__quote!$am__quote$ac_delim -AMDEP_TRUE!$AMDEP_TRUE$ac_delim -AMDEP_FALSE!$AMDEP_FALSE$ac_delim -AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim -CCDEPMODE!$CCDEPMODE$ac_delim -am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim -am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim -SED!$SED$ac_delim -GREP!$GREP$ac_delim -EGREP!$EGREP$ac_delim -LN_S!$LN_S$ac_delim -ECHO!$ECHO$ac_delim -AR!$AR$ac_delim -RANLIB!$RANLIB$ac_delim -DSYMUTIL!$DSYMUTIL$ac_delim -NMEDIT!$NMEDIT$ac_delim -CPP!$CPP$ac_delim -CXX!$CXX$ac_delim -_ACEOF - - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then - break - elif $ac_last_try; then - { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` -if test -n "$ac_eof"; then - ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` - ac_eof=`expr $ac_eof + 1` +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr fi -cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -_ACEOF -sed ' -s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g -s/^/s,@/; s/!/@,|#_!!_#|/ -:n -t n -s/'"$ac_delim"'$/,g/; t -s/$/\\/; p -N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n -' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF -CEOF$ac_eof +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do - cat >conf$$subs.sed <<_ACEOF -CXXFLAGS!$CXXFLAGS$ac_delim -ac_ct_CXX!$ac_ct_CXX$ac_delim -CXXDEPMODE!$CXXDEPMODE$ac_delim -am__fastdepCXX_TRUE!$am__fastdepCXX_TRUE$ac_delim -am__fastdepCXX_FALSE!$am__fastdepCXX_FALSE$ac_delim -CXXCPP!$CXXCPP$ac_delim -F77!$F77$ac_delim -FFLAGS!$FFLAGS$ac_delim -ac_ct_F77!$ac_ct_F77$ac_delim -LIBTOOL!$LIBTOOL$ac_delim -LIBOBJS!$LIBOBJS$ac_delim -LTLIBOBJS!$LTLIBOBJS$ac_delim -_ACEOF + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 12; then + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then - { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done +rm -f conf$$subs.sh -ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` -if test -n "$ac_eof"; then - ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` - ac_eof=`expr $ac_eof + 1` -fi - -cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end -_ACEOF -sed ' -s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g -s/^/s,@/; s/!/@,|#_!!_#|/ -:n -t n -s/'"$ac_delim"'$/,g/; t -s/$/\\/; p -N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n -' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF -:end -s/|#_!!_#|//g -CEOF$ac_eof +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/ -s/:*\${srcdir}:*/:/ -s/:*@srcdir@:*/:/ -s/^\([^=]*=[ ]*\):*/\1/ + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// s/^[^=]*=[ ]*$// }' fi -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + -for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; - :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 -echo "$as_me: error: Invalid tag $ac_tag." >&2;} - { (exit 1); exit 1; }; };; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac @@ -21640,7 +20356,7 @@ for ac_f do case $ac_f in - -) ac_f="$tmp/stdin";; + -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. @@ -21649,26 +20365,34 @@ [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || - { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 -echo "$as_me: error: cannot find input file: $ac_f" >&2;} - { (exit 1); exit 1; }; };; + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac - ac_file_inputs="$ac_file_inputs $ac_f" + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ - configure_input="Generated from "`IFS=: - echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac case $ac_tag in - *:-:* | *:-) cat >"$tmp/stdin";; + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac @@ -21678,42 +20402,7 @@ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - { as_dir="$ac_dir" - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -echo X"$as_dir" | +$as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -21731,20 +20420,15 @@ q } s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -echo "$as_me: error: cannot create directory $as_dir" >&2;} - { (exit 1); exit 1; }; }; } + as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -21789,12 +20473,12 @@ esac _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= - -case `sed -n '/datarootdir/ { +ac_sed_dataroot=' +/datarootdir/ { p q } @@ -21802,36 +20486,37 @@ /@docdir@/p /@infodir@/p /@localedir@/p -/@mandir@/p -' $ac_file_inputs` in +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; + s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF - sed "$ac_vpsub +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub $extrasub _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s&@configure_input@&$configure_input&;t t +s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t @@ -21842,121 +20527,51 @@ s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack -" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && - { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&5 -echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&2;} + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} - rm -f "$tmp/stdin" + rm -f "$ac_tmp/stdin" case $ac_file in - -) cat "$tmp/out"; rm -f "$tmp/out";; - *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; - esac + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # -_ACEOF - -# Transform confdefs.h into a sed script `conftest.defines', that -# substitutes the proper values into config.h.in to produce config.h. -rm -f conftest.defines conftest.tail -# First, append a space to every undef/define line, to ease matching. -echo 's/$/ /' >conftest.defines -# Then, protect against being on the right side of a sed subst, or in -# an unquoted here document, in config.status. If some macros were -# called several times there might be several #defines for the same -# symbol, which is useless. But do not sort them, since the last -# AC_DEFINE must be honored. -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where -# NAME is the cpp macro being defined, VALUE is the value it is being given. -# PARAMS is the parameter list in the macro definition--in most cases, it's -# just an empty string. -ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' -ac_dB='\\)[ (].*,\\1define\\2' -ac_dC=' ' -ac_dD=' ,' - -uniq confdefs.h | - sed -n ' - t rset - :rset - s/^[ ]*#[ ]*define[ ][ ]*// - t ok - d - :ok - s/[\\&,]/\\&/g - s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p - s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p - ' >>conftest.defines - -# Remove the space that was appended to ease matching. -# Then replace #undef with comments. This is necessary, for -# example, in the case of _POSIX_SOURCE, which is predefined and required -# on some systems where configure will not decide to define it. -# (The regexp can be short, since the line contains either #define or #undef.) -echo 's/ $// -s,^[ #]*u.*,/* & */,' >>conftest.defines - -# Break up conftest.defines: -ac_max_sed_lines=50 - -# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" -# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" -# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" -# et cetera. -ac_in='$ac_file_inputs' -ac_out='"$tmp/out1"' -ac_nxt='"$tmp/out2"' - -while : -do - # Write a here document: - cat >>$CONFIG_STATUS <<_ACEOF - # First, check the format of the line: - cat >"\$tmp/defines.sed" <<\\CEOF -/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def -/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def -b -:def -_ACEOF - sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS - echo 'CEOF - sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS - ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in - sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail - grep . conftest.tail >/dev/null || break - rm -f conftest.defines - mv conftest.tail conftest.defines -done -rm -f conftest.defines conftest.tail - -echo "ac_result=$ac_in" >>$CONFIG_STATUS -cat >>$CONFIG_STATUS <<\_ACEOF if test x"$ac_file" != x-; then - echo "/* $configure_input */" >"$tmp/config.h" - cat "$ac_result" >>"$tmp/config.h" - if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then - { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 -echo "$as_me: $ac_file is unchanged" >&6;} + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} else - rm -f $ac_file - mv "$tmp/config.h" $ac_file + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else - echo "/* $configure_input */" - cat "$ac_result" + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 fi - rm -f "$tmp/out12" -# Compute $ac_file's index in $config_headers. -_am_arg=$ac_file +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in @@ -21971,7 +20586,7 @@ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -echo X"$_am_arg" | +$as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -21991,8 +20606,8 @@ s/.*/./; q'`/stamp-h$_am_stamp_count ;; - :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 -echo "$as_me: executing $ac_file commands" >&6;} + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac @@ -22014,7 +20629,7 @@ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || -echo X"$mf" | +$as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -22058,42 +20673,7 @@ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || -echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - { as_dir=$dirpart/$fdir - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -echo X"$as_dir" | +$as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -22111,12 +20691,7 @@ q } s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -echo "$as_me: error: cannot create directory $as_dir" >&2;} - { (exit 1); exit 1; }; }; } + as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done @@ -22127,11 +20702,13 @@ done # for ac_tag -{ (exit 0); exit 0; } +as_fn_exit 0 _ACEOF -chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. @@ -22151,6 +20728,10 @@ exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. - $ac_cs_success || { (exit 1); exit 1; } + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi diff -Nru passenger-3.0.19+112~precise1/lib/phusion_passenger/abstract_request_handler.rb passenger-3.0.21/lib/phusion_passenger/abstract_request_handler.rb --- passenger-3.0.19+112~precise1/lib/phusion_passenger/abstract_request_handler.rb 2013-01-30 19:16:22.000000000 +0000 +++ passenger-3.0.21/lib/phusion_passenger/abstract_request_handler.rb 2013-05-29 10:02:28.000000000 +0000 @@ -453,6 +453,9 @@ trap(signal, handler) end end + + class IgnoreException < StandardError + end def accept_and_process_next_request(socket_wrapper, channel, buffer) select_result = select(@selectable_sockets, nil, nil, @select_timeout) @@ -509,17 +512,20 @@ if headers prepare_request(headers) + ignore = false begin if headers[REQUEST_METHOD] == PING process_ping(headers, input_stream, connection) else process_request(headers, input_stream, connection, full_http_response) end + rescue IgnoreException + ignore = true rescue Exception has_error = true raise ensure - finalize_request(headers, has_error) + finalize_request(headers, has_error) if !ignore end end return true diff -Nru passenger-3.0.19+112~precise1/lib/phusion_passenger/dependencies.rb passenger-3.0.21/lib/phusion_passenger/dependencies.rb --- passenger-3.0.19+112~precise1/lib/phusion_passenger/dependencies.rb 2013-01-30 19:16:22.000000000 +0000 +++ passenger-3.0.21/lib/phusion_passenger/dependencies.rb 2013-05-28 21:13:08.000000000 +0000 @@ -22,6 +22,7 @@ # THE SOFTWARE. require 'rbconfig' +require 'tmpdir' require 'phusion_passenger' require 'phusion_passenger/packaging' require 'phusion_passenger/platform_info' @@ -117,6 +118,12 @@ end end + def self.create_temp_files(name1, name2, dir = PlatformInfo.tmpexedir) + Dir.mktmpdir("passenger.", dir) do |subdir| + yield "#{subdir}/#{name1}", "#{subdir}/#{name2}" + end + end + GCC = Dependency.new do |dep| dep.name = "GNU C++ compiler" dep.define_checker do |result| @@ -456,9 +463,7 @@ Curl_Dev = Dependency.new do |dep| dep.name = "Curl development headers with SSL support" dep.define_checker do |result| - source_file = "#{PlatformInfo.tmpexedir}/passenger-curl-check.c" - output_file = "#{PlatformInfo.tmpexedir}/passenger-curl-check" - begin + Dependencies.create_temp_files("check.c", "check") do |source_file, output_file| found = true File.open(source_file, 'w') do |f| f.puts("#include ") @@ -482,9 +487,6 @@ found = false end result.found(found) - ensure - File.unlink(source_file) rescue nil - File.unlink(output_file) rescue nil end end dep.install_instructions = "Please download Curl from http://curl.haxx.se/libcurl " + @@ -514,22 +516,17 @@ OpenSSL_Dev = Dependency.new do |dep| dep.name = "OpenSSL development headers" dep.define_checker do |result| - source_file = "#{PlatformInfo.tmpexedir}/passenger-openssl-check.c" - object_file = "#{PlatformInfo.tmpexedir}/passenger-openssl-check.o" - begin + Dependencies.create_temp_files("check.c", "check.o") do |source_file, output_file| File.open(source_file, 'w') do |f| f.write("#include ") end Dir.chdir(File.dirname(source_file)) do - if system("(gcc #{ENV['CFLAGS']} -c '#{source_file}') >/dev/null 2>/dev/null") + if system("(gcc #{ENV['CFLAGS']} -c '#{source_file}' -o '#{output_file}') >/dev/null 2>/dev/null") result.found else result.not_found end end - ensure - File.unlink(source_file) rescue nil - File.unlink(object_file) rescue nil end end if RUBY_PLATFORM =~ /linux/ @@ -546,22 +543,17 @@ Zlib_Dev = Dependency.new do |dep| dep.name = "Zlib development headers" dep.define_checker do |result| - source_file = "#{PlatformInfo.tmpexedir}/zlib-check.c" - object_file = "#{PlatformInfo.tmpexedir}/zlib-check.o" - begin + Dependencies.create_temp_files("check.c", "check.o") do |source_file, output_file| File.open(source_file, 'w') do |f| f.write("#include ") end Dir.chdir(File.dirname(source_file)) do - if system("(g++ -c zlib-check.c) >/dev/null 2>/dev/null") + if system("(g++ -c '#{source_file}' -o '#{output_file}') >/dev/null 2>/dev/null") result.found else result.not_found end end - ensure - File.unlink(source_file) rescue nil - File.unlink(object_file) rescue nil end end if RUBY_PLATFORM =~ /linux/ diff -Nru passenger-3.0.19+112~precise1/lib/phusion_passenger/platform_info/apache.rb passenger-3.0.21/lib/phusion_passenger/platform_info/apache.rb --- passenger-3.0.19+112~precise1/lib/phusion_passenger/platform_info/apache.rb 2013-01-30 19:16:22.000000000 +0000 +++ passenger-3.0.21/lib/phusion_passenger/platform_info/apache.rb 2013-05-29 08:51:38.000000000 +0000 @@ -285,16 +285,7 @@ # headers are placed into the same directory as the Apache headers, # and so 'apr-config' and 'apu-config' won't be necessary in that case. def self.apr_config_needed_for_building_apache_modules? - filename = File.join("#{tmpexedir}/passenger-platform-check-#{Process.pid}.c") - File.open(filename, "w") do |f| - f.puts("#include ") - end - begin - return !system("(gcc #{apache2_module_cflags(false)} -c '#{filename}' -o '#{filename}.o') >/dev/null 2>/dev/null") - ensure - File.unlink(filename) rescue nil - File.unlink("#{filename}.o") rescue nil - end + return !try_compile(:c, "#include ", apache2_module_cflags(false)) end memoize :apr_config_needed_for_building_apache_modules? diff -Nru passenger-3.0.19+112~precise1/lib/phusion_passenger/platform_info/ruby.rb passenger-3.0.21/lib/phusion_passenger/platform_info/ruby.rb --- passenger-3.0.19+112~precise1/lib/phusion_passenger/platform_info/ruby.rb 2013-01-30 19:16:22.000000000 +0000 +++ passenger-3.0.21/lib/phusion_passenger/platform_info/ruby.rb 2013-05-28 21:13:08.000000000 +0000 @@ -1,4 +1,4 @@ -# Phusion Passenger - http://www.modrails.com/ +# Phusion Passenger - https://www.phusionpassenger.com/ # Copyright (c) 2010 Phusion # # "Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui. @@ -48,29 +48,54 @@ def self.ruby_command if in_rvm? name = rvm_ruby_string - dir = rvm_path - if name && dir - filename = "#{dir}/wrappers/#{name}/ruby" - if File.exist?(filename) - contents = File.open(filename, 'rb') do |f| - f.read - end - # Old wrapper scripts reference $HOME which causes - # things to blow up when run by a different user. - if contents.include?("$HOME") + dirs = rvm_paths + if name && dirs + dirs.each do |dir| + filename = "#{dir}/wrappers/#{name}/ruby" + if File.exist?(filename) + contents = File.open(filename, 'rb') do |f| + f.read + end + # Old wrapper scripts reference $HOME which causes + # things to blow up when run by a different user. + if contents.include?("$HOME") + filename = nil + end + else filename = nil end - else - filename = nil + if filename + return filename + end end - if filename - return filename - else - STDERR.puts "Your RVM wrapper scripts are too old. Please " + - "update them first by running 'rvm get head && " + - "rvm reload && rvm repair all'." - exit 1 + + # Correctness of these commands are confirmed by mpapis. + # If we ever encounter a case for which this logic is not sufficient, + # try mpapis' pseudo code: + # + # rvm_update_prefix = write_to rvm_path ? "" : "rvmsudo" + # rvm_gemhome_prefix = write_to GEM_HOME ? "" : "rvmsudo" + # repair_command = "#{rvm_update_prefix} rvm get stable && rvm reload && #{rvm_gemhome_prefix} rvm repair all" + # wrapper_command = "#{rvm_gemhome_prefix} rvm wrapper #{rvm_ruby_string} --no-prefix --all" + case rvm_installation_mode + when :single + repair_command = "rvm get stable && rvm reload && rvm repair all" + wrapper_command = "rvm wrapper #{rvm_ruby_string} --no-prefix --all" + when :multi + repair_command = "rvmsudo rvm get stable && rvm reload && rvmsudo rvm repair all" + wrapper_command = "rvmsudo rvm wrapper #{rvm_ruby_string} --no-prefix --all" + when :mixed + repair_command = "rvmsudo rvm get stable && rvm reload && rvm repair all" + wrapper_command = "rvm wrapper #{rvm_ruby_string} --no-prefix --all" end + + STDERR.puts "Your RVM wrapper scripts are too old, or some " + + "wrapper scripts are missing. Please update/regenerate " + + "them first by running:\n\n" + + " #{repair_command}\n\n" + + "If that doesn't seem to work, please run:\n\n" + + " #{wrapper_command}" + exit 1 else # Something's wrong with the user's RVM installation. # Raise an error so that the user knows this instead of @@ -105,7 +130,7 @@ RUBY_ENGINE != "macruby" && rb_config['target_os'] !~ /mswin|windows|mingw/ end - + # Returns the correct 'gem' command for this Ruby interpreter. def self.gem_command return locate_ruby_tool('gem') @@ -156,29 +181,39 @@ return bindir.include?('/.rvm/') || bindir.include?('/rvm/') end - # If the current Ruby interpreter is managed by RVM, returns the - # directory in which RVM places its working files. Otherwise returns - # nil. - def self.rvm_path + # If the current Ruby interpreter is managed by RVM, returns all + # directories in which RVM places its working files. This is usually + # ~/.rvm or /usr/local/rvm, but in mixed-mode installations there + # can be multiple such paths. + # + # Otherwise returns nil. + def self.rvm_paths if in_rvm? + result = [] [ENV['rvm_path'], "~/.rvm", "/usr/local/rvm"].each do |path| next if path.nil? path = File.expand_path(path) - script_path = File.join(path, 'scripts', 'rvm') - return path if File.directory?(path) && File.exist?(script_path) + rubies_path = File.join(path, 'rubies') + if File.directory?(path) && File.directory?(rubies_path) + result << path + end + end + if result.empty? + # Failure to locate the RVM path is probably caused by the + # user customizing $rvm_path. Older RVM versions don't + # export $rvm_path, making us unable to detect its value. + STDERR.puts "Unable to locate the RVM path. Your RVM installation " + + "is probably too old. Please update it with " + + "'rvm get head && rvm reload && rvm repair all'." + exit 1 + else + return result end - # Failure to locate the RVM path is probably caused by the - # user customizing $rvm_path. Older RVM versions don't - # export $rvm_path, making us unable to detect its value. - STDERR.puts "Unable to locate the RVM path. Your RVM installation " + - "is probably too old. Please update it with " + - "'rvm get head && rvm reload && rvm repair all'." - exit 1 else return nil end end - memoize :rvm_path + memoize :rvm_paths # If the current Ruby interpreter is managed by RVM, returns the # RVM name which identifies the current Ruby interpreter plus the @@ -200,8 +235,12 @@ # try various strategies... # $GEM_HOME usually contains the gem set name. - if GEM_HOME && GEM_HOME.include?("rvm/gems/") - return File.basename(GEM_HOME) + # It may be something like: + # /Users/hongli/.rvm/gems/ruby-1.9.3-p392 + # But also: + # /home/bitnami/.rvm/gems/ruby-1.9.3-p385-perf@njist325/ruby/1.9.1 + if GEM_HOME && GEM_HOME =~ %r{rvm/gems/(.+)} + return $1.sub(/\/.*/, '') end # User somehow managed to nuke $GEM_HOME. Extract info @@ -227,6 +266,27 @@ return nil end memoize :rvm_ruby_string + + # Returns the RVM installation mode: + # :single - RVM is installed in single-user mode. + # :multi - RVM is installed in multi-user mode. + # :mixed - RVM is in a mixed-mode installation. + # nil - The current Ruby interpreter is not using RVM. + def self.rvm_installation_mode + if in_rvm? + if ENV['rvm_path'] =~ /\.rvm/ + return :single + else + if GEM_HOME =~ /\.rvm/ + return :mixed + else + return :multi + end + end + else + return nil + end + end # Returns either 'sudo' or 'rvmsudo' depending on whether the current # Ruby interpreter is managed by RVM. diff -Nru passenger-3.0.19+112~precise1/lib/phusion_passenger/platform_info.rb passenger-3.0.21/lib/phusion_passenger/platform_info.rb --- passenger-3.0.19+112~precise1/lib/phusion_passenger/platform_info.rb 2013-01-30 19:16:22.000000000 +0000 +++ passenger-3.0.21/lib/phusion_passenger/platform_info.rb 2013-05-29 08:57:03.000000000 +0000 @@ -21,6 +21,8 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. +require 'tmpdir' + module PhusionPassenger # This module autodetects various platform-specific information, and @@ -263,15 +265,12 @@ else raise ArgumentError,"Unsupported language '#{language}'" end - filename = File.join("#{tmpexedir}/passenger-compile-check-#{Process.pid}.c") - File.open(filename, "w") do |f| - f.puts(source) - end - begin + Dir.mktmpdir("passenger.", tmpexedir) do |dir| + filename = File.join(dir, "check.c") + File.open(filename, "w") do |f| + f.puts(source) + end return system("(#{compiler} #{flags} -c '#{filename}' -o '#{filename}.o') >/dev/null 2>/dev/null") - ensure - File.unlink(filename) rescue nil - File.unlink("#{filename}.o") rescue nil end end private_class_method :try_compile @@ -284,15 +283,12 @@ else raise ArgumentError,"Unsupported language '#{language}'" end - filename = File.join("#{tmpexedir}/passenger-link-check-#{Process.pid}.c") - File.open(filename, "w") do |f| - f.puts(source) - end - begin + Dir.mktmpdir("passenger.", tmpexedir) do |dir| + filename = File.join(dir, "check.c") + File.open(filename, "w") do |f| + f.puts(source) + end return system("(#{compiler} #{flags} '#{filename}' -o '#{filename}.out') >/dev/null 2>/dev/null") - ensure - File.unlink(filename) rescue nil - File.unlink("#{filename}.out") rescue nil end end private_class_method :try_link @@ -305,17 +301,16 @@ else raise ArgumentError,"Unsupported language '#{language}'" end - filename = File.join("#{tmpexedir}/passenger-compile-check-#{Process.pid}.c") - File.open(filename, "w") do |f| - f.puts(source) - end - begin + Dir.mktmpdir("passenger.", tmpexedir) do |dir| + filename = File.join(dir, "check.c") + File.open(filename, "w") do |f| + f.puts(source) + end if system("(#{compiler} #{flags} '#{filename}' -o '#{filename}.out') >/dev/null 2>/dev/null") if Process.respond_to?(:spawn) pid = Process.spawn("#{filename}.out", :out => ["/dev/null", "w"], :err => ["/dev/null", "w"]) - else pid = fork do STDOUT.reopen("/dev/null", "w") @@ -328,9 +323,6 @@ else return false end - ensure - File.unlink(filename) rescue nil - File.unlink("#{filename}.out") rescue nil end end private_class_method :try_compile_and_run diff -Nru passenger-3.0.19+112~precise1/lib/phusion_passenger/rack/request_handler.rb passenger-3.0.21/lib/phusion_passenger/rack/request_handler.rb --- passenger-3.0.19+112~precise1/lib/phusion_passenger/rack/request_handler.rb 2013-01-30 19:16:22.000000000 +0000 +++ passenger-3.0.21/lib/phusion_passenger/rack/request_handler.rb 2013-05-29 10:05:59.000000000 +0000 @@ -93,7 +93,21 @@ env[RACK_URL_SCHEME] = HTTP end - status, headers, body = @app.call(env) + begin + status, headers, body = @app.call(env) + rescue => e + socket_wrapper = output + if socket_wrapper.source_of_exception?(e) + # Handled by AbstractRequestHandler + raise e + else + # It's a good idea to catch application exceptions here because + # otherwise maliciously crafted responses can crash the app, + # forcing it to be respawned, and thereby effectively DoSing it. + print_exception("Rack application object", e) + raise AbstractRequestHandler::IgnoreException.new + end + end begin if full_http_response output.write("HTTP/1.1 #{status.to_i.to_s} Whatever#{CRLF}") @@ -139,6 +153,11 @@ rewindable_input.close end end + +private + def should_swallow_app_error?(e, socket_wrapper) + return socket_wrapper && socket_wrapper.source_of_exception?(e) && e.is_a?(Errno::EPIPE) + end end end # module Rack diff -Nru passenger-3.0.19+112~precise1/lib/phusion_passenger/standalone/command.rb passenger-3.0.21/lib/phusion_passenger/standalone/command.rb --- passenger-3.0.19+112~precise1/lib/phusion_passenger/standalone/command.rb 2013-01-30 19:16:22.000000000 +0000 +++ passenger-3.0.21/lib/phusion_passenger/standalone/command.rb 2013-05-28 21:13:08.000000000 +0000 @@ -172,8 +172,11 @@ def write_nginx_config_file require 'phusion_passenger/platform_info/ruby' - ensure_directory_exists(@temp_dir) - + require 'tmpdir' + @temp_dir = Dir.mktmpdir("passenger.", "/tmp") + @config_filename = "#{@temp_dir}/config" + File.chmod(0755, @temp_dir) + File.open(@config_filename, 'w') do |f| f.chmod(0644) template_filename = File.join(TEMPLATES_DIR, "standalone", "config.erb") @@ -213,8 +216,6 @@ def create_nginx_controller(extra_options = {}) require_daemon_controller require 'socket' unless defined?(UNIXSocket) - @temp_dir = "/tmp/passenger-standalone.#{$$}" - @config_filename = "#{@temp_dir}/config" if @options[:socket_file] ping_spec = [:unix, @options[:socket_file]] else diff -Nru passenger-3.0.19+112~precise1/lib/phusion_passenger/standalone/runtime_installer.rb passenger-3.0.21/lib/phusion_passenger/standalone/runtime_installer.rb --- passenger-3.0.19+112~precise1/lib/phusion_passenger/standalone/runtime_installer.rb 2013-01-30 19:16:22.000000000 +0000 +++ passenger-3.0.21/lib/phusion_passenger/standalone/runtime_installer.rb 2013-05-28 21:13:08.000000000 +0000 @@ -23,6 +23,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. require 'fileutils' +require 'tmpdir' require 'phusion_passenger' require 'phusion_passenger/abstract_installer' require 'phusion_passenger/packaging' @@ -164,16 +165,14 @@ def before_install super @plugin.call_hook(:runtime_installer_start, self) if @plugin - @working_dir = "/tmp/#{myself}-passenger-standalone-#{Process.pid}" - FileUtils.rm_rf(@working_dir) - FileUtils.mkdir_p(@working_dir) + @working_dir = Dir.mktmpdir("passenger.") @download_binaries = true if !defined?(@download_binaries) @binaries_url_root ||= STANDALONE_BINARIES_URL_ROOT end def after_install super - FileUtils.rm_rf(@working_dir) + FileUtils.remove_entry_secure(@working_dir) if @working_dir @plugin.call_hook(:runtime_installer_cleanup) if @plugin end @@ -251,7 +250,7 @@ def extract_tarball(filename) File.open(filename, 'rb') do |f| - IO.popen("tar xzf -", "w") do |io| + IO.popen("tar xzf -", "wb") do |io| buffer = '' buffer = buffer.force_encoding('binary') if buffer.respond_to?(:force_encoding) total_size = File.size(filename) diff -Nru passenger-3.0.19+112~precise1/lib/phusion_passenger.rb passenger-3.0.21/lib/phusion_passenger.rb --- passenger-3.0.19+112~precise1/lib/phusion_passenger.rb 2013-01-30 19:16:22.000000000 +0000 +++ passenger-3.0.21/lib/phusion_passenger.rb 2013-05-29 10:21:49.000000000 +0000 @@ -25,9 +25,9 @@ ###### Version numbers ###### # Phusion Passenger version number. Don't forget to edit ext/common/Constants.h too. - VERSION_STRING = '3.0.19' + VERSION_STRING = '3.0.21' - PREFERRED_NGINX_VERSION = '1.2.6' + PREFERRED_NGINX_VERSION = '1.2.9' PREFERRED_PCRE_VERSION = '8.31' STANDALONE_INTERFACE_VERSION = 1 Binary files /tmp/A1CrSEoW9G/passenger-3.0.19+112~precise1/test/stub/wsgi/passenger_wsgi.pyc and /tmp/P8JBulQLrq/passenger-3.0.21/test/stub/wsgi/passenger_wsgi.pyc differ