pg-maker 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pg_maker-0.1.0/.gitattributes +9 -0
- pg_maker-0.1.0/.github/workflows/publish.yml +34 -0
- pg_maker-0.1.0/.github/workflows/tests.yml +117 -0
- pg_maker-0.1.0/.gitignore +33 -0
- pg_maker-0.1.0/CHANGELOG.md +22 -0
- pg_maker-0.1.0/CONTRIBUTING.md +63 -0
- pg_maker-0.1.0/LICENSE +21 -0
- pg_maker-0.1.0/MANIFEST.in +10 -0
- pg_maker-0.1.0/PKG-INFO +200 -0
- pg_maker-0.1.0/README.md +163 -0
- pg_maker-0.1.0/docs/architecture.md +55 -0
- pg_maker-0.1.0/docs/development-storage.md +72 -0
- pg_maker-0.1.0/docs/development.md +86 -0
- pg_maker-0.1.0/docs/interfaces/README.md +32 -0
- pg_maker-0.1.0/docs/interfaces/api.md +75 -0
- pg_maker-0.1.0/docs/interfaces/build.md +112 -0
- pg_maker-0.1.0/docs/interfaces/changes.md +58 -0
- pg_maker-0.1.0/docs/interfaces/cleanup.md +17 -0
- pg_maker-0.1.0/docs/interfaces/components.md +39 -0
- pg_maker-0.1.0/docs/interfaces/configuration.md +83 -0
- pg_maker-0.1.0/docs/interfaces/development.md +88 -0
- pg_maker-0.1.0/docs/interfaces/documentation.md +241 -0
- pg_maker-0.1.0/docs/interfaces/documents.md +42 -0
- pg_maker-0.1.0/docs/interfaces/environments.md +40 -0
- pg_maker-0.1.0/docs/interfaces/execution.md +49 -0
- pg_maker-0.1.0/docs/interfaces/machine.md +31 -0
- pg_maker-0.1.0/docs/interfaces/observability.md +28 -0
- pg_maker-0.1.0/docs/interfaces/packaging.md +107 -0
- pg_maker-0.1.0/docs/interfaces/planning.md +63 -0
- pg_maker-0.1.0/docs/interfaces/postgresql.md +79 -0
- pg_maker-0.1.0/docs/interfaces/publication.md +20 -0
- pg_maker-0.1.0/docs/interfaces/recovery.md +83 -0
- pg_maker-0.1.0/docs/interfaces/runtime.md +31 -0
- pg_maker-0.1.0/docs/interfaces/sources.md +48 -0
- pg_maker-0.1.0/docs/interfaces/state.md +49 -0
- pg_maker-0.1.0/docs/interfaces/storage.md +24 -0
- pg_maker-0.1.0/docs/releasing.md +98 -0
- pg_maker-0.1.0/docs/reuse.md +24 -0
- pg_maker-0.1.0/docs/roadmap.md +54 -0
- pg_maker-0.1.0/docs/validation/default-components.md +56 -0
- pg_maker-0.1.0/docs/validation/development-release.md +49 -0
- pg_maker-0.1.0/docs/validation/documentation-theme.md +45 -0
- pg_maker-0.1.0/docs/validation/integration.md +49 -0
- pg_maker-0.1.0/docs/validation/postgresql-majors.md +107 -0
- pg_maker-0.1.0/docs/validation/review-fixes.md +68 -0
- pg_maker-0.1.0/docs/validation/stage4.md +65 -0
- pg_maker-0.1.0/docs/validation/stage56.md +66 -0
- pg_maker-0.1.0/docs/validation/stage7.md +72 -0
- pg_maker-0.1.0/pyproject.toml +90 -0
- pg_maker-0.1.0/setup.cfg +4 -0
- pg_maker-0.1.0/src/pg_maker/__init__.py +3 -0
- pg_maker-0.1.0/src/pg_maker/__main__.py +3 -0
- pg_maker-0.1.0/src/pg_maker/api.py +594 -0
- pg_maker-0.1.0/src/pg_maker/artifacts/__init__.py +4 -0
- pg_maker-0.1.0/src/pg_maker/artifacts/catalog.py +67 -0
- pg_maker-0.1.0/src/pg_maker/artifacts/manifest.py +301 -0
- pg_maker-0.1.0/src/pg_maker/assets.py +93 -0
- pg_maker-0.1.0/src/pg_maker/builders/__init__.py +4 -0
- pg_maker-0.1.0/src/pg_maker/builders/autotools.py +430 -0
- pg_maker-0.1.0/src/pg_maker/builders/components.py +359 -0
- pg_maker-0.1.0/src/pg_maker/bundled/PROJECT.md +57 -0
- pg_maker-0.1.0/src/pg_maker/bundled/build.yaml +29 -0
- pg_maker-0.1.0/src/pg_maker/bundled/components/pg-stat-kcache.yaml +30 -0
- pg_maker-0.1.0/src/pg_maker/bundled/components/pg-stat-statements.yaml +24 -0
- pg_maker-0.1.0/src/pg_maker/bundled/components/pg-wait-sampling.yaml +30 -0
- pg_maker-0.1.0/src/pg_maker/bundled/config/defaults.yaml +80 -0
- pg_maker-0.1.0/src/pg_maker/bundled/config/documentation.yaml +24 -0
- pg_maker-0.1.0/src/pg_maker/bundled/config/features/my-feature.yaml +17 -0
- pg_maker-0.1.0/src/pg_maker/bundled/config/vendor.yaml +13 -0
- pg_maker-0.1.0/src/pg_maker/bundled/documentation/README.md +20 -0
- pg_maker-0.1.0/src/pg_maker/bundled/documentation/pg-stat-kcache.sgml +99 -0
- pg_maker-0.1.0/src/pg_maker/bundled/documentation/pg-stat-kcache.yaml +15 -0
- pg_maker-0.1.0/src/pg_maker/bundled/documentation/pg-wait-sampling.sgml +122 -0
- pg_maker-0.1.0/src/pg_maker/bundled/documentation/pg-wait-sampling.yaml +15 -0
- pg_maker-0.1.0/src/pg_maker/bundled/patches/unix-socket-directory.patch +5 -0
- pg_maker-0.1.0/src/pg_maker/changes/__init__.py +1 -0
- pg_maker-0.1.0/src/pg_maker/changes/apply.py +298 -0
- pg_maker-0.1.0/src/pg_maker/changes/loader.py +135 -0
- pg_maker-0.1.0/src/pg_maker/changes/workspace.py +221 -0
- pg_maker-0.1.0/src/pg_maker/cli.py +546 -0
- pg_maker-0.1.0/src/pg_maker/components/__init__.py +4 -0
- pg_maker-0.1.0/src/pg_maker/config.py +514 -0
- pg_maker-0.1.0/src/pg_maker/development/__init__.py +1 -0
- pg_maker-0.1.0/src/pg_maker/development/cli.py +104 -0
- pg_maker-0.1.0/src/pg_maker/development/git.py +362 -0
- pg_maker-0.1.0/src/pg_maker/development/session.py +735 -0
- pg_maker-0.1.0/src/pg_maker/documentation/__init__.py +4 -0
- pg_maker-0.1.0/src/pg_maker/documentation/builder.py +467 -0
- pg_maker-0.1.0/src/pg_maker/documentation/cli.py +24 -0
- pg_maker-0.1.0/src/pg_maker/documentation/config.py +127 -0
- pg_maker-0.1.0/src/pg_maker/documentation/install.py +79 -0
- pg_maker-0.1.0/src/pg_maker/documentation/site.py +166 -0
- pg_maker-0.1.0/src/pg_maker/documentation/sphinx_ext.py +150 -0
- pg_maker-0.1.0/src/pg_maker/documentation/theme/_static/pg-maker.css +26 -0
- pg_maker-0.1.0/src/pg_maker/documentation/theme/_static/pg-maker.js +35 -0
- pg_maker-0.1.0/src/pg_maker/documentation/theme/_templates/footer_en.html +5 -0
- pg_maker-0.1.0/src/pg_maker/documentation/theme/_templates/footer_metadata.html +13 -0
- pg_maker-0.1.0/src/pg_maker/documentation/theme/_templates/footer_ru.html +5 -0
- pg_maker-0.1.0/src/pg_maker/documentation/translation.py +341 -0
- pg_maker-0.1.0/src/pg_maker/documentation/validation.py +132 -0
- pg_maker-0.1.0/src/pg_maker/documentation/worker.py +62 -0
- pg_maker-0.1.0/src/pg_maker/documentation/writer.py +324 -0
- pg_maker-0.1.0/src/pg_maker/documentation/xml.py +210 -0
- pg_maker-0.1.0/src/pg_maker/documents.py +118 -0
- pg_maker-0.1.0/src/pg_maker/errors.py +50 -0
- pg_maker-0.1.0/src/pg_maker/execution/__init__.py +1 -0
- pg_maker-0.1.0/src/pg_maker/execution/build.py +502 -0
- pg_maker-0.1.0/src/pg_maker/execution/cache.py +287 -0
- pg_maker-0.1.0/src/pg_maker/execution/cancellation.py +60 -0
- pg_maker-0.1.0/src/pg_maker/execution/checkpoints.py +218 -0
- pg_maker-0.1.0/src/pg_maker/execution/cleanup.py +122 -0
- pg_maker-0.1.0/src/pg_maker/execution/component_cache.py +164 -0
- pg_maker-0.1.0/src/pg_maker/execution/development.py +109 -0
- pg_maker-0.1.0/src/pg_maker/execution/engine.py +171 -0
- pg_maker-0.1.0/src/pg_maker/execution/events.py +65 -0
- pg_maker-0.1.0/src/pg_maker/execution/incremental.py +178 -0
- pg_maker-0.1.0/src/pg_maker/execution/preparation.py +130 -0
- pg_maker-0.1.0/src/pg_maker/execution/process.py +155 -0
- pg_maker-0.1.0/src/pg_maker/execution/resources.py +41 -0
- pg_maker-0.1.0/src/pg_maker/execution/state.py +82 -0
- pg_maker-0.1.0/src/pg_maker/execution/worker.py +45 -0
- pg_maker-0.1.0/src/pg_maker/identity.py +116 -0
- pg_maker-0.1.0/src/pg_maker/integrations/__init__.py +1 -0
- pg_maker-0.1.0/src/pg_maker/integrations/machine.py +163 -0
- pg_maker-0.1.0/src/pg_maker/integrations/runtime.py +387 -0
- pg_maker-0.1.0/src/pg_maker/models.py +245 -0
- pg_maker-0.1.0/src/pg_maker/packaging/__init__.py +4 -0
- pg_maker-0.1.0/src/pg_maker/packaging/deb.py +337 -0
- pg_maker-0.1.0/src/pg_maker/packaging/service.py +165 -0
- pg_maker-0.1.0/src/pg_maker/packaging/spec.py +64 -0
- pg_maker-0.1.0/src/pg_maker/packaging/templates/deb-control.in +8 -0
- pg_maker-0.1.0/src/pg_maker/packaging/tree.py +239 -0
- pg_maker-0.1.0/src/pg_maker/planning/__init__.py +1 -0
- pg_maker-0.1.0/src/pg_maker/planning/documents.py +65 -0
- pg_maker-0.1.0/src/pg_maker/planning/environments.py +318 -0
- pg_maker-0.1.0/src/pg_maker/planning/graph.py +23 -0
- pg_maker-0.1.0/src/pg_maker/planning/plan.py +418 -0
- pg_maker-0.1.0/src/pg_maker/planning/resolve.py +117 -0
- pg_maker-0.1.0/src/pg_maker/planning/reuse.py +80 -0
- pg_maker-0.1.0/src/pg_maker/planning/runtime_repository.py +90 -0
- pg_maker-0.1.0/src/pg_maker/postgresql.py +59 -0
- pg_maker-0.1.0/src/pg_maker/progress.py +64 -0
- pg_maker-0.1.0/src/pg_maker/publishing/__init__.py +4 -0
- pg_maker-0.1.0/src/pg_maker/py.typed +0 -0
- pg_maker-0.1.0/src/pg_maker/recipes/README.md +13 -0
- pg_maker-0.1.0/src/pg_maker/recipes/platforms/debian-13.yaml +125 -0
- pg_maker-0.1.0/src/pg_maker/recipes/postgresql.yaml +114 -0
- pg_maker-0.1.0/src/pg_maker/runners/__init__.py +1 -0
- pg_maker-0.1.0/src/pg_maker/runners/base.py +29 -0
- pg_maker-0.1.0/src/pg_maker/runners/docker.py +312 -0
- pg_maker-0.1.0/src/pg_maker/schemas/build.schema.json +5 -0
- pg_maker-0.1.0/src/pg_maker/schemas/change-set.schema.json +5 -0
- pg_maker-0.1.0/src/pg_maker/schemas/component-envelope.schema.json +69 -0
- pg_maker-0.1.0/src/pg_maker/schemas/component.schema.json +5 -0
- pg_maker-0.1.0/src/pg_maker/schemas/defaults.schema.json +5 -0
- pg_maker-0.1.0/src/pg_maker/schemas/doc-rules.schema.json +5 -0
- pg_maker-0.1.0/src/pg_maker/schemas/documentation.schema.json +5 -0
- pg_maker-0.1.0/src/pg_maker/schemas/environment.schema.json +228 -0
- pg_maker-0.1.0/src/pg_maker/schemas/feature.schema.json +5 -0
- pg_maker-0.1.0/src/pg_maker/schemas/insertions.schema.json +5 -0
- pg_maker-0.1.0/src/pg_maker/schemas/lock.schema.json +3963 -0
- pg_maker-0.1.0/src/pg_maker/schemas/operation-input.schema.json +306 -0
- pg_maker-0.1.0/src/pg_maker/schemas/operation-state.schema.json +127 -0
- pg_maker-0.1.0/src/pg_maker/schemas/plan.schema.json +284 -0
- pg_maker-0.1.0/src/pg_maker/schemas/planning-common.schema.json +8192 -0
- pg_maker-0.1.0/src/pg_maker/schemas/platform.schema.json +5 -0
- pg_maker-0.1.0/src/pg_maker/schemas/postgresql-catalog.schema.json +5 -0
- pg_maker-0.1.0/src/pg_maker/schemas/run-event.schema.json +72 -0
- pg_maker-0.1.0/src/pg_maker/schemas/translations.schema.json +5 -0
- pg_maker-0.1.0/src/pg_maker/schemas/vendor.schema.json +5 -0
- pg_maker-0.1.0/src/pg_maker/security.py +73 -0
- pg_maker-0.1.0/src/pg_maker/sources/__init__.py +1 -0
- pg_maker-0.1.0/src/pg_maker/sources/resolver.py +238 -0
- pg_maker-0.1.0/src/pg_maker/sources/store.py +279 -0
- pg_maker-0.1.0/src/pg_maker/storage.py +127 -0
- pg_maker-0.1.0/src/pg_maker/validation/__init__.py +4 -0
- pg_maker-0.1.0/src/pg_maker/validation/installed.py +667 -0
- pg_maker-0.1.0/src/pg_maker/validation/packages.py +309 -0
- pg_maker-0.1.0/src/pg_maker/validation/systemctl.py +185 -0
- pg_maker-0.1.0/src/pg_maker/yamlio.py +54 -0
- pg_maker-0.1.0/src/pg_maker.egg-info/PKG-INFO +200 -0
- pg_maker-0.1.0/src/pg_maker.egg-info/SOURCES.txt +260 -0
- pg_maker-0.1.0/src/pg_maker.egg-info/dependency_links.txt +1 -0
- pg_maker-0.1.0/src/pg_maker.egg-info/entry_points.txt +4 -0
- pg_maker-0.1.0/src/pg_maker.egg-info/requires.txt +13 -0
- pg_maker-0.1.0/src/pg_maker.egg-info/top_level.txt +1 -0
- pg_maker-0.1.0/tests/__init__.py +1 -0
- pg_maker-0.1.0/tests/conftest.py +43 -0
- pg_maker-0.1.0/tests/contracts/test_cli.py +124 -0
- pg_maker-0.1.0/tests/fixtures/guc/README.md +11 -0
- pg_maker-0.1.0/tests/fixtures/guc/compact-golden.c +20 -0
- pg_maker-0.1.0/tests/fixtures/guc/compact.c +18 -0
- pg_maker-0.1.0/tests/fixtures/guc/expanded-golden.c +46 -0
- pg_maker-0.1.0/tests/fixtures/guc/expanded.c +44 -0
- pg_maker-0.1.0/tests/fixtures/stage4/README.md +31 -0
- pg_maker-0.1.0/tests/fixtures/stage4/insertion.yaml +18 -0
- pg_maker-0.1.0/tests/fixtures/stage4/library/Makefile +10 -0
- pg_maker-0.1.0/tests/fixtures/stage4/library/check.c +2 -0
- pg_maker-0.1.0/tests/fixtures/stage4/library/probe.c +1 -0
- pg_maker-0.1.0/tests/fixtures/stage4/marker.sql +2 -0
- pg_maker-0.1.0/tests/fixtures/stage4/marker.yaml +22 -0
- pg_maker-0.1.0/tests/fixtures/stage4/probe/Makefile +7 -0
- pg_maker-0.1.0/tests/fixtures/stage4/probe/expected/probe.out +7 -0
- pg_maker-0.1.0/tests/fixtures/stage4/probe/pg_maker_probe--1.0.sql +2 -0
- pg_maker-0.1.0/tests/fixtures/stage4/probe/pg_maker_probe.c +8 -0
- pg_maker-0.1.0/tests/fixtures/stage4/probe/pg_maker_probe.control +4 -0
- pg_maker-0.1.0/tests/fixtures/stage4/probe/sql/probe.sql +2 -0
- pg_maker-0.1.0/tests/fixtures/stage4/probe.yaml +18 -0
- pg_maker-0.1.0/tests/fixtures/stage4/source-tree/Makefile +8 -0
- pg_maker-0.1.0/tests/fixtures/stage4/source-tree/expected/probe.out +7 -0
- pg_maker-0.1.0/tests/fixtures/stage4/source-tree/pg_maker_probe--1.0.sql +2 -0
- pg_maker-0.1.0/tests/fixtures/stage4/source-tree/pg_maker_probe.c +8 -0
- pg_maker-0.1.0/tests/fixtures/stage4/source-tree/pg_maker_probe.control +4 -0
- pg_maker-0.1.0/tests/fixtures/stage4/source-tree/sql/probe.sql +2 -0
- pg_maker-0.1.0/tests/fixtures/stage4/utility/Makefile +9 -0
- pg_maker-0.1.0/tests/fixtures/stage4/utility/main.c +2 -0
- pg_maker-0.1.0/tests/fixtures/stage7/17.5/COPYRIGHT +23 -0
- pg_maker-0.1.0/tests/fixtures/stage7/17.5/config.sgml +33 -0
- pg_maker-0.1.0/tests/fixtures/stage7/17.5/filelist.sgml +1 -0
- pg_maker-0.1.0/tests/fixtures/stage7/17.5/postgres.sgml +12 -0
- pg_maker-0.1.0/tests/fixtures/stage7/17.5/reference.sgml +1 -0
- pg_maker-0.1.0/tests/fixtures/stage7/17.5/sections.sgml +2 -0
- pg_maker-0.1.0/tests/fixtures/stage7/17.5/upstream.json +1 -0
- pg_maker-0.1.0/tests/fixtures/stage7/17.5/version.sgml +2 -0
- pg_maker-0.1.0/tests/fixtures/stage7/17.5-golden.sgml +33 -0
- pg_maker-0.1.0/tests/fixtures/stage7/18.1/COPYRIGHT +23 -0
- pg_maker-0.1.0/tests/fixtures/stage7/18.1/config.sgml +33 -0
- pg_maker-0.1.0/tests/fixtures/stage7/18.1/filelist.sgml +1 -0
- pg_maker-0.1.0/tests/fixtures/stage7/18.1/postgres.sgml +12 -0
- pg_maker-0.1.0/tests/fixtures/stage7/18.1/reference.sgml +1 -0
- pg_maker-0.1.0/tests/fixtures/stage7/18.1/sections.sgml +2 -0
- pg_maker-0.1.0/tests/fixtures/stage7/18.1/upstream.json +1 -0
- pg_maker-0.1.0/tests/fixtures/stage7/18.1/version.sgml +2 -0
- pg_maker-0.1.0/tests/fixtures/stage7/18.1-golden.sgml +33 -0
- pg_maker-0.1.0/tests/fixtures/stage7/README.md +16 -0
- pg_maker-0.1.0/tests/integration/test_build_cancellation.py +274 -0
- pg_maker-0.1.0/tests/integration/test_build_pipeline.py +37 -0
- pg_maker-0.1.0/tests/integration/test_development_pipeline.py +222 -0
- pg_maker-0.1.0/tests/integration/test_distribution.py +296 -0
- pg_maker-0.1.0/tests/integration/test_docker_operations.py +216 -0
- pg_maker-0.1.0/tests/integration/test_documentation_pipeline.py +464 -0
- pg_maker-0.1.0/tests/integration/test_preparation.py +162 -0
- pg_maker-0.1.0/tests/unit/test_agent_workspace.py +58 -0
- pg_maker-0.1.0/tests/unit/test_build.py +293 -0
- pg_maker-0.1.0/tests/unit/test_default_components.py +74 -0
- pg_maker-0.1.0/tests/unit/test_development.py +262 -0
- pg_maker-0.1.0/tests/unit/test_documentation.py +301 -0
- pg_maker-0.1.0/tests/unit/test_documentation_site.py +116 -0
- pg_maker-0.1.0/tests/unit/test_packaging.py +274 -0
- pg_maker-0.1.0/tests/unit/test_planning.py +828 -0
- pg_maker-0.1.0/tests/unit/test_postgresql_catalog.py +182 -0
- pg_maker-0.1.0/tests/unit/test_process.py +93 -0
- pg_maker-0.1.0/tests/unit/test_recovery.py +193 -0
- pg_maker-0.1.0/tests/unit/test_review_changes.py +122 -0
- pg_maker-0.1.0/tests/unit/test_review_contracts.py +82 -0
- pg_maker-0.1.0/tests/unit/test_runtime_integration.py +179 -0
- pg_maker-0.1.0/tests/unit/test_state.py +119 -0
- pg_maker-0.1.0/tests/unit/test_storage_documents.py +117 -0
- pg_maker-0.1.0/tools/check_release.py +150 -0
- pg_maker-0.1.0/tools/ci_pipeline.py +165 -0
- pg_maker-0.1.0/tools/generate_planning_schemas.py +929 -0
- pg_maker-0.1.0/tools/smoke_wheel.py +45 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags: ["v*"]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: read
|
|
9
|
+
|
|
10
|
+
concurrency:
|
|
11
|
+
group: pypi-publish
|
|
12
|
+
cancel-in-progress: false
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
verify:
|
|
16
|
+
name: Verify and build the tagged source
|
|
17
|
+
uses: ./.github/workflows/tests.yml
|
|
18
|
+
|
|
19
|
+
publish:
|
|
20
|
+
needs: verify
|
|
21
|
+
runs-on: ubuntu-24.04
|
|
22
|
+
timeout-minutes: 15
|
|
23
|
+
environment:
|
|
24
|
+
name: pypi
|
|
25
|
+
url: https://pypi.org/p/pg-maker
|
|
26
|
+
permissions:
|
|
27
|
+
id-token: write
|
|
28
|
+
steps:
|
|
29
|
+
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
|
|
30
|
+
with:
|
|
31
|
+
name: python-distributions
|
|
32
|
+
path: dist/
|
|
33
|
+
- name: Publish verified artifacts with Trusted Publishing
|
|
34
|
+
uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # release/v1
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
name: tests
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: ["**"]
|
|
6
|
+
pull_request:
|
|
7
|
+
workflow_call:
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
inputs:
|
|
10
|
+
run_db_tests:
|
|
11
|
+
description: Run the long PostgreSQL and installed database qualification suites
|
|
12
|
+
type: boolean
|
|
13
|
+
default: false
|
|
14
|
+
with_doc:
|
|
15
|
+
description: Build and install the English HTML, man and PDF documentation
|
|
16
|
+
type: boolean
|
|
17
|
+
default: false
|
|
18
|
+
|
|
19
|
+
permissions:
|
|
20
|
+
contents: read
|
|
21
|
+
|
|
22
|
+
concurrency:
|
|
23
|
+
group: tests-${{ github.workflow }}-${{ github.ref }}
|
|
24
|
+
cancel-in-progress: true
|
|
25
|
+
|
|
26
|
+
jobs:
|
|
27
|
+
unit:
|
|
28
|
+
runs-on: ubuntu-24.04
|
|
29
|
+
timeout-minutes: 15
|
|
30
|
+
strategy:
|
|
31
|
+
fail-fast: false
|
|
32
|
+
matrix:
|
|
33
|
+
python: ['3.10', '3.12']
|
|
34
|
+
steps:
|
|
35
|
+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6; shared pg_diag convention
|
|
36
|
+
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
|
|
37
|
+
with:
|
|
38
|
+
python-version: ${{ matrix.python }}
|
|
39
|
+
- run: python -m pip install -e '.[dev]'
|
|
40
|
+
- run: ruff check . && ruff format --check .
|
|
41
|
+
- run: python tools/check_release.py
|
|
42
|
+
- run: python tools/generate_planning_schemas.py && git diff --exit-code -- src/pg_maker/schemas
|
|
43
|
+
- run: python -m pytest -q tests/unit tests/contracts
|
|
44
|
+
distribution:
|
|
45
|
+
runs-on: ubuntu-24.04
|
|
46
|
+
needs: unit
|
|
47
|
+
timeout-minutes: 15
|
|
48
|
+
steps:
|
|
49
|
+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
|
50
|
+
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
|
|
51
|
+
with:
|
|
52
|
+
python-version: '3.12'
|
|
53
|
+
- run: python -m pip install 'build>=1.2,<2' 'twine>=6,<7'
|
|
54
|
+
- name: Check release identity
|
|
55
|
+
shell: bash
|
|
56
|
+
run: |
|
|
57
|
+
if [ "$GITHUB_REF_TYPE" = tag ]; then
|
|
58
|
+
python tools/check_release.py --tag "$GITHUB_REF_NAME"
|
|
59
|
+
else
|
|
60
|
+
python tools/check_release.py
|
|
61
|
+
fi
|
|
62
|
+
- run: python -m build
|
|
63
|
+
- run: python -m twine check --strict dist/*
|
|
64
|
+
- run: python tools/check_release.py --dist dist
|
|
65
|
+
- run: python tools/smoke_wheel.py dist/*.whl
|
|
66
|
+
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
|
|
67
|
+
with:
|
|
68
|
+
name: python-distributions
|
|
69
|
+
path: dist/
|
|
70
|
+
if-no-files-found: error
|
|
71
|
+
retention-days: 7
|
|
72
|
+
|
|
73
|
+
docker:
|
|
74
|
+
runs-on: ubuntu-24.04
|
|
75
|
+
needs: unit
|
|
76
|
+
timeout-minutes: 30
|
|
77
|
+
steps:
|
|
78
|
+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
|
79
|
+
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
|
|
80
|
+
with:
|
|
81
|
+
python-version: '3.12'
|
|
82
|
+
- run: python -m pip install -e '.[dev]'
|
|
83
|
+
- run: python tools/ci_pipeline.py --work "${RUNNER_TEMP}/pg-maker-fixtures" --fixtures-only
|
|
84
|
+
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
|
|
85
|
+
if: always()
|
|
86
|
+
with:
|
|
87
|
+
name: fixture-evidence
|
|
88
|
+
path: ${{ runner.temp }}/pg-maker-fixtures/exports
|
|
89
|
+
retention-days: 7
|
|
90
|
+
|
|
91
|
+
postgresql:
|
|
92
|
+
if: github.event_name == 'workflow_dispatch'
|
|
93
|
+
runs-on: ubuntu-24.04
|
|
94
|
+
needs: docker
|
|
95
|
+
timeout-minutes: 120
|
|
96
|
+
steps:
|
|
97
|
+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
|
98
|
+
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
|
|
99
|
+
with:
|
|
100
|
+
python-version: '3.12'
|
|
101
|
+
- run: python -m pip install -e '.[dev]'
|
|
102
|
+
- name: Build PostgreSQL packages; database tests are explicit
|
|
103
|
+
env:
|
|
104
|
+
RUN_DB_TESTS: ${{ inputs.run_db_tests }}
|
|
105
|
+
WITH_DOC: ${{ inputs.with_doc }}
|
|
106
|
+
shell: bash
|
|
107
|
+
run: |
|
|
108
|
+
args=()
|
|
109
|
+
if [ "$RUN_DB_TESTS" = true ]; then args+=(--run-db-tests); fi
|
|
110
|
+
if [ "$WITH_DOC" = true ]; then args+=(--with-doc); fi
|
|
111
|
+
python tools/ci_pipeline.py --work "${RUNNER_TEMP}/pg-maker-postgresql" "${args[@]}"
|
|
112
|
+
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
|
|
113
|
+
if: always()
|
|
114
|
+
with:
|
|
115
|
+
name: postgresql-evidence
|
|
116
|
+
path: ${{ runner.temp }}/pg-maker-postgresql/exports
|
|
117
|
+
retention-days: 7
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
.venv/
|
|
2
|
+
venv/
|
|
3
|
+
.env
|
|
4
|
+
.env.*
|
|
5
|
+
!.env.example
|
|
6
|
+
__pycache__/
|
|
7
|
+
*.py[cod]
|
|
8
|
+
*.egg-info/
|
|
9
|
+
.pytest_cache/
|
|
10
|
+
.ruff_cache/
|
|
11
|
+
.mypy_cache/
|
|
12
|
+
.tox/
|
|
13
|
+
.nox/
|
|
14
|
+
.coverage
|
|
15
|
+
.coverage.*
|
|
16
|
+
coverage.xml
|
|
17
|
+
htmlcov/
|
|
18
|
+
build/
|
|
19
|
+
dist/
|
|
20
|
+
runs/
|
|
21
|
+
operations/
|
|
22
|
+
/.cache/
|
|
23
|
+
/inputs/
|
|
24
|
+
/development/
|
|
25
|
+
/work/
|
|
26
|
+
/delivery/
|
|
27
|
+
*.log
|
|
28
|
+
.DS_Store
|
|
29
|
+
Thumbs.db
|
|
30
|
+
.idea/
|
|
31
|
+
.vscode/
|
|
32
|
+
*.swp
|
|
33
|
+
*.swo
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.1.0 — 2026-10-18
|
|
4
|
+
|
|
5
|
+
Initial alpha of the PostgreSQL distribution controller:
|
|
6
|
+
|
|
7
|
+
- Strict YAML configuration, pinned sources/environments, immutable locks and plans.
|
|
8
|
+
- Isolated Docker builds, durable operations, events, cancellation, recovery and caches.
|
|
9
|
+
- PostgreSQL 14–19 catalog; initial Debian 13 / x86_64 / DEB platform.
|
|
10
|
+
- Default pg_stat_statements, pg_stat_kcache and pg_wait_sampling recipes with manuals.
|
|
11
|
+
- Documentation-only and combined builds using DocBook/Sphinx, local assets, HTML/man/PDF
|
|
12
|
+
and explicit translation bundles.
|
|
13
|
+
- Server/client/libpq/docs packaging, manifests, offline installation checks and exports.
|
|
14
|
+
- Owned Git development sessions, patch import/refresh/pop/push/rebase, conflict recovery,
|
|
15
|
+
selected component rebuilds, debug commands and iteration retention.
|
|
16
|
+
- Optional pg_play CLI/API/MCP integration and runtime image handoff.
|
|
17
|
+
- English project documentation, distribution-content checks and a tag-triggered PyPI
|
|
18
|
+
Trusted Publishing workflow.
|
|
19
|
+
|
|
20
|
+
Database suites are opt-in; quick/development builds remain unverified. RPM, additional
|
|
21
|
+
platforms and PostgreSQL distribution repository publication remain future work.
|
|
22
|
+
See the [roadmap](docs/roadmap.md) and dated validation reports for precise boundaries.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
Use Linux and Python 3.10 or newer. Install the checkout in a virtual environment:
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
python3 -m venv .venv
|
|
7
|
+
.venv/bin/python -m pip install -e '.[dev]'
|
|
8
|
+
.venv/bin/ruff check .
|
|
9
|
+
.venv/bin/ruff format --check .
|
|
10
|
+
.venv/bin/python tools/generate_planning_schemas.py
|
|
11
|
+
.venv/bin/python tools/check_release.py
|
|
12
|
+
.venv/bin/pytest -q tests/unit tests/contracts
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Review generated schema changes with the matching interface contract. Keep every
|
|
16
|
+
project Markdown file in English, including examples and fixture descriptions.
|
|
17
|
+
PostgreSQL manuals produced by the utility can use configured languages. Preserve
|
|
18
|
+
upstream copyright/license notices in fixtures and generated artifacts.
|
|
19
|
+
|
|
20
|
+
Public changes need an updated MD contract and, where applicable, JSON Schema.
|
|
21
|
+
Use MakerService for CLI/API behavior, typed argv for commands, the shared logger,
|
|
22
|
+
durable state/events and owned-resource cleanup. Prefer small concrete adapters;
|
|
23
|
+
add protocols only at real replacement boundaries. See [architecture](docs/architecture.md)
|
|
24
|
+
and [interfaces](docs/interfaces/README.md).
|
|
25
|
+
|
|
26
|
+
## Tests and storage
|
|
27
|
+
|
|
28
|
+
Unit/contract tests do not require PostgreSQL builds. Small Docker tests are opt-in;
|
|
29
|
+
variables select already available images. A tiny development pipeline fixture needs
|
|
30
|
+
an image with Make and the current non-root build user:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
PG_MAKER_DEVELOPMENT_IMAGE=sha256:FULL_IMAGE_ID .venv/bin/pytest -q tests/integration/test_development_pipeline.py
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
This checks failed extension builds, Git fixes, core/component reuse, debug execution
|
|
37
|
+
and retention without starting a database. Other fixtures use PG_MAKER_DOCKER_IMAGE,
|
|
38
|
+
PG_MAKER_BUILD_IMAGE, PG_MAKER_PREPARATION_IMAGE, PG_MAKER_PACKAGE_ENVIRONMENTS and
|
|
39
|
+
PG_MAKER_DOC_ENVIRONMENTS. CI prepares its own fixture environments through
|
|
40
|
+
`tools/ci_pipeline.py --fixtures-only`.
|
|
41
|
+
|
|
42
|
+
Database suites remain off by default. The expensive PG_MAKER_BUILD_LOCK integration
|
|
43
|
+
and manual --run-db-tests path are separate checks, not routine prerequisites for
|
|
44
|
+
editing the Python utility. Never treat a successful quick build as database qualification.
|
|
45
|
+
Check free disk before work; use [explicit cleanup](docs/development-storage.md) and
|
|
46
|
+
retain useful evidence. Do not put runs, inputs, environments, credentials or build
|
|
47
|
+
artifacts into Git.
|
|
48
|
+
|
|
49
|
+
## Distribution checks
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
.venv/bin/python -m build
|
|
53
|
+
.venv/bin/python -m twine check --strict dist/*
|
|
54
|
+
.venv/bin/python tools/check_release.py --dist dist
|
|
55
|
+
.venv/bin/python tools/smoke_wheel.py dist/*.whl
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Use a distribution directory containing exactly one version. Release checks compare
|
|
59
|
+
all Markdown and runtime package files byte-for-byte between source, wheel and sdist,
|
|
60
|
+
and ensure test fixtures/tooling are present in sdist. Wheel smoke creates and removes
|
|
61
|
+
a temporary isolated environment, installs dependencies, checks entry points and
|
|
62
|
+
initializes/validates a project outside checkout. It does not contact Docker.
|
|
63
|
+
Publication is described in [releasing](docs/releasing.md).
|
pg_maker-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Oleg Gurov
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
include LICENSE *.md pyproject.toml MANIFEST.in
|
|
2
|
+
include .gitignore .gitattributes
|
|
3
|
+
recursive-include .github/workflows *.yml
|
|
4
|
+
recursive-include docs *.md
|
|
5
|
+
recursive-include tests *.py
|
|
6
|
+
recursive-include tests/fixtures *
|
|
7
|
+
recursive-include tools *.py
|
|
8
|
+
global-exclude __pycache__ *.py[cod]
|
|
9
|
+
prune build
|
|
10
|
+
prune dist
|
pg_maker-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: pg-maker
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Build PostgreSQL distributions, documentation and patches in isolated environments
|
|
5
|
+
Author-email: O2eg <oleg.ispu@gmail.com>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://o2eg.com/
|
|
8
|
+
Project-URL: Repository, https://github.com/O2eg/pg_maker
|
|
9
|
+
Project-URL: Issues, https://github.com/O2eg/pg_maker/issues
|
|
10
|
+
Project-URL: Documentation, https://github.com/O2eg/pg_maker/blob/main/README.md
|
|
11
|
+
Keywords: postgresql,build,packaging,documentation,docker
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Environment :: Console
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: Intended Audience :: System Administrators
|
|
16
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Topic :: Database
|
|
22
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
23
|
+
Requires-Python: >=3.10
|
|
24
|
+
Description-Content-Type: text/markdown
|
|
25
|
+
License-File: LICENSE
|
|
26
|
+
Requires-Dist: jsonschema<5,>=4.23
|
|
27
|
+
Requires-Dist: PyYAML<7,>=6
|
|
28
|
+
Requires-Dist: packaging<27,>=24
|
|
29
|
+
Requires-Dist: lxml<7,>=5.3
|
|
30
|
+
Provides-Extra: dev
|
|
31
|
+
Requires-Dist: build<2,>=1.2; extra == "dev"
|
|
32
|
+
Requires-Dist: pytest<9,>=8.3; extra == "dev"
|
|
33
|
+
Requires-Dist: ruff<1,>=0.12; extra == "dev"
|
|
34
|
+
Requires-Dist: twine<7,>=6; extra == "dev"
|
|
35
|
+
Requires-Dist: tomli<3,>=2; python_version < "3.11" and extra == "dev"
|
|
36
|
+
Dynamic: license-file
|
|
37
|
+
|
|
38
|
+
# pg_maker
|
|
39
|
+
|
|
40
|
+
A Python controller for building PostgreSQL distributions, packages and documentation
|
|
41
|
+
in isolated Docker environments. It also provides Git development sessions for
|
|
42
|
+
editing patches, recovering failed builds and rebuilding individual extensions.
|
|
43
|
+
|
|
44
|
+
The current package is an **alpha**. The implemented platform is Debian 13 / x86_64,
|
|
45
|
+
with release/debug builds and DEB packages. The PostgreSQL catalog covers majors
|
|
46
|
+
14–19, including beta/RC identities; versions below 14 are unsupported. Catalog
|
|
47
|
+
coverage is distinct from validation coverage: see the [major-version report](docs/validation/postgresql-majors.md).
|
|
48
|
+
RPM, other platforms and distribution repository publishing remain on the
|
|
49
|
+
[roadmap](docs/roadmap.md).
|
|
50
|
+
|
|
51
|
+
## Installation
|
|
52
|
+
|
|
53
|
+
Requires Linux and Python 3.10+. Container operations require a local Docker daemon;
|
|
54
|
+
Git development sessions also require Git. Installing the Python package and reading
|
|
55
|
+
capabilities do not require Docker.
|
|
56
|
+
|
|
57
|
+
From PyPI:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
python3 -m venv .venv
|
|
61
|
+
.venv/bin/python -m pip install pg-maker
|
|
62
|
+
.venv/bin/pg-maker --help
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
For development, from a source checkout:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
python3 -m venv .venv
|
|
69
|
+
.venv/bin/python -m pip install -e '.[dev]'
|
|
70
|
+
.venv/bin/pg-maker --help
|
|
71
|
+
.venv/bin/pg-maker --component-capabilities
|
|
72
|
+
.venv/bin/pg-maker doctor --machine
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
A built wheel can be installed with `python -m pip install /path/to/pg_maker-VERSION-py3-none-any.whl`.
|
|
76
|
+
|
|
77
|
+
## Build a distribution
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
pg-maker init example
|
|
81
|
+
pg-maker validate example/build.yaml
|
|
82
|
+
pg-maker config show example/build.yaml --resolved
|
|
83
|
+
pg-maker env prepare example/build.yaml --out example/environments.json --operations example/operations
|
|
84
|
+
pg-maker resolve example/build.yaml --environments example/environments.json --out example/lock.json --input-store example/inputs --operations example/operations
|
|
85
|
+
pg-maker plan example/lock.json --out example/plan.json --goal build
|
|
86
|
+
pg-maker build example/lock.json --plan example/plan.json --operations example/operations --detach
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
`init` creates editable vendor/defaults/documentation YAML, a `my-feature` variant,
|
|
90
|
+
component recipes, schemas and the built-in socket-directory patch. The initial
|
|
91
|
+
target is PostgreSQL 18.1 / Debian 13 / x86_64 / DEB, without documentation.
|
|
92
|
+
The default components are `pg_stat_statements`, `pg_stat_kcache 2.3.2` and
|
|
93
|
+
`pg_wait_sampling 1.1.11`. External sources are pinned by commit SHA. Set
|
|
94
|
+
`components: []` to omit additional extensions. See [component recipes](docs/interfaces/components.md).
|
|
95
|
+
|
|
96
|
+
`env prepare` downloads missing base images and installs dependencies inside
|
|
97
|
+
containers. Its result records build/test image IDs, package versions and toolchain
|
|
98
|
+
inventory. `resolve` freezes source commits, submodules, snapshots, archive
|
|
99
|
+
checksums and ChangeSets in a BuildLock. Offline resolution reuses stored inputs
|
|
100
|
+
and reports missing ones. Both operations support `--detach` and `--request-id`.
|
|
101
|
+
|
|
102
|
+
The build user defaults to `1000:1000` and must match the non-root owner of the
|
|
103
|
+
workspace. Environment preparation creates this user inside the image. Build
|
|
104
|
+
commands run with networking disabled. Outputs stay inside the operation directory.
|
|
105
|
+
|
|
106
|
+
**Database tests are disabled by default while developing the utility.** A normal
|
|
107
|
+
build compiles the candidate and components without `check`, `check-world`,
|
|
108
|
+
component tests, acceptance tests or a baseline build. Reports remain `unverified`,
|
|
109
|
+
with `db_tests=skipped` and `publication_eligible=false`. Tests of pg_maker itself
|
|
110
|
+
remain enabled.
|
|
111
|
+
|
|
112
|
+
Use `--goal package` to build server/client/libpq DEBs, manifests, installation
|
|
113
|
+
instructions and HTML/JSON reports. A quick package build remains unverified.
|
|
114
|
+
The long source/database test adapter currently supports major 18 only:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
pg-maker build example/lock.json --run-db-tests --operations example/operations
|
|
118
|
+
# Explicitly requests source and installed-package qualification:
|
|
119
|
+
pg-maker build example/lock.json --goal verified --operations example/operations
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
A supplied plan controls the test mode; create it with `plan --run-db-tests` when
|
|
123
|
+
needed. `--skip-db-tests` explicitly selects the quick path. Successful source
|
|
124
|
+
suites grant at most `source-verified`; `package-verified` requires installed-package
|
|
125
|
+
qualification too. See [build](docs/interfaces/build.md) and [packaging](docs/interfaces/packaging.md).
|
|
126
|
+
|
|
127
|
+
## Build documentation only
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
pg-maker init docs-project --with-doc --doc-language en
|
|
131
|
+
pg-maker env prepare docs-project/build.yaml --out docs-project/environments.json
|
|
132
|
+
pg-maker resolve docs-project/build.yaml --environments docs-project/environments.json --out docs-project/lock.json
|
|
133
|
+
pg-maker docs build docs-project/lock.json
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
`docs build` builds documentation without compiling the server or producing DEBs.
|
|
137
|
+
It accepts official archive/Git sources or a snapshot of a locally modified source
|
|
138
|
+
tree. Set `branding: none` for upstream PostgreSQL branding. The default HTML uses
|
|
139
|
+
`sphinx_book_theme`, with an expandable sidebar, page contents and local search.
|
|
140
|
+
The footer uses the selected product, version, feature, language and optional vendor
|
|
141
|
+
links. `html_backend: docbook` selects the original DocBook layout explicitly.
|
|
142
|
+
|
|
143
|
+
`config/documentation.yaml` selects HTML/man/PDF. The two external extensions'
|
|
144
|
+
guides join the main Sphinx HTML/PDF manual when documentation is enabled.
|
|
145
|
+
Russian PostgreSQL output requires a complete, current external translation bundle;
|
|
146
|
+
the project's own Markdown documentation is English. HTML/PDF can be packaged in
|
|
147
|
+
a separate docs DEB, with manpages assigned to the packages that own their commands.
|
|
148
|
+
See the [documentation contract](docs/interfaces/documentation.md).
|
|
149
|
+
|
|
150
|
+
## Develop code and patches
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
pg-maker dev open development --from-run example/operations/FAILED_RUN
|
|
154
|
+
pg-maker dev status development
|
|
155
|
+
# Edit the source paths returned by status, then record a patch:
|
|
156
|
+
pg-maker dev patch development commit --scope component:pg-wait-sampling --id fix-build
|
|
157
|
+
pg-maker dev explain development --component pg-wait-sampling
|
|
158
|
+
pg-maker dev build development --component pg-wait-sampling
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Each session owns real Git repositories. It can import an existing local repository
|
|
162
|
+
with history, maintain intermediate commits, refresh patches, pop/push a series and
|
|
163
|
+
resolve rebase conflicts. New iterations freeze changed inputs into new locks;
|
|
164
|
+
`resume` retains its original meaning: retry the same operation with the same inputs.
|
|
165
|
+
Independent extensions and the core can be reused when their inputs match. Header,
|
|
166
|
+
ABI, toolchain and declared dependency changes invalidate affected results.
|
|
167
|
+
[Development guide](docs/development.md) and [interface contract](docs/interfaces/development.md).
|
|
168
|
+
|
|
169
|
+
## Observe and retain results
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
pg-maker status example/operations/RUN --machine
|
|
173
|
+
pg-maker events example/operations/RUN --after-sequence 0 --limit 20 --machine
|
|
174
|
+
pg-maker wait example/operations/RUN --timeout 120 --machine
|
|
175
|
+
pg-maker cancel example/operations/RUN --machine
|
|
176
|
+
pg-maker export example/operations/RUN --out exported-result
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
The detached worker owns the operation. Closing a waiting CLI does not cancel it;
|
|
180
|
+
cancellation is explicit and repeatable. `status` returns success when it can read
|
|
181
|
+
the operation, even if the operation failed; `wait` returns the operation's exit code.
|
|
182
|
+
The [Python API](docs/interfaces/api.md) and optional pg_play CLI/MCP integration
|
|
183
|
+
use the same service and machine contract.
|
|
184
|
+
|
|
185
|
+
Source stores, workspaces, checkpoints and Docker caches consume disk space.
|
|
186
|
+
Check `df -h`, workspace sizes and `docker system df` before long runs. Use explicit
|
|
187
|
+
preview/apply cleanup and preserve needed outputs. See [storage and cleanup](docs/development-storage.md).
|
|
188
|
+
|
|
189
|
+
## Project documentation
|
|
190
|
+
|
|
191
|
+
- [Architecture](docs/architecture.md) and [reuse decisions](docs/reuse.md).
|
|
192
|
+
- [Roadmap and implementation limits](docs/roadmap.md).
|
|
193
|
+
- [Interface specifications](docs/interfaces/README.md).
|
|
194
|
+
- [Validation reports](docs/validation/stage56.md), [documentation](docs/validation/stage7.md)
|
|
195
|
+
and [integration](docs/validation/integration.md).
|
|
196
|
+
- [Contributing and local checks](CONTRIBUTING.md).
|
|
197
|
+
- [Git and PyPI release procedure](docs/releasing.md).
|
|
198
|
+
|
|
199
|
+
Distributed under the [MIT License](LICENSE). Third-party test fixtures retain their
|
|
200
|
+
original copyright and license notices.
|