]> pd.if.org Git - zpackage/commitdiff
enable static linked builds
authorNathan Wagner <nw@hydaspes.if.org>
Sat, 29 Sep 2018 20:03:22 +0000 (20:03 +0000)
committerNathan Wagner <nw@hydaspes.if.org>
Sat, 29 Sep 2018 20:03:22 +0000 (20:03 +0000)
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
sqlite/config.h
zpm-syncfs.c

index d13b9b6972deca660971012b2a2ec5880cf9c9e6..c52fc24b83dd8a1ffef6dadf62a52e2116b46985 100644 (file)
--- 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
 
index 81db92849902198b4afb35120f5eb5f3051efd04..3ef85f9beb200eb6e5e4a91703b168f7aff4a779 100644 (file)
@@ -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
index 073ad0b291188dfd92b2013ac69fe46b412dea67..6ea62415b7b9b84cffa58ca27d0a4d0bd29a8e85 100644 (file)
@@ -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;