5 kx
5 kx /**********************************************************************
5 kx
5 kx Copyright 2019 Andrey V.Kosteltsev
5 kx
9 kx Licensed under the Radix cross Linux License, Version 1.0 .
5 kx you may not use this file except in compliance with the License.
5 kx You may obtain a copy of the License at
5 kx
9 kx https://radix-linux.su/licenses/LICENSE-1.0-en_US.txt
5 kx
5 kx Unless required by applicable law or agreed to in writing, software
5 kx distributed under the License is distributed on an "AS IS" BASIS,
5 kx WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
5 kx implied.
5 kx
5 kx **********************************************************************/
5 kx
5 kx #ifndef _PKG_LIST_H_
5 kx #define _PKG_LIST_H_
5 kx
5 kx #ifdef __cplusplus
5 kx extern "C" {
5 kx #endif
5 kx
5 kx #include <dlist.h>
5 kx
5 kx
5 kx enum _tree_format {
5 kx TFMT_BIN = 0,
5 kx TFMT_DAG,
5 kx
5 kx TFMT_UNKNOWN
5 kx };
5 kx
5 kx enum _procedure
5 kx {
5 kx INSTALL = 0, /* 'install' */
5 kx UPDATE /* 'update' */
5 kx };
5 kx
5 kx enum _priority
5 kx {
5 kx REQUIRED = 0, /* synonims: REQUIRED | required | REQ | req */
5 kx RECOMMENDED, /* synonims: RECOMMENDED | recommended | REC | rec */
5 kx OPTIONAL, /* synonims: OPTIONAL | optional | OPT | opt */
5 kx SKIP /* synonims: SKIP | skip | SKP | skp */
5 kx };
5 kx
5 kx
5 kx struct pkginfo
5 kx {
5 kx char *name;
5 kx char *version;
5 kx char *arch;
5 kx char *distro_name;
5 kx char *distro_version;
5 kx char *group;
5 kx char *short_description;
5 kx char *url;
5 kx char *license;
5 kx size_t uncompressed_size; /* size in 1024-byte blocks */
5 kx size_t compressed_size; /* size in bytes */
5 kx int total_files;
5 kx };
5 kx
5 kx struct pkg
5 kx {
5 kx char *group;
5 kx char *name;
5 kx char *version;
5 kx
5 kx enum _procedure procedure; /* install procedure */
5 kx };
5 kx
5 kx struct references
5 kx {
5 kx int size;
5 kx struct dlist *list; /* list of pkg structs */
5 kx };
5 kx
5 kx struct requires
5 kx {
5 kx int size;
5 kx struct dlist *list; /* list of pkg structs */
5 kx };
5 kx
5 kx struct files
5 kx {
5 kx int size;
5 kx struct dlist *list; /* list of strings */
5 kx };
5 kx
5 kx
5 kx struct package
5 kx {
5 kx struct pkginfo *pkginfo;
5 kx
5 kx char *hardware; /* optional parameter for JSON */
5 kx
5 kx char *tarball;
5 kx enum _procedure procedure; /* install procedure */
5 kx enum _priority priority; /* install user priority */
5 kx
5 kx struct references *references;
5 kx struct requires *requires;
5 kx
5 kx char *description;
5 kx
5 kx char *restore_links;
5 kx char *install_script;
5 kx
5 kx struct files *files;
5 kx };
5 kx
5 kx
5 kx extern char *htmlroot;
5 kx extern char *hardware;
5 kx extern int minimize;
5 kx
5 kx extern char *strprio( enum _priority priority, int short_name );
5 kx extern char *strproc( enum _procedure procedure );
5 kx
5 kx extern struct dlist *tarballs;
5 kx
5 kx extern void add_tarball( char *tarball ); /* append the tarballs list */
5 kx extern void free_tarballs( void );
5 kx extern const char *find_tarball( const char *name );
5 kx extern void print_tarballs( void );
5 kx
5 kx
5 kx extern struct dlist *srcpkgs;
5 kx
5 kx extern struct pkg *pkg_alloc( void );
5 kx extern void pkg_free( struct pkg *pkg );
5 kx
5 kx extern void add_srcpkg( struct pkg *pkg );
5 kx extern void free_srcpkgs( void );
5 kx
5 kx extern struct dlist *packages;
5 kx
5 kx extern struct package *package_alloc( void );
5 kx extern void package_free( struct package *package );
5 kx
5 kx extern void add_reference( struct package *package, struct pkg *pkg );
5 kx extern void add_required( struct package *package, struct pkg *pkg );
5 kx extern void add_file( struct package *package, const char *fname );
5 kx extern void package_print_references( struct package *package );
5 kx extern void package_print_requires( struct package *package );
5 kx extern void package_print_files( struct package *package );
5 kx
5 kx extern void add_package( struct package *package ); /* append the packages list */
5 kx extern void free_packages( void );
5 kx
5 kx
5 kx extern struct dlist *provides;
5 kx extern struct dlist *extern_requires;
5 kx
5 kx extern int create_provides_list( struct dlist *srcpkgs );
5 kx extern void print_provides_list( const char *plist_fname );
5 kx extern void print_provides_tree( const char *json_fname, enum _tree_format tree_format );
5 kx extern void free_provides_list( void );
5 kx
5 kx
5 kx #ifdef __cplusplus
5 kx } /* ... extern "C" */
5 kx #endif
5 kx
5 kx #endif /* _PKG_LIST_H_ */