summaryrefslogtreecommitdiffstats
path: root/distribution.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--distribution.h162
1 files changed, 162 insertions, 0 deletions
diff --git a/distribution.h b/distribution.h
new file mode 100644
index 0000000..1078084
--- /dev/null
+++ b/distribution.h
@@ -0,0 +1,162 @@
+#ifndef REPREPRO_DISTRIBUTION_H
+#define REPREPRO_DISTRIBUTION_H
+
+struct distribution;
+
+#ifndef REPREPRO_ERROR_H
+#include "error.h"
+#warning "What's hapening here?"
+#endif
+#ifndef REPREPRO_DATABASE_H
+#include "database.h"
+#endif
+#ifndef REPREPRO_STRLIST_H
+#include "strlist.h"
+#endif
+#ifndef REPREPRO_TARGET_H
+#include "target.h"
+#endif
+#ifndef REPREPRO_EXPORTS_H
+#include "exports.h"
+#endif
+#ifndef REPREPRO_CONTENTS_H
+#include "contents.h"
+#endif
+struct overridefile;
+struct uploaders;
+
+enum exportoptions {
+ deo_noexport = 0,
+ deo_keepunknown,
+ deo_COUNT,
+};
+
+struct distribution {
+ struct distribution *next;
+ /* the primary name to access this distribution: */
+ char *codename;
+ /* for more helpfull error messages: */
+ const char *filename; /* only valid while parsing! */
+ unsigned int firstline, lastline;
+ /* additional information for the Release-file to be
+ * generated, may be NULL. only suite is sometimes used
+ * (and only for sanity checks) */
+ /*@null@*/char *suite, *version;
+ /*@null@*/char *origin, *label, *description,
+ *notautomatic, *butautomaticupgrades, *signed_by;
+ /* What architectures and components are there */
+ struct atomlist architectures, components;
+ /* which update rules to use */
+ struct strlist updates;
+ /* which rules to use to pull packages from other distributions */
+ struct strlist pulls;
+ /* the key to sign with, may have no entries to mean unsigned: */
+ struct strlist signwith;
+ long long limit;
+ /* the codename of the archive distribution (when the limit is exceeded) */
+ /*@null@*/struct distribution *archive;
+ /* the override file to use by default */
+ /*@null@*/char *deb_override, *udeb_override, *dsc_override;
+ /* fake component prefix (and codename antisuffix) for Release files: */
+ /*@null@*/char *fakecomponentprefix;
+ /* only loaded when you've done it yourself: */
+ struct {
+ /*@null@*/struct overridefile *dsc, *deb, *udeb;
+ } overrides;
+ /* the list of components containing a debian-installer dir,
+ * normally only "main" */
+ struct atomlist udebcomponents;
+ /* the list of components containing a debug directory */
+ struct atomlist ddebcomponents;
+ /* what kind of index files to generate */
+ struct exportmode dsc, deb, udeb, ddeb;
+ bool exportoptions[deo_COUNT];
+ /* (NONE must be 0 so it is the default) */
+ enum trackingtype { dt_NONE=0, dt_KEEP, dt_ALL, dt_MINIMAL } tracking;
+ struct trackingoptions { bool includechanges;
+ bool includebyhand;
+ bool includebuildinfos;
+ bool includelogs;
+ bool needsources;
+ bool keepsources;
+ bool embargoalls;
+ } trackingoptions;
+ trackingdb trackingdb;
+ /* what content files to generate */
+ struct contentsoptions contents;
+ struct atomlist contents_architectures,
+ contents_components,
+ contents_dcomponents,
+ contents_ucomponents;
+ bool contents_architectures_set,
+ contents_components_set,
+ contents_dcomponents_set,
+ contents_ucomponents_set,
+ /* not used, just here to keep things simpler: */
+ ddebcomponents_set,
+ udebcomponents_set;
+ /* A list of all targets contained in the distribution*/
+ struct target *targets;
+ /* a filename to look for who is allowed to upload packages */
+ /*@null@*/char *uploaders;
+ /* only loaded after _loaduploaders */
+ /*@null@*/struct uploaders *uploaderslist;
+ /* how and where to log */
+ /*@null@*/struct logger *logger;
+ /* scripts to feed byhand/raw-* files in */
+ /*@null@*/struct byhandhook *byhandhooks;
+ /* a list of names beside Codename and Suite to accept .changes
+ * files via include */
+ struct strlist alsoaccept;
+ /* if != 0, number of seconds to add for Vaild-Until */
+ unsigned long validfor;
+ /* RET_NOTHING: do not export with EXPORT_CHANGED, EXPORT_NEVER
+ * RET_OK: export unless EXPORT_NEVER
+ * RET_ERROR_*: only export with EXPORT_FORCE */
+ retvalue status;
+ /* false: not looked at, do not export at all */
+ bool lookedat;
+ /* false: not requested, do not handle at all */
+ bool selected;
+ /* forbid all writing operations and exports if true */
+ bool readonly;
+ /* tracking information might be obsolete */
+ bool needretrack;
+ /* omitted because of --onlysmalldeletes */
+ bool omitted;
+};
+
+retvalue distribution_get(struct distribution * /*all*/, const char *, bool /*lookedat*/, /*@out@*/struct distribution **);
+
+/* set lookedat, start logger, ... */
+retvalue distribution_prepareforwriting(struct distribution *);
+
+/*@dependent@*/struct target *distribution_getpart(const struct distribution *distribution, component_t, architecture_t, packagetype_t);
+
+/* like distribtion_getpart, but returns NULL if there is no such target */
+/*@null@*//*@dependent@*/struct target *distribution_gettarget(const struct distribution *distribution, component_t, architecture_t, packagetype_t);
+
+retvalue distribution_fullexport(struct distribution *);
+
+
+retvalue distribution_snapshot(struct distribution *, const char */*name*/);
+
+/* read the configuration from all distributions */
+retvalue distribution_readall(/*@out@*/struct distribution **distributions);
+
+/* mark all dists from <conf> fitting in the filter given in <argc, argv> */
+retvalue distribution_match(struct distribution * /*alldistributions*/, int /*argc*/, const char * /*argv*/ [], bool /*lookedat*/, bool /*readonly*/);
+
+/* get a pointer to the apropiate part of the linked list */
+struct distribution *distribution_find(struct distribution *, const char *);
+
+retvalue distribution_freelist(/*@only@*/struct distribution *distributions);
+enum exportwhen {EXPORT_NEVER, EXPORT_SILENT_NEVER, EXPORT_CHANGED, EXPORT_NORMAL, EXPORT_FORCE };
+retvalue distribution_exportlist(enum exportwhen when, /*@only@*/struct distribution *);
+
+retvalue distribution_loadalloverrides(struct distribution *);
+void distribution_unloadoverrides(struct distribution *distribution);
+
+retvalue distribution_loaduploaders(struct distribution *);
+void distribution_unloaduploaders(struct distribution *distribution);
+#endif