mirror of
https://gitlab.kit.edu/kit/scc/sys/mail/exim-encrypt-dlfunc.git
synced 2025-12-06 07:33:55 +01:00
Switched build system to meson.
This commit is contained in:
7
.gitignore
vendored
7
.gitignore
vendored
@ -1,5 +1,2 @@
|
||||
src/genkey
|
||||
src/*.so
|
||||
src/recipient_sk.*
|
||||
src/recipient_pk.*
|
||||
src/*.c~
|
||||
/build
|
||||
|
||||
|
||||
@ -5,14 +5,15 @@ stages:
|
||||
.build:
|
||||
stage: build
|
||||
before_script:
|
||||
- apt-get update && apt-get install -y build-essential exim4-dev libsodium-dev
|
||||
- apt-get update && apt-get install -y build-essential exim4-dev libsodium-dev meson exim4-daemon-heavy
|
||||
script:
|
||||
- cd src
|
||||
- make all
|
||||
- meson build
|
||||
- meson compile -C build
|
||||
- meson test -C build
|
||||
artifacts:
|
||||
paths:
|
||||
- src/genkey
|
||||
- src/libexim-encrypt-dlfunc.so
|
||||
- build/src/genkey
|
||||
- build/src/libexim-encrypt-dlfunc.so
|
||||
|
||||
build:buster:
|
||||
extends:
|
||||
@ -33,34 +34,3 @@ build:focal:
|
||||
image: ubuntu:focal
|
||||
extends:
|
||||
- .build
|
||||
.test:
|
||||
stage: test
|
||||
before_script:
|
||||
- apt-get update && apt-get install -y exim4-daemon-heavy openssl libsodium23
|
||||
script:
|
||||
- cd src
|
||||
- ./simple_exim_test.sh
|
||||
|
||||
test:buster:
|
||||
extends:
|
||||
- .test
|
||||
needs: ["build:buster"]
|
||||
image: debian:buster
|
||||
|
||||
test:bullseye:
|
||||
extends:
|
||||
- .test
|
||||
needs: ["build:bullseye"]
|
||||
image: debian:bullseye
|
||||
|
||||
test:bionic:
|
||||
extends:
|
||||
- .test
|
||||
needs: ["build:bionic"]
|
||||
image: ubuntu:bionic
|
||||
|
||||
test:focal:
|
||||
extends:
|
||||
- .test
|
||||
needs: ["build:focal"]
|
||||
image: ubuntu:focal
|
||||
|
||||
29
meson.build
Normal file
29
meson.build
Normal file
@ -0,0 +1,29 @@
|
||||
project('libexim-encrypt-dlfunc', 'c',
|
||||
default_options: ['b_lundef=false', 'b_pie=true'])
|
||||
|
||||
compiler = meson.get_compiler('c')
|
||||
conf_data = configuration_data()
|
||||
|
||||
sodium_deps = dependency('libsodium')
|
||||
|
||||
exim4_code = '''
|
||||
#include <stdio.h>
|
||||
#include <exim4/local_scan.h>
|
||||
int main() {
|
||||
printf("%d\n", LOCAL_SCAN_ABI_VERSION_MAJOR);
|
||||
return 0;
|
||||
}
|
||||
'''
|
||||
|
||||
result = compiler.run(exim4_code)
|
||||
local_scan_version = result.stdout().strip().to_int()
|
||||
|
||||
if local_scan_version < 3
|
||||
conf_data.set('local_scan_version', 3)
|
||||
elif local_scan_version >= 3
|
||||
conf_data.set('local_scan_version', 3)
|
||||
else
|
||||
error('exim local_scan version could not be determined')
|
||||
endif
|
||||
|
||||
subdir('src')
|
||||
4
src/config.h.in
Normal file
4
src/config.h.in
Normal file
@ -0,0 +1,4 @@
|
||||
#pragma once
|
||||
|
||||
#define LOCAL_SCAN_VERSION @local_scan_version@
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
#include "config.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <strings.h>
|
||||
@ -6,8 +8,10 @@
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#define LOCAL_SCAN
|
||||
#define DLFUNC_IMPL
|
||||
/* Exim4 dlfunc API header */
|
||||
#include <local_scan.h>
|
||||
#include <exim4/local_scan.h>
|
||||
|
||||
/*
|
||||
* This is a set of workarounds for the different exim local_scan ABI versions, distribution patches and missing
|
||||
@ -21,26 +25,14 @@
|
||||
* 3.1 Ubuntu 20-04 (Focal)
|
||||
*/
|
||||
|
||||
// local_scan ABI version < 3
|
||||
#if LOCAL_SCAN_ABI_VERSION_MAJOR < 3
|
||||
#define LOCAL_SCAN
|
||||
#if LOCAL_SCAN_VERSION < 3
|
||||
#define store_get_untainted(size) store_get(size)
|
||||
#define store_get_tainted(size) store_get(size)
|
||||
|
||||
// local_scan ABI version == 3
|
||||
#elif LOCAL_SCAN_ABI_VERSION_MAJOR == 3
|
||||
#define DLFUNC_IMPL
|
||||
#elif LOCAL_SCAN_VERSION >= 3
|
||||
#define store_get_untainted(size) store_get(size, FALSE)
|
||||
#define store_get_tainted(size) store_get(size, TRUE)
|
||||
|
||||
# define string_copy(s) string_copy_function(s)
|
||||
extern uschar * string_copy_function(const uschar *);
|
||||
|
||||
// local_scan ABI version > 3
|
||||
#else
|
||||
#define DLFUNC_IMPL
|
||||
#define store_get_untainted(size) store_get(size, FALSE)
|
||||
#define store_get_tainted(size) store_get(size, TRUE)
|
||||
#error "exim4 local version"
|
||||
#endif
|
||||
|
||||
/*
|
||||
@ -329,4 +321,4 @@ int sodium_crypto_box_seal_open(uschar **yield, int argc, uschar *argv[]) {
|
||||
// return cleartext
|
||||
*yield = string_copy(cleartext);
|
||||
return OK;
|
||||
}
|
||||
}
|
||||
|
||||
14
src/meson.build
Normal file
14
src/meson.build
Normal file
@ -0,0 +1,14 @@
|
||||
configure_file(input: 'config.h.in',
|
||||
output: 'config.h',
|
||||
configuration: conf_data)
|
||||
|
||||
executable('genkey', 'genkey.c', dependencies : [ sodium_deps ] )
|
||||
|
||||
shared_library('exim-encrypt-dlfunc', 'libexim-encrypt-dlfunc.c',
|
||||
dependencies : [ sodium_deps ],
|
||||
install: true)
|
||||
|
||||
|
||||
simple_exim_test = find_program('simple_exim_test.sh')
|
||||
test('simple test', simple_exim_test)
|
||||
|
||||
@ -2,8 +2,10 @@
|
||||
|
||||
set -e
|
||||
|
||||
PATH=/sbin:/usr/sbin:$PATH
|
||||
|
||||
# copy to /tmp to keep call to exim under 256 chars (prevent problems on Ubuntu)
|
||||
install -t /tmp libexim-encrypt-dlfunc.so
|
||||
install -t /tmp src/libexim-encrypt-dlfunc.so
|
||||
|
||||
LIB=/tmp/libexim-encrypt-dlfunc.so
|
||||
CLEARTEXT="127.88.99.23" # keep short; see above
|
||||
|
||||
Reference in New Issue
Block a user