Skip to content

Commit

Permalink
install: fix static build
Browse files Browse the repository at this point in the history
Backported static build system for versions 1.10.

For the successful assembly of older versions,
additional patches have been applied:

* openssl-symbols.patch - Fix missing OpenSSL symbols.
* gh-6686-fix-build-with-glibc-2-34.patch - Necessary
  for building with >= glibc-2.34.
* zlib-backup.patch - zlib version 1.2.11 is no longer
  available for download.
* bump-libunwind.patch - Old version of the libunwind
  doesn't compile under GCC > 10.

Closes tarantool#175
  • Loading branch information
0x501D authored and LeonidVas committed Oct 12, 2022
1 parent 7f80721 commit bc7f960
Show file tree
Hide file tree
Showing 13 changed files with 752 additions and 35 deletions.
2 changes: 1 addition & 1 deletion .codespellrc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[codespell]
skip = */rocks/third_party,*/cartridge/third_party
skip = */rocks/third_party,*/cartridge/third_party,tarantool-static-build.patch
count =
quiet-level = 3
15 changes: 15 additions & 0 deletions cli/install/extra/bump-libunwind-new.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
diff --git a/static-build/CMakeLists.txt b/static-build/CMakeLists.txt
index f76fcaf58..6f8172cee 100644
--- a/static-build/CMakeLists.txt
+++ b/static-build/CMakeLists.txt
@@ -16,8 +16,8 @@ set(NCURSES_VERSION 6.2)
set(NCURSES_HASH e812da327b1c2214ac1aed440ea3ae8d)
set(READLINE_VERSION 8.0)
set(READLINE_HASH 7e6c1f16aee3244a69aba6e438295ca3)
-set(UNWIND_VERSION 1.3-rc1)
-set(UNWIND_HASH f09b670de5db6430a3de666e6aed60e3)
+set(UNWIND_VERSION 1.6.2)
+set(UNWIND_HASH f625b6a98ac1976116c71708a73dc44a)
set(BACKUP_STORAGE https://distrib.hb.bizmrg.com)

# Pass -isysroot=<SDK_PATH> option on Mac OS to a preprocessor and a C
13 changes: 13 additions & 0 deletions cli/install/extra/bump-libunwind-old.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
diff --git a/static-build/CMakeLists.txt b/static-build/CMakeLists.txt
index 9a2f85052..bc73496e5 100644
--- a/static-build/CMakeLists.txt
+++ b/static-build/CMakeLists.txt
@@ -12,7 +12,7 @@ set(OPENSSL_VERSION 1.1.1f)
set(ZLIB_VERSION 1.2.11)
set(NCURSES_VERSION 6.2)
set(READLINE_VERSION 8.0)
-set(UNWIND_VERSION 1.3-rc1)
+set(UNWIND_VERSION 1.6.2)

# Pass -isysroot=<SDK_PATH> option on Mac OS to a preprocessor and a C
# compiler to find header files installed with an SDK.
15 changes: 15 additions & 0 deletions cli/install/extra/bump-libunwind.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
diff --git a/static-build/CMakeLists.txt b/static-build/CMakeLists.txt
index 598c42bbc..e853f3364 100644
--- a/static-build/CMakeLists.txt
+++ b/static-build/CMakeLists.txt
@@ -16,8 +16,8 @@ set(NCURSES_VERSION 6.2)
set(NCURSES_HASH e812da327b1c2214ac1aed440ea3ae8d)
set(READLINE_VERSION 8.0)
set(READLINE_HASH 7e6c1f16aee3244a69aba6e438295ca3)
-set(UNWIND_VERSION 1.3-rc1)
-set(UNWIND_HASH f09b670de5db6430a3de666e6aed60e3)
+set(UNWIND_VERSION 1.6.2)
+set(UNWIND_HASH f625b6a98ac1976116c71708a73dc44a)

# Pass -isysroot=<SDK_PATH> option on Mac OS to a preprocessor and a C
# compiler to find header files installed with an SDK.
19 changes: 19 additions & 0 deletions cli/install/extra/gh-6686-fix-build-with-glibc-2-34.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
diff --git a/test/unit/guard.cc b/test/unit/guard.cc
index a2953b829..4762d5611 100644
--- a/test/unit/guard.cc
+++ b/test/unit/guard.cc
@@ -28,13 +28,11 @@ stack_break_f(char *ptr)
return sum;
}

-static char stack_buf[SIGSTKSZ];
-
static int
main_f(va_list ap)
{
stack_t stack;
- stack.ss_sp = stack_buf;
+ stack.ss_sp = malloc(SIGSTKSZ);
stack.ss_size = SIGSTKSZ;
stack.ss_flags = 0;
sigaltstack(&stack, NULL);
73 changes: 73 additions & 0 deletions cli/install/extra/openssl-symbols-1.10.14.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
diff --git a/extra/exports b/extra/exports
index ef411a8c2..17140ecbf 100644
--- a/extra/exports
+++ b/extra/exports
@@ -363,6 +363,8 @@ tnt_HMAC_CTX_new
tnt_HMAC_Init_ex
tnt_HMAC_Update
tnt_HMAC_Final
+tnt_EVP_get_digestbyname
+tnt_EVP_get_cipherbyname
tnt_iconv
tnt_iconv_close
tnt_iconv_open
diff --git a/src/lua/crypto.c b/src/lua/crypto.c
index 27b07191d..63882420b 100644
--- a/src/lua/crypto.c
+++ b/src/lua/crypto.c
@@ -153,3 +153,15 @@ tnt_HMAC_Final(tnt_HMAC_CTX *ctx, unsigned char *md, unsigned int *len,
return rc;
#endif
}
+
+const EVP_MD *
+tnt_EVP_get_digestbyname(const char *name)
+{
+ return EVP_get_digestbyname(name);
+}
+
+const EVP_CIPHER *
+tnt_EVP_get_cipherbyname(const char *name)
+{
+ return EVP_get_cipherbyname(name);
+}
diff --git a/src/lua/crypto.lua b/src/lua/crypto.lua
index 800ccdb34..63f515fbd 100644
--- a/src/lua/crypto.lua
+++ b/src/lua/crypto.lua
@@ -19,7 +19,7 @@ ffi.cdef[[
int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl);
int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, size_t cnt);
int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s);
- const EVP_MD *EVP_get_digestbyname(const char *name);
+ const EVP_MD *tnt_EVP_get_digestbyname(const char *name);

typedef struct {} tnt_HMAC_CTX;
tnt_HMAC_CTX *tnt_HMAC_CTX_new(void);
@@ -48,7 +48,7 @@ ffi.cdef[[
int tnt_EVP_CIPHER_key_length(const EVP_CIPHER *cipher);

int tnt_EVP_CIPHER_block_size(const EVP_CIPHER *cipher);
- const EVP_CIPHER *EVP_get_cipherbyname(const char *name);
+ const EVP_CIPHER *tnt_EVP_get_cipherbyname(const char *name);
]]

ffi.C.tnt_openssl_init();
@@ -63,7 +63,7 @@ for class, name in pairs({
sha = 'SHA', sha1 = 'SHA1', sha224 = 'SHA224',
sha256 = 'SHA256', sha384 = 'SHA384', sha512 = 'SHA512',
dss = 'DSS', dss1 = 'DSS1', mdc2 = 'MDC2', ripemd160 = 'RIPEMD160'}) do
- local digest = ffi.C.EVP_get_digestbyname(class)
+ local digest = ffi.C.tnt_EVP_get_digestbyname(class)
if digest ~= nil then
digests[class] = digest
end
@@ -222,7 +222,7 @@ for algo, algo_name in pairs({des = 'DES', aes128 = 'AES-128',
for mode, mode_name in pairs({cfb = 'CFB', ofb = 'OFB',
cbc = 'CBC', ecb = 'ECB'}) do
local cipher =
- ffi.C.EVP_get_cipherbyname(algo_name .. '-' .. mode_name)
+ ffi.C.tnt_EVP_get_cipherbyname(algo_name .. '-' .. mode_name)
if cipher ~= nil then
algo_api[mode] = cipher
end
70 changes: 70 additions & 0 deletions cli/install/extra/openssl-symbols.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
diff --git a/extra/exports b/extra/exports
index b08cbc771..e131e1653 100644
--- a/extra/exports
+++ b/extra/exports
@@ -374,3 +374,5 @@ uri_format
uri_parse
uuid_nil
_say
+tnt_EVP_get_digestbyname
+tnt_EVP_get_cipherbyname
diff --git a/src/lua/crypto.c b/src/lua/crypto.c
index 80adaca78..53a6a0254 100644
--- a/src/lua/crypto.c
+++ b/src/lua/crypto.c
@@ -71,3 +71,15 @@ void tnt_HMAC_CTX_free(HMAC_CTX *ctx)
HMAC_CTX_free(ctx);
#endif
}
+
+const EVP_MD *
+tnt_EVP_get_digestbyname(const char *name)
+{
+ return EVP_get_digestbyname(name);
+}
+
+const EVP_CIPHER *
+tnt_EVP_get_cipherbyname(const char *name)
+{
+ return EVP_get_cipherbyname(name);
+}
diff --git a/src/lua/crypto.lua b/src/lua/crypto.lua
index cd1c78541..146926715 100644
--- a/src/lua/crypto.lua
+++ b/src/lua/crypto.lua
@@ -19,7 +19,7 @@ ffi.cdef[[
int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl);
int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, size_t cnt);
int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s);
- const EVP_MD *EVP_get_digestbyname(const char *name);
+ const EVP_MD *tnt_EVP_get_digestbyname(const char *name);

typedef struct {} HMAC_CTX;
HMAC_CTX *tnt_HMAC_CTX_new(void);
@@ -46,7 +46,7 @@ ffi.cdef[[
int tnt_EVP_CIPHER_key_length(const EVP_CIPHER *cipher);

int EVP_CIPHER_block_size(const EVP_CIPHER *cipher);
- const EVP_CIPHER *EVP_get_cipherbyname(const char *name);
+ const EVP_CIPHER *tnt_EVP_get_cipherbyname(const char *name);
]]

ffi.C.tnt_openssl_init();
@@ -61,7 +61,7 @@ for class, name in pairs({
sha = 'SHA', sha1 = 'SHA1', sha224 = 'SHA224',
sha256 = 'SHA256', sha384 = 'SHA384', sha512 = 'SHA512',
dss = 'DSS', dss1 = 'DSS1', mdc2 = 'MDC2', ripemd160 = 'RIPEMD160'}) do
- local digest = ffi.C.EVP_get_digestbyname(class)
+ local digest = ffi.C.tnt_EVP_get_digestbyname(class)
if digest ~= nil then
digests[class] = digest
end
@@ -217,7 +217,7 @@ for algo, algo_name in pairs({des = 'DES', aes128 = 'AES-128',
for mode, mode_name in pairs({cfb = 'CFB', ofb = 'OFB',
cbc = 'CBC', ecb = 'ECB'}) do
local cipher =
- ffi.C.EVP_get_cipherbyname(algo_name .. '-' .. mode_name)
+ ffi.C.tnt_EVP_get_cipherbyname(algo_name .. '-' .. mode_name)
if cipher ~= nil then
algo_api[mode] = cipher
end
Loading

0 comments on commit bc7f960

Please sign in to comment.