diff --git a/docker/lang/install.bash b/docker/lang/install.bash index d8e7c04..b42610b 100755 --- a/docker/lang/install.bash +++ b/docker/lang/install.bash @@ -16,6 +16,7 @@ export DEBIAN_FRONTEND=noninteractive riju-curl "build/lang/${LANG}/install.bash" > "install-lang-${LANG}.bash" riju-curl "build/lang/${LANG}/riju-lang-${LANG}.deb" > "riju-lang-${LANG}.deb" +chmod +x "install-lang-${LANG}.bash" ( dpkg-deb -f "riju-lang-${LANG}.deb" -f Depends | @@ -24,25 +25,27 @@ riju-curl "build/lang/${LANG}/riju-lang-${LANG}.deb" > "riju-lang-${LANG}.deb" ) | while read name; do riju-curl "build/shared/${name}/install.bash" > "install-shared-${name}.bash" riju-curl "build/shared/${name}/riju-shared-${name}.deb" > "riju-shared-${name}.deb" + chmod +x "install-shared-${name}.bash" done -if dpkg-deb -f "riju-lang-${LANG}.deb" -f Depends | grep .; then - apt-get update -fi - if compgen -G "./install-shared-*.bash"; then for file in ./install-shared-*.bash; do "${file}" done fi +"./install-lang-${LANG}.bash" + +if dpkg-deb -f "riju-lang-${LANG}.deb" -f Depends | grep .; then + apt-get update +fi + if compgen -G "./riju-shared-*.deb"; then for file in ./riju-shared-*.deb; do apt-get install -y "${file}" done fi -"./install-lang-${LANG}.bash" apt-get install -y "./riju-lang-${LANG}.deb" popd diff --git a/docker/runtime/install.bash b/docker/runtime/install.bash index 87da6ad..73283df 100755 --- a/docker/runtime/install.bash +++ b/docker/runtime/install.bash @@ -12,6 +12,7 @@ pushd /tmp/riju-work export DEBIAN_FRONTEND=noninteractive apt-get update +apt-get dist-upgrade -y (yes || true) | unminimize apt-get install -y curl gnupg lsb-release wget @@ -65,10 +66,9 @@ vim apt-get update apt-get install -y $(sed 's/#.*//' <<< "${packages}") -ver="$(latest_release watchexec/watchexec)" -wget "https://github.com/watchexec/watchexec/releases/download/${ver}/watchexec-${ver}-x86_64-unknown-linux-gnu.deb" +ver="$(latest_release watchexec/watchexec | sed 's/^cli-v//')" +wget "https://github.com/watchexec/watchexec/releases/download/cli-v${ver}/watchexec-${ver}-x86_64-unknown-linux-gnu.deb" apt-get install -y ./watchexec-*.deb -rm watchexec-*.deb rm -rf /var/lib/apt/lists/* diff --git a/tools/generate-build-script.js b/tools/generate-build-script.js index a549e9d..5779e67 100644 --- a/tools/generate-build-script.js +++ b/tools/generate-build-script.js @@ -364,8 +364,9 @@ function makeSharedScript(langConfig) { // Given a language ID, return the text of a Bash script that will do // any necessary setup before the language package is installed (along // with its shared dependencies, if any). -function makeInstallScript(lang) { +function makeInstallScript(langConfig) { let parts = []; + const { install } = langConfig; if (install) { const { apt, cert, aptKey, aptRepo } = install; if (apt && apt.filter((pkg) => pkg.includes(":i386")).length > 0) { diff --git a/tools/write-all-build-scripts.js b/tools/write-all-build-scripts.js index 06868b5..f03b394 100644 --- a/tools/write-all-build-scripts.js +++ b/tools/write-all-build-scripts.js @@ -13,13 +13,21 @@ import { generateBuildScript } from "./generate-build-script.js"; // Parse command-line arguments, run main functionality, and exit. async function main() { for (const { lang, type } of await getPackages()) { - const scriptPath = `build/${type}/${lang}/build.bash`; - await fs.mkdir(nodePath.dirname(scriptPath), { recursive: true }); + const buildScriptPath = `build/${type}/${lang}/build.bash`; + const installScriptPath = `build/${type}/${lang}/install.bash`; + await fs.mkdir(nodePath.dirname(buildScriptPath), { recursive: true }); await fs.writeFile( - scriptPath, + buildScriptPath, (await generateBuildScript({ lang, type })) + "\n" ); - await fs.chmod(scriptPath, 0o755); + await fs.chmod(buildScriptPath, 0o755); + if (type === "lang") { + await fs.writeFile( + installScriptPath, + (await generateBuildScript({ lang, type: "install" })) + "\n" + ); + await fs.chmod(installScriptPath, 0o755); + } } process.exit(0); }