Compare commits

...

8 Commits

9 changed files with 34 additions and 10 deletions

View File

@ -43,6 +43,16 @@ Further ideas (not implemented yet):
* bundle an application with its dependencies similar to `linuxdeployqt`
and `windeployqt`
## Important caveats
* So far releases are not regularly tagged. It is probably best to build the latest version
from Git as needed.
* So far also no security review of the code has been done and at the same time the code
base contains lots of rather low-level code (instead of relying on frameworks), many
self-written parsers and exposes a web service. So use it at your own risk (like most
other open source projects, but here I'd like to highlight it specifically).
* 32-bit architectures are not supported (as the database needs a huge address space). Of
course you can build packages *for* 32-bit architectures.
## Setup server
An example config files can be found in this repository, see the `srv/doc`
directory. The example config is also installed so one can easily get started.

View File

@ -1142,7 +1142,7 @@ void ConductBuild::invokeMakechrootpkgStep3(std::shared_ptr<BuildProcessSession>
locks.emplace_back(std::move(chrootLock));
auto lock = lockToRead();
auto &packageProgress = m_buildProgress.progressByPackage[packageName];
processSession->launch(boost::process::start_dir(packageProgress.buildDirectory), m_makeChrootPkgPath, sudoArgs, makechrootpkgFlags, "-C",
processSession->launch(boost::process::start_dir(packageProgress.buildDirectory), m_makeChrootPkgPath, sudoArgs, makechrootpkgFlags, "-Y",
m_globalPackageCacheDir, "-r", chrootDir, "-l", packageProgress.chrootUser, packageProgress.makechrootpkgFlags, "--", makepkgFlags,
packageProgress.makepkgFlags, boost::process::std_in < boost::asio::buffer(m_sudoPassword));
lock.unlock();

View File

@ -585,7 +585,7 @@ void BuildActionsTests::testConductingBuild()
CPPUNIT_ASSERT_EQUAL_MESSAGE(
"no staging needed: updpkgsums log", "fake updatepkgsums: \n"s, readFile("building/build-data/conduct-build-test/boost/pkg/updpkgsums.log"));
TESTUTILS_ASSERT_LIKE("no staging needed: build log",
"fake makechrootpkg: -c -u -C .*building/test-cache-dir/x86_64 -r .*chroot-dir/arch-x86_64 -l buildservice --\n"s,
"fake makechrootpkg: -c -u -Y .*building/test-cache-dir/x86_64 -r .*chroot-dir/arch-x86_64 -l buildservice --\n"s,
readFile("building/build-data/conduct-build-test/boost/pkg/build.log"));
TESTUTILS_ASSERT_LIKE("no staging needed: repo-add log",
"fake repo-add: boost.db.tar.zst boost(-libs)?-1\\.73\\.0-1-x86_64.pkg.tar.zst boost(-libs)?-1\\.73\\.0-1-x86_64.pkg.tar.zst\n"s,

View File

@ -30,7 +30,7 @@
#package-search-db {
height: 100px !important;
}
#package-search-form table input[type="text"], #package-search-form table select {
#package-search-form table input[type="text"], input[type="search"], #package-search-form table select {
width: 100%;
}
#package-search-form table td, #package-search-form table th {

View File

@ -65,7 +65,7 @@
<table class="form-row">
<tr>
<th>Package name:</th>
<td><input type="text" name="name" placeholder="Package name" /></td>
<td><input type="search" name="name" placeholder="Package name" /></td>
<th rowspan="3">Database:</th>
<th rowspan="3">
<select id="package-search-db-arch-filter" class="arch-filter">
@ -216,6 +216,7 @@
</div>
<div class="form-row">
<label for="build-action-package-names">Package names:</label>
<input type="button" value="Clear" style="float: right;" onclick="this.form.elements['package-names'].value = ''" />
<br />
<textarea name="package-names" id="build-action-package-names" style="box-sizing: border-box; width: 100%; height: 50px;"></textarea>
</div>
@ -244,6 +245,8 @@
onchange="this.form['start-after-id'].disabled = !this.checked" />
<label for="build-action-start-after">After</label>
<input type="text" name="start-after-id" value="" placeholder="build action ID" disabled="disabled" />
<input type="button" name="start-after-latest" value="After latest"
title="Start after the first action displayed on the current page of the build actions table" />
</fieldset>
</div>
</div>

View File

@ -39,7 +39,7 @@ export function queryRoute(method, path, callback, type)
default:
try {
// avoid showing HTML code from gateway
ajaxRequest.responseTextDisplay = ajaxRequest.status >= 500 || ajaxRequest.status < 600 ? 'internal server error' : ajaxRequest.responseText;
ajaxRequest.responseTextDisplay = ajaxRequest.status >= 500 && ajaxRequest.status < 600 ? 'internal server error' : ajaxRequest.responseText;
return callback(this, status === 200);
} catch (e) {
window.alert('Unable to process server response: ' + e);
@ -90,7 +90,7 @@ function makeFormQueryParameter(form)
continue; // if we disable a form element or hide it via CSS we also don't want to submit its data
}
const type = formElement.type;
if ((type === 'checkbox' || type === 'radio') && !formElement.checked) {
if ((type === 'button') || ((type === 'checkbox' || type === 'radio') && !formElement.checked)) {
continue;
}
const name = formElement.name;

View File

@ -34,6 +34,17 @@ export function initBuildActionsForm()
handleBuildActionPresetChange();
};
// allow selecting to start after the latest build action
const buildActionsFormElements = buildActionsForm.elements;
buildActionsFormElements['start-after-latest'].onclick = function() {
const condElement = buildActionsFormElements['start-condition'];
const idElement = buildActionsFormElements['start-after-id'];
const id = document.getElementById('build-actions-list')?.getElementsByTagName('table')[0]?.tBodies[0]?.getElementsByTagName('tr')[0]?.dataset.id;
condElement.value = 'after';
idElement.disabled = false;
idElement.value = id || '';
};
queryBuildActions();
handleBuildActionTypeChange();
buildActionsForm.dataset.initialized = true;

File diff suppressed because one or more lines are too long

View File

@ -18,9 +18,9 @@
}
},
"node_modules/@xterm/xterm": {
"version": "5.4.0",
"resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-5.4.0.tgz",
"integrity": "sha512-GlyzcZZ7LJjhFevthHtikhiDIl8lnTSgol6eTM4aoSNLcuXu3OEhnbqdCVIjtIil3jjabf3gDtb1S8FGahsuEw=="
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-5.5.0.tgz",
"integrity": "sha512-hqJHYaQb5OptNunnyAnkHyM8aCjZ1MEIDTQu1iIbbTD/xops91NB5yq1ZK/dC2JDbVWtF23zUtl9JE2NqwT87A=="
}
}
}