Allow using `makecontainerpkg` in prepare action
This commit is contained in:
parent
434e1a8f0c
commit
1a4b9282d2
|
@ -178,6 +178,12 @@ BuildActionMetaInfo::BuildActionMetaInfo()
|
||||||
.desc = "Whether PKGBUILDs from official Arch Linux Git repositories should be downloaded (if not present, the AUR will still be checked; local PKGBUILDs still have precedence)",
|
.desc = "Whether PKGBUILDs from official Arch Linux Git repositories should be downloaded (if not present, the AUR will still be checked; local PKGBUILDs still have precedence)",
|
||||||
.param = "fetch-official-pkgbuilds",
|
.param = "fetch-official-pkgbuilds",
|
||||||
},
|
},
|
||||||
|
BuildActionFlagMetaInfo{
|
||||||
|
.id = static_cast<BuildActionFlagType>(ConductBuildFlags::UseContainer),
|
||||||
|
.name = "Use container",
|
||||||
|
.desc = "Uses `makecontainerpkg` instead of using `makepkg` when printing source info; eliminates the need to having pacman on the host by using docker/podman instead",
|
||||||
|
.param = "use-container",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
.settings = {
|
.settings = {
|
||||||
BuildActionSettingMetaInfo{
|
BuildActionSettingMetaInfo{
|
||||||
|
|
|
@ -79,6 +79,7 @@ enum class PrepareBuildFlags : BuildActionFlagType {
|
||||||
ResetChrootSettings = (1 << 4),
|
ResetChrootSettings = (1 << 4),
|
||||||
PullingInFurtherDependenciesUnexpected = (1 << 5),
|
PullingInFurtherDependenciesUnexpected = (1 << 5),
|
||||||
FetchOfficialPackageSources = (1 << 6),
|
FetchOfficialPackageSources = (1 << 6),
|
||||||
|
UseContainer = (1 << 7),
|
||||||
};
|
};
|
||||||
enum class ConductBuildFlags : BuildActionFlagType {
|
enum class ConductBuildFlags : BuildActionFlagType {
|
||||||
None,
|
None,
|
||||||
|
|
|
@ -496,6 +496,7 @@ private:
|
||||||
std::mutex m_mutex;
|
std::mutex m_mutex;
|
||||||
std::string m_workingDirectory;
|
std::string m_workingDirectory;
|
||||||
boost::filesystem::path m_makePkgPath;
|
boost::filesystem::path m_makePkgPath;
|
||||||
|
boost::filesystem::path m_makeContainerPkgPath;
|
||||||
std::vector<std::string> m_pkgbuildsDirs;
|
std::vector<std::string> m_pkgbuildsDirs;
|
||||||
std::regex m_ignoreLocalPkgbuildsRegex;
|
std::regex m_ignoreLocalPkgbuildsRegex;
|
||||||
std::unordered_map<std::string, PackageBuildData> m_buildDataByPackage;
|
std::unordered_map<std::string, PackageBuildData> m_buildDataByPackage;
|
||||||
|
@ -516,6 +517,7 @@ private:
|
||||||
bool m_pullingInFurtherDependenciesUnexpected = false;
|
bool m_pullingInFurtherDependenciesUnexpected = false;
|
||||||
bool m_pulledInFurtherDependencies = false;
|
bool m_pulledInFurtherDependencies = false;
|
||||||
bool m_fetchOfficialSources = false;
|
bool m_fetchOfficialSources = false;
|
||||||
|
bool m_useContainer;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct LIBREPOMGR_EXPORT BatchProcessingSession : public MultiSession<std::string> {
|
struct LIBREPOMGR_EXPORT BatchProcessingSession : public MultiSession<std::string> {
|
||||||
|
|
|
@ -77,6 +77,7 @@ void PrepareBuild::run()
|
||||||
m_resetChrootSettings = flags & PrepareBuildFlags::ResetChrootSettings;
|
m_resetChrootSettings = flags & PrepareBuildFlags::ResetChrootSettings;
|
||||||
m_pullingInFurtherDependenciesUnexpected = flags & PrepareBuildFlags::PullingInFurtherDependenciesUnexpected;
|
m_pullingInFurtherDependenciesUnexpected = flags & PrepareBuildFlags::PullingInFurtherDependenciesUnexpected;
|
||||||
m_fetchOfficialSources = flags & PrepareBuildFlags::FetchOfficialPackageSources;
|
m_fetchOfficialSources = flags & PrepareBuildFlags::FetchOfficialPackageSources;
|
||||||
|
m_useContainer = flags & PrepareBuildFlags::UseContainer;
|
||||||
if (m_forceBumpPackageVersion && m_keepPkgRelAndEpoch) {
|
if (m_forceBumpPackageVersion && m_keepPkgRelAndEpoch) {
|
||||||
reportError("Can not force-bump pkgrel and keeping it at the same time.");
|
reportError("Can not force-bump pkgrel and keeping it at the same time.");
|
||||||
return;
|
return;
|
||||||
|
@ -92,7 +93,11 @@ void PrepareBuild::run()
|
||||||
|
|
||||||
// read values from global config
|
// read values from global config
|
||||||
auto setupReadLock = m_setup.lockToRead();
|
auto setupReadLock = m_setup.lockToRead();
|
||||||
m_makePkgPath = findExecutable(m_setup.building.makePkgPath);
|
if (m_useContainer) {
|
||||||
|
m_makeContainerPkgPath = findExecutable(m_setup.building.makeContainerPkgPath);
|
||||||
|
} else {
|
||||||
|
m_makePkgPath = findExecutable(m_setup.building.makePkgPath);
|
||||||
|
}
|
||||||
copySecondVectorIntoFirstVector(m_pkgbuildsDirs, m_setup.building.pkgbuildsDirs);
|
copySecondVectorIntoFirstVector(m_pkgbuildsDirs, m_setup.building.pkgbuildsDirs);
|
||||||
m_ignoreLocalPkgbuildsRegex = m_setup.building.ignoreLocalPkgbuildsRegex;
|
m_ignoreLocalPkgbuildsRegex = m_setup.building.ignoreLocalPkgbuildsRegex;
|
||||||
m_workingDirectory = determineWorkingDirectory(buildDataWorkingDirectory);
|
m_workingDirectory = determineWorkingDirectory(buildDataWorkingDirectory);
|
||||||
|
@ -316,7 +321,8 @@ void PrepareBuild::makeSrcInfo(
|
||||||
m_setup.building.ioContext, [multiSession, &sourceDirectory, &packageName](boost::process::child &&child, ProcessResult &&result) {
|
m_setup.building.ioContext, [multiSession, &sourceDirectory, &packageName](boost::process::child &&child, ProcessResult &&result) {
|
||||||
processSrcInfo(*multiSession, sourceDirectory, packageName, std::move(child), std::move(result));
|
processSrcInfo(*multiSession, sourceDirectory, packageName, std::move(child), std::move(result));
|
||||||
});
|
});
|
||||||
processSession->launch(boost::process::start_dir(sourceDirectory), m_makePkgPath.string(), "--printsrcinfo");
|
processSession->launch(
|
||||||
|
boost::process::start_dir(sourceDirectory), (m_useContainer ? m_makeContainerPkgPath : m_makePkgPath).string(), "--printsrcinfo");
|
||||||
}
|
}
|
||||||
|
|
||||||
void PrepareBuild::processSrcInfo(WebClient::AurSnapshotQuerySession &multiSession, const std::string &sourceDirectory,
|
void PrepareBuild::processSrcInfo(WebClient::AurSnapshotQuerySession &multiSession, const std::string &sourceDirectory,
|
||||||
|
|
Loading…
Reference in New Issue