diff --git a/.gitignore b/.gitignore index 8d15c59..b96b80c 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,6 @@ vieter/vieter *.pkg* vieter.log + +# External lib; gets added by Makefile +libarchive-* diff --git a/Makefile b/Makefile index a48a802..0f1db9d 100644 --- a/Makefile +++ b/Makefile @@ -1,15 +1,22 @@ +# =====CONFIG===== +LARCHIVE_VER := 3.5.2 +LARCHIVE_DIR := libarchive-$(LARCHIVE_VER) +LARCHIVE_LIB := $(LARCHIVE_DIR)/.libs/libarchive.a + +# Custom V command for linking libarchive +V := LD_FLAGS=$(PWD)/$(LARCHIVE_LIB) v -cflags -I$(PWD)/$(LARCHIVE_DIR) + +# Run the server in the default 'data' directory .PHONY: run -run: - API_KEY=test REPO_DIR=data LOG_LEVEL=DEBUG v -cg run vieter - -.PHONY: run-prod -run-prod: - API_KEY=test REPO_DIR=data LOG_LEVEL=DEBUG v -prod run vieter +run: libarchive + API_KEY=test REPO_DIR=data LOG_LEVEL=DEBUG $(V) run vieter +# Same as run, but restart when the source code changes .PHONY: watch -watch: - API_KEY=test REPO_DIR=data LOG_LEVEL=DEBUG v watch run vieter +watch: libarchive + API_KEY=test REPO_DIR=data LOG_LEVEL=DEBUG $(V) watch run vieter +# Format the V codebase .PHONY: fmt fmt: v fmt -w vieter @@ -23,3 +30,13 @@ customv: --single-branch \ https://github.com/ChewingBever/v jjr-v '$(MAKE)' -C jjr-v + +.PHONY: libarchive +libarchive: $(LARCHIVE_LIB) +$(LARCHIVE_LIB): + curl -o - "https://libarchive.org/downloads/libarchive-${LARCHIVE_VER}.tar.gz" | tar xzf - + cd "libarchive-${LARCHIVE_VER}" && ./configure --disable-bsdtar --disable-bsdcpio + '$(MAKE)' -C "libarchive-${LARCHIVE_VER}" + +clean: + rm -rf '$(LARCHIVE_DIR)' 'data' diff --git a/vieter/repo.v b/vieter/repo.v index 6b307e8..c7e52bf 100644 --- a/vieter/repo.v +++ b/vieter/repo.v @@ -2,6 +2,10 @@ module repo import os +#include "libarchive/archive.h" + +struct C.archive {} + const pkgs_subpath = 'pkgs' // Dummy struct to work around the fact that you can only share structs, maps &