PAKFIRE_BUILD_SHOW_PROGRESS = (1 << 2),
};
+struct pakfire_build_post_process_state {
+ struct pakfire_build* build;
+
+ // Filelist with files to remove
+ struct pakfire_filelist* removees;
+};
+
/*
This helper function takes a callback which is expected to add any files
to the given filelist which will optionally be all removed after.
if (r)
goto ERROR;
+ struct pakfire_build_post_process_state state = {
+ .build = build,
+ .removees = removees,
+ };
+
// Find all files that need to be removed
- r = pakfire_filelist_walk(filelist, callback, removees,
+ r = pakfire_filelist_walk(filelist, callback, &state,
(flags & PAKFIRE_BUILD_SHOW_PROGRESS) ? PAKFIRE_FILELIST_SHOW_PROGRESS : 0, NULL);
if (r)
goto ERROR;
static int __pakfire_build_remove_static_libraries(
struct pakfire_ctx* ctx, struct pakfire_file* file, void* data) {
- struct pakfire_filelist* removees = (struct pakfire_filelist*)data;
+ const struct pakfire_build_post_process_state* state = data;
char path[PATH_MAX];
int r;
// Only delete if there is a shared object with the same name
if (pakfire_path_exists(path))
- return pakfire_filelist_add(removees, file);
+ return pakfire_filelist_add(state->removees, file);
}
return 0;
static int __pakfire_build_remove_libtool_archives(
struct pakfire_ctx* ctx, struct pakfire_file* file, void* data) {
- struct pakfire_filelist* removees = (struct pakfire_filelist*)data;
+ const struct pakfire_build_post_process_state* state = data;
// Find all libtool archive files
if (pakfire_file_matches(file, "**.la"))
- return pakfire_filelist_add(removees, file);
+ return pakfire_filelist_add(state->removees, file);
return 0;
}
static int __pakfire_build_check_broken_symlinks(
struct pakfire_ctx* ctx, struct pakfire_file* file, void* data) {
- struct pakfire_filelist* broken = (struct pakfire_filelist*)data;
+ const struct pakfire_build_post_process_state* state = data;
int r;
// Ignore anything that isn't a symlink
switch (pakfire_file_get_type(file)) {
case S_IFLNK:
if (!pakfire_file_symlink_target_exists(file)) {
- r = pakfire_filelist_add(broken, file);
+ r = pakfire_filelist_add(state->removees, file);
if (r)
return r;
}
static int pakfire_build_check_buildroot(
struct pakfire_ctx* ctx, struct pakfire_file* file, void* data) {
- struct pakfire_filelist* broken = (struct pakfire_filelist*)data;
+ const struct pakfire_build_post_process_state* state = data;
int r;
// Skip Python byte-code files
else if (pakfire_file_matches(file, "**.packlist"))
return 0;
-#warning We actually need to access the real buildroot here
- const char* buildroot = "/var/tmp/pakfire-buildroot";
-
// Check if the file contains the pattern
- r = pakfire_file_contains(file, buildroot, -1);
+ r = pakfire_file_contains(file, state->build->buildroot, -1);
if (r <= 0)
return r;
// The file contains the pattern, let's list it as broken
- r = pakfire_filelist_add(broken, file);
+ r = pakfire_filelist_add(state->removees, file);
if (r < 0)
return r;