diff --git a/Makefile b/Makefile index 55a0bb32fdc1b..22000c2624185 100644 --- a/Makefile +++ b/Makefile @@ -58,7 +58,7 @@ else luarocks install rockspec/apisix-master-0.rockspec --tree=deps --only-deps --local endif ifneq ($(LUA_VER),Lua 5.1) - sed -i '' -e "s|#!/usr/bin/env lua|#!/usr/bin/env $(LUAJIT_DIR)/bin/luajit|g" ./bin/apisix + sed -i '' -e "s|#!/usr/bin/env lua|#!/usr/bin/env $(LUAJIT_DIR)/bin/luajit|g" ./apisix/cli/apisix.lua endif diff --git a/apisix/cli/apisix.lua b/apisix/cli/apisix.lua new file mode 100755 index 0000000000000..0c52ef0408669 --- /dev/null +++ b/apisix/cli/apisix.lua @@ -0,0 +1,36 @@ +#!/usr/bin/env /usr/local/Cellar/openresty/1.19.3.1_1/luajit/bin/luajit + +-- +-- Licensed to the Apache Software Foundation (ASF) under one or more +-- contributor license agreements. See the NOTICE file distributed with +-- this work for additional information regarding copyright ownership. +-- The ASF licenses this file to You under the Apache License, Version 2.0 +-- (the "License"); you may not use this file except in compliance with +-- the License. You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. +-- + +local pkg_cpath_org = package.cpath +local pkg_path_org = package.path + +local apisix_home = "/usr/local/apisix" +local pkg_cpath = apisix_home .. "/deps/lib64/lua/5.1/?.so;" + .. apisix_home .. "/deps/lib/lua/5.1/?.so;;" +local pkg_path = apisix_home .. "/deps/share/lua/5.1/?.lua;;" + +-- modify the load path to load our dependencies +package.cpath = pkg_cpath .. pkg_cpath_org +package.path = pkg_path .. pkg_path_org + +-- pass path to construct the final result +local env = require("apisix.cli.env")(apisix_home, pkg_cpath_org, pkg_path_org) +local ops = require("apisix.cli.ops") + +ops.execute(env, arg) diff --git a/bin/apisix b/bin/apisix index c3962ac112af9..3bb2af3f2ceb8 100755 --- a/bin/apisix +++ b/bin/apisix @@ -1,36 +1,41 @@ -#!/usr/bin/env lua +#!/bin/bash --- --- Licensed to the Apache Software Foundation (ASF) under one or more --- contributor license agreements. See the NOTICE file distributed with --- this work for additional information regarding copyright ownership. --- The ASF licenses this file to You under the Apache License, Version 2.0 --- (the "License"); you may not use this file except in compliance with --- the License. You may obtain a copy of the License at --- --- http://www.apache.org/licenses/LICENSE-2.0 --- --- Unless required by applicable law or agreed to in writing, software --- distributed under the License is distributed on an "AS IS" BASIS, --- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. --- See the License for the specific language governing permissions and --- limitations under the License. --- +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# -local pkg_cpath_org = package.cpath -local pkg_path_org = package.path +USE_LUA=true +LUA_VERSION=$(lua -v 2>&1 | grep -E -o "Lua [0-9]+.[0-9]+") -local apisix_home = "/usr/local/apisix" -local pkg_cpath = apisix_home .. "/deps/lib64/lua/5.1/?.so;" - .. apisix_home .. "/deps/lib/lua/5.1/?.so;;" -local pkg_path = apisix_home .. "/deps/share/lua/5.1/?.lua;;" +if [[ "$(pwd)" =~ "/usr/bin" ]]; then + APISIX_LUA=$0/cli/apisix.lua +else + APISIX_LUA=./apisix/cli/apisix.lua +fi --- modify the load path to load our dependencies -package.cpath = pkg_cpath .. pkg_cpath_org -package.path = pkg_path .. pkg_path_org +if [[ "$LUA_VERSION" =~ "Lua 5.1" && $USE_LUA ]]; then + # use lua of OS + lua $APISIX_LUA $* +else + # find the openresty + OR_EXEC=$(which openresty) --- pass path to construct the final result -local env = require("apisix.cli.env")(apisix_home, pkg_cpath_org, pkg_path_org) -local ops = require("apisix.cli.ops") + # find the luajit binary of openresty + LUAJIT_BIN=$(${OR_EXEC} -V 2>&1 | grep prefix | grep -Eo 'prefix=(.*)/nginx\s+--' | grep -Eo '/.*/')luajit/bin/luajit -ops.execute(env, arg) + # use the luajit of openresty + $LUAJIT_BIN $APISIX_LUA $* +fi diff --git a/utils/install-apisix.sh b/utils/install-apisix.sh index 5f5645b0ab8e5..c8a1d2939ab8e 100755 --- a/utils/install-apisix.sh +++ b/utils/install-apisix.sh @@ -51,6 +51,8 @@ do_install() { sudo rm -f /usr/bin/apisix sudo ln -s /usr/local/apisix/deps/bin/apisix /usr/bin/apisix + sudo rm -f /usr/bin/apisix/cli/apisix.lua + sudo ln -s /usr/local/apisix/deps/apisix/cli/apisix.lua /usr/bin/apisix/cli/apisix.lua }