libxslt-next
Version:
Node.js bindings for libxslt with Node.js 20/22/24 support - Modern fork with updated dependencies
48 lines (32 loc) • 1.91 kB
Markdown
# libxslt Patches
This directory contains patches that are applied to the libxslt submodule during the build process.
## Why Patches?
Instead of modifying the libxslt submodule directly (which is bad practice), we maintain patches that are automatically applied during installation. This approach:
- Keeps the submodule clean and in sync with upstream
- Makes our modifications explicit and documented
- Allows easy updates to newer libxslt versions
- Ensures reproducible builds
- Works well with CI/CD systems
## Current Patches
### 001-fix-xmlHashScanner-signature.patch
**Purpose**: Fixes a function signature compatibility issue in `libxslt/extensions.c`
**Issue**: The `xsltHashScannerModuleFree` function has an incompatible signature with the `xmlHashScanner` function pointer type in newer versions of libxml2.
**Fix**: Changes the third parameter from `xmlChar *` to `const xmlChar *` to match the expected signature.
## How It Works
1. The `scripts/apply-patches.js` script runs during `npm install` (via the `preinstall` hook)
2. It checks if patches have already been applied (via a `.patched` marker file)
3. If not, it applies all patches in order
4. The marker file prevents re-applying patches on subsequent builds
## Adding New Patches
1. Make your changes in the libxslt submodule
2. Generate a patch: `cd deps/libxslt && git diff > ../../patches/XXX-description.patch`
3. Revert the changes in the submodule: `git checkout -- .`
4. Test that the patch applies: `node scripts/apply-patches.js`
5. Document the patch in this README
## Updating libxslt
When updating the libxslt submodule:
1. Update the submodule: `git submodule update --remote deps/libxslt`
2. Remove the `.patched` marker: `rm deps/libxslt/.patched`
3. Test if existing patches still apply: `node scripts/apply-patches.js`
4. Fix any conflicts and update patches as needed
5. Test the build: `npm rebuild`