11c606a6 (kx 2023-04-11 01:18:34 +0300 1)
11c606a6 (kx 2023-04-11 01:18:34 +0300 2) /**********************************************************************
11c606a6 (kx 2023-04-11 01:18:34 +0300 3)
11c606a6 (kx 2023-04-11 01:18:34 +0300 4) Copyright 2019 Andrey V.Kosteltsev
11c606a6 (kx 2023-04-11 01:18:34 +0300 5)
11c606a6 (kx 2023-04-11 01:18:34 +0300 6) Licensed under the Radix.pro License, Version 1.0 (the "License");
11c606a6 (kx 2023-04-11 01:18:34 +0300 7) you may not use this file except in compliance with the License.
11c606a6 (kx 2023-04-11 01:18:34 +0300 8) You may obtain a copy of the License at
11c606a6 (kx 2023-04-11 01:18:34 +0300 9)
11c606a6 (kx 2023-04-11 01:18:34 +0300 10) https://radix.pro/licenses/LICENSE-1.0-en_US.txt
11c606a6 (kx 2023-04-11 01:18:34 +0300 11)
11c606a6 (kx 2023-04-11 01:18:34 +0300 12) Unless required by applicable law or agreed to in writing, software
11c606a6 (kx 2023-04-11 01:18:34 +0300 13) distributed under the License is distributed on an "AS IS" BASIS,
11c606a6 (kx 2023-04-11 01:18:34 +0300 14) WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
11c606a6 (kx 2023-04-11 01:18:34 +0300 15) implied.
11c606a6 (kx 2023-04-11 01:18:34 +0300 16)
11c606a6 (kx 2023-04-11 01:18:34 +0300 17) **********************************************************************/
11c606a6 (kx 2023-04-11 01:18:34 +0300 18)
11c606a6 (kx 2023-04-11 01:18:34 +0300 19) #ifndef _PKG_LIST_H_
11c606a6 (kx 2023-04-11 01:18:34 +0300 20) #define _PKG_LIST_H_
11c606a6 (kx 2023-04-11 01:18:34 +0300 21)
11c606a6 (kx 2023-04-11 01:18:34 +0300 22) #ifdef __cplusplus
11c606a6 (kx 2023-04-11 01:18:34 +0300 23) extern "C" {
11c606a6 (kx 2023-04-11 01:18:34 +0300 24) #endif
11c606a6 (kx 2023-04-11 01:18:34 +0300 25)
11c606a6 (kx 2023-04-11 01:18:34 +0300 26) #include <dlist.h>
11c606a6 (kx 2023-04-11 01:18:34 +0300 27)
11c606a6 (kx 2023-04-11 01:18:34 +0300 28)
11c606a6 (kx 2023-04-11 01:18:34 +0300 29) enum _tree_format {
11c606a6 (kx 2023-04-11 01:18:34 +0300 30) TFMT_BIN = 0,
11c606a6 (kx 2023-04-11 01:18:34 +0300 31) TFMT_DAG,
11c606a6 (kx 2023-04-11 01:18:34 +0300 32)
11c606a6 (kx 2023-04-11 01:18:34 +0300 33) TFMT_UNKNOWN
11c606a6 (kx 2023-04-11 01:18:34 +0300 34) };
11c606a6 (kx 2023-04-11 01:18:34 +0300 35)
11c606a6 (kx 2023-04-11 01:18:34 +0300 36) enum _procedure
11c606a6 (kx 2023-04-11 01:18:34 +0300 37) {
11c606a6 (kx 2023-04-11 01:18:34 +0300 38) INSTALL = 0, /* 'install' */
11c606a6 (kx 2023-04-11 01:18:34 +0300 39) UPDATE /* 'update' */
11c606a6 (kx 2023-04-11 01:18:34 +0300 40) };
11c606a6 (kx 2023-04-11 01:18:34 +0300 41)
11c606a6 (kx 2023-04-11 01:18:34 +0300 42) enum _priority
11c606a6 (kx 2023-04-11 01:18:34 +0300 43) {
11c606a6 (kx 2023-04-11 01:18:34 +0300 44) REQUIRED = 0, /* synonims: REQUIRED | required | REQ | req */
11c606a6 (kx 2023-04-11 01:18:34 +0300 45) RECOMMENDED, /* synonims: RECOMMENDED | recommended | REC | rec */
11c606a6 (kx 2023-04-11 01:18:34 +0300 46) OPTIONAL, /* synonims: OPTIONAL | optional | OPT | opt */
11c606a6 (kx 2023-04-11 01:18:34 +0300 47) SKIP /* synonims: SKIP | skip | SKP | skp */
11c606a6 (kx 2023-04-11 01:18:34 +0300 48) };
11c606a6 (kx 2023-04-11 01:18:34 +0300 49)
11c606a6 (kx 2023-04-11 01:18:34 +0300 50)
11c606a6 (kx 2023-04-11 01:18:34 +0300 51) struct pkginfo
11c606a6 (kx 2023-04-11 01:18:34 +0300 52) {
11c606a6 (kx 2023-04-11 01:18:34 +0300 53) char *name;
11c606a6 (kx 2023-04-11 01:18:34 +0300 54) char *version;
11c606a6 (kx 2023-04-11 01:18:34 +0300 55) char *arch;
11c606a6 (kx 2023-04-11 01:18:34 +0300 56) char *distro_name;
11c606a6 (kx 2023-04-11 01:18:34 +0300 57) char *distro_version;
11c606a6 (kx 2023-04-11 01:18:34 +0300 58) char *group;
11c606a6 (kx 2023-04-11 01:18:34 +0300 59) char *short_description;
11c606a6 (kx 2023-04-11 01:18:34 +0300 60) char *url;
11c606a6 (kx 2023-04-11 01:18:34 +0300 61) char *license;
11c606a6 (kx 2023-04-11 01:18:34 +0300 62) size_t uncompressed_size; /* size in 1024-byte blocks */
11c606a6 (kx 2023-04-11 01:18:34 +0300 63) size_t compressed_size; /* size in bytes */
11c606a6 (kx 2023-04-11 01:18:34 +0300 64) int total_files;
11c606a6 (kx 2023-04-11 01:18:34 +0300 65) };
11c606a6 (kx 2023-04-11 01:18:34 +0300 66)
11c606a6 (kx 2023-04-11 01:18:34 +0300 67) struct pkg
11c606a6 (kx 2023-04-11 01:18:34 +0300 68) {
11c606a6 (kx 2023-04-11 01:18:34 +0300 69) char *group;
11c606a6 (kx 2023-04-11 01:18:34 +0300 70) char *name;
11c606a6 (kx 2023-04-11 01:18:34 +0300 71) char *version;
11c606a6 (kx 2023-04-11 01:18:34 +0300 72)
11c606a6 (kx 2023-04-11 01:18:34 +0300 73) enum _procedure procedure; /* install procedure */
11c606a6 (kx 2023-04-11 01:18:34 +0300 74) };
11c606a6 (kx 2023-04-11 01:18:34 +0300 75)
11c606a6 (kx 2023-04-11 01:18:34 +0300 76) struct references
11c606a6 (kx 2023-04-11 01:18:34 +0300 77) {
11c606a6 (kx 2023-04-11 01:18:34 +0300 78) int size;
11c606a6 (kx 2023-04-11 01:18:34 +0300 79) struct dlist *list; /* list of pkg structs */
11c606a6 (kx 2023-04-11 01:18:34 +0300 80) };
11c606a6 (kx 2023-04-11 01:18:34 +0300 81)
11c606a6 (kx 2023-04-11 01:18:34 +0300 82) struct requires
11c606a6 (kx 2023-04-11 01:18:34 +0300 83) {
11c606a6 (kx 2023-04-11 01:18:34 +0300 84) int size;
11c606a6 (kx 2023-04-11 01:18:34 +0300 85) struct dlist *list; /* list of pkg structs */
11c606a6 (kx 2023-04-11 01:18:34 +0300 86) };
11c606a6 (kx 2023-04-11 01:18:34 +0300 87)
11c606a6 (kx 2023-04-11 01:18:34 +0300 88) struct files
11c606a6 (kx 2023-04-11 01:18:34 +0300 89) {
11c606a6 (kx 2023-04-11 01:18:34 +0300 90) int size;
11c606a6 (kx 2023-04-11 01:18:34 +0300 91) struct dlist *list; /* list of strings */
11c606a6 (kx 2023-04-11 01:18:34 +0300 92) };
11c606a6 (kx 2023-04-11 01:18:34 +0300 93)
11c606a6 (kx 2023-04-11 01:18:34 +0300 94)
11c606a6 (kx 2023-04-11 01:18:34 +0300 95) struct package
11c606a6 (kx 2023-04-11 01:18:34 +0300 96) {
11c606a6 (kx 2023-04-11 01:18:34 +0300 97) struct pkginfo *pkginfo;
11c606a6 (kx 2023-04-11 01:18:34 +0300 98)
11c606a6 (kx 2023-04-11 01:18:34 +0300 99) char *hardware; /* optional parameter for JSON */
11c606a6 (kx 2023-04-11 01:18:34 +0300 100)
11c606a6 (kx 2023-04-11 01:18:34 +0300 101) char *tarball;
11c606a6 (kx 2023-04-11 01:18:34 +0300 102) enum _procedure procedure; /* install procedure */
11c606a6 (kx 2023-04-11 01:18:34 +0300 103) enum _priority priority; /* install user priority */
11c606a6 (kx 2023-04-11 01:18:34 +0300 104)
11c606a6 (kx 2023-04-11 01:18:34 +0300 105) struct references *references;
11c606a6 (kx 2023-04-11 01:18:34 +0300 106) struct requires *requires;
11c606a6 (kx 2023-04-11 01:18:34 +0300 107)
11c606a6 (kx 2023-04-11 01:18:34 +0300 108) char *description;
11c606a6 (kx 2023-04-11 01:18:34 +0300 109)
11c606a6 (kx 2023-04-11 01:18:34 +0300 110) char *restore_links;
11c606a6 (kx 2023-04-11 01:18:34 +0300 111) char *install_script;
11c606a6 (kx 2023-04-11 01:18:34 +0300 112)
11c606a6 (kx 2023-04-11 01:18:34 +0300 113) struct files *files;
11c606a6 (kx 2023-04-11 01:18:34 +0300 114) };
11c606a6 (kx 2023-04-11 01:18:34 +0300 115)
11c606a6 (kx 2023-04-11 01:18:34 +0300 116)
11c606a6 (kx 2023-04-11 01:18:34 +0300 117) extern char *htmlroot;
11c606a6 (kx 2023-04-11 01:18:34 +0300 118) extern char *hardware;
11c606a6 (kx 2023-04-11 01:18:34 +0300 119) extern int minimize;
11c606a6 (kx 2023-04-11 01:18:34 +0300 120)
11c606a6 (kx 2023-04-11 01:18:34 +0300 121) extern char *strprio( enum _priority priority, int short_name );
11c606a6 (kx 2023-04-11 01:18:34 +0300 122) extern char *strproc( enum _procedure procedure );
11c606a6 (kx 2023-04-11 01:18:34 +0300 123)
11c606a6 (kx 2023-04-11 01:18:34 +0300 124) extern struct dlist *tarballs;
11c606a6 (kx 2023-04-11 01:18:34 +0300 125)
11c606a6 (kx 2023-04-11 01:18:34 +0300 126) extern void add_tarball( char *tarball ); /* append the tarballs list */
11c606a6 (kx 2023-04-11 01:18:34 +0300 127) extern void free_tarballs( void );
11c606a6 (kx 2023-04-11 01:18:34 +0300 128) extern const char *find_tarball( const char *name );
11c606a6 (kx 2023-04-11 01:18:34 +0300 129) extern void print_tarballs( void );
11c606a6 (kx 2023-04-11 01:18:34 +0300 130)
11c606a6 (kx 2023-04-11 01:18:34 +0300 131)
11c606a6 (kx 2023-04-11 01:18:34 +0300 132) extern struct dlist *srcpkgs;
11c606a6 (kx 2023-04-11 01:18:34 +0300 133)
11c606a6 (kx 2023-04-11 01:18:34 +0300 134) extern struct pkg *pkg_alloc( void );
11c606a6 (kx 2023-04-11 01:18:34 +0300 135) extern void pkg_free( struct pkg *pkg );
11c606a6 (kx 2023-04-11 01:18:34 +0300 136)
11c606a6 (kx 2023-04-11 01:18:34 +0300 137) extern void add_srcpkg( struct pkg *pkg );
11c606a6 (kx 2023-04-11 01:18:34 +0300 138) extern void free_srcpkgs( void );
11c606a6 (kx 2023-04-11 01:18:34 +0300 139)
11c606a6 (kx 2023-04-11 01:18:34 +0300 140) extern struct dlist *packages;
11c606a6 (kx 2023-04-11 01:18:34 +0300 141)
11c606a6 (kx 2023-04-11 01:18:34 +0300 142) extern struct package *package_alloc( void );
11c606a6 (kx 2023-04-11 01:18:34 +0300 143) extern void package_free( struct package *package );
11c606a6 (kx 2023-04-11 01:18:34 +0300 144)
11c606a6 (kx 2023-04-11 01:18:34 +0300 145) extern void add_reference( struct package *package, struct pkg *pkg );
11c606a6 (kx 2023-04-11 01:18:34 +0300 146) extern void add_required( struct package *package, struct pkg *pkg );
11c606a6 (kx 2023-04-11 01:18:34 +0300 147) extern void add_file( struct package *package, const char *fname );
11c606a6 (kx 2023-04-11 01:18:34 +0300 148) extern void package_print_references( struct package *package );
11c606a6 (kx 2023-04-11 01:18:34 +0300 149) extern void package_print_requires( struct package *package );
11c606a6 (kx 2023-04-11 01:18:34 +0300 150) extern void package_print_files( struct package *package );
11c606a6 (kx 2023-04-11 01:18:34 +0300 151)
11c606a6 (kx 2023-04-11 01:18:34 +0300 152) extern void add_package( struct package *package ); /* append the packages list */
11c606a6 (kx 2023-04-11 01:18:34 +0300 153) extern void free_packages( void );
11c606a6 (kx 2023-04-11 01:18:34 +0300 154)
11c606a6 (kx 2023-04-11 01:18:34 +0300 155)
11c606a6 (kx 2023-04-11 01:18:34 +0300 156) extern struct dlist *provides;
11c606a6 (kx 2023-04-11 01:18:34 +0300 157) extern struct dlist *extern_requires;
11c606a6 (kx 2023-04-11 01:18:34 +0300 158)
11c606a6 (kx 2023-04-11 01:18:34 +0300 159) extern int create_provides_list( struct dlist *srcpkgs );
11c606a6 (kx 2023-04-11 01:18:34 +0300 160) extern void print_provides_list( const char *plist_fname );
11c606a6 (kx 2023-04-11 01:18:34 +0300 161) extern void print_provides_tree( const char *json_fname, enum _tree_format tree_format );
11c606a6 (kx 2023-04-11 01:18:34 +0300 162) extern void free_provides_list( void );
11c606a6 (kx 2023-04-11 01:18:34 +0300 163)
11c606a6 (kx 2023-04-11 01:18:34 +0300 164)
11c606a6 (kx 2023-04-11 01:18:34 +0300 165) #ifdef __cplusplus
11c606a6 (kx 2023-04-11 01:18:34 +0300 166) } /* ... extern "C" */
11c606a6 (kx 2023-04-11 01:18:34 +0300 167) #endif
11c606a6 (kx 2023-04-11 01:18:34 +0300 168)
11c606a6 (kx 2023-04-11 01:18:34 +0300 169) #endif /* _PKG_LIST_H_ */