Repository files navigation

EdgeDB Release Packaging Toolkit

Everything specifically related to making EdgeDB packages for all supported platforms is located in this repo. The build workflows for packages are located in the main EdgeDB repo.

SRE bits for packages.edgedb.com is also here.

Nightly Builds

The nightly package builds are performed at 00:00 UTC every day, or on demand by triggering a "Build Test and Publish Nightly Packages" workflow dispatch from the GitHub UI. You can choose which branch to fire up a build from.

Release

Triggering a "release" workflow dispatch works just like nightly builds but you're looking for the "Build Test and Publish a Release" workflow. Choose a branch like "releases/1.0a6".

Building Locally

It is possible to execute package build and test stages locally for linux targets using Docker:

Build Stage

Build the packages for a given target:

make TARGET=<target> build

See the Makefile for the list of supported targets. The Makefile also takes the following optional arguments:

  • SRC_REF: EdgeDB git ref to build, defaults to master;
  • PKG_REVISION: numeric revision of the output package;
  • PKG_SUBDIST: name of repository the package is intended for, currently the only supported value is nightly;
  • OUTPUTDIR: the name of the directory where the build artifacts will be stored;
  • METAPKGDEV: when set to true, uses metapkg from the current virtualenv instead of pulling it from Github, this is useful for debugging or making changes to metapkg;
  • EXTRA_OPTIMIZATIONS: build with extra optimizations enabled, this significantly increases the build time, but results in slightly faster binaries;
  • GET_SHELL: when set to true, start the shell instead of running the build.

Test Stage

Test the packages built with make build:

make TARGET=<target>test

The values of the TARGET and OUTPUTDIR variables must be the same as used for make build.

There is also a test variant that checks systemd integration:

make TARGET=<target> test-systemd

Note that this requires the ability to run Docker containers with CAP_ADMIN.

Adding Targets and Modifying Build

Adding a target for an existing distribution family usually boils down to running mkdir integration/linux/{build,test,testpublished,upload}/<distro>, adding <distro> to SUPPORTED_TARGETS in the toplevel Makefile, and running make TARGET=<distro> build to generate the containers and test the build.

Adding support for new distributions requires implementing a new target in metapkg.

How does uploading work?

The upload stage for GitHub Actions is in linux/upload, macos/publish.sh, and win/publish.sh. The server-side code is in server/.

About

EdgeDB Release Packaging Toolkit

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

EdgeDB Release Packaging Toolkit

Everything specifically related to making EdgeDB packages for all supported platforms is located in this repo. The build workflows for packages are located in the main EdgeDB repo.

SRE bits for packages.edgedb.com is also here.

Nightly Builds

The nightly package builds are performed at 00:00 UTC every day, or on demand by triggering a "Build Test and Publish Nightly Packages" workflow dispatch from the GitHub UI. You can choose which branch to fire up a build from.

Release

Triggering a "release" workflow dispatch works just like nightly builds but you're looking for the "Build Test and Publish a Release" workflow. Choose a branch like "releases/1.0a6".

Building Locally

It is possible to execute package build and test stages locally for linux targets using Docker:

Build Stage

Build the packages for a given target:

make TARGET=<target> build

See the Makefile for the list of supported targets. The Makefile also takes the following optional arguments:

  • SRC_REF: EdgeDB git ref to build, defaults to master;
  • PKG_REVISION: numeric revision of the output package;
  • PKG_SUBDIST: name of repository the package is intended for, currently the only supported value is nightly;
  • OUTPUTDIR: the name of the directory where the build artifacts will be stored;
  • METAPKGDEV: when set to true, uses metapkg from the current virtualenv instead of pulling it from Github, this is useful for debugging or making changes to metapkg;
  • EXTRA_OPTIMIZATIONS: build with extra optimizations enabled, this significantly increases the build time, but results in slightly faster binaries;
  • GET_SHELL: when set to true, start the shell instead of running the build.

Test Stage

Test the packages built with make build:

make TARGET=<target>test

The values of the TARGET and OUTPUTDIR variables must be the same as used for make build.

There is also a test variant that checks systemd integration:

make TARGET=<target> test-systemd

Note that this requires the ability to run Docker containers with CAP_ADMIN.

Adding Targets and Modifying Build

Adding a target for an existing distribution family usually boils down to running mkdir integration/linux/{build,test,testpublished,upload}/<distro>, adding <distro> to SUPPORTED_TARGETS in the toplevel Makefile, and running make TARGET=<distro> build to generate the containers and test the build.

Adding support for new distributions requires implementing a new target in metapkg.

How does uploading work?

The upload stage for GitHub Actions is in linux/upload, macos/publish.sh, and win/publish.sh. The server-side code is in server/.

About

EdgeDB Release Packaging Toolkit

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

EdgeDB Release Packaging Toolkit

Everything specifically related to making EdgeDB packages for all supported platforms is located in this repo. The build workflows for packages are located in the main EdgeDB repo.

SRE bits for packages.edgedb.com is also here.

Nightly Builds

The nightly package builds are performed at 00:00 UTC every day, or on demand by triggering a "Build Test and Publish Nightly Packages" workflow dispatch from the GitHub UI. You can choose which branch to fire up a build from.

Release

Triggering a "release" workflow dispatch works just like nightly builds but you're looking for the "Build Test and Publish a Release" workflow. Choose a branch like "releases/1.0a6".

Building Locally

It is possible to execute package build and test stages locally for linux targets using Docker:

Build Stage

Build the packages for a given target:

make TARGET=<target> build

See the Makefile for the list of supported targets. The Makefile also takes the following optional arguments:

  • SRC_REF: EdgeDB git ref to build, defaults to master;
  • PKG_REVISION: numeric revision of the output package;
  • PKG_SUBDIST: name of repository the package is intended for, currently the only supported value is nightly;
  • OUTPUTDIR: the name of the directory where the build artifacts will be stored;
  • METAPKGDEV: when set to true, uses metapkg from the current virtualenv instead of pulling it from Github, this is useful for debugging or making changes to metapkg;
  • EXTRA_OPTIMIZATIONS: build with extra optimizations enabled, this significantly increases the build time, but results in slightly faster binaries;
  • GET_SHELL: when set to true, start the shell instead of running the build.

Test Stage

Test the packages built with make build:

make TARGET=<target>test

The values of the TARGET and OUTPUTDIR variables must be the same as used for make build.

There is also a test variant that checks systemd integration:

make TARGET=<target> test-systemd

Note that this requires the ability to run Docker containers with CAP_ADMIN.

Adding Targets and Modifying Build

Adding a target for an existing distribution family usually boils down to running mkdir integration/linux/{build,test,testpublished,upload}/<distro>, adding <distro> to SUPPORTED_TARGETS in the toplevel Makefile, and running make TARGET=<distro> build to generate the containers and test the build.

Adding support for new distributions requires implementing a new target in metapkg.

How does uploading work?

The upload stage for GitHub Actions is in linux/upload, macos/publish.sh, and win/publish.sh. The server-side code is in server/.

About

EdgeDB Release Packaging Toolkit

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

EdgeDB Release Packaging Toolkit

Everything specifically related to making EdgeDB packages for all supported platforms is located in this repo. The build workflows for packages are located in the main EdgeDB repo.

SRE bits for packages.edgedb.com is also here.

Nightly Builds

The nightly package builds are performed at 00:00 UTC every day, or on demand by triggering a "Build Test and Publish Nightly Packages" workflow dispatch from the GitHub UI. You can choose which branch to fire up a build from.

Release

Triggering a "release" workflow dispatch works just like nightly builds but you're looking for the "Build Test and Publish a Release" workflow. Choose a branch like "releases/1.0a6".

Building Locally

It is possible to execute package build and test stages locally for linux targets using Docker:

Build Stage

Build the packages for a given target:

make TARGET=<target> build

See the Makefile for the list of supported targets. The Makefile also takes the following optional arguments:

  • SRC_REF: EdgeDB git ref to build, defaults to master;
  • PKG_REVISION: numeric revision of the output package;
  • PKG_SUBDIST: name of repository the package is intended for, currently the only supported value is nightly;
  • OUTPUTDIR: the name of the directory where the build artifacts will be stored;
  • METAPKGDEV: when set to true, uses metapkg from the current virtualenv instead of pulling it from Github, this is useful for debugging or making changes to metapkg;
  • EXTRA_OPTIMIZATIONS: build with extra optimizations enabled, this significantly increases the build time, but results in slightly faster binaries;
  • GET_SHELL: when set to true, start the shell instead of running the build.

Test Stage

Test the packages built with make build:

make TARGET=<target>test

The values of the TARGET and OUTPUTDIR variables must be the same as used for make build.

There is also a test variant that checks systemd integration:

make TARGET=<target> test-systemd

Note that this requires the ability to run Docker containers with CAP_ADMIN.

Adding Targets and Modifying Build

Adding a target for an existing distribution family usually boils down to running mkdir integration/linux/{build,test,testpublished,upload}/<distro>, adding <distro> to SUPPORTED_TARGETS in the toplevel Makefile, and running make TARGET=<distro> build to generate the containers and test the build.

Adding support for new distributions requires implementing a new target in metapkg.

How does uploading work?

The upload stage for GitHub Actions is in linux/upload, macos/publish.sh, and win/publish.sh. The server-side code is in server/.

About

EdgeDB Release Packaging Toolkit

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

EdgeDB Release Packaging Toolkit

Everything specifically related to making EdgeDB packages for all supported platforms is located in this repo. The build workflows for packages are located in the main EdgeDB repo.

SRE bits for packages.edgedb.com is also here.

Nightly Builds

The nightly package builds are performed at 00:00 UTC every day, or on demand by triggering a "Build Test and Publish Nightly Packages" workflow dispatch from the GitHub UI. You can choose which branch to fire up a build from.

Release

Triggering a "release" workflow dispatch works just like nightly builds but you're looking for the "Build Test and Publish a Release" workflow. Choose a branch like "releases/1.0a6".

Building Locally

It is possible to execute package build and test stages locally for linux targets using Docker:

Build Stage

Build the packages for a given target:

make TARGET=<target> build

See the Makefile for the list of supported targets. The Makefile also takes the following optional arguments:

  • SRC_REF: EdgeDB git ref to build, defaults to master;
  • PKG_REVISION: numeric revision of the output package;
  • PKG_SUBDIST: name of repository the package is intended for, currently the only supported value is nightly;
  • OUTPUTDIR: the name of the directory where the build artifacts will be stored;
  • METAPKGDEV: when set to true, uses metapkg from the current virtualenv instead of pulling it from Github, this is useful for debugging or making changes to metapkg;
  • EXTRA_OPTIMIZATIONS: build with extra optimizations enabled, this significantly increases the build time, but results in slightly faster binaries;
  • GET_SHELL: when set to true, start the shell instead of running the build.

Test Stage

Test the packages built with make build:

make TARGET=<target>test

The values of the TARGET and OUTPUTDIR variables must be the same as used for make build.

There is also a test variant that checks systemd integration:

make TARGET=<target> test-systemd

Note that this requires the ability to run Docker containers with CAP_ADMIN.

Adding Targets and Modifying Build

Adding a target for an existing distribution family usually boils down to running mkdir integration/linux/{build,test,testpublished,upload}/<distro>, adding <distro> to SUPPORTED_TARGETS in the toplevel Makefile, and running make TARGET=<distro> build to generate the containers and test the build.

Adding support for new distributions requires implementing a new target in metapkg.

How does uploading work?

The upload stage for GitHub Actions is in linux/upload, macos/publish.sh, and win/publish.sh. The server-side code is in server/.

About

EdgeDB Release Packaging Toolkit

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

EdgeDB Release Packaging Toolkit

Everything specifically related to making EdgeDB packages for all supported platforms is located in this repo. The build workflows for packages are located in the main EdgeDB repo.

SRE bits for packages.edgedb.com is also here.

Nightly Builds

The nightly package builds are performed at 00:00 UTC every day, or on demand by triggering a "Build Test and Publish Nightly Packages" workflow dispatch from the GitHub UI. You can choose which branch to fire up a build from.

Release

Triggering a "release" workflow dispatch works just like nightly builds but you're looking for the "Build Test and Publish a Release" workflow. Choose a branch like "releases/1.0a6".

Building Locally

It is possible to execute package build and test stages locally for linux targets using Docker:

Build Stage

Build the packages for a given target:

make TARGET=<target> build

See the Makefile for the list of supported targets. The Makefile also takes the following optional arguments:

  • SRC_REF: EdgeDB git ref to build, defaults to master;
  • PKG_REVISION: numeric revision of the output package;
  • PKG_SUBDIST: name of repository the package is intended for, currently the only supported value is nightly;
  • OUTPUTDIR: the name of the directory where the build artifacts will be stored;
  • METAPKGDEV: when set to true, uses metapkg from the current virtualenv instead of pulling it from Github, this is useful for debugging or making changes to metapkg;
  • EXTRA_OPTIMIZATIONS: build with extra optimizations enabled, this significantly increases the build time, but results in slightly faster binaries;
  • GET_SHELL: when set to true, start the shell instead of running the build.

Test Stage

Test the packages built with make build:

make TARGET=<target>test

The values of the TARGET and OUTPUTDIR variables must be the same as used for make build.

There is also a test variant that checks systemd integration:

make TARGET=<target> test-systemd

Note that this requires the ability to run Docker containers with CAP_ADMIN.

Adding Targets and Modifying Build

Adding a target for an existing distribution family usually boils down to running mkdir integration/linux/{build,test,testpublished,upload}/<distro>, adding <distro> to SUPPORTED_TARGETS in the toplevel Makefile, and running make TARGET=<distro> build to generate the containers and test the build.

Adding support for new distributions requires implementing a new target in metapkg.

How does uploading work?

The upload stage for GitHub Actions is in linux/upload, macos/publish.sh, and win/publish.sh. The server-side code is in server/.

About

EdgeDB Release Packaging Toolkit

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

EdgeDB Release Packaging Toolkit

Everything specifically related to making EdgeDB packages for all supported platforms is located in this repo. The build workflows for packages are located in the main EdgeDB repo.

SRE bits for packages.edgedb.com is also here.

Nightly Builds

The nightly package builds are performed at 00:00 UTC every day, or on demand by triggering a "Build Test and Publish Nightly Packages" workflow dispatch from the GitHub UI. You can choose which branch to fire up a build from.

Release

Triggering a "release" workflow dispatch works just like nightly builds but you're looking for the "Build Test and Publish a Release" workflow. Choose a branch like "releases/1.0a6".

Building Locally

It is possible to execute package build and test stages locally for linux targets using Docker:

Build Stage

Build the packages for a given target:

make TARGET=<target> build

See the Makefile for the list of supported targets. The Makefile also takes the following optional arguments:

  • SRC_REF: EdgeDB git ref to build, defaults to master;
  • PKG_REVISION: numeric revision of the output package;
  • PKG_SUBDIST: name of repository the package is intended for, currently the only supported value is nightly;
  • OUTPUTDIR: the name of the directory where the build artifacts will be stored;
  • METAPKGDEV: when set to true, uses metapkg from the current virtualenv instead of pulling it from Github, this is useful for debugging or making changes to metapkg;
  • EXTRA_OPTIMIZATIONS: build with extra optimizations enabled, this significantly increases the build time, but results in slightly faster binaries;
  • GET_SHELL: when set to true, start the shell instead of running the build.

Test Stage

Test the packages built with make build:

make TARGET=<target>test

The values of the TARGET and OUTPUTDIR variables must be the same as used for make build.

There is also a test variant that checks systemd integration:

make TARGET=<target> test-systemd

Note that this requires the ability to run Docker containers with CAP_ADMIN.

Adding Targets and Modifying Build

Adding a target for an existing distribution family usually boils down to running mkdir integration/linux/{build,test,testpublished,upload}/<distro>, adding <distro> to SUPPORTED_TARGETS in the toplevel Makefile, and running make TARGET=<distro> build to generate the containers and test the build.

Adding support for new distributions requires implementing a new target in metapkg.

How does uploading work?

The upload stage for GitHub Actions is in linux/upload, macos/publish.sh, and win/publish.sh. The server-side code is in server/.

About

EdgeDB Release Packaging Toolkit

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

EdgeDB Release Packaging Toolkit

Everything specifically related to making EdgeDB packages for all supported platforms is located in this repo. The build workflows for packages are located in the main EdgeDB repo.

SRE bits for packages.edgedb.com is also here.

Nightly Builds

The nightly package builds are performed at 00:00 UTC every day, or on demand by triggering a "Build Test and Publish Nightly Packages" workflow dispatch from the GitHub UI. You can choose which branch to fire up a build from.

Release

Triggering a "release" workflow dispatch works just like nightly builds but you're looking for the "Build Test and Publish a Release" workflow. Choose a branch like "releases/1.0a6".

Building Locally

It is possible to execute package build and test stages locally for linux targets using Docker:

Build Stage

Build the packages for a given target:

make TARGET=<target> build

See the Makefile for the list of supported targets. The Makefile also takes the following optional arguments:

  • SRC_REF: EdgeDB git ref to build, defaults to master;
  • PKG_REVISION: numeric revision of the output package;
  • PKG_SUBDIST: name of repository the package is intended for, currently the only supported value is nightly;
  • OUTPUTDIR: the name of the directory where the build artifacts will be stored;
  • METAPKGDEV: when set to true, uses metapkg from the current virtualenv instead of pulling it from Github, this is useful for debugging or making changes to metapkg;
  • EXTRA_OPTIMIZATIONS: build with extra optimizations enabled, this significantly increases the build time, but results in slightly faster binaries;
  • GET_SHELL: when set to true, start the shell instead of running the build.

Test Stage

Test the packages built with make build:

make TARGET=<target>test

The values of the TARGET and OUTPUTDIR variables must be the same as used for make build.

There is also a test variant that checks systemd integration:

make TARGET=<target> test-systemd

Note that this requires the ability to run Docker containers with CAP_ADMIN.

Adding Targets and Modifying Build

Adding a target for an existing distribution family usually boils down to running mkdir integration/linux/{build,test,testpublished,upload}/<distro>, adding <distro> to SUPPORTED_TARGETS in the toplevel Makefile, and running make TARGET=<distro> build to generate the containers and test the build.

Adding support for new distributions requires implementing a new target in metapkg.

How does uploading work?

The upload stage for GitHub Actions is in linux/upload, macos/publish.sh, and win/publish.sh. The server-side code is in server/.

About

EdgeDB Release Packaging Toolkit

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages