[lxc-devel] [lxd/master] Drop custom SQLite and libco

freeekanayaka on Github lxc-bot at linuxcontainers.org
Fri Sep 11 16:23:14 UTC 2020


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 361 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20200911/75b5524e/attachment.bin>
-------------- next part --------------
From b7c98a532b326b3ead755875afbff9fe316ca377 Mon Sep 17 00:00:00 2001
From: Free Ekanayaka <free.ekanayaka at canonical.com>
Date: Fri, 11 Sep 2020 18:19:32 +0200
Subject: [PATCH] Drop custom SQLite and libco

Signed-off-by: Free Ekanayaka <free.ekanayaka at canonical.com>
---
 Makefile            | 48 +++++++--------------------------------------
 doc/index.md        |  8 ++++----
 doc/requirements.md |  7 ++++---
 3 files changed, 15 insertions(+), 48 deletions(-)

diff --git a/Makefile b/Makefile
index c4f605a6b2..abf7d2d46a 100644
--- a/Makefile
+++ b/Makefile
@@ -6,13 +6,13 @@ POTFILE=po/$(DOMAIN).pot
 VERSION=$(shell grep "var Version" shared/version/flex.go | cut -d'"' -f2)
 ARCHIVE=lxd-$(VERSION).tar
 HASH := \#
-TAG_SQLITE3=$(shell printf "$(HASH)include <sqlite3.h>\nvoid main(){int n = SQLITE_IOERR_NOT_LEADER;}" | $(CC) ${CGO_CFLAGS} -o /dev/null -xc - >/dev/null 2>&1 && echo "libsqlite3")
+TAG_SQLITE3=$(shell printf "$(HASH)include <dqlite.h>\nvoid main(){dqlite_node_id n = 1;}" | $(CC) ${CGO_CFLAGS} -o /dev/null -xc - >/dev/null 2>&1 && echo "libsqlite3")
 GOPATH ?= $(HOME)/go
 
 .PHONY: default
 default:
 ifeq ($(TAG_SQLITE3),)
-	@echo "Missing custom libsqlite3, run \"make deps\" to setup."
+	@echo "Missing dqlite, run \"make deps\" to setup."
 	exit 1
 endif
 
@@ -40,36 +40,6 @@ lxd-p2c:
 
 .PHONY: deps
 deps:
-	# sqlite
-	@if [ -d "$(GOPATH)/deps/sqlite" ]; then \
-		if [ -d "$(GOPATH)/deps/sqlite/.git" ]; then \
-			cd "$(GOPATH)/deps/sqlite"; \
-			git pull; \
-		fi; \
-	else \
-		git clone --depth=1 "https://github.com/canonical/sqlite" "$(GOPATH)/deps/sqlite"; \
-		cd "$(GOPATH)/deps/sqlite"; \
-		git log -1 --format="format:%ci%n" | sed -e 's/ [-+].*$$//;s/ /T/;s/^/D /' > manifest; \
-		git log -1 --format="format:%H" > manifest.uuid; \
-	fi
-
-	cd "$(GOPATH)/deps/sqlite" && \
-		./configure --enable-replication --disable-amalgamation --disable-tcl && \
-		make
-
-	# libco
-	@if [ -d "$(GOPATH)/deps/libco" ]; then \
-		if [ -d "$(GOPATH)/deps/libco/.git" ]; then \
-			cd "$(GOPATH)/deps/libco"; \
-			git pull; \
-		fi; \
-	else \
-		git clone --depth=1 "https://github.com/canonical/libco" "$(GOPATH)/deps/libco"; \
-	fi
-
-	cd "$(GOPATH)/deps/libco" && \
-		make
-
 	# raft
 	@if [ -d "$(GOPATH)/deps/raft" ]; then \
 		if [ -d "$(GOPATH)/deps/raft/.git" ]; then \
@@ -97,15 +67,15 @@ deps:
 
 	cd "$(GOPATH)/deps/dqlite" && \
 		autoreconf -i && \
-		PKG_CONFIG_PATH="$(GOPATH)/deps/sqlite/:$(GOPATH)/deps/libco/:$(GOPATH)/deps/raft/" ./configure && \
-		make CFLAGS="-I$(GOPATH)/deps/sqlite/ -I$(GOPATH)/deps/libco/ -I$(GOPATH)/deps/raft/include/" LDFLAGS="-L$(GOPATH)/deps/sqlite/.libs/ -L$(GOPATH)/deps/libco/ -L$(GOPATH)/deps/raft/.libs/"
+		PKG_CONFIG_PATH="$(GOPATH)/deps/raft/" ./configure && \
+		make CFLAGS="-I$(GOPATH)/deps/raft/include/" LDFLAGS="-L$(GOPATH)/deps/raft/.libs/"
 
 	# environment
 	@echo ""
 	@echo "Please set the following in your environment (possibly ~/.bashrc)"
-	@echo "export CGO_CFLAGS=\"-I$(GOPATH)/deps/sqlite/ -I$(GOPATH)/deps/libco/ -I$(GOPATH)/deps/raft/include/ -I$(GOPATH)/deps/dqlite/include/\""
-	@echo "export CGO_LDFLAGS=\"-L$(GOPATH)/deps/sqlite/.libs/ -L$(GOPATH)/deps/libco/ -L$(GOPATH)/deps/raft/.libs -L$(GOPATH)/deps/dqlite/.libs/\""
-	@echo "export LD_LIBRARY_PATH=\"$(GOPATH)/deps/sqlite/.libs/:$(GOPATH)/deps/libco/:$(GOPATH)/deps/raft/.libs/:$(GOPATH)/deps/dqlite/.libs/\""
+	@echo "export CGO_CFLAGS=\"-I$(GOPATH)/deps/raft/include/ -I$(GOPATH)/deps/dqlite/include/\""
+	@echo "export CGO_LDFLAGS=\"-L$(GOPATH)/deps/raft/.libs -L$(GOPATH)/deps/dqlite/.libs/\""
+	@echo "export LD_LIBRARY_PATH=\"$(GOPATH)/deps/raft/.libs/:$(GOPATH)/deps/dqlite/.libs/\""
 	@echo "export CGO_LDFLAGS_ALLOW=\"-Wl,-wrap,pthread_create\""
 
 
@@ -188,11 +158,7 @@ dist:
 	# Download the cluster-enabled sqlite/dqlite
 	mkdir $(TMP)/_dist/deps/
 	git clone --depth=1 https://github.com/canonical/dqlite $(TMP)/_dist/deps/dqlite
-	git clone --depth=1 https://github.com/canonical/sqlite $(TMP)/_dist/deps/sqlite
-	git clone --depth=1 https://github.com/canonical/libco $(TMP)/_dist/deps/libco
 	git clone --depth=1 https://github.com/canonical/raft $(TMP)/_dist/deps/raft
-	cd $(TMP)/_dist/deps/sqlite && git log -1 --format="format:%ci%n" | sed -e 's/ [-+].*$$//;s/ /T/;s/^/D /' > manifest
-	cd $(TMP)/_dist/deps/sqlite && git log -1 --format="format:%H" > manifest.uuid
 
 	# Write a manifest
 	cd $(TMP)/_dist && find . -type d -name .git | while read line; do GITDIR=$$(dirname $$line); echo "$${GITDIR}: $$(cd $${GITDIR} && git show-ref HEAD $${GITDIR} | cut -d' ' -f1)"; done | sort > $(TMP)/_dist/MANIFEST
diff --git a/doc/index.md b/doc/index.md
index bf6ccaea45..767f49cebf 100644
--- a/doc/index.md
+++ b/doc/index.md
@@ -116,9 +116,9 @@ below (shown for example purposes) may not exactly match what your version of LX
 ```bash
 make deps
 # Use the export statements printed in the output of 'make deps' -- these are examples: 
-export CGO_CFLAGS="${CGO_CFLAGS} -I${GOPATH}/deps/sqlite/ -I${GOPATH}/deps/dqlite/include/ -I${GOPATH}/deps/raft/include/ -I${GOPATH}/deps/libco/"
-export CGO_LDFLAGS="${CGO_LDFLAGS} -L${GOPATH}/deps/sqlite/.libs/ -L${GOPATH}/deps/dqlite/.libs/ -L${GOPATH}/deps/raft/.libs -L${GOPATH}/deps/libco/"
-export LD_LIBRARY_PATH="${GOPATH}/deps/sqlite/.libs/:${GOPATH}/deps/dqlite/.libs/:${GOPATH}/deps/raft/.libs:${GOPATH}/deps/libco/:${LD_LIBRARY_PATH}"
+export CGO_CFLAGS="${CGO_CFLAGS} -I${GOPATH}/deps/dqlite/include/ -I${GOPATH}/deps/raft/include/"
+export CGO_LDFLAGS="${CGO_LDFLAGS} -L${GOPATH}/deps/dqlite/.libs/ -L${GOPATH}/deps/raft/.libs/"
+export LD_LIBRARY_PATH="${GOPATH}/deps/dqlite/.libs/:${GOPATH}/deps/raft/.libs/:${LD_LIBRARY_PATH}"
 export CGO_LDFLAGS_ALLOW="-Wl,-wrap,pthread_create"
 make
 ```
@@ -134,7 +134,7 @@ something like this for a `~/.bashrc` file:
 GOPATH=~/go
 # But we need to export these:
 export PATH="$PATH:$GOPATH/bin"
-export LD_LIBRARY_PATH="${GOPATH}/deps/sqlite/.libs/:${GOPATH}/deps/dqlite/.libs/:${GOPATH}/deps/raft/.libs:${GOPATH}/deps/libco/:${LD_LIBRARY_PATH}"
+export LD_LIBRARY_PATH="${GOPATH}/deps/dqlite/.libs/:${GOPATH}/deps/raft/.libs/:${LD_LIBRARY_PATH}"
 ```
 
 Now, the `lxd` and `lxc` binaries will be available to you and can be used to set up LXD. The binaries will automatically find and use the dependencies built in `$GOPATH/deps` thanks to the `LD_LIBRARY_PATH` environment variable.
diff --git a/doc/requirements.md b/doc/requirements.md
index b32263351a..be05a5a344 100644
--- a/doc/requirements.md
+++ b/doc/requirements.md
@@ -35,14 +35,15 @@ properly, but support for those may accidentally regress in future LXD
 releases.
 
 ## Additional libraries (and development headers)
-LXD uses `dqlite` for its database, to build and setup the custom
-`sqlite3` and `dqlite` needed for it, you can run `make deps`.
+LXD uses `dqlite` for its database, to build and setup it, you can
+run `make deps`.
 
 LXD itself also uses a number of (usually packaged) C libraries:
 
  - libacl1
  - libcap2
  - libuv1 (for `dqlite`)
+ - libsqlite3 >= 3.25.0 (for `dqlite`)
 
-Make sure you have both the libraries themselves and their development
+Make sure you have all these libraries themselves and their development
 headers (-dev packages) installed.


More information about the lxc-devel mailing list