22
33This guide documents breaking changes between mxmake versions and how to migrate your projects.
44
5- ## Version 1.3 .1 (unreleased)
5+ ## Version 2.0 .1 (unreleased)
66
7- ### Removed: MXENV_UV_GLOBAL setting
7+ ** No breaking changes**
8+
9+ ## Version 2.0.0 (2025-10-24)
10+
11+ ### Dropped: Python 3.9 Support
12+
13+ ** Breaking Change** : Minimum Python version increased from 3.9 to 3.10.
14+
15+ ** Migration** :
16+ - Ensure your system has Python 3.10 or later installed
17+ - If using UV, specify Python 3.10+ in ` UV_PYTHON ` setting:
18+ ``` makefile
19+ UV_PYTHON? =3.10 # or 3.11, 3.12, 3.13, 3.14
20+ `` `
21+ - If using pip, ensure ` PRIMARY_PYTHON` points to Python 3.10+:
22+ ` `` makefile
23+ PRIMARY_PYTHON? =python3.10
24+ ```
25+ - Run ` mxmake update ` to regenerate Makefile with new ` PYTHON_MIN_VERSION ` default
26+
27+ ### Removed: MXENV_UV_GLOBAL Setting
828
929** Breaking Change** : The ` MXENV_UV_GLOBAL ` setting has been removed. UV is now automatically detected.
1030
11- ** Before (1.3.0 and earlier )** :
31+ ** Before (1.x )** :
1232``` makefile
1333PYTHON_PACKAGE_INSTALLER? =uv
1434MXENV_UV_GLOBAL? =true
1535```
1636
17- ** After (1.3.1 +)** :
37+ ** After (2.0 +)** :
1838``` makefile
1939PYTHON_PACKAGE_INSTALLER? =uv
20- UV_PYTHON? =3.14 # Optional: specify Python version for UV
40+ UV_PYTHON? =3.14 # Optional: specify Python version
2141`` `
2242
2343** Migration** :
24- - Remove the ` MXENV_UV_GLOBAL` setting from your Makefile
25- - If you need a specific Python version with UV, add the ` UV_PYTHON` setting
26- - UV will be auto-detected if installed globally, or installed locally in the virtual environment
44+ - Remove ` MXENV_UV_GLOBAL` from your Makefile or preseed configurations
45+ - UV will be automatically detected if installed globally
46+ - To force local UV installation, ensure UV is not in your PATH
47+ - Add ` UV_PYTHON` setting if you need a specific Python version
48+ - Run ` mxmake update` to apply changes
49+
50+ # ## Changed: SOURCES_TARGET Implementation
2751
28- # # Version 1.0a7
52+ ** Critical Fix ** : ` SOURCES_TARGET ` incorrectly used mxdev ' s `-o` (offline) flag instead of `-f` (no fetch).
2953
30- # ## Renamed: npm domain to nodejs
54+ **Impact**: This affects projects using mxdev with source checkouts. The `-o` flag had a bug (fixed in mxdev 5.0).
3155
32- ** Breaking Change** : The ` npm` domain was renamed to ` nodejs` .
56+ **Migration**:
57+ - Update mxdev to version 5.0 or later: `pip install -U mxdev>=5`
58+ - Run `mxmake update` in your project directory to regenerate the Makefile
59+ - The new Makefile will use the correct `-f` flag
60+
61+ ### Added: UV_PYTHON Setting
62+
63+ **New Feature**: Introduced `UV_PYTHON` setting for semantic clarity.
64+
65+ **Purpose**:
66+ - `PRIMARY_PYTHON`: System interpreter path (e.g., `python3`, `/usr/bin/python3.11`)
67+ - `UV_PYTHON`: Python version spec for UV (e.g., `3.14`, `cpython@3.14`)
68+
69+ **Migration** (optional but recommended):
70+ ```makefile
71+ # Old approach (still works)
72+ PYTHON_PACKAGE_INSTALLER?=uv
73+ PRIMARY_PYTHON?=3.14
74+
75+ # New approach (clearer semantics)
76+ PYTHON_PACKAGE_INSTALLER?=uv
77+ UV_PYTHON?=3.14
78+ ```
79+
80+ ## Version 1.3.0 (2025-09-03)
81+
82+ **No breaking changes**
83+
84+ ## Version 1.2.2 (2025-06-30)
85+
86+ **No breaking changes**
87+
88+ ## Version 1.2.1 (2025-06-23)
89+
90+ **No breaking changes**
91+
92+ ## Version 1.2.0 (2025-06-04)
93+
94+ **No breaking changes**
95+
96+ ## Version 1.1.0 (2025-03-20)
97+
98+ **No breaking changes**
99+
100+ ## Version 1.0 (2025-02-11)
101+
102+ **No breaking changes**
103+
104+ ## Version 1.0a8 (2024-10-24)
105+
106+ **No breaking changes**
107+
108+ ## Version 1.0a7 (2024-10-24)
109+
110+ ### Renamed: npm Domain to nodejs
111+
112+ **Breaking Change**: The `npm` domain was renamed to `nodejs` to better reflect its purpose (Node.js tooling, supporting both npm and pnpm).
33113
34114**Before**:
35115```yaml
116+ # preseed.yaml or mx.ini
36117topics:
37118 js:
38119 npm:
39120```
40121
41122**After**:
42123```yaml
124+ # preseed.yaml or mx.ini
43125topics:
44126 js:
45127 nodejs:
46128```
47129
48- ** Migration** : Update your ` mx.ini` or preseed files to use ` nodejs` instead of ` npm` .
130+ **Migration**:
131+ - Update your preseed files to use `nodejs` instead of `npm`
132+ - Run `mxmake update` or `mxmake init` to regenerate Makefile
133+ - The domain now supports both npm and pnpm package managers
49134
50- # # Version 1.0a6
135+ ## Version 1.0a6 (2024-08-02)
51136
52- # ## Dropped: Python 3.8 and 3.9 support
137+ ### Dropped: Python 3.8 Support
53138
54- ** Breaking Change** : Minimum Python version changed from 3.8 to 3.10 .
139+ **Breaking Change**: Minimum Python version increased from 3.8 to 3.9 .
55140
56141**Migration**:
57- - Ensure your project uses Python 3.10 or later
58- - Update ` PYTHON_MIN_VERSION` setting if needed :
142+ - Ensure your project uses Python 3.9 or later
143+ - Update `PYTHON_MIN_VERSION` if you ' ve customized it :
59144 ` ` ` makefile
60- PYTHON_MIN_VERSION? =3.10
145+ PYTHON_MIN_VERSION? =3.9
61146 ` ` `
62147
63- # # Version 1.0a4
148+ ** Note** : This change was superseded by version 2.0.0 which requires Python 3.10+.
149+
150+ # # Version 1.0a5 (2024-06-07)
151+
152+ ** No breaking changes**
64153
65- # ## Changed: Default venv folder
154+ # # Version 1.0a4 (2024-03-12)
155+
156+ # ## Changed: Default venv Folder
66157
67158** Breaking Change** : Default virtual environment folder changed from ` venv` to ` .venv` .
68159
@@ -77,8 +168,17 @@ VENV_FOLDER?=.venv
77168` ` `
78169
79170** Migration** :
80- - If you want to keep using ` venv` , explicitly set ` VENV_FOLDER=venv` in your Makefile
81- - Or switch to ` .venv` and update your ` .gitignore` if needed
171+ - ** Option 1** (Use new default): Delete old ` venv` folder, run ` make install` to create ` .venv`
172+ - ** Option 2** (Keep old folder): Explicitly set ` VENV_FOLDER=venv` in your Makefile
173+
174+ ** Update .gitignore** :
175+ ` ` ` gitignore
176+ # Old
177+ venv/
178+
179+ # New
180+ .venv/
181+ ` ` `
82182
83183# ## Renamed: PYTHON_BIN to PRIMARY_PYTHON
84184
@@ -94,34 +194,123 @@ PYTHON_BIN?=python3
94194PRIMARY_PYTHON? =python3
95195` ` `
96196
97- ** Migration** : Update your Makefile to use ` PRIMARY_PYTHON` instead of ` PYTHON_BIN` .
197+ ** Migration** :
198+ - Run ` mxmake update` to regenerate Makefile with new setting name
199+ - If you have custom scripts referencing ` PYTHON_BIN` , update them to use ` PRIMARY_PYTHON`
98200
99201# ## Removed: MXENV_PATH
100202
101- ** Breaking Change** : ` MXENV_PATH` has been removed. Use ` $( MXENV_PYTHON) ` directly.
203+ ** Breaking Change** : ` MXENV_PATH` variable has been removed. Use ` $( MXENV_PYTHON) ` directly.
204+
205+ ** Before** :
206+ ` ` ` makefile
207+ $( MXENV_PATH) pip install something
208+ $( MXENV_PATH) pytest tests/
209+ ` ` `
210+
211+ ** After** :
212+ ` ` ` makefile
213+ $( MXENV_PYTHON) -m pip install something
214+ $( MXENV_PYTHON) -m pytest tests/
215+ ` ` `
216+
217+ ** Migration** :
218+ - Search your custom Makefile targets for ` MXENV_PATH`
219+ - Replace with ` $( MXENV_PYTHON) -m < command> `
220+ - Common replacements:
221+ - ` $( MXENV_PATH) pip` → ` $( MXENV_PYTHON) -m pip`
222+ - ` $( MXENV_PATH) pytest` → ` $( MXENV_PYTHON) -m pytest`
223+ - ` $( MXENV_PATH) black` → ` $( MXENV_PYTHON) -m black`
102224
103- ** Migration** : If you have custom targets using ` MXENV_PATH` , replace:
104- - ` $( MXENV_PATH) pip` → ` $( MXENV_PYTHON) -m pip`
105- - ` $( MXENV_PATH) pytest` → ` $( MXENV_PYTHON) -m pytest`
225+ # # Version 1.0a3 (2024-02-06)
106226
107- # # Version 1.0a1
227+ ** No breaking changes ** (added typecheck target, CI config generation, ruff domain)
108228
109- # ## Changed: Terminology (Semantic overhaul )
229+ # # Version 1.0a2 (2023-07-07 )
110230
111- ** Breaking Change** : Terminology changes in custom domain development:
231+ ** No breaking changes** (fixes and pip.conf support)
232+
233+ # # Version 1.0a1 (2023-05-05)
234+
235+ # ## Semantic Overhaul: Terminology Changes
236+
237+ ** Breaking Change** : Major terminology changes in custom domain development.
238+
239+ ** Changes** :
112240- " Domains" are now called " Topics"
113241- " Makefile" is now called " Domain"
242+ - ` _SENTINEL` variables renamed to ` _TARGET`
243+ - ` .sentinels` folder renamed to ` .mxmake-sentinels`
114244
115- ** Migration** :
116- - This only affects custom domain development and plugin authoring
117- - Update your documentation and code comments accordingly
118- - The user-facing API remains the same
245+ ** Impact** : Only affects custom domain/plugin authors, not regular users.
119246
120- # ## Renamed: _SENTINEL to _TARGET in domains
247+ ** Migration** (for plugin developers):
248+ - Update custom domain files to use new terminology
249+ - Rename ` * _SENTINEL` variables to ` * _TARGET` :
250+ ` ` ` makefile
251+ # Before
252+ MYDOM_SENTINEL? =.sentinels/mydom
253+
254+ # After
255+ MYDOM_TARGET? =.mxmake-sentinels/mydom
256+ ` ` `
257+
258+ # ## Renamed: Multiple Domains
259+
260+ ** Breaking Changes** : Several domains renamed for clarity.
121261
122- ** Breaking Change** : Internal variable naming in custom domains.
262+ | Old Name | New Name |
263+ | ----------| ----------|
264+ | ` install` | ` packages` |
265+ | ` files` | ` mxfiles` |
266+ | ` venv` | ` mxenv` |
267+ | ` docs` | ` sphinx` |
123268
124269** Migration** :
125- - This only affects custom domain development
126- - If you wrote custom domains, rename ` * _SENTINEL` variables to ` * _TARGET`
127- - Example: ` MYDOM_SENTINEL` → ` MYDOM_TARGET`
270+ - Run ` mxmake init` to regenerate Makefile with new domain names
271+ - Update preseed files if using old domain names
272+
273+ # # Version 0.1 (2022-05-19)
274+
275+ Initial release - no migration needed.
276+
277+ ---
278+
279+ # # General Migration Tips
280+
281+ # ## Before Upgrading
282+
283+ 1. ** Read Release Notes** : Check [CHANGES.md](https://github.com/mxstack/mxmake/blob/main/CHANGES.md) for your target version
284+ 2. ** Backup** : Commit your current Makefile to version control
285+ 3. ** Test** : If possible, test the upgrade in a separate branch
286+
287+ # ## Upgrade Process
288+
289+ 1. ** Upgrade mxmake** :
290+ ` ` ` bash
291+ pip install -U mxmake
292+ # or with UV:
293+ uv pip install -U mxmake
294+ ` ` `
295+
296+ 2. ** Update Makefile** :
297+ ` ` ` bash
298+ mxmake update
299+ ` ` `
300+
301+ 3. ** Review Changes** : Check the diff to ensure settings are preserved
302+ 4. ** Test** : Run ` make install` and ` make test` to verify functionality
303+
304+ # ## Rolling Back
305+
306+ If you encounter issues:
307+ ` ` ` bash
308+ git checkout Makefile # Restore previous version
309+ pip install mxmake==<previous-version> # Downgrade mxmake
310+ ` ` `
311+
312+ # ## Getting Help
313+
314+ - ** Documentation** : https://mxmake.readthedocs.io
315+ - ** Issues** : https://github.com/mxstack/mxmake/issues
316+ - ** Changelog** : https://github.com/mxstack/mxmake/blob/main/CHANGES.md
0 commit comments