roman-snpit-snappl 0.14.0__tar.gz → 0.16.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.

Potentially problematic release.


This version of roman-snpit-snappl might be problematic. Click here for more details.

Files changed (132) hide show
  1. roman_snpit_snappl-0.16.0/.github/workflows/run_snappl_tests.yml +77 -0
  2. {roman_snpit_snappl-0.14.0/roman_snpit_snappl.egg-info → roman_snpit_snappl-0.16.0}/PKG-INFO +19 -14
  3. roman_snpit_snappl-0.16.0/changes/74.bugfix.rst +1 -0
  4. roman_snpit_snappl-0.16.0/changes/81.snappl.rst +1 -0
  5. roman_snpit_snappl-0.16.0/changes/82.snappl.rst +1 -0
  6. roman_snpit_snappl-0.16.0/changes/84.feature.rst +3 -0
  7. roman_snpit_snappl-0.16.0/docker/postgres/Dockerfile +122 -0
  8. roman_snpit_snappl-0.16.0/docker/postgres/postgresql.conf +827 -0
  9. roman_snpit_snappl-0.16.0/docker/postgres/run_postgres.sh +19 -0
  10. roman_snpit_snappl-0.16.0/docker/webserver/Dockerfile +133 -0
  11. roman_snpit_snappl-0.16.0/docker/webserver/cert.pem +21 -0
  12. roman_snpit_snappl-0.16.0/docker/webserver/config-test.yaml +27 -0
  13. roman_snpit_snappl-0.16.0/docker/webserver/key.pem +28 -0
  14. roman_snpit_snappl-0.16.0/docker/webserver/roman-snpit-server.py +13 -0
  15. roman_snpit_snappl-0.16.0/docs/_static/logo_black_filled.png +0 -0
  16. roman_snpit_snappl-0.16.0/experimentation/ap_phot_simulated_images.py +68 -0
  17. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/pyproject.toml +29 -15
  18. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0/roman_snpit_snappl.egg-info}/PKG-INFO +19 -14
  19. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/roman_snpit_snappl.egg-info/SOURCES.txt +34 -1
  20. roman_snpit_snappl-0.16.0/roman_snpit_snappl.egg-info/requires.txt +33 -0
  21. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/snappl/_version.py +3 -3
  22. roman_snpit_snappl-0.16.0/snappl/admin/load_snana_ou2024_diaobject.py +65 -0
  23. roman_snpit_snappl-0.16.0/snappl/config.py +892 -0
  24. roman_snpit_snappl-0.16.0/snappl/db/baseview.py +88 -0
  25. roman_snpit_snappl-0.16.0/snappl/db/db.py +1070 -0
  26. roman_snpit_snappl-0.16.0/snappl/db/migrations/20251008_init.sql +293 -0
  27. roman_snpit_snappl-0.16.0/snappl/db/migrations/apply_migrations.py +90 -0
  28. roman_snpit_snappl-0.16.0/snappl/db/migrations/schema_to_rst.py +56 -0
  29. roman_snpit_snappl-0.16.0/snappl/db/migrations/scorched_earth.py +19 -0
  30. roman_snpit_snappl-0.16.0/snappl/db/migrations/wipe_all_data.py +26 -0
  31. roman_snpit_snappl-0.16.0/snappl/db/static/romansnpit.css +0 -0
  32. roman_snpit_snappl-0.16.0/snappl/db/static/romansnpit.js +0 -0
  33. roman_snpit_snappl-0.16.0/snappl/db/static/romansnpit_start.js +0 -0
  34. roman_snpit_snappl-0.16.0/snappl/db/templates/base.html +13 -0
  35. roman_snpit_snappl-0.16.0/snappl/db/templates/romansnpitdb.html +20 -0
  36. roman_snpit_snappl-0.16.0/snappl/db/webserver.py +295 -0
  37. roman_snpit_snappl-0.16.0/snappl/dbclient.py +92 -0
  38. roman_snpit_snappl-0.16.0/snappl/diaobject.py +519 -0
  39. roman_snpit_snappl-0.16.0/snappl/http.py +89 -0
  40. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/snappl/image.py +28 -35
  41. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/snappl/image_simulator.py +52 -48
  42. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/snappl/imagecollection.py +2 -2
  43. roman_snpit_snappl-0.16.0/snappl/logger.py +238 -0
  44. roman_snpit_snappl-0.16.0/snappl/provenance.py +304 -0
  45. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/snappl/psf.py +7 -8
  46. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/snappl/sed.py +2 -2
  47. roman_snpit_snappl-0.16.0/snappl/utils.py +88 -0
  48. roman_snpit_snappl-0.14.0/.github/workflows/run_snappl_tests.yml +0 -69
  49. roman_snpit_snappl-0.14.0/docs/_static/logo_black_filled.png +0 -0
  50. roman_snpit_snappl-0.14.0/roman_snpit_snappl.egg-info/requires.txt +0 -28
  51. roman_snpit_snappl-0.14.0/snappl/diaobject.py +0 -232
  52. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/.cruft.json +0 -0
  53. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/.github/CODEOWNERS +0 -0
  54. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md +0 -0
  55. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/.github/ISSUE_TEMPLATE/ISSUE_TEMPLATE.md +0 -0
  56. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/.github/ISSUE_TEMPLATE/PR_TEMPLATE.md +0 -0
  57. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/.github/dependabot.yml +0 -0
  58. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/.github/labeler.yml +0 -0
  59. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/.github/workflows/changelog.yml +0 -0
  60. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/.github/workflows/run_labeler.yml +0 -0
  61. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/.github/workflows/sphinx-deploy.yml +0 -0
  62. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/.github/workflows/sub_package_update.yml +0 -0
  63. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/.gitignore +0 -0
  64. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/.pre-commit-config.yaml +0 -0
  65. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/CHANGES.rst +0 -0
  66. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/CITATION.cff +0 -0
  67. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/CODE_OF_CONDUCT.md +0 -0
  68. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/CONTRIBUTING.md +0 -0
  69. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/LICENSE +0 -0
  70. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/MANIFEST.in +0 -0
  71. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/README.rst +0 -0
  72. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/.gitkeep +0 -0
  73. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/10.snappl.rst +0 -0
  74. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/13.bugfix.rst +0 -0
  75. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/14.snappl.rst +0 -0
  76. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/15.feature.rst +0 -0
  77. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/16.feature.rst +0 -0
  78. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/18.feature.rst +0 -0
  79. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/20.bugfix.rst +0 -0
  80. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/23.snappl.rst +0 -0
  81. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/26.feature.rst +0 -0
  82. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/29.feature.rst +0 -0
  83. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/3.snappl.rst +0 -0
  84. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/31.feature.rst +0 -0
  85. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/35.snappl.rst +0 -0
  86. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/36.snappl.rst +0 -0
  87. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/37.snappl.rst +0 -0
  88. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/40.snappl.rst +0 -0
  89. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/41.snappl.rst +0 -0
  90. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/43.snappl.rst +0 -0
  91. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/47.feature.rst +0 -0
  92. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/49.docs.rst +0 -0
  93. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/5.snappl.rst +0 -0
  94. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/54.snappl.rst +0 -0
  95. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/57.snappl.rst +0 -0
  96. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/58.snappl.rst +0 -0
  97. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/61.bugfix.rst +0 -0
  98. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/62.snappl.rst +0 -0
  99. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/63.snappl.rst +0 -0
  100. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/65.bugfix.rst +0 -0
  101. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/68.feature.rst +0 -0
  102. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/72.snappl.rst +0 -0
  103. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/73.feature.rst +0 -0
  104. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/79.snappl.rst +0 -0
  105. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/8.snappl.rst +0 -0
  106. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/changes/9.snappl.rst +0 -0
  107. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/codespell-ignore.txt +0 -0
  108. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/docs/Makefile +0 -0
  109. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/docs/api.rst +0 -0
  110. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/docs/changes.rst +0 -0
  111. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/docs/conf.py +0 -0
  112. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/docs/index.rst +0 -0
  113. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/docs/installation.rst +0 -0
  114. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/docs/make.bat +0 -0
  115. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/docs/usage.rst +0 -0
  116. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/experimentation/README.md +0 -0
  117. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/experimentation/play_with_photutils.py +0 -0
  118. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/licenses/.DS_Store +0 -0
  119. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/licenses/LICENSE.rst +0 -0
  120. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/licenses/README.rst +0 -0
  121. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/licenses/TEMPLATE_LICENSE.rst +0 -0
  122. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/roman_snpit_snappl.egg-info/dependency_links.txt +0 -0
  123. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/roman_snpit_snappl.egg-info/not-zip-safe +0 -0
  124. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/roman_snpit_snappl.egg-info/top_level.txt +0 -0
  125. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/setup.cfg +0 -0
  126. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/setup.py +0 -0
  127. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/snappl/__init__.py +0 -0
  128. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/snappl/_dev/__init__.py +0 -0
  129. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/snappl/_dev/scm_version.py +0 -0
  130. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/snappl/data/README.rst +0 -0
  131. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/snappl/wcs.py +0 -0
  132. {roman_snpit_snappl-0.14.0 → roman_snpit_snappl-0.16.0}/tox.ini +0 -0
@@ -0,0 +1,77 @@
1
+ name: Run SNAPPL Tests
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+ workflow_dispatch:
9
+
10
+ jobs:
11
+ tests:
12
+ name: run snappl tests in docker container
13
+ runs-on: ubuntu-latest
14
+
15
+ steps:
16
+ - name: Dump docker logs on failure
17
+ if: failure()
18
+ uses: jwalton/gh-docker-logs@v2
19
+
20
+ - name: checkout code
21
+ uses: actions/checkout@v5
22
+ with:
23
+ submodules: recursive
24
+
25
+ - name: run ruff
26
+ uses: astral-sh/ruff-action@v3
27
+
28
+ - name: checkout photometry test data
29
+ run: |
30
+ cd ..
31
+ git clone http://github.com/Roman-Supernova-PIT/photometry_test_data
32
+
33
+ - name: log into github container registry
34
+ uses: docker/login-action@v3
35
+ with:
36
+ registry: ghcr.io
37
+ username: ${{ github.actor }}
38
+ password: ${{ secrets.GITHUB_TOKEN }}
39
+
40
+ - name: cleanup
41
+ run: |
42
+ # try to save HDD space on the runner by removing some unneeded stuff (~8GB)
43
+ # ref: https://github.com/actions/runner-images/issues/2840#issuecomment-790492173
44
+ # (For some perverse reason, this step seems to take 1.5-2 minutes on github runners!
45
+ # For that reason, this is commented out, for now. Uncomment it if we run into trouble.)
46
+ df -h
47
+ # echo "------"
48
+ # sudo rm -rf /usr/share/dotnet
49
+ # sudo rm -rf /opt/ghc
50
+ # sudo rm -rf "/usr/local/share/boost"
51
+ # sudo rm -rf "$AGENT_TOOLSDIRECTORY"
52
+ # echo "------"
53
+ # df -h
54
+
55
+ - name: pull environment archive
56
+ run: |
57
+ cd ..
58
+ git clone https://github.com/Roman-Supernova-PIT/environment.git
59
+
60
+
61
+ - name: pull docker images
62
+ run: |
63
+ cd ../environment/test-docker-environment
64
+ docker compose pull mailhog postgres webserver shell
65
+
66
+ - name: run test
67
+ run: |
68
+ cd ..
69
+ ls
70
+ echo "--------"
71
+ ls snappl
72
+ echo "--------"
73
+ cd environment/test-docker-environment
74
+ docker compose up -d webserver shell
75
+ docker compose exec shell bash -c 'cd /home/snappl && pip install -e .[test]'
76
+ docker compose exec shell bash -c 'cd /home/snappl/snappl/tests && pytest -v'
77
+ docker compose down -v
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: roman_snpit_snappl
3
- Version: 0.14.0
4
- Summary: Photometry utilities for the Roman SNPIT
3
+ Version: 0.16.0
4
+ Summary: General, database, and photometry utilities for the Roman SNPIT
5
5
  Author: Roman Supernova Project Infrastructure Team
6
6
  Maintainer-email: Roman SN PIT <raknop@lbl.gov>
7
7
  Project-URL: repository, https://github.com/Roman-Supernova-PIT
@@ -10,18 +10,22 @@ Classifier: Programming Language :: Python
10
10
  Requires-Python: >=3.11
11
11
  Description-Content-Type: text/x-rst
12
12
  License-File: LICENSE
13
- Requires-Dist: numpy
14
- Requires-Dist: scipy
15
- Requires-Dist: astropy
16
- Requires-Dist: photutils
17
- Requires-Dist: pandas
18
- Requires-Dist: h5py
19
- Requires-Dist: roman-datamodels
20
- Requires-Dist: snpit_utils
21
- Requires-Dist: towncrier
22
- Requires-Dist: setuptools_scm
23
- Requires-Dist: cruft
24
- Requires-Dist: coverage
13
+ Requires-Dist: astropy<8.0.0,>=7.1.0
14
+ Requires-Dist: fitsio<2.0.0,>=1.2.5
15
+ Requires-Dist: galsim<3.0.0,>=2.7.2
16
+ Requires-Dist: gwcs<0.27.0,>=0.26.0
17
+ Requires-Dist: h5py<4.0.0,>=3.14.0
18
+ Requires-Dist: numpy<3.0.0,>=2.2.6
19
+ Requires-Dist: pandas<3.0.0,>=2.3.3
20
+ Requires-Dist: photutils<3.0.0,>=2.3.0
21
+ Requires-Dist: pycryptodome<4.0.0,>=3.23.0
22
+ Requires-Dist: python-dateutil<3.0.0,>=2.9.0.post0
23
+ Requires-Dist: pytz>=2025.2
24
+ Requires-Dist: pyyaml<7.0.0,>=6.0.3
25
+ Requires-Dist: rkwebutil<3.0.0,>=2.2.3
26
+ Requires-Dist: roman-datamodels<0.28.0,>=0.27.0
27
+ Requires-Dist: scipy<2.0.0,>=1.16.2
28
+ Requires-Dist: simplejson<4.0.0,>=3.20.2
25
29
  Provides-Extra: test
26
30
  Requires-Dist: pytest; extra == "test"
27
31
  Requires-Dist: pytest-doctestplus; extra == "test"
@@ -29,6 +33,7 @@ Requires-Dist: pytest-cov; extra == "test"
29
33
  Requires-Dist: requests; extra == "test"
30
34
  Requires-Dist: tox; extra == "test"
31
35
  Requires-Dist: devpi_process; extra == "test"
36
+ Requires-Dist: psycopg<4.0.0,>=3.2.9; extra == "test"
32
37
  Provides-Extra: docs
33
38
  Requires-Dist: sphinx; extra == "docs"
34
39
  Requires-Dist: sphinx-automodapi; extra == "docs"
@@ -0,0 +1 @@
1
+ Fix an issue in ImageSimulator where pointsources were all 2× too bright.
@@ -0,0 +1 @@
1
+ Allowed for none paths and none data
@@ -0,0 +1 @@
1
+ Playing with dependencies
@@ -0,0 +1,3 @@
1
+ Incorporate functionality of snpit_utils and roman-snpit-db.
2
+
3
+ Add the ability to get DiaObject from the Roman SNPIT internal database.
@@ -0,0 +1,122 @@
1
+ #
2
+ # DOCKER_BUILDKIT=1 docker build --target postgres -t <image>:<label> .
3
+ #
4
+ # Rob, use:
5
+ # DOCKER_BUILDKIT=1 docker build --target postgres -t registry.nersc.gov/m4385/rknop/snpit-db-postgres:rknop-dev .
6
+ #
7
+
8
+ FROM debian:bookworm-20250630 AS base
9
+ LABEL maintainer="Rob Knop <raknop@lbl.gov>"
10
+
11
+ SHELL ["/bin/bash", "-c"]
12
+
13
+ RUN apt-get update \
14
+ && DEBIAN_FRONTEND="nointeractive" apt-get -y upgrade \
15
+ && DEBIAN_FRONTEND="noninteractive" TZ="UTC" apt-get -y install -y --no-install-recommends \
16
+ postgresql-15 postgresql-client-15 pgtop libssl3 libreadline8 zlib1g netcat-openbsd \
17
+ libzstd1 liblz4-1 \
18
+ tmux emacs-nox less procps \
19
+ && apt-get clean \
20
+ && rm -rf /var/lib/apt/lists/*
21
+
22
+ RUN mkdir -p /var/lib/postgresql/data \
23
+ && chmod 700 /var/lib/postgresql/data \
24
+ && chown postgres:postgres /var/lib/postgresql/data
25
+
26
+ RUN cat /etc/locale.gen | perl -pe 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' > /etc/locale.gen.new \
27
+ && mv /etc/locale.gen.new /etc/locale.gen
28
+ RUN locale-gen en_US.UTF-8
29
+ ENV LANG=en_US.UTF-8
30
+ ENV LANGUAGE=en_US:en
31
+ ENV LC_ALL=en_US.UTF-8
32
+
33
+
34
+ RUN echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/15/main/pg_hba.conf
35
+ COPY postgresql.conf /etc/postgresql/15/main/postgresql.conf
36
+ ENV POSTGRES_DATA_DIR=/var/lib/postgresql/data
37
+
38
+ ENV LESS=-XLRi
39
+
40
+ # ======================================================================
41
+ FROM base AS build
42
+
43
+ RUN mkdir /build
44
+ WORKDIR /build
45
+
46
+ RUN apt-get update \
47
+ && DEBIAN_FRONTEND="noninteractive" TZ="UTC" apt-get -y install -y --no-install-recommends \
48
+ make git gcc libssl-dev libreadline-dev zlib1g-dev libzstd-dev liblz4-dev curl \
49
+ postgresql-server-dev-15 ca-certificates pkg-config
50
+
51
+ RUN git clone https://github.com/segasai/q3c.git
52
+ RUN cd q3c \
53
+ && make \
54
+ && make install
55
+
56
+ RUN curl -L https://github.com/ossc-db/pg_hint_plan/archive/refs/tags/REL15_1_5_1.tar.gz \
57
+ -o pg_hint_plan-REL15_1_5_1.tar.gz \
58
+ && tar -xpf pg_hint_plan-REL15_1_5_1.tar.gz \
59
+ && cd pg_hint_plan-REL15_1_5_1 \
60
+ && make \
61
+ && make install
62
+
63
+
64
+ # ENV CARGO_HOME=/opt/rust
65
+ # ENV RUSTUP_HOME=/opt/rust
66
+ # ENV PATH="${PATH}:/opt/rust/bin"
67
+ # RUN mkdir -p /opt/rust \
68
+ # && chown postgres -R /opt/rust
69
+ #
70
+ # ENV PG_PARQUET_VERSION=0.4.0
71
+ # ENV PGRX_VERSION=0.14.1
72
+ # RUN curl https://sh.rustup.rs -sSf | sh -s -- --no-modify-path --profile minimal --default-toolchain stable -y
73
+ # RUN cargo install --locked cargo-pgrx --version ${PGRX_VERSION}
74
+ # RUN cargo pgrx init --pg15 $(which pg_config)
75
+ #
76
+ # RUN mkdir -p ~/.pgrx/data-15 \
77
+ # && echo "shared_preload_libraries = 'pg_parquet'" >> ~/.pgrx/data-15/postgresql.conf
78
+ # RUN cd /opt/rust \
79
+ # && curl -LOJ https://github.com/CrunchyData/pg_parquet/archive/refs/tags/v${PG_PARQUET_VERSION}.tar.gz \
80
+ # && tar -xvzf pg_parquet-${PG_PARQUET_VERSION}.tar.gz \
81
+ # && cd pg_parquet-${PG_PARQUET_VERSION} \
82
+ # && cargo pgrx install --release
83
+
84
+ RUN chown postgres -R /usr/share/postgresql/ \
85
+ && chown postgres -R /usr/lib/postgresql
86
+
87
+
88
+ # ======================================================================
89
+ FROM base AS postgres
90
+
91
+ COPY --from=build /usr/lib/postgresql/15/lib/q3c.so /usr/lib/postgresql/15/lib/q3c.so
92
+ COPY --from=build /usr/lib/postgresql/15/lib/bitcode/q3c /usr/share/postgresql/lib/bitcode/q3c
93
+ COPY --from=build /usr/lib/postgresql/15/lib/bitcode/q3c.index.bc /usr/share/postgresql/lib/bitcode/q3c.index.bc
94
+ COPY --from=build /usr/share/postgresql/15/extension/q3c* /usr/share/postgresql/15/extension/
95
+ COPY --from=build /usr/lib/postgresql/15/lib/pg_hint_plan.so usr/lib/postgresql/15/lib/pg_hint_plan.so
96
+ COPY --from=build /usr/lib/postgresql/15/lib/bitcode/pg_hint_plan /usr/share/postgresql/lib/bitcode/pg_hint_plan
97
+ COPY --from=build /usr/lib/postgresql/15/lib/bitcode/pg_hint_plan.index.bc /usr/share/postgresql/lib/bitcode/pg_hint_plan.index.bc
98
+ COPY --from=build /usr/share/postgresql/15/extension/pg_hint_plan* /usr/share/postgresql/15/extension/
99
+ # COPY --from=build /usr/lib/postgresql/15/lib/pg_parquet.so /usr/lib/postgresql/15/lib/
100
+ # COPY --from=build /usr/share/postgresql/15/extension/pg_parquet* /usr/share/postgresql/15/extension/
101
+
102
+ # Make sure this matches what is in the config file (created just above)
103
+ # (There is some futzing about here to make sure the right permissions are
104
+ # on the file regardless of the permissions as it exists on the machine
105
+ # where the docker image is built. I don't know why a simple ADD
106
+ # followed by CHMOD didn't work.)
107
+ COPY run_postgres.sh /tmp/run_postgres.sh
108
+ RUN cp /tmp/run_postgres.sh /run_postgres.sh && chmod 755 /run_postgres.sh
109
+
110
+ USER postgres
111
+ CMD ["bash", "/run_postgres.sh"]
112
+
113
+ # ======================================================================
114
+
115
+ FROM base AS pgdump
116
+
117
+ RUN mkdir=/home/pgdump
118
+ ENV HOME=/home/pgdump
119
+ ADD run_pgdump.sh /home/pgdump/run_pgdump.sh
120
+
121
+ USER postgres
122
+ ENTRYPOINT [ "/bin/bash", "/home/pgdump/run_pgdump.sh" ]