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`
|
* bundle an application with its dependencies similar to `linuxdeployqt`
|
||||||
and `windeployqt`
|
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
|
## Setup server
|
||||||
An example config files can be found in this repository, see the `srv/doc`
|
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.
|
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));
|
locks.emplace_back(std::move(chrootLock));
|
||||||
auto lock = lockToRead();
|
auto lock = lockToRead();
|
||||||
auto &packageProgress = m_buildProgress.progressByPackage[packageName];
|
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,
|
m_globalPackageCacheDir, "-r", chrootDir, "-l", packageProgress.chrootUser, packageProgress.makechrootpkgFlags, "--", makepkgFlags,
|
||||||
packageProgress.makepkgFlags, boost::process::std_in < boost::asio::buffer(m_sudoPassword));
|
packageProgress.makepkgFlags, boost::process::std_in < boost::asio::buffer(m_sudoPassword));
|
||||||
lock.unlock();
|
lock.unlock();
|
||||||
|
|
|
@ -585,7 +585,7 @@ void BuildActionsTests::testConductingBuild()
|
||||||
CPPUNIT_ASSERT_EQUAL_MESSAGE(
|
CPPUNIT_ASSERT_EQUAL_MESSAGE(
|
||||||
"no staging needed: updpkgsums log", "fake updatepkgsums: \n"s, readFile("building/build-data/conduct-build-test/boost/pkg/updpkgsums.log"));
|
"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",
|
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"));
|
readFile("building/build-data/conduct-build-test/boost/pkg/build.log"));
|
||||||
TESTUTILS_ASSERT_LIKE("no staging needed: repo-add 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,
|
"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 {
|
#package-search-db {
|
||||||
height: 100px !important;
|
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%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
#package-search-form table td, #package-search-form table th {
|
#package-search-form table td, #package-search-form table th {
|
||||||
|
|
|
@ -65,7 +65,7 @@
|
||||||
<table class="form-row">
|
<table class="form-row">
|
||||||
<tr>
|
<tr>
|
||||||
<th>Package name:</th>
|
<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">Database:</th>
|
||||||
<th rowspan="3">
|
<th rowspan="3">
|
||||||
<select id="package-search-db-arch-filter" class="arch-filter">
|
<select id="package-search-db-arch-filter" class="arch-filter">
|
||||||
|
@ -216,6 +216,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="form-row">
|
<div class="form-row">
|
||||||
<label for="build-action-package-names">Package names:</label>
|
<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 />
|
<br />
|
||||||
<textarea name="package-names" id="build-action-package-names" style="box-sizing: border-box; width: 100%; height: 50px;"></textarea>
|
<textarea name="package-names" id="build-action-package-names" style="box-sizing: border-box; width: 100%; height: 50px;"></textarea>
|
||||||
</div>
|
</div>
|
||||||
|
@ -244,6 +245,8 @@
|
||||||
onchange="this.form['start-after-id'].disabled = !this.checked" />
|
onchange="this.form['start-after-id'].disabled = !this.checked" />
|
||||||
<label for="build-action-start-after">After</label>
|
<label for="build-action-start-after">After</label>
|
||||||
<input type="text" name="start-after-id" value="" placeholder="build action ID" disabled="disabled" />
|
<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>
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -39,7 +39,7 @@ export function queryRoute(method, path, callback, type)
|
||||||
default:
|
default:
|
||||||
try {
|
try {
|
||||||
// avoid showing HTML code from gateway
|
// 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);
|
return callback(this, status === 200);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
window.alert('Unable to process server response: ' + 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
|
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;
|
const type = formElement.type;
|
||||||
if ((type === 'checkbox' || type === 'radio') && !formElement.checked) {
|
if ((type === 'button') || ((type === 'checkbox' || type === 'radio') && !formElement.checked)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const name = formElement.name;
|
const name = formElement.name;
|
||||||
|
|
|
@ -34,6 +34,17 @@ export function initBuildActionsForm()
|
||||||
handleBuildActionPresetChange();
|
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();
|
queryBuildActions();
|
||||||
handleBuildActionTypeChange();
|
handleBuildActionTypeChange();
|
||||||
buildActionsForm.dataset.initialized = true;
|
buildActionsForm.dataset.initialized = true;
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -18,9 +18,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@xterm/xterm": {
|
"node_modules/@xterm/xterm": {
|
||||||
"version": "5.4.0",
|
"version": "5.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-5.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-5.5.0.tgz",
|
||||||
"integrity": "sha512-GlyzcZZ7LJjhFevthHtikhiDIl8lnTSgol6eTM4aoSNLcuXu3OEhnbqdCVIjtIil3jjabf3gDtb1S8FGahsuEw=="
|
"integrity": "sha512-hqJHYaQb5OptNunnyAnkHyM8aCjZ1MEIDTQu1iIbbTD/xops91NB5yq1ZK/dC2JDbVWtF23zUtl9JE2NqwT87A=="
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue