1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279
|
/*
* This file is part of libmodulemd
* Copyright (C) 2018 Red Hat, Inc.
*
* Fedora-License-Identifier: MIT
* SPDX-2.0-License-Identifier: MIT
* SPDX-3.0-License-Identifier: MIT
*
* This program is free software.
* For more information on the license, see COPYING.
* For more information on free software, see <https://www.gnu.org/philosophy/free-sw.en.html>.
*/
#pragma once
#include "modulemd-module-stream.h"
#include "modulemd-module-stream-v2.h"
#include "modulemd-subdocument-info.h"
#include <glib-object.h>
#include <yaml.h>
G_BEGIN_DECLS
/**
* MODULEMD_MODULE_STREAM_V2_MAXCONTEXTLEN:
*
* The ModuleStream v3 specification defines the maximum lenth of the context
* field. Just before building, the v3 format is converted to v2 format. But
* if a scratch build was requested, an underscore with a decimal number (e.g.
* "_1") is appended to the v2 context. Allow up to 99 scratch builds here.
*/
#define MODULEMD_MODULE_STREAM_V2_MAXCONTEXTLEN (MMD_MAXCONTEXTLEN + 3)
/**
* SECTION: modulemd-module-stream-v2-private
* @title: Modulemd.ModuleStreamV2 (Private)
* @stability: private
* @short_description: #ModulemdModuleStreamV2 methods that should only be
* used by internal consumers.
*/
struct _ModulemdModuleStreamV2
{
GObject parent_instance;
/* Properties */
ModulemdBuildopts *buildopts;
gchar *community;
gchar *description;
gchar *documentation;
gchar *summary;
gchar *tracker;
/* Internal Data Structures */
GHashTable *module_components; /* <string, Modulemd.ComponentModule */
GHashTable *rpm_components; /* <string, Modulemd.ComponentRpm> */
GHashTable *content_licenses; /* string set */
GHashTable *module_licenses; /* string set */
GHashTable *profiles; /* <string, Modulemd.Profile> */
GHashTable *rpm_api; /* string set */
GHashTable *rpm_artifacts; /* string set */
/* < string, GHashTable <string, Modulemd.RpmMapEntry> > */
GHashTable *rpm_artifact_map;
GHashTable *rpm_filters; /* string set */
GHashTable *demodularized_rpms; /* string set */
GHashTable *servicelevels; /* <string, Modulemd.ServiceLevel */
GPtrArray *dependencies; /* <Modulemd.Dependencies> */
ModulemdObsoletes *obsoletes;
GVariant *xmd;
gboolean static_context;
};
/**
* modulemd_module_stream_v2_parse_yaml:
* @subdoc: (in): A #ModulemdSubdocumentInfo representing a stream v2
* document.
* @strict: (in): Whether the parser should return failure if it encounters an
* unknown mapping key or if it should ignore it.
* @only_packager: (in): Whether the parser should return failure if it
* encounters a mapping key that is not intended for packager use. Ignored
* if @strict is #FALSE.
* @error: (out): A #GError that will return the reason for a parsing or
* validation error.
*
* Returns: (transfer full): A newly-allocated #ModulemdModuleStreamV2 object
* read from the YAML. NULL if a parse or validation error occurred and sets
* @error appropriately.
*
* Since: 2.0
*/
ModulemdModuleStreamV2 *
modulemd_module_stream_v2_parse_yaml (ModulemdSubdocumentInfo *subdoc,
gboolean strict,
gboolean only_packager,
GError **error);
/**
* modulemd_module_stream_v2_emit_yaml:
* @self: This #ModulemdModuleStreamV2 object.
* @emitter: (inout): A libyaml emitter object positioned where the data
* section of a #ModulemdModuleStreamV2 belongs in the YAML document.
* @error: (out): A #GError that will return the reason for an emission or
* validation error.
*
* Returns: TRUE if the stream was emitted successfully. FALSE and sets
* @error appropriately if the YAML could not be emitted.
*
* Since: 2.0
*/
gboolean
modulemd_module_stream_v2_emit_yaml (ModulemdModuleStreamV2 *self,
yaml_emitter_t *emitter,
GError **error);
/**
* modulemd_module_stream_v2_replace_content_licenses:
* @self: (in): This #ModulemdModuleStreamV2 object.
* @set: (in): A #GHashTable set of licenses under which one or more of the
* components of this module stream are distributed.
*
* Any existing content licenses associated with module stream @self are
* removed and replaced by @set.
*
* Since: 2.0
*/
void
modulemd_module_stream_v2_replace_content_licenses (
ModulemdModuleStreamV2 *self, GHashTable *set);
/**
* modulemd_module_stream_v2_replace_module_licenses:
* @self: (in): This #ModulemdModuleStreamV2 object.
* @set: (in): A #GHashTable set of licenses under which this module stream is
* distributed.
*
* Any existing module licenses associated with module stream @self are removed
* and replaced by @set.
*
* Since: 2.0
*/
void
modulemd_module_stream_v2_replace_module_licenses (
ModulemdModuleStreamV2 *self, GHashTable *set);
/**
* modulemd_module_stream_v2_replace_rpm_api:
* @self: (in): This #ModulemdModuleStreamV2 object.
* @set: (in): A #GHashTable set of binary RPMs present in this module stream that is
* considered stable public API.
*
* Any existing API RPMs associated with module stream @self are removed and
* replaced by @set.
*
* Since: 2.0
*/
void
modulemd_module_stream_v2_replace_rpm_api (ModulemdModuleStreamV2 *self,
GHashTable *set);
/**
* modulemd_module_stream_v2_replace_rpm_artifacts:
* @self: (in): This #ModulemdModuleStreamV2 object.
* @set: (in): A #GHashTable set of NEVRs of binary RPMs present in this module
* stream.
*
* Any existing artifact RPMs associated with module stream @self are removed
* and replaced by @set.
*
* Since: 2.0
*/
void
modulemd_module_stream_v2_replace_rpm_artifacts (ModulemdModuleStreamV2 *self,
GHashTable *set);
/**
* modulemd_module_stream_v2_replace_rpm_filters:
* @self: (in): This #ModulemdModuleStreamV2 object.
* @set: (in): A #GHashTable set of names of binary RPMs to filter out of this
* module stream.
*
* Any existing filtered binary RPM names associated with module stream @self
* are removed and replaced by @set.
*
* Since: 2.0
*/
void
modulemd_module_stream_v2_replace_rpm_filters (ModulemdModuleStreamV2 *self,
GHashTable *set);
/**
* modulemd_module_stream_v2_replace_demodularized_rpms:
* @self: (in): This #ModulemdModuleStreamV2 object.
* @set: (in): A #GHashTable set of names of binary RPM packages to demodularize.
*
* Any existing demodularized binary RPM package names associated with module
* stream @self are removed and replaced by @set.
*
* Since: 2.13
*/
void
modulemd_module_stream_v2_replace_demodularized_rpms (
ModulemdModuleStreamV2 *self, GHashTable *set);
/**
* modulemd_module_stream_v2_replace_dependencies:
* @self: (in): This #ModulemdModuleStreamV2 object.
* @array: (in): A #GPtrArray of #ModulemdDependencies objects for this module
* stream.
*
* Any existing dependencies associated with module stream @self are removed
* and replaced by @array.
*
* Since: 2.0
*/
void
modulemd_module_stream_v2_replace_dependencies (ModulemdModuleStreamV2 *self,
GPtrArray *array);
/**
* modulemd_module_stream_v2_includes_nevra:
* @self: This #ModulemdModuleStreamV2 object.
* @nevra_pattern: (not nullable): A [glob](https://www.mankier.com/3/glob)
* pattern to match against the NEVRA strings of the rpm artifacts in @self.
*
* Returns: TRUE if this stream includes at least one RPM artifact that
* matches @nevra_pattern. FALSE otherwise.
*
* Since: 2.9
*/
gboolean
modulemd_module_stream_v2_includes_nevra (ModulemdModuleStreamV2 *self,
const gchar *nevra_pattern);
/**
* modulemd_module_stream_v2_associate_obsoletes:
* @self: (in): This #ModulemdModuleStreamV2 object.
* @obsoletes: (in): The #ModulemdObsoletes information to associate with
* this object.
*
* Since: 2.10
*/
void
modulemd_module_stream_v2_associate_obsoletes (ModulemdModuleStreamV2 *self,
ModulemdObsoletes *obsoletes);
/**
* modulemd_module_stream_v2_get_obsoletes:
* @self: (in): This #ModulemdModuleStreamV2 object.
*
* Returns: (transfer none): The #ModulemdObsoletes information associated with this
* object. This function doesn't resolve the reset attribute of obsoletes, this means
* even if obsoletes associated with this stream has attribute reset set the obsoletes
* object is still returned.
*
* Since: 2.10
*/
ModulemdObsoletes *
modulemd_module_stream_v2_get_obsoletes (ModulemdModuleStreamV2 *self);
G_END_DECLS
|