[buildout] extends = ../../component/nodejs/buildout.cfg ../../component/caddy/buildout.cfg ../../component/git/buildout.cfg ../../component/bash/buildout.cfg ../../component/fish-shell/buildout.cfg ../../component/tmux/buildout.cfg ../../component/tig/buildout.cfg ../../component/vim/buildout.cfg ../../component/curl/buildout.cfg ../../component/coreutils/buildout.cfg ../../component/java-jdk/buildout.cfg ../../component/fonts/buildout.cfg ../../stack/slapos.cfg ../../stack/monitor/buildout.cfg ../../component/defaults.cfg ./buildout.hash.cfg parts = theia-wrapper slapos-cookbook instance # default for slapos-standalone shared-part-list = # We keep the gcc part in sync with the one from erp5 software, so that when we install # erp5 inside theia's slapos parts can be shared. [gcc] max_version = 0 [nodejs] <= nodejs-12.18.3 [yarn] # this could become a component, but it needs to be invoked from nodejs explicitly, # otherwise it uses system's nodejs # XXX why don't we build a wrapper ? version = 1.17.3 recipe = slapos.recipe.build:download-unpacked url = https://github.com/yarnpkg/yarn/releases/download/v${:version}/yarn-v${:version}.tar.gz md5sum = 4a02e1687a150113ad6b0215f9afdb3e [slapos-standalone] recipe = zc.recipe.egg eggs = slapos.core scripts = ${:_buildout_section_name_} script-path = ${buildout:bin-directory}/${:scripts} # XXX generate a fake entry point for a non existant module, that will not # be used because we exit in initialization step entry-points = ${:scripts}=not_used:main initialization = import argparse import os.path import sys import glob import slapos.slap.standalone parser = argparse.ArgumentParser() parser.add_argument('base_directory') parser.add_argument('ipv4') parser.add_argument('ipv6') parser.add_argument('server_port', type=int) forwarded_arguments = parser.add_argument_group('forwarded') forwarded_arguments.add_argument('master_url') forwarded_arguments.add_argument('computer') forwarded_arguments.add_argument('partition') # cert and key are optional forwarded_arguments.add_argument('--cert') forwarded_arguments.add_argument('--key') args = parser.parse_args() shared_part_list = [x.strip() for x in '''${buildout:shared-part-list}'''.splitlines() if x.strip()] partition_forward_configuration = ( slapos.slap.standalone.PartitionForwardAsPartitionConfiguration( master_url=args.master_url, computer=args.computer, partition=args.partition, cert=args.cert, key=args.key, software_release_list=( 'http://git.erp5.org/gitweb/slapos.git/blob_plain/HEAD:/software/apache-frontend/software.cfg', ), ), ) standalone = slapos.slap.standalone.StandaloneSlapOS( args.base_directory, args.ipv4, args.server_port, shared_part_list=shared_part_list, partition_forward_configuration=partition_forward_configuration, ) standalone.start() partition_count = 20 if len(glob.glob(os.path.join(standalone.instance_directory, '*'))) < partition_count: print("Standalone SlapOS: Formatting {partition_count} partitions".format( partition_count=partition_count)) standalone.format( partition_count, args.ipv4, args.ipv6 ) print ("Standalone SlapOS for computer `{}` activated".format(standalone.computer._computer_id)) sys.exit(0) needs-these-eggs-scripts-in-path = ${supervisor:recipe} ${slapos-command:recipe} [supervisor] recipe = zc.recipe.egg eggs = supervisor setuptools [template-base] recipe = slapos.recipe.template url = ${:_profile_base_location_}/${:filename} output = ${buildout:parts-directory}/${:_buildout_section_name_} mode = 0644 [python-language-server] version = 0.19.0 recipe = plone.recipe.command command = PATH=${git:location}/bin/:$PATH bash -c "${python3:executable} -m venv --clear ${:location} && \ . ${:location}/bin/activate && \ pip install -r ${python-language-server-requirements.txt:output}" location = ${buildout:parts-directory}/${:_buildout_section_name_} stop-on-error = true [python-language-server-requirements.txt] <= template-base [theia] recipe = plone.recipe.command command = ${bash:location}/bin/bash -c " export TMPDIR=${:location}/tmp PATH=${nodejs:location}/bin:$PATH && mkdir -p ${:location} && \ mkdir -p \$TMPDIR && \ mkdir -p ${:THEIA_DEFAULT_PLUGINS} && \ cd ${:location} && \ cp ${package.json:rendered} . && cp ${yarn.lock:output} . && ${yarn:location}/bin/yarn && \ ${yarn:location}/bin/yarn theia build && \ ${yarn:location}/bin/yarn theia download:plugins" location = ${buildout:parts-directory}/${:_buildout_section_name_} stop-on-error = true uses = ${yarn.lock:recipe} THEIA_DEFAULT_PLUGINS = ${:location}/plugins/ [yarn.lock] <= template-base [preloadTemplate.html] <= template-base [slapos.css.in] <= template-base [logo.png] <= template-base [package.json] recipe = slapos.recipe.template:jinja2 # this comes from https://github.com/theia-ide/theia-apps/blob/a54aaa676e3db07d22ab75dde9f3447576135b4d/theia-full-docker/latest.package.json # but with a more recent version of vscode-java-redhat, where https://github.com/redhat-developer/vscode-java/issues/1301 was fixed template = inline:{ "private": true, "theia": { "frontend": { "config": { "applicationName": "Theia SlapOS", "preferences": { "application.confirmExit": "always", "files.enableTrash": false, "files.exclude": { "**.pyc": true, "**.egg-info": true, "__pycache__": true, ".git": true, ".env": true, "**/node_modules/**": true }, "files.watcherExclude": { "**/.eggs/**": true, "**/.env/**": true, "**/.git/**": true, "**/node_modules/**": true }, "editor.multiCursorModifier": "ctrlCmd", "editor.tabSize": 2, "plantuml.server": "https://plantuml.host.vifib.net/svg/", "plantuml.render": "PlantUMLServer", "gitlens.remotes": [{ "domain": "lab.nexedi.com", "type": "GitLab" }], "java.home": "${java-jdk:location}" } } }, "generator": { "config": { "preloadTemplate": "${preloadTemplate.html:output}" } } }, "dependencies": { "@theia/callhierarchy": "latest", "@theia/console": "latest", "@theia/core": "latest", "@theia/cpp-debug": "latest", "@theia/debug": "latest", "@theia/editor": "latest", "@theia/editor-preview": "latest", "@theia/file-search": "latest", "@theia/filesystem": "latest", "@theia/getting-started": "latest", "@theia/git": "latest", "@theia/keymaps": "latest", "@theia/markers": "latest", "@theia/messages": "latest", "@theia/metrics": "latest", "@theia/mini-browser": "latest", "@theia/monaco": "latest", "@theia/navigator": "latest", "@theia/outline-view": "latest", "@theia/output": "latest", "@theia/plugin": "latest", "@theia/plugin-ext": "latest", "@theia/plugin-ext-vscode": "latest", "@theia/preferences": "latest", "@theia/preview": "latest", "@theia/process": "latest", "@theia/scm": "latest", "@theia/search-in-workspace": "latest", "@theia/task": "latest", "@theia/terminal": "latest", "@theia/typehierarchy": "latest", "@theia/userstorage": "latest", "@theia/variable-resolver": "latest", "@theia/vsx-registry": "latest", "@theia/workspace": "latest", "@perrinjerome/theia-open": "0.1.2" }, "devDependencies": { "@theia/cli": "latest" }, "theiaPluginsDir": "plugins", "theiaPlugins": { "vscode-builtin-bat": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/bat-1.39.1-prel.vsix", "vscode-builtin-clojure": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/clojure-1.39.1-prel.vsix", "vscode-builtin-coffeescript": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/coffeescript-1.39.1-prel.vsix", "vscode-builtin-configuration-editing": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/configuration-editing-1.39.1-prel.vsix", "vscode-builtin-cpp": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/cpp-1.39.1-prel.vsix", "vscode-builtin-csharp": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/csharp-1.39.1-prel.vsix", "vscode-builtin-css": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/css-1.39.1-prel.vsix", "vscode-builtin-debug-auto-launch": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/debug-auto-launch-1.39.1-prel.vsix", "vscode-builtin-docker": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/docker-1.39.1-prel.vsix", "vscode-builtin-emmet": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/emmet-1.39.1-prel.vsix", "vscode-builtin-fsharp": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/fsharp-1.39.1-prel.vsix", "vscode-builtin-go": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/go-1.39.1-prel.vsix", "vscode-builtin-groovy": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/groovy-1.39.1-prel.vsix", "vscode-builtin-grunt": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/grunt-1.39.1-prel.vsix", "vscode-builtin-gulp": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/gulp-1.39.1-prel.vsix", "vscode-builtin-handlebars": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/handlebars-1.39.1-prel.vsix", "vscode-builtin-hlsl": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/hlsl-1.39.1-prel.vsix", "vscode-builtin-html": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/html-1.39.1-prel.vsix", "vscode-builtin-ini": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/ini-1.39.1-prel.vsix", "vscode-builtin-jake": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/jake-1.39.1-prel.vsix", "vscode-builtin-java": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/java-1.39.1-prel.vsix", "vscode-builtin-javascript": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/javascript-1.39.1-prel.vsix", "vscode-builtin-json": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/json-1.39.1-prel.vsix", "vscode-builtin-json-language-features": "https://open-vsx.org/api/vscode/json-language-features/1.46.1/file/vscode.json-language-features-1.46.1.vsix", "vscode-builtin-less": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/less-1.39.1-prel.vsix", "vscode-builtin-log": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/log-1.39.1-prel.vsix", "vscode-builtin-lua": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/lua-1.39.1-prel.vsix", "vscode-builtin-make": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/make-1.39.1-prel.vsix", "vscode-builtin-markdown": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/markdown-1.39.1-prel.vsix", "vscode-builtin-merge-conflicts": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/merge-conflict-1.39.1-prel.vsix", "vscode-builtin-npm": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/npm-1.39.1-prel.vsix", "vscode-builtin-node-debug": "https://github.com/theia-ide/vscode-node-debug/releases/download/v1.35.3/node-debug-1.35.3.vsix", "vscode-builtin-node-debug2": "https://github.com/theia-ide/vscode-node-debug2/releases/download/v1.33.0/node-debug2-1.33.0.vsix", "vscode-builtin-objective-c": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/objective-c-1.39.1-prel.vsix", "vscode-builtin-perl": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/perl-1.39.1-prel.vsix", "vscode-builtin-powershell": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/powershell-1.39.1-prel.vsix", "vscode-builtin-pug": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/pug-1.39.1-prel.vsix", "vscode-builtin-python": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/python-1.39.1-prel.vsix", "vscode-builtin-r": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/r-1.39.1-prel.vsix", "vscode-builtin-razor": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/razor-1.39.1-prel.vsix", "vscode-builtin-ruby": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/ruby-1.39.1-prel.vsix", "vscode-builtin-rust": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/rust-1.39.1-prel.vsix", "vscode-builtin-scss": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/scss-1.39.1-prel.vsix", "vscode-builtin-shaderlab": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/shaderlab-1.39.1-prel.vsix", "vscode-builtin-shellscript": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/shellscript-1.39.1-prel.vsix", "vscode-builtin-sql": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/sql-1.39.1-prel.vsix", "vscode-builtin-swift": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/swift-1.39.1-prel.vsix", "vscode-builtin-theme-abyss": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-abyss-1.39.1-prel.vsix", "vscode-builtin-theme-defaults": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-defaults-1.39.1-prel.vsix", "vscode-builtin-theme-kimbie-dark": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-kimbie-dark-1.39.1-prel.vsix", "vscode-builtin-theme-monokai": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-monokai-1.39.1-prel.vsix", "vscode-builtin-theme-dimmed": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-monokai-dimmed-1.39.1-prel.vsix", "vscode-builtin-theme-quietlight": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-quietlight-1.39.1-prel.vsix", "vscode-builtin-theme-red": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-red-1.39.1-prel.vsix", "vscode-builtin-theme-solarized-dark": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-solarized-dark-1.39.1-prel.vsix", "vscode-builtin-theme-tomorrow-night-blue": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-tomorrow-night-blue-1.39.1-prel.vsix", "vscode-builtin-typescript": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/typescript-1.39.1-prel.vsix", "vscode-builtin-typescript-language-features": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/typescript-language-features-1.39.1-prel.vsix", "vscode-builtin-vb": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/vb-1.39.1-prel.vsix", "vscode-builtin-icon-theme-seti": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/vscode-theme-seti-1.39.1-prel.vsix", "vscode-builtin-xml": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/xml-1.39.1-prel.vsix", "vscode-builtin-yaml": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/yaml-1.39.1-prel.vsix", "vscode-editorconfig": "https://github.com/theia-ide/editorconfig-vscode/releases/download/v0.14.4/EditorConfig-0.14.4.vsix", "vscode-eslint": "https://github.com/theia-ide/vscode-eslint/releases/download/release%2F2.0.15/vscode-eslint-2.0.15.vsix", "vscode-go": "https://github.com/microsoft/vscode-go/releases/download/0.12.0/Go-0.12.0.vsix", "vscode-java-debug": "https://github.com/microsoft/vscode-java-debug/releases/download/0.24.0/vscjava.vscode-java-debug-0.24.0.vsix", "vscode-java-dependency-viewer": "https://github.com/microsoft/vscode-java-dependency/releases/download/0.6.0/vscode-java-dependency-0.6.0.vsix", "vscode-java-redhat": "https://github.com/redhat-developer/vscode-java/releases/download/v0.61.0/redhat.java-0.61.0.vsix", "vscode-java-test": "https://github.com/microsoft/vscode-java-test/releases/download/0.22.0/vscjava.vscode-java-test-0.22.0.vsix", "vscode-python": "https://github.com/microsoft/vscode-python/releases/download/2020.1.58038/ms-python-release.vsix", "vscode-ruby": "https://github.com/rubyide/vscode-ruby/releases/download/v0.25.0/ruby-0.25.0.vsix", "vscode-zc-buildout": "https://github.com/perrinjerome/vscode-zc-buildout/releases/download/v0.4.0/vscode-zc-buildout-0.4.0.vsix", "plantuml": "https://open-vsx.org/api/jebbs/plantuml/2.13.12/file/jebbs.plantuml-2.13.12.vsix", "diff": "https://open-vsx.org/api/rafaelmaiolla/diff/0.0.1/file/rafaelmaiolla.diff-0.0.1.vsix", "git-commit-syntax": "https://github.com/perrinjerome/git-commit-syntax/releases/download/v0.0.1/git-commit-syntax-0.0.1.vsix", "git-rebase-syntax": "https://github.com/perrinjerome/git-rebase-syntax/releases/download/v0.0.1/git-rebase-syntax-0.0.1.vsix" } } rendered = ${buildout:directory}/${:_buildout_section_name_} mode = 0644 [gowork] golang = ${golang1.14:location} [gowork.goinstall] command = bash -c ". ${gowork:env.sh} && GO111MODULE=on go get golang.org/x/tools/gopls@v0.4.3 && cd ${go_github.com_caddyserver_caddy:location} && GO111MODULE=on go install -v github.com/caddyserver/caddy/..." [cli-utilities] PATH = ${nodejs:location}/bin/:${bash:location}/bin/:${fish-shell:location}/bin/:${tig:location}/bin/:${vim:location}/bin/:${tmux:location}/bin/:${git:location}/bin/:${curl:location}/bin:${python2.7:location}/bin/ [theia-wrapper] recipe = slapos.recipe.template:jinja2 rendered = ${buildout:bin-directory}/${:_buildout_section_name_} mode = 0777 template = inline: #!/bin/bash . ${gowork:env.sh} export PATH=${python-language-server:location}/bin/:${java-jdk:location}/bin/:${cli-utilities:PATH}:$HOME/.cargo/bin:$PATH export THEIA_DEFAULT_PLUGINS="local-dir:${theia:THEIA_DEFAULT_PLUGINS}" # reset PS1 from gowork export PS1='$ ' cd ${theia:location} exec ${yarn:location}/bin/yarn theia start $@ [instance] <= template-base output = ${buildout:directory}/instance.cfg [versions] slapos.recipe.template = 4.4