Pakfire_execute_logging_callback = logging_callback;
// Run build
- int r = pakfire_build(self->pakfire, path, NULL, flags,
+ int r = pakfire_build(self->pakfire, path, NULL, NULL, flags,
(logging_callback) ? __Pakfire_execute_logging_callback : NULL, NULL);
return execute_return_value(r);
free(build_host);
}
+ // Set build ID
+ char* build_id = pakfire_archive_get(archive, "build", "id");
+ if (build_id) {
+ pakfire_package_set_build_id(pkg, build_id);
+ free(build_id);
+ }
+
// Set build time
char* build_time = pakfire_archive_get(archive, "build", "time");
if (build_time) {
}
static int pakfire_build_package(Pakfire pakfire, PakfireParser makefile,
- const char* buildroot, const char* namespace, const char* target) {
+ const char* id, const char* buildroot, const char* namespace, const char* target) {
PakfireRepo repo = NULL;
PakfirePackage pkg = NULL;
struct pakfire_packager* packager = NULL;
goto ERROR;
}
+ // Set build ID
+ if (id)
+ pakfire_package_set_build_id(pkg, id);
+
// Create a packager
r = pakfire_packager_create(&packager, pkg);
if (r)
}
static int pakfire_build_packages(Pakfire pakfire, PakfireParser makefile,
- const char* buildroot, const char* target) {
+ const char* id, const char* buildroot, const char* target) {
DEBUG(pakfire, "Creating packages...");
int r = 1;
// Build packages in reverse order
for (int i = num_packages - 1; i >= 0; i--) {
- r = pakfire_build_package(pakfire, makefile, buildroot, packages[i], target);
+ r = pakfire_build_package(pakfire, makefile, id, buildroot, packages[i], target);
if (r)
goto ERROR;
}
}
PAKFIRE_EXPORT int pakfire_build(Pakfire pakfire, const char* path,
- const char* target, int flags,
+ const char* target, const char* id, int flags,
pakfire_execute_logging_callback logging_callback, void* data) {
PakfireParser makefile = NULL;
char buildroot[PATH_MAX];
struct pakfire_parser_error* error = NULL;
+ char* generated_id = NULL;
int r;
// Check for valid input
goto ERROR;
}
+ // If no build ID was passed, we generate a random one
+ if (!id) {
+ generated_id = pakfire_generate_uuid();
+ if (!generated_id)
+ goto ERROR;
+
+ id = generated_id;
+ }
+
// Set BUILDROOT
pakfire_parser_set(makefile, NULL, "BUILDROOT", buildroot_rel, 0);
goto ERROR;
// Create the packages
- r = pakfire_build_packages(pakfire, makefile, buildroot_rel, target);
+ r = pakfire_build_packages(pakfire, makefile, id, buildroot_rel, target);
if (r) {
ERROR(pakfire, "Could not create packages: %s\n", strerror(errno));
goto ERROR;
}
ERROR:
+ if (generated_id)
+ free(generated_id);
if (makefile)
pakfire_parser_unref(makefile);
int pakfire_build_setup(Pakfire pakfire);
-int pakfire_build(Pakfire pakfire, const char* path, const char* target, int flags,
- pakfire_execute_logging_callback logging_callback, void* data);
+int pakfire_build(Pakfire pakfire, const char* path, const char* target,
+ const char* id, int flags, pakfire_execute_logging_callback logging_callback, void* data);
int pakfire_shell(Pakfire pakfire);
#endif /* PAKFIRE_BUILD_H */
unsigned long long pakfire_package_get_size(PakfirePackage pkg);
const char* pakfire_package_get_build_host(PakfirePackage pkg);
void pakfire_package_set_build_host(PakfirePackage pkg, const char* build_host);
+const char* pakfire_package_get_build_id(PakfirePackage pkg);
+void pakfire_package_set_build_id(PakfirePackage pkg, const char* build_id);
time_t pakfire_package_get_build_time(PakfirePackage pkg);
void pakfire_package_set_build_time(PakfirePackage pkg, time_t build_time);
time_t pakfire_package_get_install_time(PakfirePackage pkg);
pakfire_package_dump;
pakfire_package_get_arch;
pakfire_package_get_build_host;
+ pakfire_package_get_build_id;
pakfire_package_get_build_time;
pakfire_package_get_cache_path;
pakfire_package_get_checksum;
pakfire_package_ref;
pakfire_package_set_arch;
pakfire_package_set_build_host;
+ pakfire_package_set_build_id;
pakfire_package_set_build_time;
pakfire_package_set_checksum;
pakfire_package_set_description;
pakfire_package_set_string(pkg, SOLVABLE_BUILDHOST, build_host);
}
+PAKFIRE_EXPORT const char* pakfire_package_get_build_id(PakfirePackage pkg) {
+ return pakfire_package_get_string(pkg, SOLVABLE_BUILDVERSION);
+}
+
+PAKFIRE_EXPORT void pakfire_package_set_build_id(PakfirePackage pkg, const char* build_id) {
+ pakfire_package_set_string(pkg, SOLVABLE_BUILDVERSION, build_id);
+}
+
PAKFIRE_EXPORT time_t pakfire_package_get_build_time(PakfirePackage pkg) {
return pakfire_package_get_num(pkg, SOLVABLE_BUILDTIME);
}
const char* uuid = pakfire_package_get_uuid(pkg);
pakfire_package_dump_add_line(&string, _("UUID"), uuid);
+ // Build ID
+ const char* build_id = pakfire_package_get_build_id(pkg);
+ if (build_id)
+ pakfire_package_dump_add_line(&string, _("Build ID"), build_id);
+
// Build time
time_t build_time = pakfire_package_get_build_time(pkg);
pakfire_package_dump_add_line_date(&string, _("Build Time"), build_time);
goto ERROR;
}
-#if 0
// Write build id
const char* build_id = pakfire_package_get_build_id(pkg);
if (build_id) {
if (r < 0)
goto ERROR;
}
-#endif
// Write build host
time_t build_time = pakfire_package_get_build_time(pkg);