Keep local pkg paths deduced from pacman config
It makes the setup easier and shouldn't hurt otherwise.
This commit is contained in:
parent
b0234ff02e
commit
11f1849fde
|
@ -51,11 +51,11 @@ Database *Config::createDatabase(std::string &&name)
|
||||||
* \brief Returns the database with the specified \a name and \a architecture or creates a new one if it doesn't exist.
|
* \brief Returns the database with the specified \a name and \a architecture or creates a new one if it doesn't exist.
|
||||||
* \remarks Resets the database's configuration. You'll end up with a blank database in any case.
|
* \remarks Resets the database's configuration. You'll end up with a blank database in any case.
|
||||||
*/
|
*/
|
||||||
Database *Config::findOrCreateDatabase(std::string &&name, std::string_view architecture)
|
Database *Config::findOrCreateDatabase(std::string &&name, std::string_view architecture, bool keepLocalPaths)
|
||||||
{
|
{
|
||||||
auto *db = findDatabase(name, architecture);
|
auto *db = findDatabase(name, architecture);
|
||||||
if (db) {
|
if (db) {
|
||||||
db->resetConfiguration();
|
db->resetConfiguration(keepLocalPaths);
|
||||||
} else {
|
} else {
|
||||||
db = createDatabase(std::move(name));
|
db = createDatabase(std::move(name));
|
||||||
}
|
}
|
||||||
|
@ -69,11 +69,11 @@ Database *Config::findOrCreateDatabase(std::string &&name, std::string_view arch
|
||||||
* \brief Returns the database with the specified \a name and \a architecture or creates a new one if it doesn't exist.
|
* \brief Returns the database with the specified \a name and \a architecture or creates a new one if it doesn't exist.
|
||||||
* \remarks Resets the database's configuration. You'll end up with a blank database in any case.
|
* \remarks Resets the database's configuration. You'll end up with a blank database in any case.
|
||||||
*/
|
*/
|
||||||
Database *Config::findOrCreateDatabase(std::string_view name, std::string_view architecture)
|
Database *Config::findOrCreateDatabase(std::string_view name, std::string_view architecture, bool keepLocalPaths)
|
||||||
{
|
{
|
||||||
auto *db = findDatabase(name, architecture);
|
auto *db = findDatabase(name, architecture);
|
||||||
if (db) {
|
if (db) {
|
||||||
db->resetConfiguration();
|
db->resetConfiguration(keepLocalPaths);
|
||||||
} else {
|
} else {
|
||||||
db = createDatabase(std::string(name));
|
db = createDatabase(std::string(name));
|
||||||
}
|
}
|
||||||
|
@ -88,10 +88,10 @@ Database *Config::findOrCreateDatabase(std::string_view name, std::string_view a
|
||||||
* \remarks Resets the database's configuration. You'll end up with a blank database in any case.
|
* \remarks Resets the database's configuration. You'll end up with a blank database in any case.
|
||||||
* \sa parseDatabaseDenotation() for the format of \a databaseDenotation
|
* \sa parseDatabaseDenotation() for the format of \a databaseDenotation
|
||||||
*/
|
*/
|
||||||
Database *Config::findOrCreateDatabaseFromDenotation(std::string_view databaseDenotation)
|
Database *Config::findOrCreateDatabaseFromDenotation(std::string_view databaseDenotation, bool keepLocalPaths)
|
||||||
{
|
{
|
||||||
const auto dbInfo = parseDatabaseDenotation(databaseDenotation);
|
const auto dbInfo = parseDatabaseDenotation(databaseDenotation);
|
||||||
return findOrCreateDatabase(dbInfo.first, dbInfo.second);
|
return findOrCreateDatabase(dbInfo.first, dbInfo.second, keepLocalPaths);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|
|
@ -136,9 +136,9 @@ struct LIBPKG_EXPORT Config : public Lockable, public ReflectiveRapidJSON::Binar
|
||||||
static std::pair<std::string_view, std::string_view> parseDatabaseDenotation(std::string_view databaseDenotation);
|
static std::pair<std::string_view, std::string_view> parseDatabaseDenotation(std::string_view databaseDenotation);
|
||||||
Database *findDatabase(std::string_view name, std::string_view architecture);
|
Database *findDatabase(std::string_view name, std::string_view architecture);
|
||||||
Database *findDatabaseFromDenotation(std::string_view databaseDenotation);
|
Database *findDatabaseFromDenotation(std::string_view databaseDenotation);
|
||||||
Database *findOrCreateDatabase(std::string &&name, std::string_view architecture);
|
Database *findOrCreateDatabase(std::string &&name, std::string_view architecture, bool keepLocalPaths = false);
|
||||||
Database *findOrCreateDatabase(std::string_view name, std::string_view architecture);
|
Database *findOrCreateDatabase(std::string_view name, std::string_view architecture, bool keepLocalPaths = false);
|
||||||
Database *findOrCreateDatabaseFromDenotation(std::string_view databaseDenotation);
|
Database *findOrCreateDatabaseFromDenotation(std::string_view databaseDenotation, bool keepLocalPaths = false);
|
||||||
static std::tuple<std::string_view, std::string_view, std::string_view> parsePackageDenotation(std::string_view packageDenotation);
|
static std::tuple<std::string_view, std::string_view, std::string_view> parsePackageDenotation(std::string_view packageDenotation);
|
||||||
std::vector<PackageSearchResult> findPackages(std::string_view packageDenotation, std::size_t limit = std::numeric_limits<std::size_t>::max());
|
std::vector<PackageSearchResult> findPackages(std::string_view packageDenotation, std::size_t limit = std::numeric_limits<std::size_t>::max());
|
||||||
std::vector<PackageSearchResult> findPackages(
|
std::vector<PackageSearchResult> findPackages(
|
||||||
|
|
|
@ -81,7 +81,7 @@ void LibPkg::Database::deducePathsFromLocalDirs()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Database::resetConfiguration()
|
void Database::resetConfiguration(bool keepLocalPaths)
|
||||||
{
|
{
|
||||||
path.clear();
|
path.clear();
|
||||||
filesPath.clear();
|
filesPath.clear();
|
||||||
|
@ -90,8 +90,10 @@ void Database::resetConfiguration()
|
||||||
signatureLevel = SignatureLevel::Default;
|
signatureLevel = SignatureLevel::Default;
|
||||||
arch = "x86_64";
|
arch = "x86_64";
|
||||||
dependencies.clear();
|
dependencies.clear();
|
||||||
localPkgDir.clear();
|
if (!keepLocalPaths) {
|
||||||
localDbDir.clear();
|
localPkgDir.clear();
|
||||||
|
localDbDir.clear();
|
||||||
|
}
|
||||||
syncFromMirror = false;
|
syncFromMirror = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -144,7 +144,7 @@ struct LIBPKG_EXPORT Database : public ReflectiveRapidJSON::JsonSerializable<Dat
|
||||||
|
|
||||||
void initStorage(StorageDistribution &storage);
|
void initStorage(StorageDistribution &storage);
|
||||||
void deducePathsFromLocalDirs();
|
void deducePathsFromLocalDirs();
|
||||||
void resetConfiguration();
|
void resetConfiguration(bool keepLocalPaths = false);
|
||||||
void clearPackages();
|
void clearPackages();
|
||||||
void loadPackagesFromConfiguredPaths(bool withFiles = false, bool force = false);
|
void loadPackagesFromConfiguredPaths(bool withFiles = false, bool force = false);
|
||||||
void loadPackages(const std::string &databaseData, CppUtilities::DateTime lastModified);
|
void loadPackages(const std::string &databaseData, CppUtilities::DateTime lastModified);
|
||||||
|
|
|
@ -521,6 +521,9 @@ void ServiceSetup::loadConfigFiles(bool doFirstTimeSetup)
|
||||||
config.setPackageCacheLimit(packageCacheLimit);
|
config.setPackageCacheLimit(packageCacheLimit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// avoid stale values
|
||||||
|
config.packageCacheDirs.clear();
|
||||||
|
|
||||||
// read pacman config
|
// read pacman config
|
||||||
try {
|
try {
|
||||||
config.loadPacmanConfig(pacmanConfigFilePath.data());
|
config.loadPacmanConfig(pacmanConfigFilePath.data());
|
||||||
|
@ -545,7 +548,7 @@ void ServiceSetup::loadConfigFiles(bool doFirstTimeSetup)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// find existing database or create a new one; clear mirrors and other data from existing DBs
|
// find existing database or create a new one; clear mirrors and other data from existing DBs
|
||||||
auto *const db = config.findOrCreateDatabaseFromDenotation(std::string_view(iniSection.data() + 9, iniSection.size() - 9));
|
auto *const db = config.findOrCreateDatabaseFromDenotation(std::string_view(iniSection.data() + 9, iniSection.size() - 9), true);
|
||||||
db->toBeDiscarded = false;
|
db->toBeDiscarded = false;
|
||||||
dbDefinitions.clear();
|
dbDefinitions.clear();
|
||||||
dbDefinitions["$repo"] = db->name;
|
dbDefinitions["$repo"] = db->name;
|
||||||
|
@ -595,6 +598,10 @@ void ServiceSetup::loadConfigFiles(bool doFirstTimeSetup)
|
||||||
|
|
||||||
// log the most important config values
|
// log the most important config values
|
||||||
cerr << Phrases::InfoMessage << "Working directory: " << workingDirectory << Phrases::End;
|
cerr << Phrases::InfoMessage << "Working directory: " << workingDirectory << Phrases::End;
|
||||||
|
cerr << Phrases::InfoMessage << "Package cache dirs:" << Phrases::End;
|
||||||
|
for (const auto &dir : config.packageCacheDirs) {
|
||||||
|
cerr << Phrases::SubMessage << dir << Phrases::End;
|
||||||
|
}
|
||||||
cerr << Phrases::InfoMessage << "Build configuration:" << Phrases::End;
|
cerr << Phrases::InfoMessage << "Build configuration:" << Phrases::End;
|
||||||
cerr << Phrases::SubMessage << "Package cache directory: " << building.packageCacheDir << Phrases::End;
|
cerr << Phrases::SubMessage << "Package cache directory: " << building.packageCacheDir << Phrases::End;
|
||||||
cerr << Phrases::SubMessage << "Package download limit: " << dataSizeToString(building.packageDownloadSizeLimit) << Phrases::End;
|
cerr << Phrases::SubMessage << "Package download limit: " << dataSizeToString(building.packageDownloadSizeLimit) << Phrases::End;
|
||||||
|
|
Loading…
Reference in New Issue