Skip to content

Commit f92ce2b

Browse files
Sync gramps@master with upstream/gramps-project (2026-07-07)
2 parents aef9f35 + a32b463 commit f92ce2b

301 files changed

Lines changed: 386951 additions & 185657 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/gramps-ci.yml

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,11 @@ jobs:
6060
python3 -m pip install virtualenv
6161
- name: Install addons
6262
run: |
63-
mkdir -p ~/.local/share/gramps/gramps60/plugins/
64-
wget https://github.com/gramps-project/addons/raw/master/gramps60/download/CliMerge.addon.tgz
65-
tar -C ~/.local/share/gramps/gramps60/plugins/ -xzf CliMerge.addon.tgz
66-
wget https://github.com/gramps-project/addons/raw/master/gramps60/download/ExportRaw.addon.tgz
67-
tar -C ~/.local/share/gramps/gramps60/plugins/ -xzf ExportRaw.addon.tgz
63+
mkdir -p ~/.local/share/gramps/gramps61/plugins/
64+
wget https://github.com/gramps-project/addons/raw/master/gramps61/download/CliMerge.addon.tgz
65+
tar -C ~/.local/share/gramps/gramps61/plugins/ -xzf CliMerge.addon.tgz
66+
wget https://github.com/gramps-project/addons/raw/master/gramps61/download/ExportRaw.addon.tgz
67+
tar -C ~/.local/share/gramps/gramps61/plugins/ -xzf ExportRaw.addon.tgz
6868
- name: Build
6969
run: |
7070
python3 -m build --wheel
@@ -77,3 +77,28 @@ jobs:
7777
export GDK_BACKEND=-
7878
export GRAMPS_RESOURCES=build/share
7979
python3 -m unittest discover -p "*_test.py"
80+
- name: POTFILES check
81+
run: |
82+
cd po
83+
intltool-update -m
84+
if [ -f "missing" ]; then
85+
echo "ERROR - A new file is not listed in either POTFILES.in or POTFILES.skip";
86+
exit 1;
87+
fi
88+
89+
pypi-installer:
90+
name: PyPI installer tests (${{ matrix.os }})
91+
runs-on: ${{ matrix.os }}
92+
strategy:
93+
fail-fast: false
94+
matrix:
95+
os: [ubuntu-22.04, windows-latest, macos-latest]
96+
steps:
97+
- uses: actions/checkout@v6
98+
- uses: actions/setup-python@v5
99+
with:
100+
python-version: "3.12"
101+
- name: Create minimal resource directory
102+
run: python -c "import os, shutil; os.makedirs('build/share/gramps', exist_ok=True); shutil.copy('data/authors.xml', 'build/share/gramps/authors.xml')"
103+
- name: Run PyPI installer tests
104+
run: python -m unittest gramps.gen.utils.test.pypi_test -v

.github/workflows/windows-aio-pyinstaller.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,10 @@ jobs:
4949
run: |
5050
cd aio-pyinstaller
5151
./build.sh ${{ inputs.cleanup }} ${{ inputs.build-number }}
52-
- uses: actions/upload-artifact@v4
52+
- uses: actions/upload-artifact@v6
5353
with:
5454
name: GrampsAIO-PyInstaller
5555
path: D:\a\gramps\gramps\aio-pyinstaller\dist\grampsaio\src\GrampsAIO-*.exe
56+
if-no-files-found: error
57+
compression-level: 0 # no compression
5658
retention-days: 7

.github/workflows/windows-aio.yml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,22 @@ jobs:
4343
- uses: actions/checkout@v6
4444
- uses: msys2/setup-msys2@v2
4545
with:
46-
msystem: MINGW64
46+
msystem: UCRT64
4747
update: true
4848
- name: Build
4949
run: |
5050
cd aio
5151
./build.sh ${{ inputs.cleanup }} ${{ inputs.build-number }}
52+
- name: Run unit test suite
53+
if: ${{ ! inputs.cleanup }} # can only run unit tests if python venv was preserved
54+
run: |
55+
export GRAMPS_RESOURCES=build/share
56+
source /tmp/grampspythonenv/bin/activate
57+
python3 -m unittest discover -p "*_test.py"
5258
- uses: actions/upload-artifact@v6
5359
with:
5460
name: GrampsAIO
55-
path: D:\a\gramps\gramps\aio\mingw64\src\GrampsAIO-*.exe
61+
path: D:\a\gramps\gramps\aio\ucrt64\src\GrampsAIO-*.exe
62+
if-no-files-found: error
63+
compression-level: 0 # no compression
5664
retention-days: 7

.gitignore

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,8 @@ docs/_build/
1111

1212
# Gramps AIO build artifacts
1313
aio/grampsaio64.nsi
14-
aio/mingw-w64-x86_64-db-*.pkg.tar.xz
15-
aio/mingw64
16-
gramps.egg-info
14+
aio/ucrt64
15+
*.egg-info
1716

1817
# Editing
1918
tags
@@ -36,4 +35,7 @@ ehthumbs.db
3635
.venv*/
3736

3837
# coverage
39-
.coverage
38+
.coverage
39+
40+
# Visual Studio Code
41+
.vscode/*

ChangeLog

Lines changed: 676 additions & 253 deletions
Large diffs are not rendered by default.

NEWS

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,70 @@
1+
2026-04-21
2+
Version 6.1.0-beta1
3+
* Update translations: da, es, fr, hr, nl, pl, pt_PT, sk, sv, zh_CN.
4+
* Improve Windows AIO `README.md`.
5+
* Skip bsddb tests on Windows.
6+
* Run unit test suite in AIO pipeline.
7+
* Call `self.close()` for ":memory:" DBs to avoid warnings.
8+
* Close database in `tearDownClass` method.
9+
* Avoid hard-coded paths and close the db at the end of the test.
10+
* Refactor media path tests to ensure environment restoration and database
11+
closure.
12+
* Skip tests which are locale dependent when the correct locale is not selected.
13+
* When running unittests make the environment invariant of the current users
14+
configuration.
15+
* Fix some translated strings.
16+
* Remove mingw64 entry from gitignore.
17+
* Fix local Windows AIO build.
18+
* Migrate Windows AIO to MSYS2 UCRT64 environment. Fixes #14149.
19+
* Replace hexlify with `getSortKey()` bytes, drop binascii import. Bug #10077.
20+
* Add config to allow ignore XML media flag.
21+
* Implement FamilySearch-Gramps Integration.
22+
* Pass an object rather than a handle to the note editor callback.
23+
Fixes #13702, #13884.
24+
* Add a HasNoteTag filter rule.
25+
* Add HasNoteType filters for Media and Repository objects.
26+
* Add a "References" tab to the family editor dialog. Fixes #13673.
27+
* Avoid opening a Citation when dragging or selecting an existing one.
28+
* Improve birth/death estimation.
29+
* Update the `INSTALL` file.
30+
* Add `tearDownClass` method to cleaup after unit test.
31+
* Fix ProbablyAlive ignoring fallback when birth event has no year.
32+
* Add non-sharable notes to media. Fixes #13922.
33+
* Add a favorites sidebar and all persistent sidebar.
34+
* Narrative web: Add an option to allow internet indexing.
35+
* Allow invalid dates in the relationship graph. Fixes #13672.
36+
* Calendar enhancements. Fixes #13754.
37+
* Add an Address option to the Individual Complete Report. Implements #14170.
38+
* Remove duplicated name formats.
39+
* Small one-line fixes mainly to comments and log messages.
40+
* Change the default gramps IDs to %05d.
41+
* Tidy up the add_row method in the PlaceDetails gramplet.
42+
* Move embedded URLs out of translated strings.
43+
* Add `AGENTS.md` with contributor and agent guidelines.
44+
* Update minimum python version. Python 3.9 reached EOL in October 2025.
45+
* Remove out of date comments.
46+
* Maintain compatibility with the directories used by Gramps 6.0.
47+
* Fix home directory location on Windows.
48+
* When writing a gramps XML file use the NS URI not the homepage URL.
49+
* Update http://developers.gramps-project.org.
50+
* Use https instead of http.
51+
* Fix spelling mistake in comment.
52+
* Fix code formatting.
53+
* Convert Windows AIO to use the new build process.
54+
* Provide a fallback for locale module without gettext support.
55+
* Decouple the core library code from GObject introspection.
56+
* Fix license issues in the `pyproject.toml` file.
57+
* Fix test path.
58+
* Dev version correctly reports the SHA of the local HEAD commit.
59+
* Rename apply to apply_to_one to reflect global change in v6.0.
60+
* Code improvements.
61+
* Unrelated formatting fixes.
62+
* Fix test directory location in unit tests.
63+
* Convert to using a `pyproject.toml` based build system.
64+
* Add a configuration option for the length of note previews.
65+
* Add mypy configuration.
66+
* Add `py.typed` to indicate the code base is (becoming) typed.
67+
168
2026-04-09
269
Version 6.0.8
370
* Update translations: cs, de_AT, en_GB, fa, fi, fr, ga, he, hr, it, mn, nl, pl,

aio/README.md

Lines changed: 84 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,101 @@
11
The files in this directory are used to build the Gramps Windows AIO (All In One) installer.
22

3-
To build AIO for the master branch :
3+
# Build AIO for the master branch
44

55
1. Install MSYS2
6-
* Download MSYS2 from <https://www.msys2.org/> .
7-
* Install with default options.
8-
* From the Start menu, run "MSYS2 MINGW64"
9-
* Upgrade system : ` pacman -Syuu --noconfirm ` (twice if the first run closes msys2).
6+
1. Download MSYS2 from <https://www.msys2.org/>.
7+
2. Install with the default options.
8+
3. From the Start menu, run "MSYS2 UCRT64".
9+
4. Upgrade system
10+
11+
```bash
12+
pacman -Syuu --noconfirm
13+
```
14+
Run this command a second time, if the first run automatically closes MSYS2.
1015

1116
2. Install Git, if not already installed
12-
```
13-
pacman -S git --noconfirm
14-
```
17+
18+
```bash
19+
pacman -S git --noconfirm
20+
```
1521

1622
3. Download Gramps sources from github :
1723

18-
```
19-
git clone https://github.com/gramps-project/gramps.git
20-
```
24+
```bash
25+
git clone https://github.com/gramps-project/gramps.git
26+
```
2127

2228
4. Build AIO :
2329

24-
```
25-
cd gramps/aio
26-
./build.sh
27-
```
30+
```bash
31+
cd gramps/aio
32+
./build.sh
33+
```
2834
To capture the full output of the build, use `./build.sh >& build_log.txt`
2935

30-
The resulting AIO installer is in `gramps/aio/mingw64/src/GrampsAIO-[appversion]-[appbuild]-[hash]_win64.exe`
36+
The resulting AIO installer is in the directory `gramps/aio/ucrt64/src/GrampsAIO-[appversion]-[appbuild]-[hash]_win64.exe`
3137

3238
The python virtual environment created during build (`c:\msys64\tmp\grampspythonenv\bin\python.exe` by default) can then be configured in Visual Studio Code and used to debug etc.
3339

34-
To delete the python virtual environment at the end of the build, call ```./build.sh true```. This can be useful when testing the build script.
40+
To delete the python virtual environment at the end of the build, call ```./build.sh true```. This can be useful when testing the build script.
41+
42+
# Useful Tips
43+
Tips for developing Gramps on Windows with Visual Studio code.
44+
45+
All tips assume that you have built AIO. All commands should be run from the root directory of the Gramps source tree, unless stated otherwise.
46+
47+
1. Add an MSYS2 terminal option to Visual Studio Code
48+
49+
This allows you to create an MSYS2 terminal within VSCode
50+
51+
1. In Visual Studio Code, press Ctrl+Shift+P.
52+
2. Search for Preferences: Open Settings (JSON) and select it.
53+
3. Add the following text
54+
```json
55+
"terminal.integrated.profiles.windows": {
56+
"MSYS2 UCRT64": {
57+
"path": "C:\\msys64\\usr\\bin\\bash.exe",
58+
"args": [
59+
"--login",
60+
"-i"
61+
],
62+
"env": {
63+
"MSYSTEM": "URCT64",
64+
"CHERE_INVOKING": "1"
65+
}
66+
}
67+
}
68+
```
69+
Note: If the `terminal.integrated.profiles.windows` attribute already exists, you will need to manually merge the above entry.
70+
2. Activate python
71+
72+
Gramps requires several python packages to run. The easiest way to ge the correct configuration is to reuse the python venv created when building AIO. To activate the python venv created during the AIO build process, run
73+
74+
```bash
75+
source /tmp/grampspythonenv/bin/activate
76+
```
77+
78+
Tip: You can usually build AIO once and use this venv repeatedly. There is no need to build every time you change the code. This does not apply if you switch between gramps versions e.g. master to gramps60 or are changing gramps dependencies.
79+
3. Run `mypy` locally
80+
1. Install mypy and type-requests: `python3 -m pip install mypy types-requests`
81+
2. Run mypy: `mypy`
82+
4. Run `black` locally
83+
1. Install black to check all files: `python3 -m pip install black`
84+
2. Run black to _check_ files: `black . --check`
85+
3. Run black to _fix_ files: `black .`
86+
5. Run unit tests locally
87+
1. Run all unit tests
88+
89+
```bash
90+
LANGUAGE= LANG=en_US.utf-8 GRAMPS_RESOURCES=. python -m unittest discover -p '*_test.py'
91+
```
92+
2. Run an individual unit test
93+
94+
In this example, only the `gramps.plugins.test.reports_test.TestDynamic` tests are run
95+
96+
```bash
97+
LANGUAGE= LANG=en_US.utf-8 GRAMPS_RESOURCES=. python -m unittest gramps.plugins.test.reports_test.TestDynamic
98+
```
99+
100+
Note: a small number of unit tests are skipped when run on Windows
101+

0 commit comments

Comments
 (0)