-fvisibility=hidden \
$(OPENSSL_CFLAGS) \
$(PCRE2_CFLAGS) \
- $(SQLITE3_CFLAGS)
+ $(SQLITE3_CFLAGS) \
+ $(UUID_CFLAGS)
libpakfire_la_CPPFLAGS = \
$(AM_CPPFLAGS) \
$(OPENSSL_LIBS) \
$(PCRE2_LIBS) \
$(SOLV_LIBS) \
- $(SQLITE3_LIBS)
+ $(SQLITE3_LIBS) \
+ $(UUID_LIBS)
libpakfire_la_DEPENDENCIES = \
src/libpakfire/libpakfire.sym \
PKG_CHECK_MODULES([OPENSSL], [openssl >= 1.1.1])
PKG_CHECK_MODULES([PCRE2], [libpcre2-8])
PKG_CHECK_MODULES([SQLITE3], [sqlite3])
+PKG_CHECK_MODULES([UUID], [uuid])
AM_PATH_GPGME([1.6.0], [], [AC_MSG_ERROR([*** GPGME not found])])
size_t pakfire_string_to_size(const char* s);
char** pakfire_split_string(const char* s, char delim);
+char* pakfire_generate_uuid();
+
#ifdef PAKFIRE_PRIVATE
int pakfire_string_endswith(const char* s, const char* suffix);
pakfire_access;
pakfire_basename;
pakfire_dirname;
+ pakfire_generate_uuid;
pakfire_get_errno;
pakfire_path_isdir;
pakfire_path_join;
goto CLEANUP;
}
+ // Assign a new UUID to this package
+ char* uuid = pakfire_generate_uuid();
+ if (!uuid) {
+ ERROR(parser->pakfire, "Generating a UUID failed: %s\n", strerror(errno));
+ goto CLEANUP;
+ }
+
+ pakfire_package_set_uuid(*pkg, uuid);
+ free(uuid);
+
// All okay
r = 0;
#include <time.h>
#include <unistd.h>
+#include <uuid/uuid.h>
+
#include <pakfire/constants.h>
#include <pakfire/logging.h>
#include <pakfire/private.h>
return ret;
}
+
+PAKFIRE_EXPORT char* pakfire_generate_uuid() {
+ uuid_t uuid;
+
+ // Generate a new random value
+ uuid_generate_random(uuid);
+
+ char* ret = malloc(UUID_STR_LEN + 1);
+ if (!ret)
+ return NULL;
+
+ // Convert it to string
+ uuid_unparse_lower(uuid, ret);
+
+ // Terminate string
+ ret[UUID_STR_LEN] = '\0';
+
+ return ret;
+}