mirror of https://github.com/vmware/tdnf.git
649 lines
10 KiB
C
649 lines
10 KiB
C
/*
|
|
* Copyright (C) 2015-2023 VMware, Inc. All Rights Reserved.
|
|
*
|
|
* Licensed under the GNU Lesser General Public License v2.1 (the "License");
|
|
* you may not use this file except in compliance with the License. The terms
|
|
* of the License are located in the COPYING file of this distribution.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define TDNF_ID_DEPENDS "tdnf:depends"
|
|
#define TDNF_ID_REQUIRES_PRE "tdnf:requires-pre"
|
|
|
|
typedef struct _SolvSack
|
|
{
|
|
Pool* pPool;
|
|
uint32_t dwNumOfCommandPkgs;
|
|
char* pszCacheDir;
|
|
char* pszRootDir;
|
|
} SolvSack, *PSolvSack;
|
|
|
|
typedef struct _SolvQuery
|
|
{
|
|
PSolvSack pSack;
|
|
Queue queueJob;
|
|
Solver *pSolv;
|
|
Transaction *pTrans;
|
|
Queue queueRepoFilter;
|
|
char** ppszPackageNames;
|
|
Queue queueResult;
|
|
uint32_t dwNewPackages;
|
|
TDNF_SCOPE nScope;
|
|
} SolvQuery, *PSolvQuery;
|
|
|
|
typedef struct _SolvPackageList
|
|
{
|
|
Queue queuePackages;
|
|
} SolvPackageList, *PSolvPackageList;
|
|
|
|
typedef struct _SOLV_REPO_INFO_INTERNAL_
|
|
{
|
|
Repo* pRepo;
|
|
unsigned char cookie[SOLV_COOKIE_LEN];
|
|
int nCookieSet;
|
|
char *pszRepoCacheDir;
|
|
}SOLV_REPO_INFO_INTERNAL, *PSOLV_REPO_INFO_INTERNAL;
|
|
|
|
extern Id allDepKeyIds[];
|
|
|
|
// tdnfpackage.c
|
|
uint32_t
|
|
SolvGetPkgInfoFromId(
|
|
PSolvSack pSack,
|
|
uint32_t dwPkgId,
|
|
uint32_t dwWhichInfo,
|
|
char** ppszInfo);
|
|
|
|
uint32_t
|
|
SolvGetPkgNameFromId(
|
|
PSolvSack pSack,
|
|
uint32_t dwPkgId,
|
|
char** ppszName);
|
|
|
|
uint32_t
|
|
SolvGetPkgArchFromId(
|
|
PSolvSack pSack,
|
|
uint32_t dwPkgId,
|
|
char** ppszArch);
|
|
|
|
uint32_t
|
|
SolvGetPkgVersionFromId(
|
|
PSolvSack pSack,
|
|
uint32_t dwPkgId,
|
|
char ** ppszVersion);
|
|
|
|
uint32_t
|
|
SolvGetPkgReleaseFromId(
|
|
PSolvSack pSack,
|
|
uint32_t dwPkgId,
|
|
char** ppszRelease);
|
|
|
|
uint32_t
|
|
SolvGetPkgRepoNameFromId(
|
|
PSolvSack pSack,
|
|
uint32_t dwPkgId,
|
|
char** ppRepoName);
|
|
|
|
uint32_t
|
|
SolvGetPkgInstallSizeFromId(
|
|
PSolvSack pSack,
|
|
uint32_t dwPkgId,
|
|
uint32_t * pdwSize);
|
|
|
|
uint32_t
|
|
SolvGetPkgDownloadSizeFromId(
|
|
PSolvSack pSack,
|
|
uint32_t dwPkgId,
|
|
uint32_t * pdwSize);
|
|
|
|
uint32_t
|
|
SolvGetPkgSummaryFromId(
|
|
PSolvSack pSack,
|
|
uint32_t dwPkgId,
|
|
char** ppszSummary);
|
|
|
|
uint32_t
|
|
SolvGetPkgLicenseFromId(
|
|
PSolvSack pSack,
|
|
uint32_t dwPkgId,
|
|
char** ppszLicense);
|
|
|
|
uint32_t
|
|
SolvGetPkgDescriptionFromId(
|
|
PSolvSack pSack,
|
|
uint32_t dwPkgId,
|
|
char** ppszDescription);
|
|
|
|
uint32_t
|
|
SolvGetPkgUrlFromId(
|
|
PSolvSack pSack,
|
|
uint32_t dwPkgId,
|
|
char** ppszUrl);
|
|
|
|
uint32_t
|
|
SolvGetPkgLocationFromId(
|
|
PSolvSack pSack,
|
|
uint32_t dwPkgId,
|
|
char** ppszLocation);
|
|
|
|
uint32_t
|
|
SolvGetPkgNevrFromId(
|
|
PSolvSack pSack,
|
|
uint32_t dwPkgId,
|
|
char** ppszNevr);
|
|
|
|
uint32_t
|
|
SolvSplitEvr(
|
|
const PSolvSack pSack,
|
|
const char *pEVRstring,
|
|
char **ppEpoch,
|
|
char **ppVersion,
|
|
char **ppLease);
|
|
|
|
uint32_t
|
|
SolvCmpEvr(
|
|
PSolvSack pSack,
|
|
Id dwPkg1,
|
|
Id dwPkg2,
|
|
int* pdwResult
|
|
);
|
|
|
|
uint32_t
|
|
SolvCreatePackageList(
|
|
PSolvPackageList* ppSolvPackageList
|
|
);
|
|
|
|
void
|
|
SolvEmptyPackageList(
|
|
PSolvPackageList pPkgList
|
|
);
|
|
|
|
void
|
|
SolvFreePackageList(
|
|
PSolvPackageList pPkgList
|
|
);
|
|
|
|
uint32_t
|
|
SolvQueueToPackageList(
|
|
Queue* pQueue,
|
|
PSolvPackageList* ppPkgList
|
|
);
|
|
|
|
uint32_t
|
|
SolvGetPackageListSize(
|
|
PSolvPackageList pPkgList,
|
|
uint32_t* pdwSize
|
|
);
|
|
|
|
uint32_t
|
|
SolvGetPackageId(
|
|
PSolvPackageList pPkgList,
|
|
uint32_t dwPkgIndex,
|
|
Id* dwPkgId
|
|
);
|
|
|
|
uint32_t
|
|
SolvGetPkgChecksumFromId(
|
|
PSolvSack pSack,
|
|
uint32_t dwPkgId,
|
|
int *checksumType,
|
|
unsigned char** ppbChecksum
|
|
);
|
|
|
|
uint32_t
|
|
SolvGetLatest(
|
|
PSolvSack pSack,
|
|
Queue* pPkgList,
|
|
Id dwPpkg,
|
|
Id* pdwResult
|
|
);
|
|
|
|
uint32_t
|
|
SolvFindAllInstalled(
|
|
PSolvSack pSack,
|
|
PSolvPackageList* ppPkgList
|
|
);
|
|
|
|
uint32_t
|
|
SolvFindAvailablePkgByName(
|
|
PSolvSack pSack,
|
|
const char* pszName,
|
|
PSolvPackageList* ppPkgList
|
|
);
|
|
|
|
uint32_t
|
|
SolvFindAvailableSrcPkgByName(
|
|
PSolvSack pSack,
|
|
const char* pszName,
|
|
PSolvPackageList* ppPkgList
|
|
);
|
|
|
|
uint32_t
|
|
SolvFindInstalledPkgByName(
|
|
PSolvSack pSack,
|
|
const char* pszName,
|
|
PSolvPackageList* ppPkgList
|
|
);
|
|
|
|
uint32_t
|
|
SolvFindInstalledPkgByMultipleNames(
|
|
PSolvSack pSack,
|
|
char** ppszName,
|
|
PSolvPackageList* ppPkgList
|
|
);
|
|
|
|
uint32_t
|
|
SolvCountPkgByName(
|
|
PSolvSack pSack,
|
|
const char* pszName,
|
|
int nSource,
|
|
uint32_t * pdwCount
|
|
);
|
|
|
|
uint32_t
|
|
SolvGetTransResultsWithType(
|
|
Transaction *pTrans,
|
|
Id dwType,
|
|
PSolvPackageList* ppPkgList
|
|
);
|
|
|
|
|
|
uint32_t
|
|
SolvFindHighestAvailable(
|
|
PSolvSack pSack,
|
|
const char* pszPkgName,
|
|
int nSource,
|
|
Id* pdwId
|
|
);
|
|
|
|
uint32_t
|
|
SolvFindLowestInstalled(
|
|
PSolvSack pSack,
|
|
const char* pszPkgName,
|
|
Id* pdwId
|
|
);
|
|
|
|
uint32_t
|
|
SolvFindHighestInstalled(
|
|
PSolvSack pSack,
|
|
const char* pszPkgName,
|
|
Id* pdwId
|
|
);
|
|
|
|
uint32_t
|
|
SolvFindHighestOrLowestInstalled(
|
|
PSolvSack pSack,
|
|
const char* pszPkgName,
|
|
Id* pdwId,
|
|
uint32_t dwFindHighest
|
|
);
|
|
|
|
uint32_t
|
|
SolvGetNevraFromId(
|
|
PSolvSack pSack,
|
|
uint32_t dwPkgId,
|
|
uint32_t *pdwEpoch,
|
|
char **ppszName,
|
|
char **ppszVersion,
|
|
char **ppszRelease,
|
|
char **ppszArch,
|
|
char **ppszEVR
|
|
);
|
|
|
|
uint32_t
|
|
SolvGetDependenciesFromId(
|
|
PSolvSack pSack,
|
|
uint32_t dwPkgId,
|
|
REPOQUERY_DEP_KEY depKey,
|
|
char ***pppszDependencies);
|
|
|
|
uint32_t
|
|
SolvGetFileListFromId(
|
|
PSolvSack pSack,
|
|
uint32_t dwPkgId,
|
|
char ***pppszFiles);
|
|
|
|
uint32_t
|
|
SolvGetSourceFromId(
|
|
PSolvSack pSack,
|
|
uint32_t dwPkgId,
|
|
char **ppszName,
|
|
char **ppszArch,
|
|
char **ppszEVR
|
|
);
|
|
|
|
uint32_t
|
|
SolvGetChangeLogFromId(
|
|
PSolvSack pSack,
|
|
uint32_t dwPkgId,
|
|
PTDNF_PKG_CHANGELOG_ENTRY *ppEntries
|
|
);
|
|
|
|
uint32_t
|
|
SolvIdIsOrphaned(
|
|
PSolvSack pSack,
|
|
Id p,
|
|
int *pnIsOrphan
|
|
);
|
|
|
|
uint32_t
|
|
SolvGetAutoInstalledOrphans(
|
|
PSolvSack pSack,
|
|
struct history_ctx *pHistoryCtx,
|
|
Queue *pQueueAutoInstalled);
|
|
|
|
// tdnfpool.c
|
|
uint32_t
|
|
SolvCreateSack(
|
|
PSolvSack* ppSack
|
|
);
|
|
|
|
void
|
|
SolvFreeSack(
|
|
PSolvSack);
|
|
|
|
uint32_t
|
|
SolvCreatePool(Pool **ppPool);
|
|
|
|
uint32_t
|
|
SolvInitSack(
|
|
PSolvSack *ppSack,
|
|
const char* pszCacheDir,
|
|
const char* pszRootDir
|
|
);
|
|
|
|
// tdnfquery.c
|
|
uint32_t
|
|
SolvCreateQuery(
|
|
PSolvSack pSack,
|
|
PSolvQuery* ppQuery
|
|
);
|
|
|
|
void
|
|
SolvFreeQuery(
|
|
PSolvQuery pQuery
|
|
);
|
|
|
|
uint32_t
|
|
SolvApplyPackageFilter(
|
|
PSolvQuery pQuery,
|
|
char** ppszPackageNames
|
|
);
|
|
|
|
uint32_t
|
|
SolvApplySinglePackageFilter(
|
|
PSolvQuery pQuery,
|
|
const char* pszPackageName
|
|
);
|
|
|
|
uint32_t
|
|
SolvApplyListQuery(
|
|
PSolvQuery pQuery
|
|
);
|
|
|
|
uint32_t
|
|
SolvApplyProvidesQuery(
|
|
PSolvQuery pQuery
|
|
);
|
|
|
|
uint32_t
|
|
SolvApplySearch(
|
|
PSolvQuery pQuery,
|
|
char** ppszSearchStrings,
|
|
int dwStartIndex,
|
|
int dwCount
|
|
);
|
|
|
|
uint32_t
|
|
SolvGenerateCommonJob(
|
|
PSolvQuery pQuery,
|
|
uint32_t dwSelectFlags
|
|
);
|
|
|
|
uint32_t
|
|
SolvAddSystemRepoFilter(
|
|
PSolvQuery pQuery
|
|
);
|
|
|
|
uint32_t
|
|
SolvAddAvailableRepoFilter(
|
|
PSolvQuery pQuery
|
|
);
|
|
|
|
uint32_t
|
|
SolvGetQueryResult(
|
|
PSolvQuery pQuery,
|
|
PSolvPackageList* ppPkgList
|
|
);
|
|
|
|
uint32_t
|
|
SolvAddUpgradeAllJob(
|
|
Queue* pQueueJobs
|
|
);
|
|
|
|
uint32_t
|
|
SolvAddDistUpgradeJob(
|
|
Queue* pQueueJobs
|
|
);
|
|
|
|
uint32_t
|
|
SolvAddFlagsToJobs(
|
|
Queue* pQueueJobs,
|
|
int dwFlags
|
|
);
|
|
|
|
uint32_t
|
|
SolvAddPkgInstallJob(
|
|
Queue* pQueueJobs,
|
|
Id dwId
|
|
);
|
|
|
|
uint32_t
|
|
SolvAddPkgDowngradeJob(
|
|
Queue* pQueueJobs,
|
|
Id dwId
|
|
);
|
|
|
|
uint32_t
|
|
SolvAddPkgEraseJob(
|
|
Queue* pQueueJobs,
|
|
Id dwId
|
|
);
|
|
|
|
uint32_t
|
|
SolvAddUserInstalledToJobs(
|
|
Queue* pQueueJobs,
|
|
Pool *pPool,
|
|
struct history_ctx *pHistoryCtx
|
|
);
|
|
|
|
uint32_t
|
|
SolvGetUpdateAdvisories(
|
|
PSolvSack pSack,
|
|
Id dwPkgIdpkg,
|
|
PSolvPackageList* ppPkgList);
|
|
|
|
uint32_t
|
|
SolvFindAllUpDownCandidates(
|
|
PSolvSack pSack,
|
|
PSolvPackageList pInstalledPackages,
|
|
int up,
|
|
Queue *pQueueResult
|
|
);
|
|
|
|
uint32_t
|
|
SolvGetUpdateAdvisories(
|
|
PSolvSack pSack,
|
|
Id dwPkgIdpkg,
|
|
PSolvPackageList* ppPkgList);
|
|
|
|
uint32_t
|
|
SolvApplyDepsFilter(
|
|
PSolvQuery pQuery,
|
|
char **ppszDeps,
|
|
REPOQUERY_WHAT_KEY whatKey);
|
|
|
|
uint32_t
|
|
SolvApplyExtrasFilter(
|
|
PSolvQuery pQuery);
|
|
|
|
uint32_t
|
|
SolvApplyDuplicatesFilter(
|
|
PSolvQuery pQuery);
|
|
|
|
uint32_t
|
|
SolvApplyFileProvidesFilter(
|
|
PSolvQuery pQuery,
|
|
char *pszFile);
|
|
|
|
uint32_t
|
|
SolvApplyUserInstalledFilter(
|
|
PSolvQuery pQuery,
|
|
struct history_ctx *pHistoryCtx);
|
|
|
|
uint32_t
|
|
SolvApplyArchFilter(
|
|
PSolvQuery pQuery,
|
|
char **ppszArchs);
|
|
|
|
// tdnfrepo.c
|
|
uint32_t
|
|
SolvReadYumRepo(
|
|
Repo *pRepo,
|
|
const char *pszRepoName,
|
|
const char *pszRepomd,
|
|
const char *pszPrimary,
|
|
const char *pszFilelists,
|
|
const char *pszUpdateinfo,
|
|
const char *pszOther
|
|
);
|
|
|
|
uint32_t
|
|
SolvCountPackages(
|
|
PSolvSack pSack,
|
|
uint32_t* pdwCount
|
|
);
|
|
|
|
uint32_t
|
|
SolvReadRpmsFromDirectory(
|
|
Repo *pRepo,
|
|
const char *pszDir
|
|
);
|
|
|
|
uint32_t
|
|
SolvReadInstalledRpms(
|
|
Repo* pRepo,
|
|
const char *pszCacheFileName
|
|
);
|
|
|
|
uint32_t
|
|
SolvLoadRepomd(
|
|
Repo* pRepo,
|
|
const char* pszRepomd
|
|
);
|
|
|
|
uint32_t
|
|
SolvLoadRepomdPrimary(
|
|
Repo* pRepo,
|
|
const char* pszPrimary
|
|
);
|
|
|
|
uint32_t
|
|
SolvLoadRepomdFilelists(
|
|
Repo* pRepo,
|
|
const char* pszFilelists
|
|
);
|
|
|
|
uint32_t
|
|
SolvLoadRepomdUpdateinfo(
|
|
Repo* pRepo,
|
|
const char* pszUpdateinfo
|
|
);
|
|
|
|
uint32_t
|
|
SolvReportProblems(
|
|
PSolvSack pSack,
|
|
Solver* pSolv,
|
|
TDNF_SKIPPROBLEM_TYPE dwSkipProblem
|
|
);
|
|
|
|
uint32_t
|
|
SolvAddExcludes(
|
|
Pool* pPool,
|
|
char** ppszExcludes
|
|
);
|
|
|
|
uint32_t
|
|
SolvDataIterator(
|
|
Pool* pPool,
|
|
char** ppszExcludes,
|
|
Map* pMap
|
|
);
|
|
|
|
int
|
|
SolvIsGlob(
|
|
const char* pszString
|
|
);
|
|
|
|
uint32_t
|
|
SolvCalculateCookieForFile(
|
|
const char* pszRepoMD,
|
|
unsigned char* pszCookie
|
|
);
|
|
|
|
uint32_t
|
|
SolvCreateRepoCacheName(
|
|
const char *pszName,
|
|
const char *pszUrl,
|
|
char **ppszCacheName
|
|
);
|
|
|
|
uint32_t
|
|
SolvGetMetaDataCachePath(
|
|
PSOLV_REPO_INFO_INTERNAL pSolvRepoInfo,
|
|
char** ppszCachePath
|
|
);
|
|
|
|
uint32_t
|
|
SolvAddSolvMetaData(
|
|
PSOLV_REPO_INFO_INTERNAL pSolvRepoInfo,
|
|
const char *pszTempSolvFile
|
|
);
|
|
|
|
uint32_t
|
|
SolvCreateMetaDataCache(
|
|
PSolvSack pSack,
|
|
PSOLV_REPO_INFO_INTERNAL pSolvRepoInfo
|
|
);
|
|
|
|
uint32_t
|
|
SolvUseMetaDataCache(
|
|
PSolvSack pSack,
|
|
PSOLV_REPO_INFO_INTERNAL pSolvRepoInfo,
|
|
int *nUseMetaDataCache
|
|
);
|
|
|
|
uint32_t
|
|
SolvFindSolvablesByNevraStr(
|
|
Pool *pool,
|
|
const char *nevra,
|
|
Queue* qresult,
|
|
int installed
|
|
);
|
|
|
|
uint32_t
|
|
SolvRequiresFromQueue(
|
|
Pool *pool,
|
|
Queue *pq_pkgs, /* solvable ids */
|
|
Queue *pq_deps /* string ids */
|
|
);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|