diff options
| author | Joseph Hunkeler <jhunkeler@gmail.com> | 2026-06-30 09:19:15 -0400 |
|---|---|---|
| committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2026-06-30 09:50:55 -0400 |
| commit | c713536f1432b2af5624aecee2221733a6051ea4 (patch) | |
| tree | 13199903c9aac5f37bd526bda3856e9c66d67feb /src/lib | |
| parent | 87dafad4fc23d7a3a2fdd939738484bbb2a5a8bc (diff) | |
| download | stasis-c713536f1432b2af5624aecee2221733a6051ea4.tar.gz | |
Remove wheelinfo.c, wheelinfo.h, test_wheelinfo.c
* And references
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/core/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | src/lib/core/include/wheelinfo.h | 36 | ||||
| -rw-r--r-- | src/lib/core/wheelinfo.c | 131 |
3 files changed, 0 insertions, 168 deletions
diff --git a/src/lib/core/CMakeLists.txt b/src/lib/core/CMakeLists.txt index 3a54d94..7df4dd2 100644 --- a/src/lib/core/CMakeLists.txt +++ b/src/lib/core/CMakeLists.txt @@ -12,7 +12,6 @@ add_library(stasis_core STATIC download.c recipe.c relocation.c - wheelinfo.c wheel.c copy.c artifactory.c diff --git a/src/lib/core/include/wheelinfo.h b/src/lib/core/include/wheelinfo.h deleted file mode 100644 index 8009e91..0000000 --- a/src/lib/core/include/wheelinfo.h +++ /dev/null @@ -1,36 +0,0 @@ -//! @file wheel.h -#ifndef STASIS_WHEEL_H -#define STASIS_WHEEL_H - -#include <dirent.h> -#include <string.h> -#include <stdio.h> -#include "str.h" -#define WHEEL_MATCH_EXACT 0 ///< Match when all patterns are present -#define WHEEL_MATCH_ANY 1 ///< Match when any patterns are present - -struct WheelInfo { - char *distribution; ///< Package name - char *version; ///< Package version - char *build_tag; ///< Package build tag (optional) - char *python_tag; ///< Package Python tag (pyXY) - char *abi_tag; ///< Package ABI tag (cpXY, abiX, none) - char *platform_tag; ///< Package platform tag (linux_x86_64, any) - char *path_name; ///< Path to package on-disk - char *file_name; ///< Name of package on-disk -}; - -/** - * Extract metadata from a Python Wheel file name - * - * @param basepath directory containing a wheel file - * @param name of wheel file - * @param to_match a NULL terminated array of patterns (i.e. platform, arch, version, etc) - * @param match_mode WHEEL_MATCH_EXACT - * @param match_mode WHEEL_MATCH ANY - * @return pointer to populated Wheel on success - * @return NULL on error - */ -struct WheelInfo *wheelinfo_get(const char *basepath, const char *name, char *to_match[], unsigned match_mode); -void wheelinfo_free(struct WheelInfo **wheel); -#endif //STASIS_WHEEL_H diff --git a/src/lib/core/wheelinfo.c b/src/lib/core/wheelinfo.c deleted file mode 100644 index fe426aa..0000000 --- a/src/lib/core/wheelinfo.c +++ /dev/null @@ -1,131 +0,0 @@ -#include "wheelinfo.h" - -struct WheelInfo *wheelinfo_get(const char *basepath, const char *name, char *to_match[], unsigned match_mode) { - struct dirent *rec; - struct WheelInfo *result = NULL; - char package_path[PATH_MAX]; - char package_name[NAME_MAX]; - - safe_strncpy(package_name, name, sizeof(package_name)); - tolower_s(package_name); - snprintf(package_path, sizeof(package_path), "%s/%s", basepath, package_name); - - DIR *dp = opendir(package_path); - if (!dp) { - return NULL; - } - - while ((rec = readdir(dp)) != NULL) { - if (!strcmp(rec->d_name, ".") || !strcmp(rec->d_name, "..")) { - continue; - } - - char filename[NAME_MAX]; - safe_strncpy(filename, rec->d_name, sizeof(filename)); - - char *ext = strstr(filename, ".whl"); - if (ext) { - *ext = '\0'; - } else { - // not a wheel file. nothing to do - continue; - } - - size_t match = 0; - size_t pattern_count = 0; - for (; to_match[pattern_count] != NULL; pattern_count++) { - if (strstr(filename, to_match[pattern_count])) { - match++; - } - } - - if (!startswith(rec->d_name, name)) { - continue; - } - - if (match_mode == WHEEL_MATCH_EXACT && match != pattern_count) { - continue; - } - - result = calloc(1, sizeof(*result)); - if (!result) { - SYSERROR("Unable to allocate %zu bytes for wheel struct", sizeof(*result)); - closedir(dp); - return NULL; - } - - result->path_name = realpath(package_path, NULL); - if (!result->path_name) { - SYSERROR("Unable to resolve absolute path to %s: %s", filename, strerror(errno)); - wheelinfo_free(&result); - closedir(dp); - return NULL; - } - result->file_name = strdup(rec->d_name); - if (!result->file_name) { - SYSERROR("Unable to allocate bytes for %s: %s", rec->d_name, strerror(errno)); - wheelinfo_free(&result); - closedir(dp); - return NULL; - } - - size_t parts_total; - char **parts = split(filename, "-", 0); - if (!parts) { - // This shouldn't happen unless a wheel file is present in the - // directory with a malformed file name, or we've managed to - // exhaust the system's memory - SYSERROR("%s has no '-' separators! (Delete this file and try again)", filename); - wheelinfo_free(&result); - closedir(dp); - return NULL; - } - - for (parts_total = 0; parts[parts_total] != NULL; parts_total++) {} - if (parts_total == 5) { - // no build tag - result->distribution = strdup(parts[0]); - result->version = strdup(parts[1]); - result->build_tag = NULL; - result->python_tag = strdup(parts[2]); - result->abi_tag = strdup(parts[3]); - result->platform_tag = strdup(parts[4]); - } else if (parts_total == 6) { - // has build tag - result->distribution = strdup(parts[0]); - result->version = strdup(parts[1]); - result->build_tag = strdup(parts[2]); - result->python_tag = strdup(parts[3]); - result->abi_tag = strdup(parts[4]); - result->platform_tag = strdup(parts[5]); - } else { - SYSERROR("Unknown wheel name format: %s. Expected 5 or 6 strings " - "separated by '-', but got %zu instead", filename, parts_total); - guard_array_free(parts); - wheelinfo_free(&result); - closedir(dp); - return NULL; - } - guard_array_free(parts); - break; - } - closedir(dp); - return result; -} - -void wheelinfo_free(struct WheelInfo **wheel) { - struct WheelInfo *w = (*wheel); - if (!w) { - return; - } - guard_free(w->path_name); - guard_free(w->file_name); - guard_free(w->distribution); - guard_free(w->version); - guard_free(w->build_tag); - guard_free(w->python_tag); - guard_free(w->abi_tag); - guard_free(w->python_tag); - guard_free(w->platform_tag); - guard_free(w); -} |
