1 /* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- 2 * 3 * Copyright (C) 2012-2015 Red Hat, Inc. 4 * Copyright (C) 2015 Richard Hughes <richard@hughsie.com> 5 * 6 * Licensed under the GNU Lesser General Public License Version 2.1 7 * 8 * This library is free software; you can redistribute it and/or 9 * modify it under the terms of the GNU Lesser General Public 10 * License as published by the Free Software Foundation; either 11 * version 2.1 of the License, or (at your option) any later version. 12 * 13 * This library is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 * Lesser General Public License for more details. 17 * 18 * You should have received a copy of the GNU Lesser General Public 19 * License along with this library; if not, write to the Free Software 20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 21 */ 22 23 #ifndef __DNF_SACK_H 24 #define __DNF_SACK_H 25 26 #include <glib-object.h> 27 28 #include "hy-types.h" 29 #include "dnf-sack.h" 30 #include "dnf-repo.h" 31 #include "dnf-state.h" 32 #include "hy-packageset.h" 33 34 G_BEGIN_DECLS 35 36 #define DNF_TYPE_SACK (dnf_sack_get_type ()) 37 G_DECLARE_DERIVABLE_TYPE (DnfSack, dnf_sack, DNF, SACK, GObject) 38 39 struct _DnfSackClass 40 { 41 GObjectClass parent_class; 42 /*< private >*/ 43 void (*_dnf_reserved1) (void); 44 void (*_dnf_reserved2) (void); 45 void (*_dnf_reserved3) (void); 46 void (*_dnf_reserved4) (void); 47 void (*_dnf_reserved5) (void); 48 void (*_dnf_reserved6) (void); 49 void (*_dnf_reserved7) (void); 50 void (*_dnf_reserved8) (void); 51 }; 52 53 /** 54 * DnfSackSetupFlags: 55 * @DNF_SACK_SETUP_FLAG_NONE: No flags set 56 * @DNF_SACK_SETUP_FLAG_MAKE_CACHE_DIR: Create the cache dir if required 57 * 58 * Flags to use when setting up the sack. 59 **/ 60 typedef enum { 61 DNF_SACK_SETUP_FLAG_NONE = 0, 62 DNF_SACK_SETUP_FLAG_MAKE_CACHE_DIR = 1 << 0, 63 /*< private >*/ 64 DNF_SACK_SETUP_FLAG_LAST 65 } DnfSackSetupFlags; 66 67 /** 68 * DnfSackAddFlags: 69 * @DNF_SACK_LOAD_FLAG_NONE: No flags set 70 * @DNF_SACK_LOAD_FLAG_BUILD_CACHE: Build the solv cache if required 71 * @DNF_SACK_LOAD_FLAG_USE_FILELISTS: Use the filelists metadata 72 * @DNF_SACK_LOAD_FLAG_USE_PRESTO: Use presto deltas metadata 73 * @DNF_SACK_LOAD_FLAG_USE_UPDATEINFO: Use updateinfo metadata 74 * @DNF_SACK_LOAD_FLAG_USE_OTHER: Use other metadata 75 * 76 * Flags to use when loading from the sack. 77 **/ 78 typedef enum { 79 DNF_SACK_LOAD_FLAG_NONE = 0, 80 DNF_SACK_LOAD_FLAG_BUILD_CACHE = 1 << 0, 81 DNF_SACK_LOAD_FLAG_USE_FILELISTS = 1 << 1, 82 DNF_SACK_LOAD_FLAG_USE_PRESTO = 1 << 2, 83 DNF_SACK_LOAD_FLAG_USE_UPDATEINFO = 1 << 3, 84 DNF_SACK_LOAD_FLAG_USE_OTHER = 1 << 4, 85 /*< private >*/ 86 DNF_SACK_LOAD_FLAG_LAST 87 } DnfSackLoadFlags; 88 89 DnfSack *dnf_sack_new (void); 90 91 void dnf_sack_set_cachedir (DnfSack *sack, 92 const gchar *value); 93 gboolean dnf_sack_set_arch (DnfSack *sack, 94 const gchar *value, 95 GError **error); 96 void dnf_sack_set_all_arch (DnfSack *sack, 97 gboolean all_arch); 98 gboolean dnf_sack_get_all_arch (DnfSack *sack); 99 void dnf_sack_set_allow_vendor_change(DnfSack *sack, 100 gboolean allow_vendor_change); 101 gboolean dnf_sack_get_allow_vendor_change(DnfSack *sack); 102 void dnf_sack_set_rootdir (DnfSack *sack, 103 const gchar *value); 104 gboolean dnf_sack_setup (DnfSack *sack, 105 int flags, 106 GError **error); 107 int dnf_sack_evr_cmp (DnfSack *sack, 108 const char *evr1, 109 const char *evr2); 110 const char *dnf_sack_get_cache_dir (DnfSack *sack); 111 DnfPackage *dnf_sack_get_running_kernel (DnfSack *sack); 112 char *dnf_sack_give_cache_fn (DnfSack *sack, 113 const char *reponame, 114 const char *ext); 115 const char **dnf_sack_list_arches (DnfSack *sack); 116 void dnf_sack_set_installonly (DnfSack *sack, 117 const char **installonly); 118 void dnf_sack_set_installonly_limit (DnfSack *sack, 119 guint limit); 120 guint dnf_sack_get_installonly_limit (DnfSack *sack); 121 DnfPackage *dnf_sack_add_cmdline_package (DnfSack *sack, 122 const char *fn); 123 DnfPackage *dnf_sack_add_cmdline_package_nochecksum(DnfSack *sack, 124 const char *fn); 125 int dnf_sack_count (DnfSack *sack); 126 void dnf_sack_add_excludes (DnfSack *sack, 127 const DnfPackageSet *pset); 128 void dnf_sack_add_module_excludes (DnfSack *sack, 129 const DnfPackageSet *pset); 130 void dnf_sack_add_includes (DnfSack *sack, 131 const DnfPackageSet *pset); 132 void dnf_sack_remove_excludes (DnfSack *sack, 133 const DnfPackageSet *pset); 134 void dnf_sack_remove_module_excludes(DnfSack *sack, 135 const DnfPackageSet *pset); 136 void dnf_sack_remove_includes (DnfSack *sack, 137 const DnfPackageSet *pset); 138 void dnf_sack_set_excludes (DnfSack *sack, 139 const DnfPackageSet *pset); 140 void dnf_sack_set_module_excludes (DnfSack *sack, 141 const DnfPackageSet *pset); 142 void dnf_sack_set_module_includes (DnfSack *sack, 143 const DnfPackageSet *pset); 144 void dnf_sack_set_includes (DnfSack *sack, 145 const DnfPackageSet *pset); 146 void dnf_sack_reset_excludes (DnfSack *sack); 147 void dnf_sack_reset_module_excludes (DnfSack *sack); 148 void dnf_sack_reset_includes (DnfSack *sack); 149 DnfPackageSet *dnf_sack_get_includes (DnfSack *sack); 150 DnfPackageSet *dnf_sack_get_excludes (DnfSack *sack); 151 DnfPackageSet *dnf_sack_get_module_excludes (DnfSack *sack); 152 DnfPackageSet *dnf_sack_get_module_includes (DnfSack *sack); 153 gboolean dnf_sack_set_use_includes (DnfSack *sack, 154 const char *reponame, 155 gboolean enabled); 156 gboolean dnf_sack_get_use_includes (DnfSack *sack, 157 const char *reponame, 158 gboolean *enabled); 159 int dnf_sack_repo_enabled (DnfSack *sack, 160 const char *reponame, 161 int enabled); 162 gboolean dnf_sack_load_system_repo (DnfSack *sack, 163 HyRepo a_hrepo, 164 int flags, 165 GError **error); 166 gboolean dnf_sack_load_repo (DnfSack *sack, 167 HyRepo hrepo, 168 int flags, 169 GError **error); 170 Pool *dnf_sack_get_pool (DnfSack *sack); 171 172 void dnf_sack_filter_modules(DnfSack *sack, GPtrArray *repos, const char *install_root, 173 const char * platformModule); 174 175 176 /**********************************************************************/ 177 178 /** 179 * DnfSackAddFlags: 180 * @DNF_SACK_ADD_FLAG_NONE: Add the primary 181 * @DNF_SACK_ADD_FLAG_FILELISTS: Add the filelists 182 * @DNF_SACK_ADD_FLAG_UPDATEINFO: Add the updateinfo 183 * @DNF_SACK_ADD_FLAG_REMOTE: Use remote repos 184 * @DNF_SACK_ADD_FLAG_UNAVAILABLE: Add repos that are unavailable 185 * @DNF_SACK_ADD_FLAG_OTHER: Add the other 186 * 187 * Flags to control repo loading into the sack. 188 **/ 189 typedef enum { 190 DNF_SACK_ADD_FLAG_NONE = 0, 191 DNF_SACK_ADD_FLAG_FILELISTS = 1 << 0, 192 DNF_SACK_ADD_FLAG_UPDATEINFO = 1 << 1, 193 DNF_SACK_ADD_FLAG_REMOTE = 1 << 2, 194 DNF_SACK_ADD_FLAG_UNAVAILABLE = 1 << 3, 195 DNF_SACK_ADD_FLAG_OTHER = 1 << 4, 196 /*< private >*/ 197 DNF_SACK_ADD_FLAG_LAST 198 } DnfSackAddFlags; 199 200 gboolean dnf_sack_add_repo (DnfSack *sack, 201 DnfRepo *repo, 202 guint permissible_cache_age, 203 DnfSackAddFlags flags, 204 DnfState *state, 205 GError **error); 206 gboolean dnf_sack_add_repos (DnfSack *sack, 207 GPtrArray *repos, 208 guint permissible_cache_age, 209 DnfSackAddFlags flags, 210 DnfState *state, 211 GError **error); 212 213 G_END_DECLS 214 215 #endif /* __DNF_SACK_H */ 216