mirror of
https://github.com/openresty/openresty.git
synced 2024-10-13 00:29:41 +00:00
Compare commits
127 Commits
Author | SHA1 | Date | |
---|---|---|---|
90fc91567f | |||
a0f6653c6a | |||
61586a75e3 | |||
9d36d4f069 | |||
b1a85d924b | |||
6994c5e125 | |||
2f20dac034 | |||
098889b2ed | |||
7a9c09de5d | |||
22d66022a6 | |||
e2c0799394 | |||
44540173ea | |||
843c260daf | |||
a864af25cf | |||
a21f5e4631 | |||
b0b9544aa5 | |||
3e69abf93c | |||
c408e5f68f | |||
2223edb87d | |||
adcff66454 | |||
68fdc6754b | |||
645530f76e | |||
24a6779879 | |||
9fcae3552f | |||
47907fa3a9 | |||
f9a2702f5a | |||
58f39e963f | |||
19c6e1fb5c | |||
11284ae527 | |||
cf01381428 | |||
7447076d56 | |||
4f54490595 | |||
3b500d7c96 | |||
3b74625ad3 | |||
b1400169a7 | |||
bc2068420c | |||
b81a5cea66 | |||
add30287e1 | |||
ce30f58339 | |||
6e74463f66 | |||
79520a30f8 | |||
5426551809 | |||
bcb9b3b698 | |||
9afb06f5eb | |||
d94772353a | |||
d7da4d6037 | |||
4950ec7f62 | |||
706dee9b7f | |||
5373add959 | |||
a5baad4b83 | |||
0ed12d446c | |||
ec8acae28e | |||
0ca75dbf45 | |||
e6152d3af4 | |||
1780a1dd5f | |||
509afa3d53 | |||
274808af32 | |||
6e8b2f4984 | |||
6b905f9eef | |||
12b67e3a5c | |||
7d5dd68ded | |||
7a7576319e | |||
e767256038 | |||
a8ea810fdc | |||
dafd10b27d | |||
eb8fc7771d | |||
79dc3c56aa | |||
391709ce4d | |||
78af48d106 | |||
34c5e749b7 | |||
5deaa06788 | |||
1fbcf153e3 | |||
da979a620a | |||
e75b5c926b | |||
0a35dfc126 | |||
88b4cf1abf | |||
51d68caaed | |||
2a1b28da1c | |||
ba4d3dd99f | |||
ec3186ccc9 | |||
e1cfbe09ab | |||
8caa177718 | |||
d00f1e1ef0 | |||
ba6621b12b | |||
df41967474 | |||
2fd117c427 | |||
cfc14f5d26 | |||
1197fe2bd1 | |||
b0654629a9 | |||
4fb4791107 | |||
6b82ea1099 | |||
b59ef879a5 | |||
2044681992 | |||
ee90152ae3 | |||
7a5c96d72f | |||
b490cfeea4 | |||
b1c4280777 | |||
710d9e323d | |||
1ad7b03044 | |||
b6c362bbf6 | |||
b03099b386 | |||
cbfbd19460 | |||
e921c6e9b1 | |||
365c7d9d9e | |||
5d01a5e0b4 | |||
e478681308 | |||
e254c3d0c1 | |||
dbccee1418 | |||
efe10e532c | |||
6343d26c17 | |||
8ffd932b20 | |||
6cb4ae0de3 | |||
6c8f4f87ba | |||
d7f84c9079 | |||
4f2bf44aba | |||
a4640d68f1 | |||
69803153aa | |||
b488540a2f | |||
b37d406423 | |||
dc03e7641b | |||
2900286149 | |||
b1c3587c50 | |||
5163293260 | |||
1815637613 | |||
fd667d6369 | |||
ae8e36ae77 | |||
e2a735c481 |
26
.github/ISSUE_TEMPLATE.md
vendored
Normal file
26
.github/ISSUE_TEMPLATE.md
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
This place is for bug reports and development discussions only. For general questions and
|
||||
discussions, please join the openresty-en mailing list instead: https://groups.google.com/group/openresty-en.
|
||||
If you want to use Chinese, please join the openresty (Chinese) mailing list instead: https://groups.google.com/group/openresty.
|
||||
Do not use Chinese in this place.
|
||||
|
||||
Before you open a new issue, please search the internet and make sure it is not duplicate.
|
||||
|
||||
Ensure you have provided the following details while reporting a problem:
|
||||
|
||||
- [ ] The exact version of the related software, including but not limited to the OpenResty version
|
||||
(if any), the NGINX core version, the `ngx_lua` module version(via `openresty -V` or `nginx -V`),
|
||||
and your operating system version(via `uname -a`).
|
||||
- [ ] **A minimal and standalone test case** that others can easily run on their side and
|
||||
reproduce the issue you are seeing.
|
||||
- [ ] Do not simply say "something is broken" or "something does not work". Always provide
|
||||
as much details as possible. Always describe **the symptoms and your expected results**.
|
||||
|
||||
You can (temporarily) enable the nginx debugging logs to see the internal workings
|
||||
of NGINX in your nginx''s `error.log` file. See http://nginx.org/en/docs/debugging_log.html
|
||||
The same instructions apply equally well to OpenResty.
|
||||
|
||||
If you are seeing crashes, please provide the full backtrace for the crash. See
|
||||
https://www.nginx.com/resources/wiki/start/topics/tutorials/debugging/#core-dump
|
||||
for more details.
|
||||
|
||||
Thanks for your cooperation.
|
2
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
2
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
I hereby granted the copyright of the changes in this pull request
|
||||
to the authors of this openresty project.
|
325
COPYRIGHT
325
COPYRIGHT
@ -1,6 +1,7 @@
|
||||
Copyright (C) 2009-2015, by Yichun "agentzh" Zhang, CloudFlare Inc.
|
||||
Copyright (C) 2009-2015, by Yichun "agentzh" Zhang, OpenResty Inc.
|
||||
|
||||
Copyright (C) 2009-2014, by Xiaozhe Wang (chaoslawful) <chaoslawful@gmail.com>.
|
||||
Copyright (C) 2009-2014, by Xiaozhe Wang (chaoslawful) <chaoslawful@gmail.
|
||||
com>.
|
||||
|
||||
Copyright (C) 2010-2014, by FRiCKLE Piotr Sikora <info@frickle.com>.
|
||||
|
||||
@ -12,19 +13,34 @@ Copyright (C) Guanlan Dai
|
||||
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
||||
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
|
||||
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGE.
|
||||
|
||||
Copyright (c) 2010, Marcus Clyne, Simpl (simpl.it)
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
@ -35,15 +51,18 @@ modification, are permitted provided that the following conditions are met:
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
||||
IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL MARCUS CLYNE OR SIMPL BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
@ -107,22 +126,29 @@ LuaJIT -- a Just-In-Time Compiler for Lua. http://luajit.org/
|
||||
|
||||
Copyright (C) 2005-2015 Mike Pall. All rights reserved.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy
|
||||
of this software and associated documentation files (the "Software"), to
|
||||
deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
The above copyright notice and this permission notice shall be included
|
||||
in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN
|
||||
THE SOFTWARE.
|
||||
|
||||
[ MIT license: http://www.opensource.org/licenses/mit-license.php ]
|
||||
@ -133,22 +159,29 @@ Lua License
|
||||
|
||||
Copyright (C) 1994-2012 Lua.org, PUC-Rio.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy
|
||||
of this software and associated documentation files (the "Software"), to
|
||||
deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
The above copyright notice and this permission notice shall be included
|
||||
in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN
|
||||
THE SOFTWARE.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
@ -232,6 +265,250 @@ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGE.
|
||||
|
||||
The licence and distribution terms for any publically available version
|
||||
or
|
||||
derivative of this code cannot be changed. i.e. this code cannot simply
|
||||
be
|
||||
copied and put under another distribution licence
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
OpenSSL
|
||||
|
||||
Copyright (c) 1998-2016 The OpenSSL Project. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in
|
||||
the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
|
||||
3. All advertising materials mentioning features or use of this
|
||||
software must display the following acknowledgment:
|
||||
"This product includes software developed by the OpenSSL Project
|
||||
for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
|
||||
|
||||
4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
|
||||
endorse or promote products derived from this software without
|
||||
prior written permission. For written permission, please contact
|
||||
openssl-core@openssl.org.
|
||||
|
||||
5. Products derived from this software may not be called "OpenSSL"
|
||||
nor may "OpenSSL" appear in their names without prior written
|
||||
permission of the OpenSSL Project.
|
||||
|
||||
6. Redistributions of any form whatsoever must retain the following
|
||||
acknowledgment:
|
||||
"This product includes software developed by the OpenSSL Project
|
||||
for use in the OpenSSL Toolkit (http://www.openssl.org/)"
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
|
||||
EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
|
||||
ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
This product includes cryptographic software written by Eric Young
|
||||
(eay@cryptsoft.com). This product includes software written by Tim
|
||||
Hudson (tjh@cryptsoft.com).
|
||||
|
||||
Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
All rights reserved.
|
||||
|
||||
This package is an SSL implementation written
|
||||
by Eric Young (eay@cryptsoft.com).
|
||||
The implementation was written so as to conform with Netscapes SSL.
|
||||
|
||||
This library is free for commercial and non-commercial use as long as
|
||||
the following conditions are aheared to. The following conditions
|
||||
apply to all code found in this distribution, be it the RC4, RSA,
|
||||
lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||
included with this distribution is covered by the same copyright terms
|
||||
except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||
|
||||
Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
the code are not to be removed.
|
||||
If this package is used in a product, Eric Young should be given attribution
|
||||
as the author of the parts of the library used.
|
||||
This can be in the form of a textual message at program startup or
|
||||
in documentation (online or textual) provided with the package.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code must retain the copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
3. All advertising materials mentioning features or use of this software
|
||||
must display the following acknowledgement:
|
||||
"This product includes cryptographic software written by
|
||||
Eric Young (eay@cryptsoft.com)"
|
||||
The word 'cryptographic' can be left out if the rouines from the library
|
||||
being used are not cryptographic related :-).
|
||||
|
||||
4. If you include any Windows specific code (or a derivative thereof) from
|
||||
the apps directory (application code) you must include an acknowledgement:
|
||||
"This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGE.
|
||||
|
||||
The licence and distribution terms for any publically available version or
|
||||
derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
copied and put under another distribution licence
|
||||
[including the GNU Public Licence.]
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
PCRE LICENCE
|
||||
------------
|
||||
|
||||
PCRE is a library of functions to support regular expressions whose syntax
|
||||
and semantics are as close as possible to those of the Perl 5 language.
|
||||
|
||||
Release 8 of PCRE is distributed under the terms of the "BSD" licence, as
|
||||
specified below. The documentation for PCRE, supplied in the "doc"
|
||||
directory, is distributed under the same terms as the software itself. The data
|
||||
in the testdata directory is not copyrighted and is in the public domain.
|
||||
|
||||
The basic library functions are written in C and are freestanding. Also
|
||||
included in the distribution is a set of C++ wrapper functions, and a
|
||||
just-in-time compiler that can be used to optimize pattern matching. These
|
||||
are both optional features that can be omitted when the library is built.
|
||||
|
||||
|
||||
THE BASIC LIBRARY FUNCTIONS
|
||||
---------------------------
|
||||
|
||||
Written by: Philip Hazel
|
||||
Email local part: ph10
|
||||
Email domain: cam.ac.uk
|
||||
|
||||
University of Cambridge Computing Service,
|
||||
Cambridge, England.
|
||||
|
||||
Copyright (c) 1997-2017 University of Cambridge
|
||||
All rights reserved.
|
||||
|
||||
|
||||
PCRE JUST-IN-TIME COMPILATION SUPPORT
|
||||
-------------------------------------
|
||||
|
||||
Written by: Zoltan Herczeg
|
||||
Email local part: hzmester
|
||||
Emain domain: freemail.hu
|
||||
|
||||
Copyright(c) 2010-2017 Zoltan Herczeg
|
||||
All rights reserved.
|
||||
|
||||
|
||||
STACK-LESS JUST-IN-TIME COMPILER
|
||||
--------------------------------
|
||||
|
||||
Written by: Zoltan Herczeg
|
||||
Email local part: hzmester
|
||||
Emain domain: freemail.hu
|
||||
|
||||
Copyright(c) 2009-2017 Zoltan Herczeg
|
||||
All rights reserved.
|
||||
|
||||
|
||||
THE C++ WRAPPER FUNCTIONS
|
||||
-------------------------
|
||||
|
||||
Contributed by: Google Inc.
|
||||
|
||||
Copyright (c) 2007-2012, Google Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
||||
THE "BSD" LICENCE
|
||||
-----------------
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the name of the University of Cambridge nor the name of Google
|
||||
Inc. nor the names of their contributors may be used to endorse or
|
||||
promote products derived from this software without specific prior
|
||||
written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
zlib
|
||||
|
||||
(C) 1995-2013 Jean-loup Gailly and Mark Adler
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
|
||||
Jean-loup Gailly Mark Adler
|
||||
jloup@gzip.org madler@alumni.caltech.edu
|
||||
|
||||
If you use the zlib library in a product, we would appreciate *not* receiving
|
||||
lengthy legal documents to sign. The sources are provided for free but without
|
||||
warranty of any kind. The library has been entirely written by Jean-loup
|
||||
Gailly and Mark Adler; it does not include third-party code.
|
||||
|
||||
If you redistribute modified sources, we would appreciate that you include in
|
||||
the file ChangeLog history information documenting your changes. Please read
|
||||
the FAQ for more information on the distribution of modified source versions.
|
||||
|
@ -51,12 +51,12 @@ make
|
||||
|
||||
at the top of the bundle source tree.
|
||||
|
||||
Please note that you may need to install some extra dependencies, like `perl` and `dos2unix`.
|
||||
Please note that you may need to install some extra dependencies, like `perl`, `dos2unix`, and `mercurial`.
|
||||
On Fedora 22, for example, installing the dependencies
|
||||
is as simple as running the following commands:
|
||||
|
||||
```bash
|
||||
sudo dnf install perl dos2unix
|
||||
sudo dnf install perl dos2unix mercurial
|
||||
```
|
||||
|
||||
[Back to TOC](#table-of-contents)
|
||||
@ -88,7 +88,7 @@ Copyright & License
|
||||
|
||||
The bundle itself is licensed under the 2-clause BSD license.
|
||||
|
||||
Copyright (c) 2011-2016, Yichun "agentzh" Zhang (章亦春) <agentzh@gmail.com>, CloudFlare Inc.
|
||||
Copyright (c) 2011-2017, Yichun "agentzh" Zhang (章亦春) <agentzh@gmail.com>, OpenResty Inc.
|
||||
|
||||
This module is licensed under the terms of the BSD license.
|
||||
|
||||
|
@ -65,7 +65,7 @@ programming language. Lua is a powerful, dynamic and light-weight
|
||||
programming language. It may be embedded or used as a general-purpose,
|
||||
stand-alone language.
|
||||
|
||||
LuaJIT is Copyright E<copy> 2005-2016 Mike Pall, released under the
|
||||
LuaJIT is Copyright E<copy> 2005-2017 Mike Pall, released under the
|
||||
E<rchevron> MIT open source license.
|
||||
|
||||
=head2 Compatibility
|
||||
@ -189,13 +189,13 @@ LuaJIT.
|
||||
|
||||
----
|
||||
|
||||
Copyright E<copy> 2005-2016 Mike Pall E<middot> Contact
|
||||
Copyright E<copy> 2005-2017 Mike Pall E<middot> Contact
|
||||
|
||||
=cut
|
||||
|
||||
#Pod::HTML2Pod conversion notes:
|
||||
#From file luajit.html
|
||||
# 8082 bytes of input
|
||||
#Wed Jun 29 13:18:15 2016 agentzh
|
||||
#Sat May 13 16:35:32 2017 agentzh
|
||||
# No a_name switch not specified, so will not try to render <a name='...'>
|
||||
# No a_href switch not specified, so will not try to render <a href='...'>
|
||||
|
@ -60,24 +60,28 @@ LuaJIT
|
||||
|
||||
=back
|
||||
|
||||
If you want to report bugs, propose fixes or suggest enhancements,
|
||||
please use the GitHub issue tracker.
|
||||
|
||||
Please send general questions to the E<rchevron> LuaJIT mailing list.
|
||||
|
||||
You can also send any questions you have directly to me:
|
||||
|
||||
Contact info in image
|
||||
|
||||
=head2 Copyright
|
||||
|
||||
All documentation is Copyright E<copy> 2005-2016 Mike Pall.
|
||||
All documentation is Copyright E<copy> 2005-2017 Mike Pall.
|
||||
|
||||
----
|
||||
|
||||
Copyright E<copy> 2005-2016 Mike Pall E<middot> Contact
|
||||
Copyright E<copy> 2005-2017 Mike Pall E<middot> Contact
|
||||
|
||||
=cut
|
||||
|
||||
#Pod::HTML2Pod conversion notes:
|
||||
#From file contact.html
|
||||
# 2813 bytes of input
|
||||
#Wed Jun 29 13:18:14 2016 agentzh
|
||||
# 2989 bytes of input
|
||||
#Sat May 13 16:35:32 2017 agentzh
|
||||
# No a_name switch not specified, so will not try to render <a name='...'>
|
||||
# No a_href switch not specified, so will not try to render <a href='...'>
|
||||
|
@ -163,14 +163,14 @@ note that this mechanism is not without overhead.
|
||||
|
||||
----
|
||||
|
||||
Copyright E<copy> 2005-2016 Mike Pall E<middot> Contact
|
||||
Copyright E<copy> 2005-2017 Mike Pall E<middot> Contact
|
||||
|
||||
=cut
|
||||
|
||||
#Pod::HTML2Pod conversion notes:
|
||||
#From file ext_c_api.html
|
||||
# 6042 bytes of input
|
||||
#Wed Jun 29 13:18:15 2016 agentzh
|
||||
#Sat May 13 16:35:32 2017 agentzh
|
||||
# No a_name switch not specified, so will not try to render <a name='...'>
|
||||
# No a_href switch not specified, so will not try to render <a href='...'>
|
||||
# Deleting phrasal "code" element (`tt_18) because it has super-phrasal elements (`br_3) as children.
|
||||
|
@ -273,13 +273,13 @@ undue conversion penalties.
|
||||
|
||||
----
|
||||
|
||||
Copyright E<copy> 2005-2016 Mike Pall E<middot> Contact
|
||||
Copyright E<copy> 2005-2017 Mike Pall E<middot> Contact
|
||||
|
||||
=cut
|
||||
|
||||
#Pod::HTML2Pod conversion notes:
|
||||
#From file ext_ffi.html
|
||||
# 10336 bytes of input
|
||||
#Wed Jun 29 13:18:15 2016 agentzh
|
||||
#Sat May 13 16:35:32 2017 agentzh
|
||||
# No a_name switch not specified, so will not try to render <a name='...'>
|
||||
# No a_href switch not specified, so will not try to render <a href='...'>
|
||||
|
@ -488,14 +488,14 @@ itself still refers to a variable named C<i>.
|
||||
|
||||
----
|
||||
|
||||
Copyright E<copy> 2005-2016 Mike Pall E<middot> Contact
|
||||
Copyright E<copy> 2005-2017 Mike Pall E<middot> Contact
|
||||
|
||||
=cut
|
||||
|
||||
#Pod::HTML2Pod conversion notes:
|
||||
#From file ext_ffi_api.html
|
||||
# 21471 bytes of input
|
||||
#Wed Jun 29 13:18:15 2016 agentzh
|
||||
#Sat May 13 16:35:32 2017 agentzh
|
||||
# No a_name switch not specified, so will not try to render <a name='...'>
|
||||
# No a_href switch not specified, so will not try to render <a href='...'>
|
||||
# Deleting phrasal "code" element (`tt_157) because it has super-phrasal elements (`br_3, `br_4) as children.
|
||||
|
@ -1330,8 +1330,6 @@ exhibit suboptimal performance, especially when used in inner loops:
|
||||
|
||||
=over
|
||||
|
||||
=item * Bitfield accesses and initializations.
|
||||
|
||||
=item * Vector operations.
|
||||
|
||||
=item * Table initializers.
|
||||
@ -1341,7 +1339,7 @@ exhibit suboptimal performance, especially when used in inner loops:
|
||||
=item * Non-default initialization of VLA/VLS or large C types (E<gt>
|
||||
128 bytes or E<gt> 16 array elements.
|
||||
|
||||
=item * Conversions from lightuserdata to C<void *>.
|
||||
=item * Bitfield initializations.
|
||||
|
||||
=item * Pointer differences for element sizes that are not a power of
|
||||
two.
|
||||
@ -1375,13 +1373,13 @@ called via the FFI, if the call is compiled.
|
||||
|
||||
----
|
||||
|
||||
Copyright E<copy> 2005-2016 Mike Pall E<middot> Contact
|
||||
Copyright E<copy> 2005-2017 Mike Pall E<middot> Contact
|
||||
|
||||
=cut
|
||||
|
||||
#Pod::HTML2Pod conversion notes:
|
||||
#From file ext_ffi_semantics.html
|
||||
# 53847 bytes of input
|
||||
#Wed Jun 29 13:18:15 2016 agentzh
|
||||
# 53769 bytes of input
|
||||
#Sat May 13 16:35:32 2017 agentzh
|
||||
# No a_name switch not specified, so will not try to render <a name='...'>
|
||||
# No a_href switch not specified, so will not try to render <a href='...'>
|
||||
|
@ -609,14 +609,14 @@ function scope is unnecessary.
|
||||
|
||||
----
|
||||
|
||||
Copyright E<copy> 2005-2016 Mike Pall E<middot> Contact
|
||||
Copyright E<copy> 2005-2017 Mike Pall E<middot> Contact
|
||||
|
||||
=cut
|
||||
|
||||
#Pod::HTML2Pod conversion notes:
|
||||
#From file ext_ffi_tutorial.html
|
||||
# 22557 bytes of input
|
||||
#Wed Jun 29 13:18:15 2016 agentzh
|
||||
#Sat May 13 16:35:32 2017 agentzh
|
||||
# No a_name switch not specified, so will not try to render <a name='...'>
|
||||
# No a_href switch not specified, so will not try to render <a href='...'>
|
||||
# Deleting phrasal "code" element (`tt_100) because it has super-phrasal elements (`br_33, `br_34) as children.
|
||||
|
@ -168,14 +168,14 @@ know more.
|
||||
|
||||
----
|
||||
|
||||
Copyright E<copy> 2005-2016 Mike Pall E<middot> Contact
|
||||
Copyright E<copy> 2005-2017 Mike Pall E<middot> Contact
|
||||
|
||||
=cut
|
||||
|
||||
#Pod::HTML2Pod conversion notes:
|
||||
#From file ext_jit.html
|
||||
# 5903 bytes of input
|
||||
#Wed Jun 29 13:18:15 2016 agentzh
|
||||
#Sat May 13 16:35:32 2017 agentzh
|
||||
# No a_name switch not specified, so will not try to render <a name='...'>
|
||||
# No a_href switch not specified, so will not try to render <a href='...'>
|
||||
# Deleting phrasal "code" element (`tt_6) because it has super-phrasal elements (`br_2, `br_3) as children.
|
||||
|
@ -346,13 +346,13 @@ content immediately or copy it for later use.
|
||||
|
||||
----
|
||||
|
||||
Copyright E<copy> 2005-2016 Mike Pall E<middot> Contact
|
||||
Copyright E<copy> 2005-2017 Mike Pall E<middot> Contact
|
||||
|
||||
=cut
|
||||
|
||||
#Pod::HTML2Pod conversion notes:
|
||||
#From file ext_profiler.html
|
||||
# 13135 bytes of input
|
||||
#Wed Jun 29 13:18:15 2016 agentzh
|
||||
#Sat May 13 16:35:32 2017 agentzh
|
||||
# No a_name switch not specified, so will not try to render <a name='...'>
|
||||
# No a_href switch not specified, so will not try to render <a href='...'>
|
||||
|
@ -166,7 +166,8 @@ and cannot be loaded.
|
||||
|
||||
Note: C<LJ_GC64> mode requires a different frame layout, which implies
|
||||
a different, incompatible bytecode format for ports that use this mode
|
||||
(e.g. ARM64). This may be rectified in the future.
|
||||
(e.g. ARM64 or MIPS64) or when explicitly enabled for x64. This may be
|
||||
rectified in the future.
|
||||
|
||||
=head2 C<table.new(narray, nhash)> allocates a pre-sized table
|
||||
|
||||
@ -275,6 +276,13 @@ functions.
|
||||
|
||||
=item * C<debug.upvalueid()> and C<debug.upvaluejoin()>.
|
||||
|
||||
=item * Lua/C API extensions: C<lua_version()> C<lua_upvalueid()>
|
||||
C<lua_upvaluejoin()> C<lua_loadx()> C<lua_copy()> C<lua_tonumberx()>
|
||||
C<lua_tointegerx()> C<luaL_fileresult()> C<luaL_execresult()>
|
||||
C<luaL_loadfilex()> C<luaL_loadbufferx()> C<luaL_traceback()>
|
||||
C<luaL_setfuncs()> C<luaL_pushmodule()> C<luaL_newlibtable()>
|
||||
C<luaL_newlib()> C<luaL_testudata()> C<luaL_setmetatable()>
|
||||
|
||||
=item * Command line option C<-E>.
|
||||
|
||||
=item * Command line checks C<__tostring> for errors.
|
||||
@ -314,6 +322,10 @@ status.
|
||||
|
||||
=item * Remove C<math.mod()>, C<string.gfind()>.
|
||||
|
||||
=item * C<package.searchers>.
|
||||
|
||||
=item * C<module()> returns the module table.
|
||||
|
||||
=back
|
||||
|
||||
Note: this provides only partial compatibility with Lua 5.2 at the
|
||||
@ -330,6 +342,18 @@ LuaJIT supports some extensions from Lua 5.3:
|
||||
=item * Unicode escape C<'\u{XX...}'> embeds the UTF-8 encoding in
|
||||
string literals.
|
||||
|
||||
=item * The argument table C<arg> can be read (and modified) by
|
||||
C<LUA_INIT> and C<-e> chunks.
|
||||
|
||||
=item * C<io.read()> and C<file:read()> accept formats with or without
|
||||
a leading C<*>.
|
||||
|
||||
=item * C<table.move(a1, f, e, t [,a2])>.
|
||||
|
||||
=item * C<coroutine.isyieldable()>.
|
||||
|
||||
=item * Lua/C API extensions: C<lua_isyieldable()>
|
||||
|
||||
=back
|
||||
|
||||
=head2 C++ Exception Interoperability
|
||||
@ -441,13 +465,13 @@ destructors.
|
||||
|
||||
----
|
||||
|
||||
Copyright E<copy> 2005-2016 Mike Pall E<middot> Contact
|
||||
Copyright E<copy> 2005-2017 Mike Pall E<middot> Contact
|
||||
|
||||
=cut
|
||||
|
||||
#Pod::HTML2Pod conversion notes:
|
||||
#From file extensions.html
|
||||
# 16722 bytes of input
|
||||
#Wed Jun 29 13:18:15 2016 agentzh
|
||||
# 17733 bytes of input
|
||||
#Sat May 13 16:35:32 2017 agentzh
|
||||
# No a_name switch not specified, so will not try to render <a name='...'>
|
||||
# No a_href switch not specified, so will not try to render <a href='...'>
|
||||
|
@ -212,13 +212,13 @@ development of certain features, if they are important to you.
|
||||
|
||||
----
|
||||
|
||||
Copyright E<copy> 2005-2016 Mike Pall E<middot> Contact
|
||||
Copyright E<copy> 2005-2017 Mike Pall E<middot> Contact
|
||||
|
||||
=cut
|
||||
|
||||
#Pod::HTML2Pod conversion notes:
|
||||
#From file faq.html
|
||||
# 7685 bytes of input
|
||||
#Wed Jun 29 13:18:15 2016 agentzh
|
||||
#Sat May 13 16:35:32 2017 agentzh
|
||||
# No a_name switch not specified, so will not try to render <a name='...'>
|
||||
# No a_href switch not specified, so will not try to render <a href='...'>
|
||||
|
@ -185,6 +185,11 @@ MSVC or WinSDK.
|
||||
Please read the instructions given in these files, before changing any
|
||||
settings.
|
||||
|
||||
LuaJIT on x64 currently uses 32 bit GC objects by default. C<LJ_GC64>
|
||||
mode may be explicitly enabled: add C<XCFLAGS=-DLUAJIT_ENABLE_GC64> to
|
||||
the make command or run C<msvcbuild gc64> for MSVC/WinSDK. Please check
|
||||
the note about the bytecode format differences, too.
|
||||
|
||||
=head2 POSIX Systems (Linux, OSX, *BSD etc.)
|
||||
|
||||
=head2 Prerequisites
|
||||
@ -198,8 +203,8 @@ you haven't already done so. Move it to a directory of your choice,
|
||||
open a terminal window and change to this directory. Now unpack the
|
||||
archive and change to the newly created directory:
|
||||
|
||||
tar zxf LuaJIT-2.0.4.tar.gz
|
||||
cd LuaJIT-2.0.4
|
||||
tar zxf LuaJIT-2.0.5.tar.gz
|
||||
cd LuaJIT-2.0.5
|
||||
|
||||
=head2 Building LuaJIT
|
||||
|
||||
@ -491,14 +496,15 @@ Apple, not me. Or use Android. :-p
|
||||
ISDKP=$(xcrun --sdk iphoneos --show-sdk-path)
|
||||
ICC=$(xcrun --sdk iphoneos --find clang)
|
||||
ISDKF="-arch armv7 -isysroot $ISDKP"
|
||||
make HOST_CC="clang -m32 -arch i386" CROSS="$(dirname $ICC)/" \
|
||||
TARGET_FLAGS="$ISDKF" TARGET_SYS=iOS
|
||||
make DEFAULT_CC=clang HOST_CC="clang -m32 -arch i386" \
|
||||
CROSS="$(dirname $ICC)/" TARGET_FLAGS="$ISDKF" TARGET_SYS=iOS
|
||||
|
||||
# iOS/ARM64
|
||||
ISDKP=$(xcrun --sdk iphoneos --show-sdk-path)
|
||||
ICC=$(xcrun --sdk iphoneos --find clang)
|
||||
ISDKF="-arch arm64 -isysroot $ISDKP"
|
||||
make CROSS="$(dirname $ICC)/" TARGET_FLAGS="$ISDKF" TARGET_SYS=iOS
|
||||
make DEFAULT_CC=clang CROSS="$(dirname $ICC)/" \
|
||||
TARGET_FLAGS="$ISDKF" TARGET_SYS=iOS
|
||||
|
||||
=head2 Cross-compiling for consoles
|
||||
|
||||
@ -586,15 +592,11 @@ don't intend to load Lua/C modules at runtime.
|
||||
=back
|
||||
|
||||
=item * If you're building a 64 bit application on OSX which links
|
||||
directly or indirectly against LuaJIT, you need to link your main
|
||||
executable with these flags:
|
||||
directly or indirectly against LuaJIT which is not built for C<LJ_GC64>
|
||||
mode, you need to link your main executable with these flags:
|
||||
|
||||
-pagezero_size 10000 -image_base 100000000
|
||||
|
||||
Also, it's recommended to C<rebase> all (self-compiled) shared
|
||||
libraries which are loaded at runtime on OSX/x64 (e.g. C extension
|
||||
modules for Lua). See: C<man rebase>
|
||||
|
||||
=back
|
||||
|
||||
Additional hints for initializing LuaJIT using the C API functions:
|
||||
@ -683,14 +685,14 @@ package maintainer), anyway.
|
||||
|
||||
----
|
||||
|
||||
Copyright E<copy> 2005-2016 Mike Pall E<middot> Contact
|
||||
Copyright E<copy> 2005-2017 Mike Pall E<middot> Contact
|
||||
|
||||
=cut
|
||||
|
||||
#Pod::HTML2Pod conversion notes:
|
||||
#From file install.html
|
||||
# 25008 bytes of input
|
||||
#Wed Jun 29 13:18:15 2016 agentzh
|
||||
# 25250 bytes of input
|
||||
#Sat May 13 16:35:32 2017 agentzh
|
||||
# No a_name switch not specified, so will not try to render <a name='...'>
|
||||
# No a_href switch not specified, so will not try to render <a href='...'>
|
||||
# Deleting phrasal "a" element (`a_34) because it has super-phrasal elements (`br_16) as children.
|
||||
|
@ -197,7 +197,7 @@ They are mainly used for debugging the JIT compiler itself. For a
|
||||
description of their options and output format, please read the comment
|
||||
block at the start of their source. They can be found in the C<lib>
|
||||
directory of the source distribution or installed under the C<jit>
|
||||
directory. By default this is C</usr/local/share/luajit-2.0.4/jit> on
|
||||
directory. By default this is C</usr/local/share/luajit-2.0.5/jit> on
|
||||
POSIX systems.
|
||||
|
||||
=head2 C<-O[level]>
|
||||
@ -409,13 +409,13 @@ Max. total size of all machine code areas in KBytes
|
||||
|
||||
----
|
||||
|
||||
Copyright E<copy> 2005-2016 Mike Pall E<middot> Contact
|
||||
Copyright E<copy> 2005-2017 Mike Pall E<middot> Contact
|
||||
|
||||
=cut
|
||||
|
||||
#Pod::HTML2Pod conversion notes:
|
||||
#From file running.html
|
||||
# 13720 bytes of input
|
||||
#Wed Jun 29 13:18:15 2016 agentzh
|
||||
#Sat May 13 16:35:32 2017 agentzh
|
||||
# No a_name switch not specified, so will not try to render <a name='...'>
|
||||
# No a_href switch not specified, so will not try to render <a href='...'>
|
||||
|
@ -87,17 +87,27 @@ are not handled correctly. The error may fall through an on-trace
|
||||
C<pcall> or it may be passed on to the function set with C<lua_atpanic>
|
||||
on x64. This issue will be fixed with the new garbage collector.
|
||||
|
||||
=item * LuaJIT on 64 bit systems provides a B<limited range> of 47 bits
|
||||
for the B<legacy C<lightuserdata>> data type. This is only relevant on
|
||||
x64 systems which use the negative part of the virtual address space in
|
||||
user mode, e.g. Solaris/x64, and on ARM64 systems configured with a 48
|
||||
bit or 52 bit VA. Avoid using C<lightuserdata> to hold pointers that
|
||||
may point outside of that range, e.g. variables on the stack. In
|
||||
general, avoid this data type for new code and replace it with (much
|
||||
more performant) FFI bindings. FFI cdata pointers can address the full
|
||||
64 bit range.
|
||||
|
||||
=back
|
||||
|
||||
----
|
||||
|
||||
Copyright E<copy> 2005-2016 Mike Pall E<middot> Contact
|
||||
Copyright E<copy> 2005-2017 Mike Pall E<middot> Contact
|
||||
|
||||
=cut
|
||||
|
||||
#Pod::HTML2Pod conversion notes:
|
||||
#From file status.html
|
||||
# 3334 bytes of input
|
||||
#Wed Jun 29 13:18:15 2016 agentzh
|
||||
# 3931 bytes of input
|
||||
#Sat May 13 16:35:32 2017 agentzh
|
||||
# No a_name switch not specified, so will not try to render <a name='...'>
|
||||
# No a_href switch not specified, so will not try to render <a href='...'>
|
||||
|
@ -6,9 +6,9 @@ README-win32 - README for the Windows 32-bit build of OpenResty
|
||||
Description
|
||||
===========
|
||||
|
||||
The binary distributions of OpenResty can be downloaded from the following web page:
|
||||
The official binary Win32 distribution of OpenResty can be downloaded from the following web page:
|
||||
|
||||
https://openresty.org/#Download
|
||||
https://openresty.org/en/download.html
|
||||
|
||||
To start the NGINX server of the nginx server of the Win32 binary distribution of OpenResty:
|
||||
|
||||
@ -124,25 +124,58 @@ MinGW gcc 4.8.1, MSYS perl, MSYS bash, MSYS make, and etc. Basically, it is curr
|
||||
the following cmmands:
|
||||
|
||||
```bash
|
||||
PCRE=pcre-8.39
|
||||
ZLIB=zlib-1.2.8
|
||||
OPENSSL=openssl-1.0.2j
|
||||
|
||||
mkdir -p objs/lib || exit 1
|
||||
cd objs/lib || exit 1
|
||||
ls ../../..
|
||||
tar -xf ../../../openssl-1.0.2d.tar.gz
|
||||
tar -xf ../../../zlib-1.2.8.tar.gz
|
||||
tar -xf ../../../pcre-8.37.tar.gz
|
||||
tar -xf ../../../$OPENSSL.tar.gz || exit 1
|
||||
tar -xf ../../../$ZLIB.tar.gz || exit 1
|
||||
tar -xf ../../../$PCRE.tar.gz || exit 1
|
||||
cd ../..
|
||||
./configure --with-cc=gcc \
|
||||
|
||||
cd objs/lib/$OPENSSL || exit 1
|
||||
patch -p1 < ../../../patches/openssl-1.0.2h-sess_set_get_cb_yield.patch || exit 1
|
||||
cd ../../..
|
||||
|
||||
./configure \
|
||||
--with-cc=gcc \
|
||||
--with-ipv6 \
|
||||
--prefix= \
|
||||
--with-cc-opt='-DFD_SETSIZE=1024' \
|
||||
--with-select_module \
|
||||
--with-ipv6 \
|
||||
--sbin-path=nginx.exe \
|
||||
--with-pcre-jit \
|
||||
--without-http_rds_json_module \
|
||||
--without-http_rds_csv_module \
|
||||
--without-lua_rds_parser \
|
||||
--with-ipv6 \
|
||||
--with-stream \
|
||||
--with-stream_ssl_module \
|
||||
--with-http_v2_module \
|
||||
--without-mail_pop3_module \
|
||||
--without-mail_imap_module \
|
||||
--without-mail_smtp_module \
|
||||
--with-http_stub_status_module \
|
||||
--with-http_realip_module \
|
||||
--with-http_addition_module \
|
||||
--with-http_auth_request_module \
|
||||
--with-http_secure_link_module \
|
||||
--with-http_random_index_module \
|
||||
--with-http_gzip_static_module \
|
||||
--with-http_sub_module \
|
||||
--with-http_dav_module \
|
||||
--with-http_flv_module \
|
||||
--with-http_mp4_module \
|
||||
--with-http_gunzip_module \
|
||||
--with-select_module \
|
||||
--with-luajit-xcflags="-DLUAJIT_NUMMODE=2 -DLUAJIT_ENABLE_LUA52COMPAT" \
|
||||
--with-pcre=objs/lib/pcre-8.37 \
|
||||
--with-zlib=objs/lib/zlib-1.2.8 \
|
||||
--with-openssl=objs/lib/openssl-1.0.2d \
|
||||
-j5
|
||||
--with-pcre=objs/lib/$PCRE \
|
||||
--with-zlib=objs/lib/$ZLIB \
|
||||
--with-openssl=objs/lib/$OPENSSL \
|
||||
-j5 || exit 1
|
||||
|
||||
make
|
||||
make install
|
||||
```
|
||||
@ -162,14 +195,14 @@ installing the build toolchain.
|
||||
Author
|
||||
======
|
||||
|
||||
Yichun "agentzh" Zhang <agentzh@gmail.com>, CloudFlare Inc.
|
||||
Yichun "agentzh" Zhang <agentzh@gmail.com>, OpenResty Inc.
|
||||
|
||||
Copyright & License
|
||||
===================
|
||||
|
||||
This module is licensed under the BSD license.
|
||||
|
||||
Copyright (C) 2015-2016, by Yichun "agentzh" Zhang (章亦春) <agentzh@gmail.com>, CloudFlare Inc.
|
||||
Copyright (C) 2015-2016, by Yichun "agentzh" Zhang (章亦春) <agentzh@gmail.com>, OpenResty Inc.
|
||||
|
||||
All rights reserved.
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
||||
working. Further configuration is required.</p>
|
||||
|
||||
<p>For online documentation and support please refer to
|
||||
<a href="https://openresty.org/">openresty.org</a>.<br/>
|
||||
<a href="https://openresty.org/">openresty.org</a>.<br/></p>
|
||||
|
||||
<p><em>Thank you for flying OpenResty.</em></p>
|
||||
</body>
|
||||
|
27
patches/nginx-1.11.2-balancer_status_code.patch
Normal file
27
patches/nginx-1.11.2-balancer_status_code.patch
Normal file
@ -0,0 +1,27 @@
|
||||
diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c
|
||||
index 0f6b3ae..56d44fc 100644
|
||||
--- a/src/http/ngx_http_upstream.c
|
||||
+++ b/src/http/ngx_http_upstream.c
|
||||
@@ -1368,6 +1368,11 @@ ngx_http_upstream_connect(ngx_http_request_t *r, ngx_http_upstream_t *u)
|
||||
return;
|
||||
}
|
||||
|
||||
+ if (rc >= NGX_HTTP_SPECIAL_RESPONSE) {
|
||||
+ ngx_http_upstream_finalize_request(r, u, rc);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
u->state->peer = u->peer.name;
|
||||
|
||||
if (rc == NGX_BUSY) {
|
||||
diff --git a/src/http/ngx_http_upstream.h b/src/http/ngx_http_upstream.h
|
||||
index b288f28..9b60e12 100644
|
||||
--- a/src/http/ngx_http_upstream.h
|
||||
+++ b/src/http/ngx_http_upstream.h
|
||||
@@ -418,5 +418,6 @@ extern ngx_module_t ngx_http_upstream_module;
|
||||
extern ngx_conf_bitmask_t ngx_http_upstream_cache_method_mask[];
|
||||
extern ngx_conf_bitmask_t ngx_http_upstream_ignore_headers_masks[];
|
||||
|
||||
+#define HAVE_BALANCER_STATUS_CODE_PATCH
|
||||
|
||||
#endif /* _NGX_HTTP_UPSTREAM_H_INCLUDED_ */
|
13
patches/nginx-1.11.2-builtin_error_page_footer.patch
Normal file
13
patches/nginx-1.11.2-builtin_error_page_footer.patch
Normal file
@ -0,0 +1,13 @@
|
||||
diff --git a/src/http/ngx_http_special_response.c b/src/http/ngx_http_special_response.c
|
||||
index 64e5acd..f5374f6 100644
|
||||
--- a/src/http/ngx_http_special_response.c
|
||||
+++ b/src/http/ngx_http_special_response.c
|
||||
@@ -26,7 +26,7 @@ static u_char ngx_http_error_full_tail[] =
|
||||
|
||||
|
||||
static u_char ngx_http_error_tail[] =
|
||||
-"<hr><center>nginx</center>" CRLF
|
||||
+"<hr><center>openresty</center>" CRLF
|
||||
"</body>" CRLF
|
||||
"</html>" CRLF
|
||||
;
|
98
patches/nginx-1.11.2-delayed_posted_events.patch
Normal file
98
patches/nginx-1.11.2-delayed_posted_events.patch
Normal file
@ -0,0 +1,98 @@
|
||||
diff --git a/src/event/ngx_event.c b/src/event/ngx_event.c
|
||||
index 57af8132..4853945f 100644
|
||||
--- a/src/event/ngx_event.c
|
||||
+++ b/src/event/ngx_event.c
|
||||
@@ -196,6 +196,9 @@ ngx_process_events_and_timers(ngx_cycle_t *cycle)
|
||||
ngx_uint_t flags;
|
||||
ngx_msec_t timer, delta;
|
||||
|
||||
+ ngx_queue_t *q;
|
||||
+ ngx_event_t *ev;
|
||||
+
|
||||
if (ngx_timer_resolution) {
|
||||
timer = NGX_TIMER_INFINITE;
|
||||
flags = 0;
|
||||
@@ -215,6 +218,13 @@ ngx_process_events_and_timers(ngx_cycle_t *cycle)
|
||||
#endif
|
||||
}
|
||||
|
||||
+ if (!ngx_queue_empty(&ngx_posted_delayed_events)) {
|
||||
+ ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
|
||||
+ "posted delayed event queue not empty"
|
||||
+ " making poll timeout 0");
|
||||
+ timer = 0;
|
||||
+ }
|
||||
+
|
||||
if (ngx_use_accept_mutex) {
|
||||
if (ngx_accept_disabled > 0) {
|
||||
ngx_accept_disabled--;
|
||||
@@ -257,6 +267,35 @@ ngx_process_events_and_timers(ngx_cycle_t *cycle)
|
||||
}
|
||||
|
||||
ngx_event_process_posted(cycle, &ngx_posted_events);
|
||||
+
|
||||
+ while (!ngx_queue_empty(&ngx_posted_delayed_events)) {
|
||||
+ q = ngx_queue_head(&ngx_posted_delayed_events);
|
||||
+
|
||||
+ ev = ngx_queue_data(q, ngx_event_t, queue);
|
||||
+ if (ev->delayed) {
|
||||
+ /* start of newly inserted nodes */
|
||||
+ for (/* void */;
|
||||
+ q != ngx_queue_sentinel(&ngx_posted_delayed_events);
|
||||
+ q = ngx_queue_next(q))
|
||||
+ {
|
||||
+ ev = ngx_queue_data(q, ngx_event_t, queue);
|
||||
+ ev->delayed = 0;
|
||||
+
|
||||
+ ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
|
||||
+ "skipping delayed posted event %p,"
|
||||
+ " till next iteration", ev);
|
||||
+ }
|
||||
+
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
|
||||
+ "delayed posted event %p", ev);
|
||||
+
|
||||
+ ngx_delete_posted_event(ev);
|
||||
+
|
||||
+ ev->handler(ev);
|
||||
+ }
|
||||
}
|
||||
|
||||
|
||||
@@ -600,6 +639,7 @@ ngx_event_process_init(ngx_cycle_t *cycle)
|
||||
|
||||
ngx_queue_init(&ngx_posted_accept_events);
|
||||
ngx_queue_init(&ngx_posted_events);
|
||||
+ ngx_queue_init(&ngx_posted_delayed_events);
|
||||
|
||||
if (ngx_event_timer_init(cycle->log) == NGX_ERROR) {
|
||||
return NGX_ERROR;
|
||||
diff --git a/src/event/ngx_event_posted.c b/src/event/ngx_event_posted.c
|
||||
index d851f3d1..b6cea009 100644
|
||||
--- a/src/event/ngx_event_posted.c
|
||||
+++ b/src/event/ngx_event_posted.c
|
||||
@@ -12,6 +12,7 @@
|
||||
|
||||
ngx_queue_t ngx_posted_accept_events;
|
||||
ngx_queue_t ngx_posted_events;
|
||||
+ngx_queue_t ngx_posted_delayed_events;
|
||||
|
||||
|
||||
void
|
||||
diff --git a/src/event/ngx_event_posted.h b/src/event/ngx_event_posted.h
|
||||
index 145d30fe..6c388553 100644
|
||||
--- a/src/event/ngx_event_posted.h
|
||||
+++ b/src/event/ngx_event_posted.h
|
||||
@@ -43,6 +43,9 @@ void ngx_event_process_posted(ngx_cycle_t *cycle, ngx_queue_t *posted);
|
||||
|
||||
extern ngx_queue_t ngx_posted_accept_events;
|
||||
extern ngx_queue_t ngx_posted_events;
|
||||
+extern ngx_queue_t ngx_posted_delayed_events;
|
||||
+
|
||||
+#define HAVE_POSTED_DELAYED_EVENTS_PATCH
|
||||
|
||||
|
||||
#endif /* _NGX_EVENT_POSTED_H_INCLUDED_ */
|
60
patches/nginx-1.11.2-intercept_error_log.patch
Normal file
60
patches/nginx-1.11.2-intercept_error_log.patch
Normal file
@ -0,0 +1,60 @@
|
||||
diff --git a/src/core/ngx_cycle.h b/src/core/ngx_cycle.h
|
||||
index c51b7ff..4c335b9 100644
|
||||
--- a/src/core/ngx_cycle.h
|
||||
+++ b/src/core/ngx_cycle.h
|
||||
@@ -22,9 +22,14 @@
|
||||
#define NGX_DEBUG_POINTS_ABORT 2
|
||||
|
||||
|
||||
+#define HAVE_INTERCEPT_ERROR_LOG_PATCH
|
||||
+
|
||||
+
|
||||
typedef struct ngx_shm_zone_s ngx_shm_zone_t;
|
||||
|
||||
typedef ngx_int_t (*ngx_shm_zone_init_pt) (ngx_shm_zone_t *zone, void *data);
|
||||
+typedef ngx_int_t (*ngx_log_intercept_pt) (ngx_log_t *log, ngx_uint_t level,
|
||||
+ u_char *buf, size_t len);
|
||||
|
||||
struct ngx_shm_zone_s {
|
||||
void *data;
|
||||
@@ -75,6 +80,10 @@ struct ngx_cycle_s {
|
||||
ngx_str_t prefix;
|
||||
ngx_str_t lock_file;
|
||||
ngx_str_t hostname;
|
||||
+
|
||||
+ ngx_log_intercept_pt intercept_error_log_handler;
|
||||
+ void *intercept_error_log_data;
|
||||
+ unsigned entered_logger; /* :1 */
|
||||
};
|
||||
|
||||
|
||||
diff --git a/src/core/ngx_log.c b/src/core/ngx_log.c
|
||||
index 8e9408d..ed9b11b 100644
|
||||
--- a/src/core/ngx_log.c
|
||||
+++ b/src/core/ngx_log.c
|
||||
@@ -112,6 +112,8 @@ ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err,
|
||||
ngx_uint_t wrote_stderr, debug_connection;
|
||||
u_char errstr[NGX_MAX_ERROR_STR];
|
||||
|
||||
+ ngx_log_intercept_pt log_intercept = NULL;
|
||||
+
|
||||
last = errstr + NGX_MAX_ERROR_STR;
|
||||
|
||||
p = ngx_cpymem(errstr, ngx_cached_err_log_time.data,
|
||||
@@ -153,6 +155,16 @@ ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err,
|
||||
p = last - NGX_LINEFEED_SIZE;
|
||||
}
|
||||
|
||||
+ if (ngx_cycle) {
|
||||
+ log_intercept = ngx_cycle->intercept_error_log_handler;
|
||||
+ }
|
||||
+
|
||||
+ if (log_intercept && !ngx_cycle->entered_logger) {
|
||||
+ ngx_cycle->entered_logger = 1;
|
||||
+ log_intercept(log, level, errstr, p - errstr);
|
||||
+ ngx_cycle->entered_logger = 0;
|
||||
+ }
|
||||
+
|
||||
ngx_linefeed(p);
|
||||
|
||||
wrote_stderr = 0;
|
211
patches/nginx-1.11.2-privileged_agent_process.patch
Normal file
211
patches/nginx-1.11.2-privileged_agent_process.patch
Normal file
@ -0,0 +1,211 @@
|
||||
diff --git a/src/core/nginx.c b/src/core/nginx.c
|
||||
index 60f8fe7..4bd244b 100644
|
||||
--- a/src/core/nginx.c
|
||||
+++ b/src/core/nginx.c
|
||||
@@ -981,6 +981,7 @@ ngx_core_module_create_conf(ngx_cycle_t *cycle)
|
||||
|
||||
ccf->daemon = NGX_CONF_UNSET;
|
||||
ccf->master = NGX_CONF_UNSET;
|
||||
+ ccf->privileged_agent = NGX_CONF_UNSET;
|
||||
ccf->timer_resolution = NGX_CONF_UNSET_MSEC;
|
||||
|
||||
ccf->worker_processes = NGX_CONF_UNSET;
|
||||
@@ -1009,6 +1010,7 @@ ngx_core_module_init_conf(ngx_cycle_t *cycle, void *conf)
|
||||
|
||||
ngx_conf_init_value(ccf->daemon, 1);
|
||||
ngx_conf_init_value(ccf->master, 1);
|
||||
+ ngx_conf_init_value(ccf->privileged_agent, 0);
|
||||
ngx_conf_init_msec_value(ccf->timer_resolution, 0);
|
||||
|
||||
ngx_conf_init_value(ccf->worker_processes, 1);
|
||||
diff --git a/src/core/ngx_cycle.h b/src/core/ngx_cycle.h
|
||||
index c51b7ff..3261f90 100644
|
||||
--- a/src/core/ngx_cycle.h
|
||||
+++ b/src/core/ngx_cycle.h
|
||||
@@ -22,6 +22,9 @@
|
||||
#define NGX_DEBUG_POINTS_ABORT 2
|
||||
|
||||
|
||||
+#define HAVE_PRIVILEGED_PROCESS_PATCH 1
|
||||
+
|
||||
+
|
||||
typedef struct ngx_shm_zone_s ngx_shm_zone_t;
|
||||
|
||||
typedef ngx_int_t (*ngx_shm_zone_init_pt) (ngx_shm_zone_t *zone, void *data);
|
||||
@@ -81,6 +84,7 @@ struct ngx_cycle_s {
|
||||
typedef struct {
|
||||
ngx_flag_t daemon;
|
||||
ngx_flag_t master;
|
||||
+ ngx_flag_t privileged_agent;
|
||||
|
||||
ngx_msec_t timer_resolution;
|
||||
|
||||
diff --git a/src/os/unix/ngx_process_cycle.c b/src/os/unix/ngx_process_cycle.c
|
||||
index 7cee1c5..c4f70d6 100644
|
||||
--- a/src/os/unix/ngx_process_cycle.c
|
||||
+++ b/src/os/unix/ngx_process_cycle.c
|
||||
@@ -15,6 +15,8 @@ static void ngx_start_worker_processes(ngx_cycle_t *cycle, ngx_int_t n,
|
||||
ngx_int_t type);
|
||||
static void ngx_start_cache_manager_processes(ngx_cycle_t *cycle,
|
||||
ngx_uint_t respawn);
|
||||
+static void ngx_start_privileged_agent_processes(ngx_cycle_t *cycle,
|
||||
+ ngx_uint_t respawn);
|
||||
static void ngx_pass_open_channel(ngx_cycle_t *cycle, ngx_channel_t *ch);
|
||||
static void ngx_signal_worker_processes(ngx_cycle_t *cycle, int signo);
|
||||
static ngx_uint_t ngx_reap_children(ngx_cycle_t *cycle);
|
||||
@@ -24,6 +26,7 @@ static void ngx_worker_process_init(ngx_cycle_t *cycle, ngx_int_t worker);
|
||||
static void ngx_worker_process_exit(ngx_cycle_t *cycle);
|
||||
static void ngx_channel_handler(ngx_event_t *ev);
|
||||
static void ngx_cache_manager_process_cycle(ngx_cycle_t *cycle, void *data);
|
||||
+static void ngx_privileged_agent_process_cycle(ngx_cycle_t *cycle, void *data);
|
||||
static void ngx_cache_manager_process_handler(ngx_event_t *ev);
|
||||
static void ngx_cache_loader_process_handler(ngx_event_t *ev);
|
||||
|
||||
@@ -51,6 +54,8 @@ sig_atomic_t ngx_noaccept;
|
||||
ngx_uint_t ngx_noaccepting;
|
||||
ngx_uint_t ngx_restart;
|
||||
|
||||
+ngx_uint_t ngx_is_privileged_agent;
|
||||
+
|
||||
|
||||
static u_char master_process[] = "master process";
|
||||
|
||||
@@ -130,6 +135,7 @@ ngx_master_process_cycle(ngx_cycle_t *cycle)
|
||||
ngx_start_worker_processes(cycle, ccf->worker_processes,
|
||||
NGX_PROCESS_RESPAWN);
|
||||
ngx_start_cache_manager_processes(cycle, 0);
|
||||
+ ngx_start_privileged_agent_processes(cycle, 0);
|
||||
|
||||
ngx_new_binary = 0;
|
||||
delay = 0;
|
||||
@@ -224,6 +230,7 @@ ngx_master_process_cycle(ngx_cycle_t *cycle)
|
||||
ngx_start_worker_processes(cycle, ccf->worker_processes,
|
||||
NGX_PROCESS_RESPAWN);
|
||||
ngx_start_cache_manager_processes(cycle, 0);
|
||||
+ ngx_start_privileged_agent_processes(cycle, 0);
|
||||
ngx_noaccepting = 0;
|
||||
|
||||
continue;
|
||||
@@ -243,6 +250,7 @@ ngx_master_process_cycle(ngx_cycle_t *cycle)
|
||||
ngx_start_worker_processes(cycle, ccf->worker_processes,
|
||||
NGX_PROCESS_JUST_RESPAWN);
|
||||
ngx_start_cache_manager_processes(cycle, 1);
|
||||
+ ngx_start_privileged_agent_processes(cycle, 1);
|
||||
|
||||
/* allow new processes to start */
|
||||
ngx_msleep(100);
|
||||
@@ -257,6 +265,7 @@ ngx_master_process_cycle(ngx_cycle_t *cycle)
|
||||
ngx_start_worker_processes(cycle, ccf->worker_processes,
|
||||
NGX_PROCESS_RESPAWN);
|
||||
ngx_start_cache_manager_processes(cycle, 0);
|
||||
+ ngx_start_privileged_agent_processes(cycle, 0);
|
||||
live = 1;
|
||||
}
|
||||
|
||||
@@ -424,6 +433,34 @@ ngx_start_cache_manager_processes(ngx_cycle_t *cycle, ngx_uint_t respawn)
|
||||
|
||||
|
||||
static void
|
||||
+ngx_start_privileged_agent_processes(ngx_cycle_t *cycle, ngx_uint_t respawn)
|
||||
+{
|
||||
+ ngx_channel_t ch;
|
||||
+ ngx_core_conf_t *ccf;
|
||||
+
|
||||
+ ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx,
|
||||
+ ngx_core_module);
|
||||
+
|
||||
+ if (!ccf->privileged_agent) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ ngx_spawn_process(cycle, ngx_privileged_agent_process_cycle,
|
||||
+ "privileged agent process", "privileged agent process",
|
||||
+ respawn ? NGX_PROCESS_JUST_RESPAWN : NGX_PROCESS_RESPAWN);
|
||||
+
|
||||
+ ngx_memzero(&ch, sizeof(ngx_channel_t));
|
||||
+
|
||||
+ ch.command = NGX_CMD_OPEN_CHANNEL;
|
||||
+ ch.pid = ngx_processes[ngx_process_slot].pid;
|
||||
+ ch.slot = ngx_process_slot;
|
||||
+ ch.fd = ngx_processes[ngx_process_slot].channel[0];
|
||||
+
|
||||
+ ngx_pass_open_channel(cycle, &ch);
|
||||
+}
|
||||
+
|
||||
+
|
||||
+static void
|
||||
ngx_pass_open_channel(ngx_cycle_t *cycle, ngx_channel_t *ch)
|
||||
{
|
||||
ngx_int_t i;
|
||||
@@ -827,7 +864,10 @@ ngx_worker_process_init(ngx_cycle_t *cycle, ngx_int_t worker)
|
||||
}
|
||||
}
|
||||
|
||||
- if (geteuid() == 0) {
|
||||
+ /*
|
||||
+ * privileged agent process has the same permission as master process
|
||||
+ */
|
||||
+ if (!ngx_is_privileged_agent && geteuid() == 0) {
|
||||
if (setgid(ccf->group) == -1) {
|
||||
ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
|
||||
"setgid(%d) failed", ccf->group);
|
||||
@@ -1144,6 +1184,47 @@ ngx_cache_manager_process_cycle(ngx_cycle_t *cycle, void *data)
|
||||
|
||||
|
||||
static void
|
||||
+ngx_privileged_agent_process_cycle(ngx_cycle_t *cycle, void *data)
|
||||
+{
|
||||
+ char *name = data;
|
||||
+
|
||||
+ /*
|
||||
+ * Set correct process type since closing listening Unix domain socket
|
||||
+ * in a master process also removes the Unix domain socket file.
|
||||
+ */
|
||||
+ ngx_process = NGX_PROCESS_HELPER;
|
||||
+ ngx_is_privileged_agent = 1;
|
||||
+
|
||||
+ ngx_close_listening_sockets(cycle);
|
||||
+
|
||||
+ /* Set a moderate number of connections for a helper process. */
|
||||
+ cycle->connection_n = 512;
|
||||
+
|
||||
+ ngx_worker_process_init(cycle, -1);
|
||||
+
|
||||
+ ngx_use_accept_mutex = 0;
|
||||
+
|
||||
+ ngx_setproctitle(name);
|
||||
+
|
||||
+ for ( ;; ) {
|
||||
+
|
||||
+ if (ngx_terminate || ngx_quit) {
|
||||
+ ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "exiting");
|
||||
+ ngx_worker_process_exit(cycle);
|
||||
+ }
|
||||
+
|
||||
+ if (ngx_reopen) {
|
||||
+ ngx_reopen = 0;
|
||||
+ ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "reopening logs");
|
||||
+ ngx_reopen_files(cycle, -1);
|
||||
+ }
|
||||
+
|
||||
+ ngx_process_events_and_timers(cycle);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+
|
||||
+static void
|
||||
ngx_cache_manager_process_handler(ngx_event_t *ev)
|
||||
{
|
||||
time_t next, n;
|
||||
diff --git a/src/os/unix/ngx_process_cycle.h b/src/os/unix/ngx_process_cycle.h
|
||||
index 69495d5..5149396 100644
|
||||
--- a/src/os/unix/ngx_process_cycle.h
|
||||
+++ b/src/os/unix/ngx_process_cycle.h
|
||||
@@ -45,6 +45,7 @@ extern ngx_pid_t ngx_new_binary;
|
||||
extern ngx_uint_t ngx_inherited;
|
||||
extern ngx_uint_t ngx_daemonized;
|
||||
extern ngx_uint_t ngx_exiting;
|
||||
+extern ngx_uint_t ngx_is_privileged_agent;
|
||||
|
||||
extern sig_atomic_t ngx_reap;
|
||||
extern sig_atomic_t ngx_sigio;
|
@ -1,6 +1,6 @@
|
||||
--- nginx-1.11.2/src/http/modules/ngx_http_proxy_module.c 2013-10-08 05:07:14.000000000 -0700
|
||||
+++ nginx-1.11.2-patched/src/http/modules/ngx_http_proxy_module.c 2013-10-27 15:29:41.619378592 -0700
|
||||
@@ -602,10 +602,10 @@ static ngx_keyval_t ngx_http_proxy_cach
|
||||
--- nginx-1.11.2/src/http/modules/ngx_http_proxy_module.c 2017-07-16 14:02:51.000000000 +0800
|
||||
+++ nginx-1.11.2-patched/src/http/modules/ngx_http_proxy_module.c 2017-07-16 14:02:51.000000000 +0800
|
||||
@@ -793,13 +793,13 @@ static ngx_keyval_t ngx_http_proxy_cach
|
||||
static ngx_http_variable_t ngx_http_proxy_vars[] = {
|
||||
|
||||
{ ngx_string("proxy_host"), NULL, ngx_http_proxy_host_variable, 0,
|
||||
@ -12,4 +12,8 @@
|
||||
+ NGX_HTTP_VAR_CHANGEABLE|NGX_HTTP_VAR_NOCACHEABLE, 0 },
|
||||
|
||||
{ ngx_string("proxy_add_x_forwarded_for"), NULL,
|
||||
ngx_http_proxy_add_x_forwarded_for_variable, 0, NGX_HTTP_VAR_NOHASH, 0 },
|
||||
- ngx_http_proxy_add_x_forwarded_for_variable, 0, NGX_HTTP_VAR_NOHASH, 0 },
|
||||
+ ngx_http_proxy_add_x_forwarded_for_variable, 0, 0, 0 },
|
||||
|
||||
#if 0
|
||||
{ ngx_string("proxy_add_via"), NULL, NULL, 0, NGX_HTTP_VAR_NOHASH, 0 },
|
||||
|
55
patches/nginx-1.11.2-safe_resolver_ipv6_option.patch
Normal file
55
patches/nginx-1.11.2-safe_resolver_ipv6_option.patch
Normal file
@ -0,0 +1,55 @@
|
||||
# HG changeset patch
|
||||
# User Thibault Charbonnier <thibaultcha@fastmail.com>
|
||||
# Date 1481847421 28800
|
||||
# Thu Dec 15 16:17:01 2016 -0800
|
||||
# Node ID 8bf038fe006fd8ae253d6b41fc6cf109a8912d3e
|
||||
# Parent a3dc657f4e9530623683e6b85bd7492662e4dc47
|
||||
Resolver: ignore ipv6=off resolver option when no ipv6 support
|
||||
|
||||
Makes the resolver directive more robust: we only error out when ipv6
|
||||
resolution is desired but not supported (ipv6=on).
|
||||
|
||||
use case 1: some configurations are sometimes re-used between builds with and
|
||||
without ipv6 support. This patch avoids the need to remove the "ipv6=off" flag.
|
||||
|
||||
use case 2: currently, some tools rely on the --with-ipv6 configure option from
|
||||
"nginx -V" to determine if ipv6 resolution should be disabled in some cases.
|
||||
With this option disappearing in Nginx 1.11.5, this patch would allow such tools
|
||||
to assume "ipv6=off" to be safe regardless of ipv6 support in the current
|
||||
build.
|
||||
|
||||
diff -r a3dc657f4e95 -r 8bf038fe006f src/core/ngx_resolver.c
|
||||
--- a/src/core/ngx_resolver.c Thu Dec 15 21:44:34 2016 +0300
|
||||
+++ b/src/core/ngx_resolver.c Thu Dec 15 16:17:01 2016 -0800
|
||||
@@ -224,14 +224,22 @@
|
||||
continue;
|
||||
}
|
||||
|
||||
-#if (NGX_HAVE_INET6)
|
||||
if (ngx_strncmp(names[i].data, "ipv6=", 5) == 0) {
|
||||
|
||||
if (ngx_strcmp(&names[i].data[5], "on") == 0) {
|
||||
+#if (NGX_HAVE_INET6)
|
||||
r->ipv6 = 1;
|
||||
+#else
|
||||
+ ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
|
||||
+ "no ipv6 support but \"%V\" in resolver",
|
||||
+ &names[i]);
|
||||
+ return NULL;
|
||||
+#endif
|
||||
|
||||
} else if (ngx_strcmp(&names[i].data[5], "off") == 0) {
|
||||
+#if (NGX_HAVE_INET6)
|
||||
r->ipv6 = 0;
|
||||
+#endif
|
||||
|
||||
} else {
|
||||
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
|
||||
@@ -241,7 +249,6 @@
|
||||
|
||||
continue;
|
||||
}
|
||||
-#endif
|
||||
|
||||
ngx_memzero(&u, sizeof(ngx_url_t));
|
||||
|
53
patches/nginx-1.11.2-single_process_graceful_exit.patch
Normal file
53
patches/nginx-1.11.2-single_process_graceful_exit.patch
Normal file
@ -0,0 +1,53 @@
|
||||
--- nginx-1.11.2/src/os/unix/ngx_process_cycle.c 2016-07-05 08:56:16.000000000 -0700
|
||||
+++ nginx-1.11.2-patched/src/os/unix/ngx_process_cycle.c 2017-05-14 09:59:52.301108274 -0700
|
||||
@@ -304,11 +304,29 @@ ngx_single_process_cycle(ngx_cycle_t *cy
|
||||
}
|
||||
|
||||
for ( ;; ) {
|
||||
+ if (ngx_exiting) {
|
||||
+ ngx_event_cancel_timers();
|
||||
+
|
||||
+ if (ngx_event_timer_rbtree.root == ngx_event_timer_rbtree.sentinel)
|
||||
+ {
|
||||
+ ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "exiting");
|
||||
+
|
||||
+ for (i = 0; cycle->modules[i]; i++) {
|
||||
+ if (cycle->modules[i]->exit_process) {
|
||||
+ cycle->modules[i]->exit_process(cycle);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ ngx_master_process_exit(cycle);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0, "worker cycle");
|
||||
|
||||
ngx_process_events_and_timers(cycle);
|
||||
|
||||
- if (ngx_terminate || ngx_quit) {
|
||||
+ if (ngx_terminate) {
|
||||
+ ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "exiting");
|
||||
|
||||
for (i = 0; cycle->modules[i]; i++) {
|
||||
if (cycle->modules[i]->exit_process) {
|
||||
@@ -319,6 +337,19 @@ ngx_single_process_cycle(ngx_cycle_t *cy
|
||||
ngx_master_process_exit(cycle);
|
||||
}
|
||||
|
||||
+ if (ngx_quit) {
|
||||
+ ngx_quit = 0;
|
||||
+ ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0,
|
||||
+ "gracefully shutting down");
|
||||
+ ngx_setproctitle("process is shutting down");
|
||||
+
|
||||
+ if (!ngx_exiting) {
|
||||
+ ngx_exiting = 1;
|
||||
+ ngx_close_listening_sockets(cycle);
|
||||
+ ngx_close_idle_connections(cycle);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
if (ngx_reconfigure) {
|
||||
ngx_reconfigure = 0;
|
||||
ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "reconfiguring");
|
14
patches/patch.2017.ranges.txt
Normal file
14
patches/patch.2017.ranges.txt
Normal file
@ -0,0 +1,14 @@
|
||||
diffsrc/http/modules/ngx_http_range_filter_module.c b/src/http/modules/ngx_http_range_filter_module.c
|
||||
--- src/http/modules/ngx_http_range_filter_module.c
|
||||
+++ src/http/modules/ngx_http_range_filter_module.c
|
||||
@@ -377,6 +377,10 @@ ngx_http_range_parse(ngx_http_request_t
|
||||
range->start = start;
|
||||
range->end = end;
|
||||
|
||||
+ if (size > NGX_MAX_OFF_T_VALUE - (end - start)) {
|
||||
+ return NGX_HTTP_RANGE_NOT_SATISFIABLE;
|
||||
+ }
|
||||
+
|
||||
size += end - start;
|
||||
|
||||
if (ranges-- == 0) {
|
4985
t/sanity.t
4985
t/sanity.t
File diff suppressed because it is too large
Load Diff
@ -1,8 +1,12 @@
|
||||
#!/bin/bash
|
||||
|
||||
PCRE=pcre-8.39
|
||||
ZLIB=zlib-1.2.8
|
||||
OPENSSL=openssl-1.0.2h
|
||||
PCRE=pcre-8.40
|
||||
ZLIB=zlib-1.2.11
|
||||
OPENSSL=openssl-1.0.2k
|
||||
|
||||
# wget https://www.openssl.org/source/openssl-1.0.2k.tar.gz
|
||||
# wget http://zlib.net/zlib-1.2.11.tar.gz
|
||||
# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.40.tar.gz
|
||||
|
||||
rm -rf objs || exit 1
|
||||
mkdir -p objs/lib || exit 1
|
||||
@ -14,27 +18,46 @@ tar -xf ../../../$PCRE.tar.gz || exit 1
|
||||
cd ../..
|
||||
|
||||
cd objs/lib/$OPENSSL || exit 1
|
||||
patch -p1 < ../../../patches/$OPENSSL-sess_set_get_cb_yield.patch || exit 1
|
||||
patch -p1 < ../../../patches/openssl-1.0.2h-sess_set_get_cb_yield.patch || exit 1
|
||||
cd ../../..
|
||||
|
||||
#--with-openssl-opt="no-asm" \
|
||||
|
||||
./configure --with-cc=gcc --with-ipv6 --prefix= \
|
||||
./configure \
|
||||
--with-cc=gcc \
|
||||
--with-ipv6 \
|
||||
--prefix= \
|
||||
--with-cc-opt='-DFD_SETSIZE=1024' \
|
||||
--sbin-path=nginx.exe \
|
||||
--with-ipv6 \
|
||||
--with-pcre-jit \
|
||||
--with-http_stub_status_module \
|
||||
--with-http_realip_module \
|
||||
--without-http_rds_json_module \
|
||||
--without-http_rds_csv_module \
|
||||
--without-lua_rds_parser \
|
||||
--with-ipv6 \
|
||||
--with-stream \
|
||||
--with-stream_ssl_module \
|
||||
--with-http_v2_module \
|
||||
--without-mail_pop3_module \
|
||||
--without-mail_imap_module \
|
||||
--without-mail_smtp_module \
|
||||
--with-http_stub_status_module \
|
||||
--with-http_realip_module \
|
||||
--with-http_addition_module \
|
||||
--with-http_auth_request_module \
|
||||
--with-http_secure_link_module \
|
||||
--with-http_random_index_module \
|
||||
--with-http_gzip_static_module \
|
||||
--with-http_sub_module \
|
||||
--with-http_dav_module \
|
||||
--with-http_flv_module \
|
||||
--with-http_mp4_module \
|
||||
--with-http_gunzip_module \
|
||||
--with-select_module \
|
||||
--with-luajit-xcflags="-DLUAJIT_NUMMODE=2 -DLUAJIT_ENABLE_LUA52COMPAT" \
|
||||
--with-pcre=objs/lib/$PCRE \
|
||||
--with-zlib=objs/lib/$ZLIB \
|
||||
--with-openssl=objs/lib/$OPENSSL \
|
||||
--with-select_module -j5 || exit 1
|
||||
-j5 || exit 1
|
||||
#gmake -j5
|
||||
make || exit 1
|
||||
make install
|
||||
|
203
util/configure
vendored
203
util/configure
vendored
@ -5,6 +5,7 @@ use strict;
|
||||
use warnings;
|
||||
|
||||
use File::Spec;
|
||||
use File::Temp qw( tempfile tmpnam );
|
||||
|
||||
sub shell ($@);
|
||||
sub env ($$);
|
||||
@ -121,12 +122,15 @@ my $with_resty_mods_regex;
|
||||
}
|
||||
|
||||
my $prefix = '/usr/local/openresty';
|
||||
my $ngx_sbin;
|
||||
my %resty_opts;
|
||||
my $dry_run;
|
||||
my @ngx_rpaths;
|
||||
my $cc;
|
||||
my $cores;
|
||||
my $luajit_xcflags = '';
|
||||
my $user_luajit_xcflags;
|
||||
my $no_luajit_lua52;
|
||||
|
||||
my (@ngx_opts, @ngx_cc_opts, @ngx_ld_opts);
|
||||
|
||||
@ -165,13 +169,13 @@ for my $opt (@ARGV) {
|
||||
}
|
||||
|
||||
} elsif ($opt eq '--without-lua51') {
|
||||
undef $resty_opts{lua};
|
||||
die "ERROR: --without-lua51 is no longer supported.\n";
|
||||
|
||||
} elsif ($opt eq '--with-lua51') {
|
||||
$resty_opts{lua} = 1;
|
||||
die "ERROR: --with-lua51 is no longer supported.\n";
|
||||
|
||||
} elsif ($opt =~ /^--with-lua51=(.*)/) {
|
||||
$resty_opts{lua_path} = $1;
|
||||
die "ERROR: --with-lua51=PATH is no longer supported.\n";
|
||||
|
||||
} elsif ($opt eq '--without-http_rewrite_module') {
|
||||
warn "WARNING: ngx_devel_kit is automatically disabled ",
|
||||
@ -203,6 +207,9 @@ for my $opt (@ARGV) {
|
||||
} elsif ($opt eq '--without-lua_resty_string') {
|
||||
$resty_opts{no_lua_resty_string} = 1;
|
||||
|
||||
} elsif ($opt eq '--without-lua_resty_limit_traffic') {
|
||||
$resty_opts{no_lua_resty_limit_traffic} = 1;
|
||||
|
||||
} elsif ($opt eq '--without-lua_resty_websocket') {
|
||||
$resty_opts{no_lua_resty_websocket} = 1;
|
||||
|
||||
@ -250,7 +257,10 @@ for my $opt (@ARGV) {
|
||||
$resty_opts{luajit_path} = $1;
|
||||
|
||||
} elsif ($opt =~ /^--with-luajit-xcflags=(.*)/) {
|
||||
$luajit_xcflags .= " $1";
|
||||
$user_luajit_xcflags .= " $1";
|
||||
|
||||
} elsif ($opt =~ /^--without-luajit-lua52/) {
|
||||
$no_luajit_lua52 = 1;
|
||||
|
||||
} elsif ($opt =~ /^--with-libdrizzle=(.*)/) {
|
||||
$resty_opts{libdrizzle} = $1;
|
||||
@ -297,6 +307,10 @@ for my $opt (@ARGV) {
|
||||
$path = File::Spec->rel2abs($path);
|
||||
push @ngx_opts, "--with-$lib=$path";
|
||||
|
||||
} elsif ($opt =~ /^--sbin-path=(.*)/) {
|
||||
$ngx_sbin = $1;
|
||||
push @ngx_opts, $opt;
|
||||
|
||||
} elsif ($opt =~ /^--\w.*/) {
|
||||
push @ngx_opts, $opt;
|
||||
|
||||
@ -341,10 +355,16 @@ push @make_cmds, "cd $root_dir/build/$ngx_dir && "
|
||||
push @make_install_cmds, "cd $root_dir/build/$ngx_dir && "
|
||||
. "\$(MAKE) install DESTDIR=\$(DESTDIR)";
|
||||
|
||||
push @make_install_cmds, "mkdir -p \$(DESTDIR)$prefix/site/lualib";
|
||||
push @make_install_cmds,
|
||||
"mkdir -p \$(DESTDIR)$prefix/site/lualib"
|
||||
. " \$(DESTDIR)$prefix/site/pod"
|
||||
. " \$(DESTDIR)$prefix/site/manifest";
|
||||
|
||||
if ($platform ne 'msys') {
|
||||
push @make_install_cmds, "ln -sf $ngx_prefix/sbin/nginx \$(DESTDIR)$prefix/bin/openresty";
|
||||
if (!$ngx_sbin) {
|
||||
$ngx_sbin = "$ngx_prefix/sbin/nginx";
|
||||
}
|
||||
push @make_install_cmds, "ln -sf $ngx_sbin \$(DESTDIR)$prefix/bin/openresty";
|
||||
}
|
||||
|
||||
cd '../..'; # to the root
|
||||
@ -455,7 +475,6 @@ _END_
|
||||
if (!$opts->{lua}
|
||||
&& !$opts->{lua_path}
|
||||
&& !$opts->{no_http_lua}
|
||||
&& !$opts->{no_http_lua_upstream}
|
||||
&& !$opts->{luajit_path})
|
||||
{
|
||||
$opts->{luajit} = 1;
|
||||
@ -512,6 +531,9 @@ _END_
|
||||
|
||||
cd 'build';
|
||||
|
||||
push @make_install_cmds, "mkdir -p \$(DESTDIR)$prefix/",
|
||||
"-cp $root_dir/COPYRIGHT \$(DESTDIR)$prefix/";
|
||||
|
||||
# build 3rd-party C libraries if required
|
||||
|
||||
if ($opts->{no_pool}) {
|
||||
@ -601,12 +623,69 @@ _END_
|
||||
}
|
||||
}
|
||||
|
||||
if (!$no_luajit_lua52
|
||||
&& (!$user_luajit_xcflags
|
||||
|| $user_luajit_xcflags !~ /-DLUAJIT_ENABLE_LUA52COMPAT\b/))
|
||||
{
|
||||
$luajit_xcflags .= " -DLUAJIT_ENABLE_LUA52COMPAT";
|
||||
}
|
||||
|
||||
if (!$user_luajit_xcflags
|
||||
|| $user_luajit_xcflags !~ /-msse4\.2\b/)
|
||||
{
|
||||
# check -msse4.2
|
||||
my ($out, $cfile) = tempfile("resty-config-XXXXXX",
|
||||
SUFFIX => '.c', TMPDIR => 1,
|
||||
UNLINK => 1);
|
||||
|
||||
print $out "
|
||||
int main(void) {
|
||||
#ifndef __SSE4_2__
|
||||
# error SSE 4.2 not found
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
";
|
||||
close $out;
|
||||
|
||||
my $ofile = tmpnam();
|
||||
my $comp = ($cc || 'cc');
|
||||
my $found;
|
||||
|
||||
if (system("$comp -o $ofile -msse4.2 -c $cfile") == 0 && -s $ofile) {
|
||||
unlink $ofile;
|
||||
|
||||
if (system("$comp -o $ofile -march=native -c $cfile") == 0 && -s $ofile) {
|
||||
print "INFO: found -msse4.2 in $comp.\n";
|
||||
$found = 1;
|
||||
$luajit_xcflags .= " -msse4.2";
|
||||
}
|
||||
}
|
||||
|
||||
if (-f $ofile) {
|
||||
unlink $ofile;
|
||||
}
|
||||
|
||||
if (!$found) {
|
||||
print "WARNING: -msse4.2 not supported in $comp.\n";
|
||||
}
|
||||
}
|
||||
|
||||
if ($opts->{debug}) {
|
||||
$luajit_xcflags .= " -DLUA_USE_APICHECK -DLUA_USE_ASSERT";
|
||||
|
||||
if ($user_luajit_xcflags) {
|
||||
$luajit_xcflags .= $user_luajit_xcflags;
|
||||
}
|
||||
$luajit_xcflags =~ s/^ +//;
|
||||
|
||||
$extra_opts .= qq{ Q= XCFLAGS='$luajit_xcflags'};
|
||||
|
||||
} else {
|
||||
if ($user_luajit_xcflags) {
|
||||
$luajit_xcflags .= $user_luajit_xcflags;
|
||||
}
|
||||
|
||||
if ($luajit_xcflags) {
|
||||
$luajit_xcflags =~ s/^ +//;
|
||||
$extra_opts .= qq{ XCFLAGS='$luajit_xcflags'};
|
||||
@ -766,7 +845,7 @@ _END_
|
||||
print $in <<"_EOC_";
|
||||
|
||||
ngx_lua_dquote='"'
|
||||
CFLAGS="\$CFLAGS -DLUA_DEFAULT_PATH='\${ngx_lua_dquote}$site_lualib_prefix/?.lua;$site_lualib_prefix/?/init.lua;$lualib_prefix/?.lua;$lualib_prefix/?/init.lua\$ngx_lua_dquote'"
|
||||
CFLAGS="\$CFLAGS -DLUA_DEFAULT_PATH='\${ngx_lua_dquote}$site_lualib_prefix/?.ljbc;$site_lualib_prefix/?/init.ljbc;$lualib_prefix/?.ljbc;$lualib_prefix/?/init.ljbc;$site_lualib_prefix/?.lua;$site_lualib_prefix/?/init.lua;$lualib_prefix/?.lua;$lualib_prefix/?/init.lua\$ngx_lua_dquote'"
|
||||
CFLAGS="\$CFLAGS -DLUA_DEFAULT_CPATH='\${ngx_lua_dquote}$site_lualib_prefix/?.so;$lualib_prefix/?.so\$ngx_lua_dquote'"
|
||||
_EOC_
|
||||
}
|
||||
@ -933,7 +1012,7 @@ _EOC_
|
||||
}
|
||||
|
||||
for my $key (qw(dns memcached redis mysql string upload websocket
|
||||
lock lrucache core upstream_healthcheck))
|
||||
lock lrucache core upstream_healthcheck limit_traffic))
|
||||
{
|
||||
unless ($opts->{"no_lua_resty_$key"}) {
|
||||
(my $key2 = $key) =~ s/_/-/g;
|
||||
@ -952,6 +1031,19 @@ _EOC_
|
||||
}
|
||||
}
|
||||
|
||||
# configure opm:
|
||||
{
|
||||
my $opm_dir = auto_complete 'opm';
|
||||
my $target_dir;
|
||||
if ($platform eq 'msys') {
|
||||
$target_dir = "\$(DESTDIR)$prefix/";
|
||||
} else {
|
||||
$target_dir = "\$(DESTDIR)$prefix/bin/";
|
||||
}
|
||||
push @make_install_cmds, "cd $root_dir/build/$opm_dir && "
|
||||
. "$root_dir/build/install bin/* $target_dir";
|
||||
}
|
||||
|
||||
# configure resty-cli:
|
||||
|
||||
{
|
||||
@ -1081,16 +1173,17 @@ _EOC_
|
||||
disable the lua-resty-upstream-healthcheck library
|
||||
--without-lua_resty_string disable the lua-resty-string library
|
||||
--without-lua_resty_websocket disable the lua-resty-websocket library
|
||||
--without-lua_resty_limit_traffic disable the lua-resty-limit-traffic library
|
||||
--without-lua_resty_lock disable the lua-resty-lock library
|
||||
--without-lua_resty_lrucache disable the lua-resty-lrucache library
|
||||
--without-lua_resty_core disable the lua-resty-core library
|
||||
|
||||
--with-lua51 enable and build the bundled standard Lua 5.1 interpreter
|
||||
--without-lua51 disable the bundled standard Lua 5.1 interpreter
|
||||
--with-lua51=DIR specify the external installation of Lua 5.1 by DIR
|
||||
--with-luajit enable and build the bundled LuaJIT 2.1 (the default)
|
||||
--with-luajit=DIR use the external LuaJIT 2.1 installation specified by DIR
|
||||
--with-luajit-xcflags=FLAGS Specify extra C compiler flags for LuaJIT 2.1
|
||||
--without-luajit-lua52 Turns off the LuaJIT extensions from Lua 5.2 that may break
|
||||
backward compatibility.
|
||||
|
||||
--with-libdrizzle=DIR specify the libdrizzle 1.0 (or drizzle) installation prefix
|
||||
--with-libpq=DIR specify the libpq (or postgresql) installation prefix
|
||||
--with-pg_config=PATH specify the path of the pg_config utility
|
||||
@ -1098,6 +1191,7 @@ _EOC_
|
||||
Options directly inherited from nginx
|
||||
|
||||
--sbin-path=PATH set nginx binary pathname
|
||||
--modules-path=PATH set modules path
|
||||
--conf-path=PATH set nginx.conf pathname
|
||||
--error-log-path=PATH set error log pathname
|
||||
--pid-path=PATH set nginx.pid pathname
|
||||
@ -1110,6 +1204,7 @@ Options directly inherited from nginx
|
||||
--group=GROUP set non-privileged group for
|
||||
worker processes
|
||||
|
||||
--build=NAME set build name
|
||||
--builddir=DIR set the build directory
|
||||
|
||||
--with-select_module enable select module
|
||||
@ -1119,22 +1214,30 @@ Options directly inherited from nginx
|
||||
|
||||
--with-threads enable thread pool support
|
||||
|
||||
--with-file-aio enable file aio support
|
||||
--with-ipv6 enable ipv6 support
|
||||
--with-file-aio enable file AIO support
|
||||
--with-ipv6 enable IPv6 support
|
||||
|
||||
--with-http_v2_module enable ngx_http_v2_module
|
||||
--with-http_realip_module enable ngx_http_realip_module
|
||||
--with-http_addition_module enable ngx_http_addition_module
|
||||
--with-http_xslt_module enable ngx_http_xslt_module
|
||||
--with-http_xslt_module=dynamic enable dynamic ngx_http_xslt_module
|
||||
--with-http_image_filter_module enable ngx_http_image_filter_module
|
||||
--with-http_image_filter_module=dynamic
|
||||
enable dynamic ngx_http_image_filter_module
|
||||
--with-http_geoip_module enable ngx_http_geoip_module
|
||||
--with-http_geoip_module=dynamic enable dynamic ngx_http_geoip_module
|
||||
--with-http_sub_module enable ngx_http_sub_module
|
||||
--with-http_dav_module enable ngx_http_dav_module
|
||||
--with-http_flv_module enable ngx_http_flv_module
|
||||
--with-http_mp4_module enable ngx_http_mp4_module
|
||||
--with-http_gunzip_module enable ngx_http_gunzip_module
|
||||
--with-http_gzip_static_module enable ngx_http_gzip_static_module
|
||||
--with-http_auth_request_module enable ngx_http_auth_request_module
|
||||
--with-http_random_index_module enable ngx_http_random_index_module
|
||||
--with-http_secure_link_module enable ngx_http_secure_link_module
|
||||
--with-http_degradation_module enable ngx_http_degradation_module
|
||||
--with-http_slice_module enable ngx_http_slice_module
|
||||
--with-http_stub_status_module enable ngx_http_stub_status_module
|
||||
|
||||
--without-http_charset_module disable ngx_http_charset_module
|
||||
@ -1158,6 +1261,8 @@ Options directly inherited from nginx
|
||||
--without-http_limit_req_module disable ngx_http_limit_req_module
|
||||
--without-http_empty_gif_module disable ngx_http_empty_gif_module
|
||||
--without-http_browser_module disable ngx_http_browser_module
|
||||
--without-http_upstream_hash_module
|
||||
disable ngx_http_upstream_hash_module
|
||||
--without-http_upstream_ip_hash_module
|
||||
disable ngx_http_upstream_ip_hash_module
|
||||
--without-http_upstream_least_conn_module
|
||||
@ -1165,43 +1270,63 @@ Options directly inherited from nginx
|
||||
--without-http_upstream_keepalive_module
|
||||
disable ngx_http_upstream_keepalive_module
|
||||
|
||||
--without-http_upstream_zone_module
|
||||
disable ngx_http_upstream_zone_module
|
||||
--with-http_perl_module enable ngx_http_perl_module
|
||||
--with-perl_modules_path=PATH set path to the perl modules
|
||||
--with-perl=PATH set path to the perl binary
|
||||
--with-http_perl_module=dynamic enable dynamic ngx_http_perl_module
|
||||
--with-perl_modules_path=PATH set Perl modules path
|
||||
--with-perl=PATH set perl binary pathname
|
||||
|
||||
--http-log-path=PATH set path to the http access log
|
||||
--http-client-body-temp-path=PATH set path to the http client request body
|
||||
temporary files
|
||||
--http-proxy-temp-path=PATH set path to the http proxy temporary files
|
||||
--http-fastcgi-temp-path=PATH set path to the http fastcgi temporary
|
||||
files
|
||||
--http-uwsgi-temp-path=PATH set path to the http uwsgi temporary files
|
||||
--http-scgi-temp-path=PATH set path to the http scgi temporary files
|
||||
--http-log-path=PATH set http access log pathname
|
||||
--http-client-body-temp-path=PATH set path to store
|
||||
http client request body temporary files
|
||||
--http-proxy-temp-path=PATH set path to store
|
||||
http proxy temporary files
|
||||
--http-fastcgi-temp-path=PATH set path to store
|
||||
http fastcgi temporary files
|
||||
--http-uwsgi-temp-path=PATH set path to store
|
||||
http uwsgi temporary files
|
||||
--http-scgi-temp-path=PATH set path to store
|
||||
http scgi temporary files
|
||||
|
||||
--without-http disable HTTP server
|
||||
--without-http-cache disable HTTP cache
|
||||
|
||||
--with-mail enable POP3/IMAP4/SMTP proxy module
|
||||
--with-mail=dynamic enable dynamic POP3/IMAP4/SMTP proxy module
|
||||
--with-mail_ssl_module enable ngx_mail_ssl_module
|
||||
--without-mail_pop3_module disable ngx_mail_pop3_module
|
||||
--without-mail_imap_module disable ngx_mail_imap_module
|
||||
--without-mail_smtp_module disable ngx_mail_smtp_module
|
||||
|
||||
--with-stream enable TCP/UDP proxy module
|
||||
--with-stream=dynamic enable dynamic TCP/UDP proxy module
|
||||
--with-stream_ssl_module enable ngx_stream_ssl_module
|
||||
--without-stream_limit_conn_module disable ngx_stream_limit_conn_module
|
||||
--without-stream_access_module disable ngx_stream_access_module
|
||||
--without-stream_map_module disable ngx_stream_map_module
|
||||
--without-stream_return_module disable ngx_stream_return_module
|
||||
--without-stream_upstream_hash_module
|
||||
disable ngx_stream_upstream_hash_module
|
||||
--without-stream_upstream_least_conn_module
|
||||
disable ngx_stream_upstream_least_conn_module
|
||||
--without-stream_upstream_zone_module
|
||||
disable ngx_stream_upstream_zone_module
|
||||
|
||||
--with-google_perftools_module enable ngx_google_perftools_module
|
||||
--with-cpp_test_module enable ngx_cpp_test_module
|
||||
|
||||
--add-module=PATH enable an external module
|
||||
--add-module=PATH enable external module
|
||||
--add-dynamic-module=PATH enable dynamic external module
|
||||
|
||||
--with-cc=PATH set path to C compiler
|
||||
--with-cpp=PATH set path to C preprocessor
|
||||
--with-cc-opt=OPTIONS set additional options for C compiler
|
||||
--with-ld-opt=OPTIONS set additional options for linker
|
||||
--with-cpu-opt=CPU build for specified CPU, the valid values:
|
||||
--with-cc=PATH set C compiler pathname
|
||||
--with-cpp=PATH set C preprocessor pathname
|
||||
--with-cc-opt=OPTIONS set additional C compiler options
|
||||
--with-ld-opt=OPTIONS set additional linker options
|
||||
--with-cpu-opt=CPU build for the specified CPU, valid values:
|
||||
pentium, pentiumpro, pentium3, pentium4,
|
||||
athlon, opteron, sparc32, sparc64, ppc64
|
||||
|
||||
--with-make=PATH specify the default make utility to be used
|
||||
|
||||
--without-pcre disable PCRE library usage
|
||||
--with-pcre force PCRE library usage
|
||||
--with-pcre=DIR set path to PCRE library sources
|
||||
@ -1209,25 +1334,17 @@ Options directly inherited from nginx
|
||||
--with-pcre-conf-opt=OPTIONS set additional configure options for PCRE
|
||||
--with-pcre-jit build PCRE with JIT compilation support
|
||||
|
||||
--with-md5=DIR set path to md5 library sources
|
||||
--with-md5-opt=OPTIONS set additional options for md5 building
|
||||
--with-md5-asm use md5 assembler sources
|
||||
|
||||
--with-sha1=DIR set path to sha1 library sources
|
||||
--with-sha1-opt=OPTIONS set additional options for sha1 building
|
||||
--with-sha1-asm use sha1 assembler sources
|
||||
|
||||
--with-zlib=DIR set path to zlib library sources
|
||||
--with-zlib-opt=OPTIONS set additional options for zlib building
|
||||
--with-zlib-opt=OPTIONS set additional build options for zlib
|
||||
--with-zlib-asm=CPU use zlib assembler sources optimized
|
||||
for specified CPU, the valid values:
|
||||
for the specified CPU, valid values:
|
||||
pentium, pentiumpro
|
||||
|
||||
--with-libatomic force libatomic_ops library usage
|
||||
--with-libatomic=DIR set path to libatomic_ops library sources
|
||||
|
||||
--with-openssl=DIR set path to OpenSSL library sources
|
||||
--with-openssl-opt=OPTIONS set additional options for OpenSSL building
|
||||
--with-openssl-opt=OPTIONS set additional build options for OpenSSL
|
||||
|
||||
--dry-run dry running the configure, for testing only
|
||||
--platform=PLATFORM forcibly specify a platform name, for testing only
|
||||
|
@ -7,6 +7,7 @@ use Getopt::Std qw(getopts);
|
||||
use Cwd qw/cwd/;
|
||||
|
||||
sub sh ($);
|
||||
sub cleanup ();
|
||||
sub write_config_file ($);
|
||||
|
||||
my %opts;
|
||||
@ -32,14 +33,8 @@ if ($^O eq 'freebsd' || $^O eq 'solaris') {
|
||||
|
||||
my $cfg_opts = "";
|
||||
|
||||
if ($opts{l}) {
|
||||
$lua = 'Lua';
|
||||
$cfg_opts .= " --with-lua51";
|
||||
|
||||
} else {
|
||||
$lua = 'LuaJIT';
|
||||
#$cfg_opts .= " --with-luajit";
|
||||
}
|
||||
$lua = 'LuaJIT';
|
||||
#$cfg_opts .= " --with-luajit";
|
||||
|
||||
if ($^O eq 'solaris') {
|
||||
$cfg_opts .= " --with-cc=gcc";
|
||||
@ -67,9 +62,9 @@ sub write_config_file ($) {
|
||||
|
||||
write_config_file "/tmp/nginx.conf";
|
||||
|
||||
warn "=== Without FFI ===\n";
|
||||
warn "\n=== Without FFI ===\n";
|
||||
$prefix = "/usr/local/openresty-noffi";
|
||||
sh "sudo rm -rf $prefix/lualib $prefix/luajit $prefix/bin $prefix/lua $prefix/nginx/sbin $prefix/nginx/html";
|
||||
cleanup();
|
||||
unless ($opts{f}) {
|
||||
sh "./configure $cfg_opts --with-cc-opt='-DNGX_LUA_NO_FFI_API' --prefix=$prefix -j$jobs > /dev/null";
|
||||
}
|
||||
@ -82,12 +77,12 @@ sh "sudo $prefix/nginx/sbin/nginx";
|
||||
sh "curl -si localhost/lua|grep $lua";
|
||||
sh "curl -si localhost/lua|grep $ver";
|
||||
sh "curl -si localhost/cjson|grep 'json.safe: '";
|
||||
sh qq{$prefix/bin/resty -e 'ngx.say("Hello World!")'|grep 'Hello World'};
|
||||
#sh qq{$prefix/bin/resty -e 'ngx.say("Hello World!")'|grep 'Hello World'};
|
||||
sh "sudo $prefix/nginx/sbin/nginx -sstop";
|
||||
|
||||
warn "=== --with-stream ===\n";
|
||||
warn "\n=== --with-stream ===\n";
|
||||
$prefix = "/usr/local/openresty-stream";
|
||||
sh "sudo rm -rf $prefix/lualib $prefix/luajit $prefix/bin $prefix/lua $prefix/nginx/sbin $prefix/nginx/html";
|
||||
cleanup();
|
||||
unless ($opts{f}) {
|
||||
sh "./configure $cfg_opts --with-stream --prefix=$prefix -j$jobs > /dev/null";
|
||||
}
|
||||
@ -104,9 +99,9 @@ sh "curl -si localhost/cjson|grep 'json.safe: '";
|
||||
sh qq{$prefix/bin/resty -e 'ngx.say("Hello World!")'|grep 'Hello World'};
|
||||
sh "sudo $prefix/nginx/sbin/nginx -sstop";
|
||||
|
||||
warn "=== --with-stream + dtrace static probes ===\n";
|
||||
warn "\n=== --with-stream + dtrace static probes ===\n";
|
||||
$prefix = "/usr/local/openresty-stream-usdt";
|
||||
sh "sudo rm -rf $prefix/lualib $prefix/luajit $prefix/bin $prefix/lua $prefix/nginx/sbin $prefix/nginx/html";
|
||||
cleanup();
|
||||
unless ($opts{f}) {
|
||||
sh "./configure $cfg_opts --with-dtrace-probes --with-stream --prefix=$prefix -j$jobs > /dev/null";
|
||||
}
|
||||
@ -124,9 +119,9 @@ sh "curl -si localhost/cjson|grep 'json.safe: '";
|
||||
sh qq{$prefix/bin/resty -e 'ngx.say("Hello World!")'|grep 'Hello World'};
|
||||
sh "sudo $prefix/nginx/sbin/nginx -sstop";
|
||||
|
||||
warn "=== Without Gzip/SSL/PCRE ===\n";
|
||||
warn "\n=== Without Gzip/SSL/PCRE ===\n";
|
||||
$prefix = "/usr/local/openresty-nogzip";
|
||||
sh "sudo rm -rf $prefix/lualib $prefix/luajit $prefix/bin $prefix/lua $prefix/nginx/sbin $prefix/nginx/html";
|
||||
cleanup();
|
||||
unless ($opts{f}) {
|
||||
sh "./configure $cfg_opts --without-http_rewrite_module --without-http_ssl_module --without-pcre --without-http_gzip_module --prefix=$prefix -j$jobs > /dev/null";
|
||||
}
|
||||
@ -142,14 +137,14 @@ sh "sudo $prefix/nginx/sbin/nginx";
|
||||
sh "curl -si localhost/lua|grep $lua";
|
||||
sh "curl -si localhost/lua|grep $ver";
|
||||
sh "curl -si localhost/cjson|grep 'json.safe: '";
|
||||
sh qq{$prefix/bin/resty -e 'ngx.say("Hello World!")'|grep 'Hello World'};
|
||||
#sh qq{$prefix/bin/resty -e 'ngx.say("Hello World!")'|grep 'Hello World'};
|
||||
sh "sudo $prefix/nginx/sbin/nginx -sstop";
|
||||
|
||||
$cfg_opts .= " --with-http_iconv_module";
|
||||
|
||||
warn "\n=== --with-threads ===\n";
|
||||
$prefix = "/usr/local/openresty-threads";
|
||||
sh "sudo rm -rf $prefix/lualib $prefix/luajit $prefix/bin $prefix/lua $prefix/nginx/sbin $prefix/nginx/html";
|
||||
cleanup();
|
||||
unless ($opts{f}) {
|
||||
sh "./configure $cfg_opts --with-threads --prefix=$prefix -j$jobs > /dev/null";
|
||||
}
|
||||
@ -168,7 +163,7 @@ sh "sudo $prefix/nginx/sbin/nginx -sstop";
|
||||
|
||||
warn "\n=== No Pool Build ===\n";
|
||||
$prefix = "/usr/local/openresty-nopool";
|
||||
sh "sudo rm -rf $prefix/lualib $prefix/luajit $prefix/bin $prefix/lua $prefix/nginx/sbin $prefix/nginx/html";
|
||||
cleanup();
|
||||
unless ($opts{f}) {
|
||||
sh "./configure --with-no-pool-patch $cfg_opts --prefix=$prefix -j$jobs > /dev/null";
|
||||
}
|
||||
@ -188,7 +183,7 @@ sh "sudo $prefix/nginx/sbin/nginx -sstop";
|
||||
|
||||
warn "\n=== Normal Build ===\n";
|
||||
$prefix = "/usr/local/openresty";
|
||||
sh "sudo rm -rf $prefix/lualib $prefix/luajit $prefix/bin $prefix/lua $prefix/nginx/sbin $prefix/nginx/html";
|
||||
cleanup();
|
||||
unless ($opts{f}) {
|
||||
sh "./configure $cfg_opts -j$jobs > /dev/null";
|
||||
}
|
||||
@ -202,11 +197,13 @@ sh "curl -si localhost/lua|grep $lua";
|
||||
sh "curl -si localhost/lua|grep $ver";
|
||||
sh "curl -si localhost/cjson|grep 'json.safe: '";
|
||||
sh qq{$prefix/bin/resty -e 'ngx.say("Hello World!")'|grep 'Hello World'};
|
||||
sh qq{$prefix/bin/restydoc -s listen | grep 'configures the port to accept HTTP/2'};
|
||||
sh qq{$prefix/bin/restydoc opm | grep -E '^Status\$'};
|
||||
sh "sudo $prefix/nginx/sbin/nginx -sstop";
|
||||
|
||||
warn "\n=== Debug Build ===\n";
|
||||
$prefix = "/usr/local/openresty-debug";
|
||||
sh "sudo rm -rf $prefix/lualib $prefix/luajit $prefix/bin $prefix/lua $prefix/nginx/sbin $prefix/nginx/html";
|
||||
cleanup();
|
||||
unless ($opts{f}) {
|
||||
my $more_cfg_opts = '';
|
||||
if ($lua eq 'LuaJIT') {
|
||||
@ -229,7 +226,7 @@ sh "sudo $prefix/nginx/sbin/nginx -sstop";
|
||||
|
||||
warn "\n=== DTrace Build ===\n";
|
||||
$prefix = "/usr/local/openresty-dtrace";
|
||||
sh "sudo rm -rf $prefix/lualib $prefix/luajit $prefix/bin $prefix/lua $prefix/nginx/sbin $prefix/nginx/html";
|
||||
cleanup();
|
||||
unless ($opts{f}) {
|
||||
sh "./configure $cfg_opts --with-dtrace-probes --prefix=$prefix -j$jobs > /dev/null";
|
||||
}
|
||||
@ -258,10 +255,15 @@ sub sh ($) {
|
||||
system($cmd) == 0 or die "Command \"$cmd\" failed";
|
||||
}
|
||||
|
||||
sub cleanup () {
|
||||
sh "sudo rm -rf $prefix/lualib $prefix/luajit $prefix/bin $prefix/lua $prefix/nginx/sbin $prefix/nginx/html"
|
||||
. " $prefix/site $prefix/pod $prefix/resty.index";
|
||||
}
|
||||
|
||||
__DATA__
|
||||
|
||||
user nobody;
|
||||
worker_processes 1;
|
||||
worker_processes 2;
|
||||
error_log logs/error.log;
|
||||
pid logs/nginx.pid;
|
||||
|
||||
@ -274,11 +276,11 @@ http {
|
||||
include mime.types;
|
||||
default_type application/octet-stream;
|
||||
|
||||
init_by_lua '
|
||||
init_by_lua_block {
|
||||
if jit then
|
||||
require "resty.core"
|
||||
end
|
||||
';
|
||||
}
|
||||
|
||||
upstream backend {
|
||||
server 0.0.0.1;
|
||||
@ -292,21 +294,21 @@ http {
|
||||
server_name localhost;
|
||||
|
||||
location = /lua {
|
||||
content_by_lua '
|
||||
content_by_lua_block {
|
||||
local upstream = require "ngx.upstream"
|
||||
if jit then
|
||||
ngx.say(jit.version)
|
||||
else
|
||||
ngx.say(_VERSION)
|
||||
end
|
||||
';
|
||||
}
|
||||
}
|
||||
|
||||
location = /cjson {
|
||||
content_by_lua '
|
||||
content_by_lua_block {
|
||||
local json = require "cjson.safe"
|
||||
ngx.say("cjson.safe: ", json.encode{foo = 123})
|
||||
';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -34,6 +34,13 @@ cd nginx-$ver || exit 1
|
||||
|
||||
# patch the patch
|
||||
|
||||
answer=`$root/util/ver-ge "$main_ver" 1.13.3`
|
||||
if [ "$answer" = "N" ]; then
|
||||
echo "$info_txt applying the patch for nginx security advisory (CVE-2017-7529)"
|
||||
patch -p0 < $root/patches/patch.2017.ranges.txt || exit 1
|
||||
echo
|
||||
fi
|
||||
|
||||
answer=`$root/util/ver-ge "$main_ver" 1.5.12`
|
||||
if [ "$answer" = "N" ]; then
|
||||
echo "$info_txt applying the patch for nginx security advisory (CVE-2014-0133)"
|
||||
@ -55,6 +62,48 @@ else
|
||||
fi
|
||||
fi
|
||||
|
||||
answer=`$root/util/ver-ge "$main_ver" 1.11.2`
|
||||
if [ "$answer" = "Y" ]; then
|
||||
echo "$info_txt applying the balancer_status_code patch"
|
||||
patch -p1 < $root/patches/nginx-$main_ver-balancer_status_code.patch || exit 1
|
||||
echo
|
||||
fi
|
||||
|
||||
answer=`$root/util/ver-ge "$main_ver" 1.11.2`
|
||||
if [ "$answer" = "Y" ]; then
|
||||
echo "$info_txt applying the builtin_error_page_footer patch"
|
||||
patch -p1 < $root/patches/nginx-$main_ver-builtin_error_page_footer.patch || exit 1
|
||||
echo
|
||||
fi
|
||||
|
||||
answer=`$root/util/ver-ge "$main_ver" 1.11.2`
|
||||
if [ "$answer" = "Y" ]; then
|
||||
echo "$info_txt applying the delayed-posted-events patch"
|
||||
patch -p1 < $root/patches/nginx-$main_ver-delayed_posted_events.patch || exit 1
|
||||
echo
|
||||
fi
|
||||
|
||||
answer=`$root/util/ver-ge "$main_ver" 1.11.2`
|
||||
if [ "$answer" = "Y" ]; then
|
||||
echo "$info_txt applying the privileged-agent-process patch"
|
||||
patch -p1 < $root/patches/nginx-$main_ver-privileged_agent_process.patch || exit 1
|
||||
echo
|
||||
fi
|
||||
|
||||
answer=`$root/util/ver-ge "$main_ver" 1.11.2`
|
||||
if [ "$answer" = "Y" ]; then
|
||||
echo "$info_txt applying the single-process-graceful-exit patch"
|
||||
patch -p1 < $root/patches/nginx-$main_ver-single_process_graceful_exit.patch || exit 1
|
||||
echo
|
||||
fi
|
||||
|
||||
answer=`$root/util/ver-ge "$main_ver" 1.11.2`
|
||||
if [ "$answer" = "Y" ]; then
|
||||
echo "$info_txt applying the intercept-error-log patch"
|
||||
patch -p1 < $root/patches/nginx-$main_ver-intercept_error_log.patch || exit 1
|
||||
echo
|
||||
fi
|
||||
|
||||
echo "$info_txt applying the upstream-pipelining patch for nginx"
|
||||
patch -p1 < $root/patches/nginx-$main_ver-upstream_pipelining.patch || exit 1
|
||||
echo
|
||||
@ -333,6 +382,10 @@ echo "$info_txt applying the upstream_timeout_fields patch for nginx"
|
||||
patch -p1 < $root/patches/nginx-$main_ver-upstream_timeout_fields.patch || exit 1
|
||||
echo
|
||||
|
||||
echo "$info_txt applying the safe_resolver_ipv6_option patch for nginx"
|
||||
patch -p1 < $root/patches/nginx-$main_ver-safe_resolver_ipv6_option.patch || exit 1
|
||||
echo
|
||||
|
||||
cp $root/html/index.html docs/html/ || exit 1
|
||||
cp $root/html/50x.html docs/html/ || exit 1
|
||||
|
||||
@ -347,7 +400,7 @@ rm -rf no-pool-nginx-$ver
|
||||
|
||||
#################################
|
||||
|
||||
ver=0.60
|
||||
ver=0.61
|
||||
$root/util/get-tarball "https://github.com/openresty/echo-nginx-module/tarball/v$ver" -O echo-nginx-module-$ver.tar.gz || exit 1
|
||||
tar -xzf echo-nginx-module-$ver.tar.gz || exit 1
|
||||
mv openresty-echo-nginx-module-* echo-nginx-module-$ver || exit 1
|
||||
@ -389,28 +442,28 @@ mv openresty-rds-csv-nginx-module-* rds-csv-nginx-module-$ver || exit 1
|
||||
|
||||
#################################
|
||||
|
||||
ver=0.31
|
||||
ver=0.32
|
||||
$root/util/get-tarball "https://github.com/openresty/headers-more-nginx-module/tarball/v$ver" -O headers-more-nginx-module-$ver.tar.gz || exit 1
|
||||
tar -xzf headers-more-nginx-module-$ver.tar.gz || exit 1
|
||||
mv openresty-headers-more-nginx-module-* headers-more-nginx-module-$ver || exit 1
|
||||
|
||||
#################################
|
||||
|
||||
ver=0.1.9
|
||||
ver=0.1.10
|
||||
$root/util/get-tarball "https://github.com/openresty/drizzle-nginx-module/tarball/v$ver" -O drizzle-nginx-module-$ver.tar.gz || exit 1
|
||||
tar -xzf drizzle-nginx-module-$ver.tar.gz || exit 1
|
||||
mv openresty-drizzle-nginx-module-* drizzle-nginx-module-$ver || exit 1
|
||||
|
||||
#################################
|
||||
|
||||
ver=0.10.6
|
||||
ver=0.10.10
|
||||
$root/util/get-tarball "https://github.com/openresty/lua-nginx-module/tarball/v$ver" -O lua-nginx-module-$ver.tar.gz || exit 1
|
||||
tar -xzf lua-nginx-module-$ver.tar.gz || exit 1
|
||||
mv openresty-lua-nginx-module-* ngx_lua-$ver || exit 1
|
||||
|
||||
#################################
|
||||
|
||||
ver=0.06
|
||||
ver=0.07
|
||||
$root/util/get-tarball "https://github.com/openresty/lua-upstream-nginx-module/tarball/v$ver" -O lua-upstream-nginx-module-$ver.tar.gz || exit 1
|
||||
tar -xzf lua-upstream-nginx-module-$ver.tar.gz || exit 1
|
||||
mv openresty-lua-upstream-nginx-module-* ngx_lua_upstream-$ver || exit 1
|
||||
@ -424,7 +477,7 @@ mv openresty-array-var-nginx-module-* array-var-nginx-module-$ver || exit 1
|
||||
|
||||
#################################
|
||||
|
||||
ver=0.17
|
||||
ver=0.18
|
||||
$root/util/get-tarball "https://github.com/openresty/memc-nginx-module/tarball/v$ver" -O memc-nginx-module-$ver.tar.gz || exit 1
|
||||
tar -xzf memc-nginx-module-$ver.tar.gz || exit 1
|
||||
mv openresty-memc-nginx-module-* memc-nginx-module-$ver || exit 1
|
||||
@ -484,10 +537,10 @@ cd ..
|
||||
|
||||
#################################
|
||||
|
||||
ver=1.0rc7
|
||||
$root/util/get-tarball "https://github.com/FRiCKLE/ngx_postgres/tarball/$ver" -O ngx_postgres-$ver.tar.gz || exit 1
|
||||
ver=1.0
|
||||
$root/util/get-tarball "https://github.com/openresty/ngx_postgres/tarball/$ver" -O ngx_postgres-$ver.tar.gz || exit 1
|
||||
tar -xzf ngx_postgres-$ver.tar.gz || exit 1
|
||||
mv FRiCKLE-ngx_postgres-* ngx_postgres-$ver || exit 1
|
||||
mv openresty-ngx_postgres-* ngx_postgres-$ver || exit 1
|
||||
|
||||
#################################
|
||||
|
||||
@ -498,14 +551,14 @@ mv FRiCKLE-ngx_coolkit-* ngx_coolkit-$ver || exit 1
|
||||
|
||||
#################################
|
||||
|
||||
ver=0.13
|
||||
ver=0.14
|
||||
$root/util/get-tarball "https://github.com/openresty/redis2-nginx-module/tarball/v$ver" -O redis2-nginx-module-$ver.tar.gz || exit 1
|
||||
tar -xzf redis2-nginx-module-$ver.tar.gz || exit 1
|
||||
mv openresty-redis2-nginx-module-* redis2-nginx-module-$ver || exit 1
|
||||
|
||||
#################################
|
||||
|
||||
ver=0.13
|
||||
ver=0.19
|
||||
$root/util/get-tarball "https://github.com/openresty/resty-cli/tarball/v$ver" -O resty-cli-$ver.tar.gz || exit 1
|
||||
tar -xzf resty-cli-$ver.tar.gz || exit 1
|
||||
mv openresty-resty-cli-* resty-cli-$ver || exit 1
|
||||
@ -513,9 +566,16 @@ resty_cli=resty-cli-$ver
|
||||
|
||||
#################################
|
||||
|
||||
ver=5.1.5
|
||||
$root/util/get-tarball "http://www.lua.org/ftp/lua-$ver.tar.gz" -O "lua-$ver.tar.gz" || exit 1
|
||||
tar -xzf lua-$ver.tar.gz || exit 1
|
||||
ver=0.0.3
|
||||
$root/util/get-tarball "https://github.com/openresty/opm/tarball/v$ver" -O opm-$ver.tar.gz || exit 1
|
||||
tar -xzf opm-$ver.tar.gz || exit 1
|
||||
mv openresty-opm-* opm-$ver || exit 1
|
||||
|
||||
#################################
|
||||
|
||||
#ver=5.1.5
|
||||
#$root/util/get-tarball "http://www.lua.org/ftp/lua-$ver.tar.gz" -O "lua-$ver.tar.gz" || exit 1
|
||||
#tar -xzf lua-$ver.tar.gz || exit 1
|
||||
|
||||
#$root/util/get-tarball "http://agentzh.org/misc/nginx/patch-lua-$ver-4" -O "patch-lua-$ver-4" || exit 1
|
||||
|
||||
@ -525,21 +585,21 @@ tar -xzf lua-$ver.tar.gz || exit 1
|
||||
|
||||
#rm "patch-lua-$ver-4" || exit 1
|
||||
|
||||
echo "$info_txt applying the makefile_install_fix patch for lua $ver"
|
||||
patch -p0 < $root/patches/lua-$ver-makefile_install_fix.patch || exit 1
|
||||
echo
|
||||
#echo "$info_txt applying the makefile_install_fix patch for lua $ver"
|
||||
#patch -p0 < $root/patches/lua-$ver-makefile_install_fix.patch || exit 1
|
||||
#echo
|
||||
|
||||
echo "$info_txt applying the disable_lua50_compat patch for lua $ver"
|
||||
patch -p0 < $root/patches/lua-$ver-disable_lua50_compat.patch || exit 1
|
||||
echo
|
||||
#echo "$info_txt applying the disable_lua50_compat patch for lua $ver"
|
||||
#patch -p0 < $root/patches/lua-$ver-disable_lua50_compat.patch || exit 1
|
||||
#echo
|
||||
|
||||
echo "$info_txt applying the enable_debug_info patch for lua $ver"
|
||||
patch -p0 < $root/patches/lua-$ver-enable_debug_info.patch || exit 1
|
||||
echo
|
||||
#echo "$info_txt applying the enable_debug_info patch for lua $ver"
|
||||
#patch -p0 < $root/patches/lua-$ver-enable_debug_info.patch || exit 1
|
||||
#echo
|
||||
|
||||
#################################
|
||||
|
||||
ver=2.1-20160517
|
||||
ver=2.1-20170808
|
||||
$root/util/get-tarball "https://github.com/openresty/luajit2/archive/v$ver.tar.gz" -O "LuaJIT-$ver.tar.gz" || exit 1
|
||||
tar -xzf LuaJIT-$ver.tar.gz || exit 1
|
||||
mv luajit2-* LuaJIT-$ver || exit 1
|
||||
@ -560,7 +620,7 @@ cd .. || exit 1
|
||||
|
||||
#################################
|
||||
|
||||
ver=2.1.0.4
|
||||
ver=2.1.0.5
|
||||
$root/util/get-tarball "https://github.com/openresty/lua-cjson/archive/$ver.tar.gz" -O "lua-cjson-$ver.tar.gz" || exit 1
|
||||
tar -xzf lua-cjson-$ver.tar.gz || exit 1
|
||||
#cd lua-cjson-$ver || exit 1
|
||||
@ -571,10 +631,10 @@ tar -xzf lua-cjson-$ver.tar.gz || exit 1
|
||||
|
||||
#################################
|
||||
|
||||
ver=0.12
|
||||
$root/util/get-tarball "https://github.com/openresty/lua-redis-parser/tarball/v$ver" -O "lua-redis-parser-$ver.tar.gz" || exit 1
|
||||
ver=0.13
|
||||
$root/util/get-tarball "https://github.com/openresty/lua-redis-parser/archive/v$ver.tar.gz" -O "lua-redis-parser-$ver.tar.gz" || exit 1
|
||||
tar -xzf lua-redis-parser-$ver.tar.gz || exit 1
|
||||
mv openresty-lua-redis-parser-* lua-redis-parser-$ver || exit 1
|
||||
#mv lua-redis-parser-* lua-redis-parser-$ver || exit 1
|
||||
#cd lua-redis-parser-$ver || exit 1
|
||||
#patch -p1 < $root/patches/lua_cjson-$ver-array_detection_fix.patch || exit 1
|
||||
#sed 's/\$(DESTDIR)\//$(DESTDIR)/g' Makefile > mk || exit 1
|
||||
@ -595,7 +655,7 @@ cd ..
|
||||
|
||||
#################################
|
||||
|
||||
ver=0.17
|
||||
ver=0.19
|
||||
$root/util/get-tarball "https://github.com/openresty/lua-resty-dns/tarball/v$ver" -O "lua-resty-dns-$ver.tar.gz" || exit 1
|
||||
tar -xzf lua-resty-dns-$ver.tar.gz || exit 1
|
||||
mv openresty-lua-resty-dns-* lua-resty-dns-$ver || exit 1
|
||||
@ -619,7 +679,7 @@ cd ..
|
||||
|
||||
#################################
|
||||
|
||||
ver=0.25
|
||||
ver=0.26
|
||||
$root/util/get-tarball "https://github.com/openresty/lua-resty-redis/tarball/v$ver" -O "lua-resty-redis-$ver.tar.gz" || exit 1
|
||||
tar -xzf lua-resty-redis-$ver.tar.gz || exit 1
|
||||
mv openresty-lua-resty-redis-* lua-resty-redis-$ver || exit 1
|
||||
@ -631,7 +691,7 @@ mv openresty-lua-resty-redis-* lua-resty-redis-$ver || exit 1
|
||||
|
||||
#################################
|
||||
|
||||
ver=0.16
|
||||
ver=0.20
|
||||
$root/util/get-tarball "https://github.com/openresty/lua-resty-mysql/tarball/v$ver" -O "lua-resty-mysql-$ver.tar.gz" || exit 1
|
||||
tar -xzf lua-resty-mysql-$ver.tar.gz || exit 1
|
||||
mv openresty-lua-resty-mysql-* lua-resty-mysql-$ver || exit 1
|
||||
@ -643,7 +703,19 @@ cd ..
|
||||
|
||||
#################################
|
||||
|
||||
ver=0.09
|
||||
ver=0.04
|
||||
$root/util/get-tarball "https://github.com/openresty/lua-resty-limit-traffic/tarball/v$ver" -O "lua-resty-limit-traffic-$ver.tar.gz" || exit 1
|
||||
tar -xzf lua-resty-limit-traffic-$ver.tar.gz || exit 1
|
||||
mv openresty-lua-resty-limit-traffic-* lua-resty-limit-traffic-$ver || exit 1
|
||||
cd lua-resty-limit-traffic-$ver || exit 1
|
||||
#patch -p1 < $root/patches/lua_cjson-$ver-array_detection_fix.patch || exit 1
|
||||
sed 's/\$(DESTDIR)\//$(DESTDIR)/g' Makefile > mk || exit 1
|
||||
mv mk Makefile || exit 1
|
||||
cd ..
|
||||
|
||||
#################################
|
||||
|
||||
ver=0.10
|
||||
$root/util/get-tarball "https://github.com/openresty/lua-resty-upload/tarball/v$ver" -O "lua-resty-upload-$ver.tar.gz" || exit 1
|
||||
tar -xzf lua-resty-upload-$ver.tar.gz || exit 1
|
||||
mv openresty-lua-resty-upload-* lua-resty-upload-$ver || exit 1
|
||||
@ -655,7 +727,7 @@ cd ..
|
||||
|
||||
#################################
|
||||
|
||||
ver=0.09
|
||||
ver=0.10
|
||||
$root/util/get-tarball "https://github.com/openresty/lua-resty-string/tarball/v$ver" -O "lua-resty-string-$ver.tar.gz" || exit 1
|
||||
tar -xzf lua-resty-string-$ver.tar.gz || exit 1
|
||||
mv openresty-lua-resty-string-* lua-resty-string-$ver || exit 1
|
||||
@ -667,7 +739,7 @@ cd ..
|
||||
|
||||
#################################
|
||||
|
||||
ver=0.05
|
||||
ver=0.06
|
||||
$root/util/get-tarball "https://github.com/openresty/lua-resty-websocket/tarball/v$ver" -O "lua-resty-websocket-$ver.tar.gz" || exit 1
|
||||
tar -xzf lua-resty-websocket-$ver.tar.gz || exit 1
|
||||
mv openresty-lua-resty-websocket-* lua-resty-websocket-$ver || exit 1
|
||||
@ -679,7 +751,7 @@ cd ..
|
||||
|
||||
#################################
|
||||
|
||||
ver=0.04
|
||||
ver=0.07
|
||||
$root/util/get-tarball "https://github.com/openresty/lua-resty-lock/tarball/v$ver" -O "lua-resty-lock-$ver.tar.gz" || exit 1
|
||||
tar -xzf lua-resty-lock-$ver.tar.gz || exit 1
|
||||
mv openresty-lua-resty-lock-* lua-resty-lock-$ver || exit 1
|
||||
@ -691,7 +763,7 @@ cd ..
|
||||
|
||||
#################################
|
||||
|
||||
ver=0.04
|
||||
ver=0.07
|
||||
$root/util/get-tarball "https://github.com/openresty/lua-resty-lrucache/tarball/v$ver" -O "lua-resty-lrucache-$ver.tar.gz" || exit 1
|
||||
tar -xzf lua-resty-lrucache-$ver.tar.gz || exit 1
|
||||
mv openresty-lua-resty-lrucache-* lua-resty-lrucache-$ver || exit 1
|
||||
@ -703,7 +775,7 @@ cd ..
|
||||
|
||||
#################################
|
||||
|
||||
ver=0.1.8
|
||||
ver=0.1.12
|
||||
$root/util/get-tarball "https://github.com/openresty/lua-resty-core/tarball/v$ver" -O "lua-resty-core-$ver.tar.gz" || exit 1
|
||||
tar -xzf lua-resty-core-$ver.tar.gz || exit 1
|
||||
mv openresty-lua-resty-core-* lua-resty-core-$ver || exit 1
|
||||
@ -715,7 +787,7 @@ mv openresty-lua-resty-core-* lua-resty-core-$ver || exit 1
|
||||
|
||||
#################################
|
||||
|
||||
ver=0.04
|
||||
ver=0.05
|
||||
$root/util/get-tarball "https://github.com/openresty/lua-resty-upstream-healthcheck/tarball/v$ver" -O "lua-resty-upstream-healthcheck-$ver.tar.gz" || exit 1
|
||||
tar -xzf lua-resty-upstream-healthcheck-$ver.tar.gz || exit 1
|
||||
mv openresty-lua-resty-upstream-healthcheck-* lua-resty-upstream-healthcheck-$ver || exit 1
|
||||
@ -739,7 +811,6 @@ cp $root/util/build-win32.sh util/ || exit 1
|
||||
cp $root/COPYRIGHT ./ || exit 1
|
||||
perl bundle/$resty_cli/bin/md2pod.pl $root/doc/README-win32.md | pod2text > README-win32.txt || exit 1
|
||||
unix2dos README-win32.txt || exit 1
|
||||
find bundle -name '*~' -delete
|
||||
mkdir patches/ || exit 1
|
||||
cp $root/patches/openssl-1.0.2h-sess_set_get_cb_yield.patch patches/ || exit 1
|
||||
|
||||
@ -763,7 +834,7 @@ else
|
||||
fi
|
||||
cd nginx.org/ || exit 1
|
||||
$nginx_xml2pod xml/en/docs || exit 1
|
||||
cd $curdir
|
||||
cd $curdir || exit 1
|
||||
|
||||
echo "restydoc-index $root/work/nginx.org"
|
||||
$restydoc_index --outdir bundle $root/work/nginx.org || exit 1
|
||||
@ -783,14 +854,15 @@ for indir in bundle/*/; do
|
||||
if [ "$indir" == "bundle/nginx-$main_ver/" ]; then
|
||||
continue
|
||||
fi
|
||||
echo "restydoc-index $indir"
|
||||
$restydoc_index --outdir bundle $indir || exit 1
|
||||
echo "restydoc-index --outdir bundle $indir"
|
||||
$restydoc_index --outdir $curdir/bundle $indir || exit 1
|
||||
done
|
||||
|
||||
cd $curdir || exit 1
|
||||
find bundle -name '*.md' -delete
|
||||
find bundle -name '*.markdown' -delete
|
||||
find bundle -name '*.wiki' -delete
|
||||
find bundle -name '*~' -delete
|
||||
|
||||
cd $root || exit 1
|
||||
|
||||
|
Reference in New Issue
Block a user