As the issue #1022 explains, building the default OSv image that
implicitly adds cli module that in turn implicitly pulls httpserver-api
and cli modules, requires some bizarre workarounds on modern Linux distribution.
This is caused by the fact that the lua module is based on Lua 5.2 and older version
of LuaSec (OpenSSL library for Lua) which requires old version of OpenSSL 1.0.
This patch updates following modules:
1) cli:
- makes necessary changes to work with Lua 5.3
- drops explicit dependency on the modules ncurses and libedit in lieu of
new terminfo and the script manifest_from_host.sh that pulls all necessary
dependencies from host
- drops obsolete rpmbuild
2) httpserver-api
- drops explicit dependency on the module libyaml in lieu of using
manifest_from_host.sh that pulls all necessary dependencies from host
3) lua
- revamps this module completely by upgrading to Lua 5.3
- extensively employs manifest_from_host.sh to pull Lua libraries
from host (see changes to setup.py) and minimize building from source
- updates Lua modules (like LuaSec) to the newest versions
4) openssl
- instead of using hardcoded usr.manifest, new Makefile employs manifest_from_host.sh
to find relevant main OpenSSL 1.1 library and its required dependencies from host
The patch also deletes the obsolete module libedit in lieu of using relevant files from host.
Finally it adds new terminfo module.
This patch has been tested with following Linux distribution using Docker:
- Ubuntu 18.10 (OpenSSL 1.0 -> OpenSSL 1.1 upgrade)
- Ubuntu 19.04
- Fedora 27 (OpenSSL 1.0 -> OpenSSL 1.1 upgrade)
- Ubuntu 29
Fixes #1022
Signed-off-by: Waldemar Kozaczuk <
jwkoz...@gmail.com>
---
modules/cli/.gitignore | 3 +-
modules/cli/Makefile | 33 ++----
modules/cli/cli.c | 63 ++++++-----
modules/cli/lib/osv_api.lua | 4 +-
modules/cli/module.py | 6 +-
modules/cli/rpmbuild/.gitignore | 6 --
modules/cli/rpmbuild/Makefile | 45 --------
modules/cli/rpmbuild/SPECS/osv-cli.spec | 54 ----------
modules/httpserver-api/Makefile | 1 +
modules/httpserver-api/module.py | 1 -
modules/libedit/.gitignore | 2 -
modules/libedit/Makefile | 41 --------
modules/libedit/module.py | 7 --
modules/lua/.gitignore | 8 +-
modules/lua/Makefile | 133 ++++++------------------
modules/lua/check-openssl-version | 16 ---
modules/lua/module.py | 6 +-
modules/lua/src/Makefile | 119 ---------------------
modules/openssl/.gitignore | 1 +
modules/openssl/Makefile | 23 ++++
modules/openssl/usr.manifest | 37 -------
modules/terminfo/Makefile | 16 +++
modules/terminfo/module.py | 4 +
scripts/setup.py | 16 +--
24 files changed, 143 insertions(+), 502 deletions(-)
delete mode 100644 modules/cli/rpmbuild/.gitignore
delete mode 100644 modules/cli/rpmbuild/Makefile
delete mode 100644 modules/cli/rpmbuild/SPECS/osv-cli.spec
delete mode 100644 modules/libedit/.gitignore
delete mode 100644 modules/libedit/Makefile
delete mode 100644 modules/libedit/module.py
delete mode 100755 modules/lua/check-openssl-version
delete mode 100644 modules/lua/src/Makefile
create mode 100644 modules/openssl/.gitignore
create mode 100644 modules/openssl/Makefile
delete mode 100644 modules/openssl/usr.manifest
create mode 100644 modules/terminfo/Makefile
create mode 100644 modules/terminfo/module.py
diff --git a/modules/cli/.gitignore b/modules/cli/.gitignore
index 773de15c..7d357ae8 100644
--- a/modules/cli/.gitignore
+++ b/modules/cli/.gitignore
@@ -1,2 +1,3 @@
-cli
cli.so
+cli-stripped.so
+usr.manifest
diff --git a/modules/cli/Makefile b/modules/cli/Makefile
index e2abe632..41e788bf 100644
--- a/modules/cli/Makefile
+++ b/modules/cli/Makefile
@@ -1,34 +1,23 @@
+LUA_LIB_NAME = $(shell ldconfig -p | grep -Po "liblua*.5\.3.so" | grep -o "lua.*5.3" | head -1)
+LUA_INCLUDES = $(shell $(CXX) -E -xc++ - -v </dev/null 2>&1 | awk '/^End/ {exit} /^ \/.*include/ {print $$0}' | grep -vP 'c\+\+|gnu' | xargs -I '{}' find {} -name lualib.h | xargs dirname | awk '// { printf("-I%s\n", $$0)}')
+
CC=gcc
CFLAGS=-O2 -g -Wall -std=gnu99
-INCLUDES=-I../lua/src \
- -I$(lastword $(wildcard ../ncurses/build/*/include)) \
- -I$(lastword $(wildcard ../libedit/build/*/src))
-LFLAGS=-L../lua/src \
- -L$(lastword $(wildcard ../ncurses/build/*/lib)) \
- -L$(lastword $(wildcard ../libedit/build/*/src/.libs))
-LIBS=-ledit -ltinfo -llua
+LIBS=-ledit -ltinfo -l$(LUA_LIB_NAME)
SRCS=cli.c
MAIN=cli.so
-# For compiling executable running locally
-LOC_INCLUDES=-I../lua/src
-LOC_LFLAGS=-L../lua/src
-LOC_LDFLAGS=-Wl,-rpath,$(abspath ../lua/src)
-LOC_MAIN=cli
+INCLUDES = $(LUA_INCLUDES)
+
+SRC = $(shell readlink -f ../..)
module: $(MAIN)
+ $(SRC)/scripts/manifest_from_host.sh cli.so > usr.manifest
$(MAIN): $(SRCS)
- $(CC) -DOSV_CLI $(CFLAGS) $(INCLUDES) -fPIC -shared -o $@ $(SRCS) $(LFLAGS) $(LIBS)
-
-$(LOC_MAIN): $(SRCS)
- $(CC) $(CFLAGS) $(LOC_INCLUDES) $^ -o $@ $(LOC_LDFLAGS) $(LOC_LFLAGS) $(LIBS)
+ $(CC) $(CFLAGS) $(INCLUDES) $^ -fPIC -pie -o $@ $(LIBS)
clean:
- rm -f $(MAIN) $(LOC_MAIN)
- make -f rpmbuild/Makefile clean
-
-rpm: $(LOC_MAIN)
- make -C rpmbuild
+ rm -f $(MAIN)
-.PHONY: module clean rpm
+.PHONY: module clean
diff --git a/modules/cli/cli.c b/modules/cli/cli.c
index 01c6a1e8..5b39d68c 100644
--- a/modules/cli/cli.c
+++ b/modules/cli/cli.c
@@ -5,6 +5,7 @@
#include <signal.h>
#include <getopt.h>
#include <signal.h>
+#include <gnu/libc-version.h>
#include <lua.h>
#include <lauxlib.h>
@@ -16,17 +17,15 @@
#include <sys/poll.h>
#include <termios.h>
-#ifdef OSV_CLI
-#define CLI_LUA "/cli/cli.lua"
-#define CLI_LUA_PATH "/usr/share/lua/5.2/?.lua;/cli/lib/?.lua;/cli/lua/share/?.lua"
-#define CLI_LUA_CPATH "/usr/lib/lua/5.2/?.so;/cli/lua/lib/?.so"
-#define CLI_COMMANDS_PATH "/cli/commands"
-#else
-#define CLI_LUA "cli.lua"
-#define CLI_LUA_PATH "lib/?.lua;../lua/out/share/lua/5.2/?.lua;./lib/share/lua/5.2/?.lua"
-#define CLI_LUA_CPATH "../lua/out/lib/lua/5.2/?.so;./lib/lib/lua/5.2/?.so"
-#define CLI_COMMANDS_PATH "./commands"
-#endif
+#define OSV_CLI_LUA "/cli/cli.lua"
+#define OSV_CLI_LUA_PATH "/usr/share/lua/5.3/?.lua;/usr/share/lua/5.3/?/init.lua;/cli/lib/?.lua;/cli/lua/share/?.lua"
+#define OSV_CLI_LUA_CPATH "/usr/lib/lua/5.3/?.so;/cli/lua/lib/?.so"
+#define OSV_CLI_COMMANDS_PATH "/cli/commands"
+
+#define HOST_CLI_LUA "cli.lua"
+#define HOST_CLI_LUA_PATH "lib/?.lua;./lib/share/lua/5.3/?.lua;../lua/install/lua_modules/share/lua/5.3/?.lua;../lua/install/lua_modules/share/lua/5.3/?/init.lua"
+#define HOST_CLI_LUA_CPATH "./lib/lib/lua/5.3/?.so;../lua/install/lua_modules/lib/lua/5.3/?.so"
+#define HOST_CLI_COMMANDS_PATH "./commands"
#define PROMPT_MAXLEN 128
static char sprompt[PROMPT_MAXLEN];
@@ -66,22 +65,26 @@ static struct {
/* Misc */
void print_usage();
+static int is_osv() {
+ return strcmp("OSv", gnu_get_libc_release()) == 0;
+}
+
int main (int argc, char* argv[]) {
-#ifdef OSV_CLI
- putenv("TERM=vt100-qemu");
+ if (is_osv()) {
+ putenv("TERM=vt100-qemu");
- cli_console_size_dirty();
-#else
- struct winsize sz;
- ioctl(0, TIOCGWINSZ, &sz);
+ cli_console_size_dirty();
+ } else {
+ struct winsize sz;
+ ioctl(0, TIOCGWINSZ, &sz);
- if (sz.ws_col > 0 && sz.ws_row > 0) {
- con_width = sz.ws_col;
- con_height = sz.ws_row;
+ if (sz.ws_col > 0 && sz.ws_row > 0) {
+ con_width = sz.ws_col;
+ con_height = sz.ws_row;
- signal(SIGWINCH, cli_sigwinch_handler);
+ signal(SIGWINCH, cli_sigwinch_handler);
+ }
}
-#endif
int i;
@@ -137,6 +140,9 @@ int main (int argc, char* argv[]) {
/* Lua state */
L = cli_luaL_newstate();
+ if (L == NULL) {
+ exit(2);
+ }
if (test_command != NULL) {
if (L == NULL) {
@@ -292,10 +298,15 @@ lua_State *cli_luaL_newstate() {
lua_State *L = luaL_newstate();
luaL_openlibs(L);
- cli_lua_settable(L, "package", "path", CLI_LUA_PATH);
- cli_lua_settable(L, "package", "cpath", CLI_LUA_CPATH);
+ if (is_osv()) {
+ cli_lua_settable(L, "package", "path", OSV_CLI_LUA_PATH);
+ cli_lua_settable(L, "package", "cpath", OSV_CLI_LUA_CPATH);
+ } else {
+ cli_lua_settable(L, "package", "path", HOST_CLI_LUA_PATH);
+ cli_lua_settable(L, "package", "cpath", HOST_CLI_LUA_CPATH);
+ }
- int error = luaL_loadfile(L, CLI_LUA) || lua_pcall(L, 0, 0, 0);
+ int error = luaL_loadfile(L, is_osv() ? OSV_CLI_LUA : HOST_CLI_LUA) || lua_pcall(L, 0, 0, 0);
if (error) {
fprintf(stderr, "Failed to load shell: %s\n", lua_tostring(L, -1));
lua_pop(L, 1);
@@ -304,7 +315,7 @@ lua_State *cli_luaL_newstate() {
return NULL;
}
- cli_lua_settable(L, "context", "commands_path", CLI_COMMANDS_PATH);
+ cli_lua_settable(L, "context", "commands_path", is_osv() ? OSV_CLI_COMMANDS_PATH : HOST_CLI_COMMANDS_PATH);
for (int i=0; i<CTXC; i++) {
if (ctxv[i]) {
cli_lua_settable(L, "context", ctx[i].name, ctxv[i]);
diff --git a/modules/cli/lib/osv_api.lua b/modules/cli/lib/osv_api.lua
index 7155298d..affc3056 100644
--- a/modules/cli/lib/osv_api.lua
+++ b/modules/cli/lib/osv_api.lua
@@ -91,12 +91,12 @@ local function create_ssl_socket()
local params = {
mode = "client",
- protocol = "tlsv1",
+ protocol = "any",
key = context.ssl_key,
certificate = context.ssl_cert,
cafile = context.ssl_cacert,
verify = context.ssl_verify,
- options = "all"
+ options = {"all", "no_sslv3"}
}
local st = getmetatable(conn.sock).__index.settimeout
diff --git a/modules/cli/module.py b/modules/cli/module.py
index e38aa2db..a0ace526 100644
--- a/modules/cli/module.py
+++ b/modules/cli/module.py
@@ -3,16 +3,14 @@ from osv.modules.filemap import FileMap
from osv.modules import api
require('lua')
-require('ncurses')
-require('libedit')
+require('terminfo')
require_running('httpserver')
usr_files = FileMap()
usr_files.add('${OSV_BASE}/modules/cli').to('/cli') \
- .include('cli.so') \
.include('cli.lua') \
.include('lib/**') \
.include('commands/**')
-full = api.run('/cli/cli.so')
+full = api.run('/cli.so')
default = full
diff --git a/modules/cli/rpmbuild/.gitignore b/modules/cli/rpmbuild/.gitignore
deleted file mode 100644
index f44d1b0b..00000000
--- a/modules/cli/rpmbuild/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-BUILD/*
-BUILDROOT/*
-osv-cli-1.0/*
-RPMS/*
-SOURCES/*
-SRPMS/*
diff --git a/modules/cli/rpmbuild/Makefile b/modules/cli/rpmbuild/Makefile
deleted file mode 100644
index be9915d6..00000000
--- a/modules/cli/rpmbuild/Makefile
+++ /dev/null
@@ -1,45 +0,0 @@
-ROOT_DIR := $(shell pwd)
-CLI_ROOT=$(ROOT_DIR)/..
-LUA_DIR=$(CLI_ROOT)/../lua
-VERSION=1.0
-
-MAIN=rpm
-CLI_DIR=osv-cli-$(VERSION)/usr/lib64/osv-cli
-LOC_MAIN=cli
-
-module: clean all
-
-all: $(MAIN)
-
-init:
- mkdir -p BUILD
- mkdir -p BUILDROOT
- mkdir -p $(CLI_DIR)/lib
- mkdir -p RPMS
- mkdir -p SOURCES
- mkdir -p SRPMS
- echo $(ROOT_DIR)
-
-$(MAIN): init copy-files
- tar -zcvf osv-cli-1.0.tar.gz osv-cli-1.0/
- mv osv-cli-1.0.tar.gz SOURCES/
- rpmbuild --define "_topdir `pwd`" -ba SPECS/osv-cli.spec
-
-copy-files:
- cp $(CLI_ROOT)/cli $(CLI_DIR)
- cp $(CLI_ROOT)/cli.lua $(CLI_DIR)
- cp $(CLI_ROOT)/lib/*.lua $(CLI_DIR)/lib
- cp -r $(CLI_ROOT)/commands $(CLI_DIR)
- cp -r $(LUA_DIR)/out/share $(CLI_DIR)/lib
- cp -r $(LUA_DIR)/out/lib $(CLI_DIR)/lib
- cp $(LUA_DIR)/src/liblua.so $(CLI_DIR)/lib
-
-clean:
- rm -rf BUILD
- rm -rf BUILDROOT
- rm -rf $(CLI_DIR)
- rm -rf RPMS
- rm -rf SOURCES
- rm -rf SRPMS
-
-.PHONY: module clean
diff --git a/modules/cli/rpmbuild/SPECS/osv-cli.spec b/modules/cli/rpmbuild/SPECS/osv-cli.spec
deleted file mode 100644
index 5aff3bcb..00000000
--- a/modules/cli/rpmbuild/SPECS/osv-cli.spec
+++ /dev/null
@@ -1,54 +0,0 @@
-%define __spec_install_post %{nil}
-%define debug_package %{nil}
-%define __os_install_post %{_dbpath}/brp-compress
-
-Name: osv-cli
-Version: 1.0
-Release: 1%{?dist}
-Summary: A standalon CLI for the OSv
-
-Group: Development/Tools
-License: FreeBSD
-URL:
http://cloudius-systems.com/
-Source0: %{name}-%{version}.tar.gz
-
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
-Requires: libedit
-Requires: openssl-libs
-Requires: ncurses
-%description
-
-
-%prep
-%setup -q
-
-
-%build
-
-
-%install
-rm -rf %{buildroot}
-mkdir -p %{buildroot}
-
-# in builddir
-cp -a * %{buildroot}
-
-
-%post
-echo "(cd %{_libdir}/osv-cli && exec" './cli $@)' > %{_bindir}/cli
-chmod a+x %{_bindir}/cli
-
-%clean
-rm -rf %{buildroot}
-
-
-%files
-%defattr(-,root,root,-)
-%{_libdir}/*
-%doc
-
-%postun
-rm %{_bindir}/cli
-
-
-%changelog
diff --git a/modules/httpserver-api/Makefile b/modules/httpserver-api/Makefile
index 0f581e6e..30fdc1a1 100644
--- a/modules/httpserver-api/Makefile
+++ b/modules/httpserver-api/Makefile
@@ -46,6 +46,7 @@ module: all
all: lib$(TARGET).so api_api api_app api_env api_file api_fs api_hardware api_network api_os api_trace
$(call quiet, cat _usr_*.manifest | sort | uniq > usr.manifest, CREATE_MANIFEST)
+ $(call very-quiet, $(SRC)/scripts/manifest_from_host.sh lib$(TARGET).so >> usr.manifest)
add_api_to_manifest = \
echo "/usr/mgmt/plugins/libhttpserver-$(1).so: `pwd`/libhttpserver-$(1).so" > _usr_$(1).manifest
diff --git a/modules/httpserver-api/module.py b/modules/httpserver-api/module.py
index 25bc4948..e1da7447 100644
--- a/modules/httpserver-api/module.py
+++ b/modules/httpserver-api/module.py
@@ -13,7 +13,6 @@ usr_files.add(os.path.join(_module, 'api-doc')).to('/usr/mgmt/api')
api.require('openssl')
api.require('libtools')
-api.require('libyaml')
# only require next 3 modules if java (jre) is included in the list of modules
api.require_if_other_module_present('josvsym','java')
diff --git a/modules/libedit/.gitignore b/modules/libedit/.gitignore
deleted file mode 100644
index 5fc3ba00..00000000
--- a/modules/libedit/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-build
-download
diff --git a/modules/libedit/Makefile b/modules/libedit/Makefile
deleted file mode 100644
index 04979144..00000000
--- a/modules/libedit/Makefile
+++ /dev/null
@@ -1,41 +0,0 @@
-# A small Makefile "download and build" for libedit
-
-# Directories for downloading and building
-DOWNLOAD=download
-BUILD=build
-
-# libedit
-LE_VERSION=20140620-3.1
-LE_FOLDER=libedit-$(LE_VERSION)
-LE_DOWNLOAD=
http://thrysoee.dk/editline/libedit-$(LE_VERSION).tar.gz
-LE_ARCHIVE=download/$(LE_FOLDER).tar.gz
-LE_BUILD=$(BUILD)/$(LE_FOLDER)
-
-CFLAGS:=-fPIC
-LDFLAGS:=-L$(abspath $(lastword $(wildcard ../ncurses/build/*/lib)))
-
-MAIN=$(LE_BUILD)/src/.libs/libedit.so.0
-
-module: $(MAIN)
-
-$(MAIN): $(LE_BUILD)/Makefile
- cd $(LE_BUILD) && make
-
-$(LE_BUILD)/Makefile: $(LE_BUILD)/configure
- cd $(LE_BUILD) && CFLAGS=$(CFLAGS) LDFLAGS=$(LDFLAGS) ./configure
-
-$(LE_BUILD)/configure: $(LE_ARCHIVE) | $(BUILD)
- cd $(BUILD) && tar xzf ../$(LE_ARCHIVE)
- touch $(LE_BUILD)/configure
-
-$(LE_ARCHIVE): | $(DOWNLOAD)
- cd $(DOWNLOAD) && \
- curl --remote-name --remote-time $(LE_DOWNLOAD)
-
-$(DOWNLOAD) $(BUILD):
- @mkdir -p $@
-
-clean:
- rm -rf $(BUILD) $(DOWNLOAD)
-
-.PHONY: module clean
diff --git a/modules/libedit/module.py b/modules/libedit/module.py
deleted file mode 100644
index 53582563..00000000
--- a/modules/libedit/module.py
+++ /dev/null
@@ -1,7 +0,0 @@
-from osv.modules.filemap import FileMap
-
-VERSION = '20140620-3.1'
-
-usr_files = FileMap()
-usr_files.add('${OSV_BASE}/modules/libedit/build/libedit-%s/src/.libs' % VERSION).to('/usr/lib') \
- .include('lib*.so.?')
diff --git a/modules/lua/.gitignore b/modules/lua/.gitignore
index 0e3f9ff5..0089f1a3 100644
--- a/modules/lua/.gitignore
+++ b/modules/lua/.gitignore
@@ -1,5 +1,3 @@
-build
-download
-out
-src/*
-!src/Makefile
+install
+upstream
+usr.manifest
diff --git a/modules/lua/Makefile b/modules/lua/Makefile
index 620a78f8..91325455 100644
--- a/modules/lua/Makefile
+++ b/modules/lua/Makefile
@@ -1,138 +1,65 @@
-# Some directories
-OUT=out
-BUILD=build
-DOWNLOAD=download
-
-# Official version
-LUA_V=5.2
-
-# Archive details
-LUA_VERSION=5.2.3
-LUA_FOLDER=lua-$(LUA_VERSION)
-LUA_DOWNLOAD=
http://www.lua.org/ftp/$(LUA_FOLDER).tar.gz
-LUA_ARCHIVE=download/$(LUA_FOLDER).tar.gz
-
-# Lua sources for dependencies
-LUA_SRCS=lapi.c lapi.h lauxlib.c lauxlib.h lbaselib.c lbitlib.c lcode.c \
- lcode.h lcorolib.c lctype.c lctype.h ldblib.c ldebug.c ldebug.h ldo.c ldo.h \
- ldump.c lfunc.c lfunc.h lgc.c lgc.h linit.c liolib.c llex.c llex.h \
- llimits.h lmathlib.c lmem.c lmem.h loadlib.c lobject.c lobject.h lopcodes.c \
- lopcodes.h loslib.c lparser.c lparser.h lstate.c lstate.h lstring.c \
- lstring.h lstrlib.c ltable.c ltable.h ltablib.c ltm.c ltm.h lua.c luac.c \
- luaconf.h lua.h lualib.h lundump.c lundump.h lvm.c lvm.h lzio.c lzio.h
-
-SRCS=$(addprefix src/, $(LUA_SRCS))
-
-# Out sub-directories
-BDIR=$(OUT)/bin
-LDIR=$(OUT)/lib/lua/$(LUA_V)
-CDIR=$(OUT)/share/lua/$(LUA_V)
-
-# Lua itself
-MAIN=src/liblua.so
-
-# Local executable used for LuaRocks
-LUA_BIN=$(BDIR)/lua
-LUA_ROCKS_BIN=$(BDIR)/luarocks
+SRC = $(shell readlink -f ../..)
+LUA_ROCKS=upstream/luarocks-3.1.1-linux-x86_64/luarocks
+MODULES_DIR=install/lua_modules
+LDIR=install/lua_modules/lib/lua/5.3
+CDIR=install/lua_modules/share/lua/5.3
# List of Lua modules, each module has its own target
LUA_MODULES=LuaSocket LuaJSON Lua_stdlib LuaFileSystem LuaPath LuaSec
-module: $(MAIN) $(LUA_MODULES)
-
-$(MAIN): $(SRCS)
- cd src && $(MAKE)
-
-$(LUA_BIN): $(MAIN) | $(BDIR)
- cp src/lua $(LUA_BIN)
-
-$(LUA_ARCHIVE): | $(DOWNLOAD)
- cd $(DOWNLOAD) && \
- curl --remote-name --remote-time $(LUA_DOWNLOAD)
-
-$(SRCS): $(LUA_ARCHIVE)
- tar -Oxzf $< $(LUA_FOLDER)/$@ > $@
-
-$(DOWNLOAD) $(BUILD) $(LDIR) $(CDIR) $(BDIR):
- @mkdir -p $@
-
-# == LuaRocks ==
-LuaRocks_V=2.1.2
-LuaRocks_F=luarocks-$(LuaRocks_V)
-LuaRocks_A=$(LuaRocks_F).tar.gz
-LuaRocks_D=
http://luarocks.org/releases/$(LuaRocks_A)
-
-$(LUA_ROCKS_BIN): $(LUA_BIN) $(BUILD)/$(LuaRocks_F)/src/luarocks
- cd $(BUILD)/$(LuaRocks_F) && \
- make install
-
-$(BUILD)/$(LuaRocks_F)/src/luarocks: $(BUILD)/$(LuaRocks_F)/Makefile
- cd $(BUILD)/$(LuaRocks_F) && \
- make build
-
-$(BUILD)/$(LuaRocks_F)/Makefile: $(BUILD)/$(LuaRocks_F)/configure
- $(eval PREFIX=$(shell pwd))
- cd $(BUILD)/$(LuaRocks_F) && \
- ./configure --prefix=$(PREFIX)/$(OUT) --force-config \
- --with-lua-include=$(PREFIX)/src --lua-version=$(LUA_V) \
- --with-lua=$(PREFIX)/$(OUT)
- touch $@
+LUA_LIBRARY := $(shell ldconfig -p | grep -Po "liblua*.5\.3.so.0" | head -1)
+ifndef LUA_LIBRARY
+ LUA_LIBRARY := $(shell ldconfig -p | grep -Po "liblua*.5\.3.so" | head -1)
+endif
-$(BUILD)/$(LuaRocks_F)/configure: $(DOWNLOAD)/$(LuaRocks_A) | $(BUILD)
- tar --directory $(BUILD) -xzf $<
- touch $@
+module: $(LUA_MODULES)
+ mkdir -p $(MODULES_DIR)
+ $(SRC)/scripts/manifest_from_host.sh -l $(LUA_LIBRARY) > usr.manifest
-$(DOWNLOAD)/$(LuaRocks_A): | $(DOWNLOAD)
- curl --remote-time --location $(LuaRocks_D) > $@
+$(LUA_ROCKS):
+ mkdir -p upstream
+ cd upstream && wget -c
https://luarocks.github.io/luarocks/releases/luarocks-3.1.1-linux-x86_64.zip
+ cd upstream && unzip luarocks-3.1.1-linux-x86_64.zip
# == LuaSocket ==
LuaSocket: $(LDIR)/socket/core.so
-$(LDIR)/socket/core.so: $(LUA_ROCKS_BIN)
- out/bin/luarocks install luasocket 3.0-rc1
+$(LDIR)/socket/core.so: $(LUA_ROCKS)
+ $(LUA_ROCKS) install --no-doc --tree $(MODULES_DIR) luasocket 3.0rc1-2
# == LuaJSON ==
LuaJSON: $(CDIR)/json.lua
-$(CDIR)/json.lua: $(LUA_ROCKS_BIN)
- out/bin/luarocks install luajson 1.3.3
+$(CDIR)/json.lua: $(LUA_ROCKS)
+ $(LUA_ROCKS) install --no-doc --tree $(MODULES_DIR) luajson 1.3.4-1
# == Lua_stdlib ==
Lua_stdlib: $(CDIR)/std.lua
-$(CDIR)/std.lua: $(LUA_ROCKS_BIN)
- out/bin/luarocks install stdlib 40
+$(CDIR)/std.lua: $(LUA_ROCKS)
+ $(LUA_ROCKS) install --no-doc --tree $(MODULES_DIR) stdlib 41.2.2-1
# == LuaFileSystem ==
LuaFileSystem: $(LDIR)/lfs.so
-$(LDIR)/lfs.so: $(LUA_ROCKS_BIN)
- out/bin/luarocks install LuaFileSystem 1.6.2
+$(LDIR)/lfs.so: $(LUA_ROCKS)
+ $(LUA_ROCKS) install --no-doc --tree $(MODULES_DIR) LuaFileSystem 1.7.0-2
# == LuaPath ==
LuaPath: $(CDIR)/path.lua
-$(CDIR)/path.lua: $(LUA_ROCKS_BIN)
- out/bin/luarocks install lua-path 0.2.1
+$(CDIR)/path.lua: $(LUA_ROCKS)
+ $(LUA_ROCKS) install --no-doc --tree $(MODULES_DIR) lua-path 0.3.1-1
# == LuaSec ==
LuaSec: $(CDIR)/ssl.lua
-$(CDIR)/ssl.lua: $(LUA_ROCKS_BIN)
- ./check-openssl-version
-
-# Workaround because LuaRocks ignores /lib64
-ifneq ("$(wildcard /usr/lib64/libssl.so*)", "")
- out/bin/luarocks install LuaSec 0.5 OPENSSL_LIBDIR=/usr/lib64
-else
- out/bin/luarocks install LuaSec 0.5
-endif
+$(CDIR)/ssl.lua: $(LUA_ROCKS)
+ $(LUA_ROCKS) install --no-doc --tree $(MODULES_DIR) LuaSec 0.8-1
-##
clean:
- rm -f $(SRCS)
- rm -rf $(DOWNLOAD) $(BUILD) $(OUT)
- cd src && $(MAKE) clean
+ rm -rf install
+ rm -rf upstream
.PHONY: module clean $(LUA_MODULES)
.NOTPARALLEL: $(LUA_MODULES)
diff --git a/modules/lua/check-openssl-version b/modules/lua/check-openssl-version
deleted file mode 100755
index 90ae479a..00000000
--- a/modules/lua/check-openssl-version
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/sh
-
-# This is here to help cope with the transition period that the distro
-# use for openssl-1.0 to openssl-1.1
-if [ -f /usr/include/openssl/opensslv.h ]; then
- has_new_openssl=$(grep "OpenSSL 1.1" /usr/include/openssl/opensslv.h)
-fi
-if [ "$has_new_openssl"x != "x" ]; then
- echo "OpenSSL 1.1 header detected."
- echo "On Fedora >= 26 please use the compat headers by doing:"
- echo ""
- echo " dnf install --allowerasing compat-openssl10-devel -y"
- echo ""
- exit 1
-fi
-exit 0
diff --git a/modules/lua/module.py b/modules/lua/module.py
index b15ebbc2..721454a6 100644
--- a/modules/lua/module.py
+++ b/modules/lua/module.py
@@ -1,10 +1,6 @@
from osv.modules.filemap import FileMap
usr_files = FileMap()
-usr_files.add('${OSV_BASE}/modules/lua/src/liblua.so').to('/usr/lib/liblua.so')
-
-usr_files.add('${OSV_BASE}/modules/lua/out').to('/usr') \
- .exclude('bin/*') \
- .exclude('etc/*') \
+usr_files.add('${OSV_BASE}/modules/lua/install/lua_modules/').to('/usr') \
.exclude('lib/luarocks/**') \
.exclude('share/lua/*/luarocks/**')
diff --git a/modules/lua/src/Makefile b/modules/lua/src/Makefile
deleted file mode 100644
index c6ed82bb..00000000
--- a/modules/lua/src/Makefile
+++ /dev/null
@@ -1,119 +0,0 @@
-# == MODIFIED VERSION OF ORIGINAL LUA MAKEFILE ==
-
-CC= gcc
-CFLAGS=-O2 -Wall -fPIC -DLUA_COMPAT_ALL -DLUA_USE_DLOPEN -DLUA_USE_STRTODHEX \
- -DLUA_USE_AFORMAT -DLUA_USE_LONGLONG -DLUA_USE_POSIX
-LDFLAGS=
-LIBS= -lm -ldl
-
-AR= ar rcu
-RANLIB= ranlib
-RM= rm -f
-
-LUA_A= liblua.a
-CORE_O= lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o \
- lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o \
- ltm.o lundump.o lvm.o lzio.o
-LIB_O= lauxlib.o lbaselib.o lbitlib.o lcorolib.o ldblib.o liolib.o \
- lmathlib.o loslib.o lstrlib.o ltablib.o loadlib.o linit.o
-BASE_O= $(CORE_O) $(LIB_O)
-
-LUA_T= lua
-LUA_O= lua.o
-
-LUA_SO= liblua.so
-
-ALL_O= $(BASE_O) $(LUA_O)
-ALL_T= $(LUA_SO) $(LUA_A) $(LUA_T)
-
-all: $(ALL_T)
-
-o: $(ALL_O)
-
-$(LUA_A): $(BASE_O)
- $(AR) $@ $(BASE_O)
- $(RANLIB) $@
-
-$(LUA_T): $(LUA_O) $(LUA_A)
- $(CC) -o $@ $(LDFLAGS) $(LUA_O) $(LUA_A) $(LIBS)
-
-$(LUA_SO): $(ALL_O)
- $(CC) $(CFLAGS) -shared -o $@ $(LDFLAGS) $? $(LIBS)
-
-clean:
- $(RM) $(ALL_T) $(ALL_O)
-
-depend:
- @$(CC) $(CFLAGS) -MM l*.c
-
-echo:
- @echo "CC= $(CC)"
- @echo "CFLAGS= $(CFLAGS)"
- @echo "LDFLAGS= $(SYSLDFLAGS)"
- @echo "LIBS= $(LIBS)"
- @echo "RM= $(RM)"
-
-# list targets that do not create files (but not all makes understand .PHONY)
-.PHONY: all o clean depend echo
-
-# DO NOT DELETE
-
-lapi.o: lapi.c lua.h luaconf.h lapi.h llimits.h lstate.h lobject.h ltm.h \
- lzio.h lmem.h ldebug.h ldo.h lfunc.h lgc.h lstring.h ltable.h lundump.h \
- lvm.h
-lauxlib.o: lauxlib.c lua.h luaconf.h lauxlib.h
-lbaselib.o: lbaselib.c lua.h luaconf.h lauxlib.h lualib.h
-lbitlib.o: lbitlib.c lua.h luaconf.h lauxlib.h lualib.h
-lcode.o: lcode.c lua.h luaconf.h lcode.h llex.h lobject.h llimits.h \
- lzio.h lmem.h lopcodes.h lparser.h ldebug.h lstate.h ltm.h ldo.h lgc.h \
- lstring.h ltable.h lvm.h
-lcorolib.o: lcorolib.c lua.h luaconf.h lauxlib.h lualib.h
-lctype.o: lctype.c lctype.h lua.h luaconf.h llimits.h
-ldblib.o: ldblib.c lua.h luaconf.h lauxlib.h lualib.h
-ldebug.o: ldebug.c lua.h luaconf.h lapi.h llimits.h lstate.h lobject.h \
- ltm.h lzio.h lmem.h lcode.h llex.h lopcodes.h lparser.h ldebug.h ldo.h \
- lfunc.h lstring.h lgc.h ltable.h lvm.h
-ldo.o: ldo.c lua.h luaconf.h lapi.h llimits.h lstate.h lobject.h ltm.h \
- lzio.h lmem.h ldebug.h ldo.h lfunc.h lgc.h lopcodes.h lparser.h \
- lstring.h ltable.h lundump.h lvm.h
-ldump.o: ldump.c lua.h luaconf.h lobject.h llimits.h lstate.h ltm.h \
- lzio.h lmem.h lundump.h
-lfunc.o: lfunc.c lua.h luaconf.h lfunc.h lobject.h llimits.h lgc.h \
- lstate.h ltm.h lzio.h lmem.h
-lgc.o: lgc.c lua.h luaconf.h ldebug.h lstate.h lobject.h llimits.h ltm.h \
- lzio.h lmem.h ldo.h lfunc.h lgc.h lstring.h ltable.h
-linit.o: linit.c lua.h luaconf.h lualib.h lauxlib.h
-liolib.o: liolib.c lua.h luaconf.h lauxlib.h lualib.h
-llex.o: llex.c lua.h luaconf.h lctype.h llimits.h ldo.h lobject.h \
- lstate.h ltm.h lzio.h lmem.h llex.h lparser.h lstring.h lgc.h ltable.h
-lmathlib.o: lmathlib.c lua.h luaconf.h lauxlib.h lualib.h
-lmem.o: lmem.c lua.h luaconf.h ldebug.h lstate.h lobject.h llimits.h \
- ltm.h lzio.h lmem.h ldo.h lgc.h
-loadlib.o: loadlib.c lua.h luaconf.h lauxlib.h lualib.h
-lobject.o: lobject.c lua.h luaconf.h lctype.h llimits.h ldebug.h lstate.h \
- lobject.h ltm.h lzio.h lmem.h ldo.h lstring.h lgc.h lvm.h
-lopcodes.o: lopcodes.c lopcodes.h llimits.h lua.h luaconf.h
-loslib.o: loslib.c lua.h luaconf.h lauxlib.h lualib.h
-lparser.o: lparser.c lua.h luaconf.h lcode.h llex.h lobject.h llimits.h \
- lzio.h lmem.h lopcodes.h lparser.h ldebug.h lstate.h ltm.h ldo.h lfunc.h \
- lstring.h lgc.h ltable.h
-lstate.o: lstate.c lua.h luaconf.h lapi.h llimits.h lstate.h lobject.h \
- ltm.h lzio.h lmem.h ldebug.h ldo.h lfunc.h lgc.h llex.h lstring.h \
- ltable.h
-lstring.o: lstring.c lua.h luaconf.h lmem.h llimits.h lobject.h lstate.h \
- ltm.h lzio.h lstring.h lgc.h
-lstrlib.o: lstrlib.c lua.h luaconf.h lauxlib.h lualib.h
-ltable.o: ltable.c lua.h luaconf.h ldebug.h lstate.h lobject.h llimits.h \
- ltm.h lzio.h lmem.h ldo.h lgc.h lstring.h ltable.h lvm.h
-ltablib.o: ltablib.c lua.h luaconf.h lauxlib.h lualib.h
-ltm.o: ltm.c lua.h luaconf.h lobject.h llimits.h lstate.h ltm.h lzio.h \
- lmem.h lstring.h lgc.h ltable.h
-lua.o: lua.c lua.h luaconf.h lauxlib.h lualib.h
-luac.o: luac.c lua.h luaconf.h lauxlib.h lobject.h llimits.h lstate.h \
- ltm.h lzio.h lmem.h lundump.h ldebug.h lopcodes.h
-lundump.o: lundump.c lua.h luaconf.h ldebug.h lstate.h lobject.h \
- llimits.h ltm.h lzio.h lmem.h ldo.h lfunc.h lstring.h lgc.h lundump.h
-lvm.o: lvm.c lua.h luaconf.h ldebug.h lstate.h lobject.h llimits.h ltm.h \
- lzio.h lmem.h ldo.h lfunc.h lgc.h lopcodes.h lstring.h ltable.h lvm.h
-lzio.o: lzio.c lua.h luaconf.h llimits.h lmem.h lstate.h lobject.h ltm.h \
- lzio.h
diff --git a/modules/openssl/.gitignore b/modules/openssl/.gitignore
new file mode 100644
index 00000000..f9235a6b
--- /dev/null
+++ b/modules/openssl/.gitignore
@@ -0,0 +1 @@
+usr.manifest
diff --git a/modules/openssl/Makefile b/modules/openssl/Makefile
new file mode 100644
index 00000000..fd1617bb
--- /dev/null
+++ b/modules/openssl/Makefile
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2019 Waldemar Kozaczuk, Ltd.
+#
+# This work is open source software, licensed under the terms of the
+# BSD license as described in the LICENSE file in the top-level directory.
+#
+SRC = $(shell readlink -f ../..)
+
+module:
+ $(SRC)/scripts/manifest_from_host.sh -l libssl.so.1.1 > usr.manifest
+ # From krb5-libs
+ #/&/etc/krb5.conf: %(miscbase)s/&
+ $(SRC)/scripts/manifest_from_host.sh -l libgssapi_krb5.so.2 >> usr.manifest
+ # From libselinux
+ $(SRC)/scripts/manifest_from_host.sh -l libselinux.so.1 >> usr.manifest
+ # From xz-libs
+ $(SRC)/scripts/manifest_from_host.sh -l liblzma.so.5 >> usr.manifest
+
+.PHONY: module
+
+clean:
+ rm -rf usr.manifest
+.PHONY: clean
diff --git a/modules/openssl/usr.manifest b/modules/openssl/usr.manifest
deleted file mode 100644
index e9d13ad3..00000000
--- a/modules/openssl/usr.manifest
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# Copyright (C) 2014 Cloudius Systems, Ltd.
-#
-# This work is open source software, licensed under the terms of the
-# BSD license as described in the LICENSE file in the top-level directory.
-#
-
-# From openssl-libs
-/usr/lib/openssl/**: %(miscbase)s/usr/lib64/openssl/**
-#/usr/lib/&/libssl.so.1.0.1k: %(miscbase)s/usr/lib64/&
-/usr/lib/&/libssl.so.10: %(miscbase)s/usr/lib64/&
-#/usr/lib/&/libcrypto.so.1.0.1k: %(miscbase)s/usr/lib64/&
-/usr/lib/&/libcrypto.so.10: %(miscbase)s/usr/lib64/&
-
-# From libcom_err
-/usr/lib/&/libcom_err.so.2: %(miscbase)s/usr/lib64/&
-#/usr/lib/&/libcom_err.so.2.1: %(miscbase)s/usr/lib64/&
-
-# From krb5-libs
-/&/etc/krb5.conf: %(miscbase)s/&
-/usr/lib/&/libgssapi_krb5.so.2: %(miscbase)s/usr/lib64/&
-/usr/lib/&/libk5crypto.so.3: %(miscbase)s/usr/lib64/&
-/usr/lib/&/libkrb5.so.3: %(miscbase)s/usr/lib64/&
-#/usr/lib/&/libkrb5.so.3.3: %(miscbase)s/usr/lib64/&
-/usr/lib/&/libkrb5support.so.0: %(miscbase)s/usr/lib64/&
-
-# From libselinux
-/usr/lib/&/libselinux.so.1: %(miscbase)s/usr/lib64/&
-
-# From keyutils-libs
-/usr/lib/&/libkeyutils.so.1: %(miscbase)s/usr/lib64/&
-
-# From pcre
-/usr/lib/&/libpcre.so.1: %(miscbase)s/usr/lib64/&
-
-# From xz-libs
-/usr/lib/&/liblzma.so.5: %(miscbase)s/usr/lib64/&
diff --git a/modules/terminfo/Makefile b/modules/terminfo/Makefile
new file mode 100644
index 00000000..ad4fbb81
--- /dev/null
+++ b/modules/terminfo/Makefile
@@ -0,0 +1,16 @@
+OUT=out
+TI_VT100=$(OUT)/terminfo/v/vt100-qemu
+
+module: $(TI_VT100)
+
+$(TI_VT100): $(MAIN)
+ @mkdir -p $(OUT)/terminfo
+ infocmp vt100 | sed 's/cud1=\(^J\|\\n\),/cud1=\\E[B,/; s/ind=\(^J\|\\n\),/ind=\\E[S,/; s/vt100/vt100-qemu/' \
+ > $(OUT)/terminfo.tmp
+ tic -o $(OUT)/terminfo $(OUT)/terminfo.tmp
+ rm -f $(OUT)/terminfo.tmp
+
+clean:
+ rm -rf $(OUT)
+
+.PHONY: module clean
diff --git a/modules/terminfo/module.py b/modules/terminfo/module.py
new file mode 100644
index 00000000..a422d75c
--- /dev/null
+++ b/modules/terminfo/module.py
@@ -0,0 +1,4 @@
+from osv.modules.filemap import FileMap
+
+usr_files = FileMap()
+usr_files.add('${OSV_BASE}/modules/terminfo/out/terminfo').to('/usr/share/terminfo')
diff --git a/scripts/setup.py b/scripts/setup.py
index de76800c..211b40de 100755
--- a/scripts/setup.py
+++ b/scripts/setup.py
@@ -46,7 +46,7 @@ class Fedora(object):
'ncurses',
'ncurses-devel',
'openssl',
- 'openssl-libs',
+ 'openssl-libs.x86_64',
'p11-kit',
'patch',
'python-dpkt',
@@ -56,41 +56,42 @@ class Fedora(object):
'unzip',
'wget',
'yaml-cpp-devel',
+ 'pax-utils',
]
ec2_packages = standard_ec2_packages
test_packages = ['openssl-devel']
ec2_post_install = standard_ec2_post_install
class Fedora_25(object):
- packages = ['java-1.8.0-openjdk', 'python2-requests', 'openssl-devel']
+ packages = ['java-1.8.0-openjdk', 'python2-requests', 'openssl-devel.x86_64', 'lua-5.3.4', 'lua-devel-5.3.4']
ec2_packages = []
test_packages = []
ec2_post_install = None
version = '25'
class Fedora_26(object):
- packages = ['java-1.8.0-openjdk', 'python2-requests', 'compat-openssl10-devel']
+ packages = ['java-1.8.0-openjdk', 'python2-requests', 'openssl-devel.x86_64', 'lua-5.3.4', 'lua-devel-5.3.4']
ec2_packages = []
test_packages = []
ec2_post_install = None
version = '26'
class Fedora_27(object):
- packages = ['java-1.8.0-openjdk', 'python2-requests', 'compat-openssl10-devel']
+ packages = ['java-1.8.0-openjdk', 'python2-requests', 'openssl-devel.x86_64', 'lua-5.3.4', 'lua-devel-5.3.4']
ec2_packages = []
test_packages = []
ec2_post_install = None
version = '27'
class Fedora_28(object):
- packages = ['java-1.8.0-openjdk', 'python2-requests', 'compat-openssl10-devel']
+ packages = ['java-1.8.0-openjdk', 'python2-requests', 'openssl-devel.x86_64', 'lua-5.3.4', 'lua-devel-5.3.4']
ec2_packages = []
test_packages = []
ec2_post_install = None
version = '28'
class Fedora_29(object):
- packages = ['java-1.8.0-openjdk', 'python2-requests', 'compat-openssl10-devel']
+ packages = ['java-1.8.0-openjdk', 'python2-requests', 'openssl-devel.x86_64', 'lua-5.3.5', 'lua-devel-5.3.5']
ec2_packages = []
test_packages = []
ec2_post_install = None
@@ -220,6 +221,9 @@ class Ubuntu(object):
'tcpdump',
'unzip',
'wget',
+ 'pax-utils',
+ 'lua5.3',
+ 'liblua5.3',
]
ec2_packages = standard_ec2_packages
--
2.20.1