From 97d95d4eeae75331597055d38fe345428cefb835 Mon Sep 17 00:00:00 2001 From: Raja Mukherji Date: Sat, 11 May 2024 09:20:35 +0100 Subject: [PATCH] Updates. --- Makefile | 2 +- debian/changelog | 5 +++-- minilang | 2 +- src/cache.c | 25 +++++++++++++++++++++++++ src/rabs.c | 2 +- src/rabs.h | 2 +- 6 files changed, 32 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 0c76ceb..7997e13 100644 --- a/Makefile +++ b/Makefile @@ -74,7 +74,7 @@ ifeq ($(MACHINE), i686) endif ifeq ($(PLATFORM), Linux) - LDFLAGS += -Wl,--dynamic-list=src/exports.lst -ldl -lgc + LDFLAGS += -Wl,--dynamic-list=src/exports.lst -ldl -lgc -lunwind objects += obj/targetwatch.o endif diff --git a/debian/changelog b/debian/changelog index 0068d29..2c0f658 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -rabs (2.30.7) UNRELEASED; urgency=medium +rabs (2.30.8) UNRELEASED; urgency=medium * Updates. * Updates. @@ -58,5 +58,6 @@ rabs (2.30.7) UNRELEASED; urgency=medium * Updates. * Updates. * Updates. + * Updates. - -- Raja Mukherji Mon, 15 Apr 2024 09:11:03 +0100 + -- Raja Mukherji Sat, 11 May 2024 09:19:32 +0100 diff --git a/minilang b/minilang index 3723bd4..1e55d52 160000 --- a/minilang +++ b/minilang @@ -1 +1 @@ -Subproject commit 3723bd49add623bd800867c8df15d9b267f0b5f5 +Subproject commit 1e55d52b7f5dd381cb5ec47f0cd1694f773773ce diff --git a/src/cache.c b/src/cache.c index d027cd6..e62081e 100644 --- a/src/cache.c +++ b/src/cache.c @@ -4,6 +4,9 @@ #include #include #include +#include +#include +#include #include #include #include @@ -40,6 +43,17 @@ void cache_open(const char *RootPath) { struct stat Stat[1]; if (stat(CacheFileName, Stat)) { mkdir(CacheFileName, 0777); + int LockFile = open(concat(CacheFileName, "/lock", NULL), O_CREAT | O_WRONLY | O_TRUNC, 0600); + if (LockFile < 0) { + fprintf(stderr, "Failed to lock build database: %s", strerror(errno)); + exit(-1); + } + struct flock Lock = {0,}; + Lock.l_type = F_WRLCK; + if (fcntl(LockFile, F_SETLK, &Lock) < 0) { + fprintf(stderr, "Failed to lock build database: %s", strerror(errno)); + exit(-1); + } MetadataStore = string_store_create(concat(CacheFileName, "/metadata", NULL), 16, 0); TargetsIndex = string_index0_create(concat(CacheFileName, "/targets", NULL), 32, 4096); DetailsStore = fixed_store_create(concat(CacheFileName, "/details", NULL), sizeof(cache_details_t), 1024); @@ -50,6 +64,17 @@ void cache_open(const char *RootPath) { printf("Version error: database was built with an older version of Rabs. Delete %s to force a clean build.\n", CacheFileName); exit(1); } else { + int LockFile = open(concat(CacheFileName, "/lock", NULL), O_CREAT | O_WRONLY | O_TRUNC, 0600); + if (LockFile < 0) { + fprintf(stderr, "Failed to lock build database: %s", strerror(errno)); + exit(-1); + } + struct flock Lock = {0,}; + Lock.l_type = F_WRLCK; + if (fcntl(LockFile, F_SETLK, &Lock) < 0) { + fprintf(stderr, "Failed to lock build database: %s", strerror(errno)); + exit(-1); + } MetadataStore = string_store_open(concat(CacheFileName, "/metadata", NULL)); { char Temp[16]; diff --git a/src/rabs.c b/src/rabs.c index d283019..0c4de6a 100644 --- a/src/rabs.c +++ b/src/rabs.c @@ -893,7 +893,7 @@ int main(int Argc, char **Argv) { SavedArgc = Argc; SavedArgv = Argv; GC_INIT(); - ml_init(Globals); + ml_init(Argv[0], Globals); ml_object_init(Globals); ml_sequence_init(Globals); ml_stream_init(Globals); diff --git a/src/rabs.h b/src/rabs.h index dc5b1f2..e931a52 100644 --- a/src/rabs.h +++ b/src/rabs.h @@ -30,7 +30,7 @@ extern __thread target_t *CurrentTarget; ml_value_t *rabs_global(const char *Name); ml_value_t *rabs_ml_global(void *Data, const char *Name, const char *Source, int Line, int Mode); -#define CURRENT_VERSION 2, 30, 7 +#define CURRENT_VERSION 2, 30, 8 #define MINIMAL_VERSION 2, 10, 0 #endif