From 4a6ff66a5868ab54ec03f240d8160b7c87dd23f7 Mon Sep 17 00:00:00 2001 From: Nathan Wagner Date: Sat, 29 Sep 2018 20:03:22 +0000 Subject: [PATCH] enable static linked builds The sqlite loadable extension interface uses libdl, so it is now omitted from the sqlite3 library and zpm-shell. The -ldl linker option isn't needed, and -static is. There is also a commented out CC to use musl as the C library. Glibc doesn't actually support static linking, as it uses libdl for various name service switch libraries. The package system doesn't need to do that, and static linking the binaries reduces dependencies and eliminates library issues which could make the system unusable. --- Makefile | 16 +++++++++++----- sqlite/config.h | 1 + zpm-syncfs.c | 2 +- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index d13b9b6..c52fc24 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,12 @@ +CC=clang +#CC=/usr/musl/bin/musl-gcc CFLAGS=-Wall -W -Wextra -Werror -Wno-implicit-fallthrough -std=c99 -Ilib -Isqlite -Ielf -I. -Ilzma/api ZPMVER:=$(shell git describe --tags --match 'v[0-9]*' | sed -e 's/^v//' | sed -e 's/-g.\+//' | sed -e 's/-/./g') LZMAFLAGS=-Ilzma/api -Ilzma/tuklib -Ilzma/lzma -Ilzma/common -Ilzma/check -Ilzma/lz -Ilzma/rangecoder -Ilzma/simple -Ilzma/delta -DHAVE_CHECK_CRC64 -DHAVE_CHECK_CRC32 -DHAVE_ENCODER_LZMA2 -DHAVE_DECODER_LZMA2 -DHAVE_MF_BT4 -LDFLAGS=-L. -ldl +LDFLAGS=-L. -static LZMACHECKSRC=lzma/check/check.c lzma/check/crc32_fast.c lzma/check/crc64_fast.c lzma/check/crc32_table.c lzma/check/crc64_table.c LZMASRC=$(shell ls lzma/lzma/*.c lzma/common/*.c lzma/lz/*.c) $(LZMACHECKSRC) lzma/rangecoder/price_table.c @@ -33,6 +35,8 @@ COMPILED=$(ZPKGBIN) PROGRAMS=$(SCRIPTS) $(COMPILED) def: programs + strip $(ZPKGBIN) + d: printf '%s\n' $(LZMAOBJ) printf '%s\n' $(PATH) @@ -121,7 +125,7 @@ zpm-extract: zpm-extract.o libzpm.a zpm-runscript: zpm-runscript.o libzpm.a $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< -lzpm -lelf -zpm-foreach-path.o: CFLAGS+=-Wno-unused +zpm-foreach-path.o: CFLAGS+=-Wno-unused-parameter zpm-foreach-path: zpm-foreach-path.o libzpm.a sqlite/sqlite3.h $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< -lzpm -lelf @@ -129,8 +133,8 @@ zpm-foreach-path: zpm-foreach-path.o libzpm.a sqlite/sqlite3.h zpm-findpkg: zpm-findpkg.o libzpm.a $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< -lzpm -lelf -zpm-syncfs: zpm-syncfs.o libzpm.a - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< -lzpm -lelf -lm +zpm-syncfs: zpm-syncfs.o libzpm.a libelf.a + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< -lzpm -lelf -lm -ldl zpm-parse: zpm-parse.o libzpm.a $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< -lzpm -lelf @@ -147,7 +151,9 @@ sqlite/sqlite3.o: sqlite/sqlite3.c sqlite/config.h $(CC) -Wall -std=c99 -Ilib -D_HAVE_SQLITE_CONFIG_H=1 -c -o $@ $< sqlite/shell.o: sqlite/shell.c sqlite/config.h - $(CC) -Wall -std=c99 -Ilib -D_POSIX_C_SOURCE=200112L -D_HAVE_SQLITE_CONFIG_H=1 -c -o $@ $< + $(CC) -Wall -std=c99 -Ilib \ + -DSQLITE_OMIT_LOAD_EXTENSION=1 \ + -D_POSIX_C_SOURCE=200112L -c -o $@ $< lib/zpm.o: newdb.c diff --git a/sqlite/config.h b/sqlite/config.h index 81db928..3ef85f9 100644 --- a/sqlite/config.h +++ b/sqlite/config.h @@ -1,6 +1,7 @@ #define SQLITE_THREADSAFE 0 #define SQLITE_MAX_EXPR_DEPTH 0 #define SQLITE_OMIT_DEPRECATED 0 +#define SQLITE_OMIT_LOAD_EXTENSION 1 #define HAVE_ISNAN 1 #define SQLITE_DEFAULT_FOREIGN_KEYS 1 diff --git a/zpm-syncfs.c b/zpm-syncfs.c index 073ad0b..6ea6241 100644 --- a/zpm-syncfs.c +++ b/zpm-syncfs.c @@ -383,7 +383,7 @@ static int install_files(void *f, int ncols, char **vals, char **cols) { } } - struct timespec times[2] = { 0 }; + struct timespec times[2] = { {0}, {0} }; double mtime = strtod(COL("mtime"),NULL); times[0].tv_nsec = UTIME_OMIT; -- 2.40.0