Compare commits
8 Commits
Author | SHA1 | Date |
---|---|---|
Martchus | f677cad8ab | |
Martchus | d471b00a70 | |
Martchus | ee52eeffd4 | |
Martchus | efc9e72410 | |
Martchus | 62f25c7172 | |
Martchus | f7272c0836 | |
Martchus | 2f4f4ffa5c | |
Martchus | 85ccd68f07 |
10
README.md
10
README.md
|
@ -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.
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
@ -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=="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue