Skip to content

Commit cbc63c9

Browse files
committed
Release v1.0.2: Remove macOS extended attributes from release archives
- Added COPYFILE_DISABLE=1 to prevent macOS extended attributes in tar files - Added cleanup steps to remove ._* and .DS_Store files before archiving - Eliminates extraction warnings on Linux/Ubuntu systems - Reduces archive sizes by removing unnecessary metadata - Updated both manual release script and GitHub Actions workflow - Updated script version numbers to 1.0.2
1 parent 92e0abb commit cbc63c9

File tree

7 files changed

+102
-8
lines changed

7 files changed

+102
-8
lines changed

.github/workflows/release.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,14 +57,19 @@ jobs:
5757
echo "# Log files will be created here during script execution" > "release-${{ matrix.platform.name }}/logs/.gitkeep"
5858
echo "# JAR backup files will be created here during script execution" > "release-${{ matrix.platform.name }}/backups/.gitkeep"
5959
60+
# Remove macOS extended attribute files if they exist
61+
find "release-${{ matrix.platform.name }}" -name "._*" -delete 2>/dev/null || true
62+
find "release-${{ matrix.platform.name }}" -name ".DS_Store" -delete 2>/dev/null || true
63+
6064
# Make main script executable
6165
chmod +x "release-${{ matrix.platform.name }}/${{ matrix.platform.script }}"
6266
6367
# Create archive
6468
if [ "${{ matrix.platform.name }}" = "windows" ]; then
6569
cd "release-${{ matrix.platform.name }}" && zip -r "../${{ matrix.platform.archive_name }}.zip" .
6670
else
67-
tar -czf "${{ matrix.platform.archive_name }}.tar.gz" -C "release-${{ matrix.platform.name }}" .
71+
# Use COPYFILE_DISABLE to prevent macOS extended attributes in tar
72+
COPYFILE_DISABLE=1 tar -czf "${{ matrix.platform.archive_name }}.tar.gz" -C "release-${{ matrix.platform.name }}" .
6873
fi
6974
7075
- name: Calculate checksums

release/RELEASE_NOTES_v1.0.2.md

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
# FileMaker Apache Commons JAR Replacer v1.0.2
2+
3+
## Release Type: Patch Release
4+
5+
## Summary
6+
This patch release eliminates macOS extended attributes and metadata files from release archives, preventing extraction warnings on Linux/Ubuntu systems.
7+
8+
## Bug Fixes
9+
10+
### 🐛 Removed macOS Extended Attributes from Release Archives
11+
- **Issue**: Linux/Ubuntu users saw numerous warnings when extracting tar.gz files: `tar: Ignoring unknown extended header keyword 'LIBARCHIVE.xattr.com.apple.provenance'`
12+
- **Root Cause**: macOS tar was including extended attributes (._* files) and metadata in archives
13+
- **Fix**: Added `COPYFILE_DISABLE=1` environment variable to tar commands and cleanup of macOS-specific files
14+
- **Impact**: Clean extraction on all platforms without warnings or unwanted metadata files
15+
16+
## Technical Changes
17+
18+
### Release Packaging Improvements
19+
- Added `COPYFILE_DISABLE=1` to all tar commands in both manual release script and GitHub Actions workflow
20+
- Added cleanup steps to remove `._*` files and `.DS_Store` files before archive creation
21+
- Reduced archive sizes by eliminating unnecessary macOS metadata
22+
- Improved cross-platform compatibility
23+
24+
### Files Modified
25+
- `release/prepare-release.sh`: Added COPYFILE_DISABLE and cleanup steps
26+
- `.github/workflows/release.yml`: Added COPYFILE_DISABLE and cleanup steps for automated releases
27+
28+
## User Experience Improvements
29+
- **Clean Extraction**: No more warning messages when extracting on Linux/Ubuntu
30+
- **Smaller Archives**: Reduced file sizes due to removal of unnecessary metadata
31+
- **Cross-Platform Consistency**: Archives behave identically across all platforms
32+
33+
## Compatibility
34+
- **Backward Compatible**: Yes
35+
- **Breaking Changes**: None
36+
- **Platform Support**: macOS 10.14+, Ubuntu 18.04+, Windows 10+
37+
38+
## Validation
39+
- ✅ Archives extract cleanly on Linux without warnings
40+
- ✅ No `._*` or `.DS_Store` files in release packages
41+
- ✅ All required scripts and modules present and functional
42+
- ✅ Reduced archive sizes confirm metadata removal
43+
44+
## Downloads by Platform
45+
46+
### macOS
47+
- **File**: `filemaker-jar-replacer-macos.tar.gz`
48+
- **Requirements**: macOS 10.14+, bash, administrator privileges
49+
- **Installation**: Extract and run `./replace-filemaker-jars-macos.sh`
50+
51+
### Ubuntu/Linux
52+
- **File**: `filemaker-jar-replacer-ubuntu.tar.gz`
53+
- **Requirements**: Ubuntu 18.04+, bash, curl, sudo access
54+
- **Installation**: Extract and run `./replace-filemaker-jars-ubuntu.sh`
55+
56+
### Windows
57+
- **File**: `filemaker-jar-replacer-windows.zip`
58+
- **Requirements**: Windows 10+, PowerShell 5.1+, Administrator privileges
59+
- **Installation**: Extract and run `.\replace-filemaker-jars-windows.ps1`
60+
61+
## Security
62+
- All downloads include SHA256 checksums for verification
63+
- No security-related changes in this patch release
64+
65+
## Documentation
66+
- **CVE Details**: https://nvd.nist.gov/vuln/detail/CVE-2025-46295
67+
- **Claris Security Advisory**: https://support.claris.com/s/answerview?anum=000049055&language=en_US
68+
- **Manual JAR Replacement Guide**: https://support.claris.com/s/answerview?anum=000049059&language=en_US
69+
70+
## Upgrade Instructions
71+
If you experienced extraction warnings with v1.0.1:
72+
1. Download the new v1.0.2 release for your platform
73+
2. Extract the archive - no warnings should appear
74+
3. Run the script normally
75+
76+
## Next Steps
77+
This patch release provides a cleaner extraction experience across all platforms. The functionality remains identical to v1.0.1.

release/VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.0.1
1+
1.0.2

release/prepare-release.sh

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
set -e
55

6-
VERSION="1.0.1"
6+
VERSION="1.0.2"
77
RELEASE_NAME="FileMaker Apache Commons JAR Replacer v${VERSION}"
88
RELEASE_TAG="v${VERSION}"
99

@@ -97,9 +97,13 @@ mkdir -p "$TEMP_DIR/logs" "$TEMP_DIR/backups"
9797
echo "# Log files will be created here during script execution" > "$TEMP_DIR/logs/.gitkeep"
9898
echo "# JAR backup files will be created here during script execution" > "$TEMP_DIR/backups/.gitkeep"
9999

100+
# Remove macOS extended attribute files if they exist
101+
find "$TEMP_DIR" -name "._*" -delete 2>/dev/null || true
102+
find "$TEMP_DIR" -name ".DS_Store" -delete 2>/dev/null || true
103+
100104
chmod +x "$TEMP_DIR/replace-filemaker-jars-macos.sh"
101105
cd /tmp
102-
tar -czf "${ARCHIVE_NAME}.tar.gz" -C "release-macos" .
106+
COPYFILE_DISABLE=1 tar -czf "${ARCHIVE_NAME}.tar.gz" -C "release-macos" .
103107
sha256sum "${ARCHIVE_NAME}.tar.gz" > "${ARCHIVE_NAME}.tar.gz.sha256"
104108
echo " ✅ Created ${ARCHIVE_NAME}.tar.gz"
105109
rm -rf "release-macos"
@@ -122,9 +126,13 @@ mkdir -p "$TEMP_DIR/logs" "$TEMP_DIR/backups"
122126
echo "# Log files will be created here during script execution" > "$TEMP_DIR/logs/.gitkeep"
123127
echo "# JAR backup files will be created here during script execution" > "$TEMP_DIR/backups/.gitkeep"
124128

129+
# Remove macOS extended attribute files if they exist
130+
find "$TEMP_DIR" -name "._*" -delete 2>/dev/null || true
131+
find "$TEMP_DIR" -name ".DS_Store" -delete 2>/dev/null || true
132+
125133
chmod +x "$TEMP_DIR/replace-filemaker-jars-ubuntu.sh"
126134
cd /tmp
127-
tar -czf "${ARCHIVE_NAME}.tar.gz" -C "release-ubuntu" .
135+
COPYFILE_DISABLE=1 tar -czf "${ARCHIVE_NAME}.tar.gz" -C "release-ubuntu" .
128136
sha256sum "${ARCHIVE_NAME}.tar.gz" > "${ARCHIVE_NAME}.tar.gz.sha256"
129137
echo " ✅ Created ${ARCHIVE_NAME}.tar.gz"
130138
rm -rf "release-ubuntu"
@@ -147,6 +155,10 @@ mkdir -p "$TEMP_DIR/logs" "$TEMP_DIR/backups"
147155
echo "# Log files will be created here during script execution" > "$TEMP_DIR/logs/.gitkeep"
148156
echo "# JAR backup files will be created here during script execution" > "$TEMP_DIR/backups/.gitkeep"
149157

158+
# Remove macOS extended attribute files if they exist
159+
find "$TEMP_DIR" -name "._*" -delete 2>/dev/null || true
160+
find "$TEMP_DIR" -name ".DS_Store" -delete 2>/dev/null || true
161+
150162
cd /tmp
151163
cd "release-windows" && zip -r "../${ARCHIVE_NAME}.zip" . > /dev/null
152164
cd ..

replace-filemaker-jars-macos.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
# Manual JAR Replacement Guide: https://support.claris.com/s/answerview?anum=000049059&language=en_US
4343

4444
# Script configuration
45-
readonly SCRIPT_VERSION="1.0.1"
45+
readonly SCRIPT_VERSION="1.0.2"
4646
readonly COMMONS_TEXT_VERSION="1.11.0"
4747
readonly COMMONS_LANG_VERSION="3.18.0"
4848
readonly DEFAULT_JAR_BASE_URL="https://repo1.maven.org/maven2/org/apache/commons"

replace-filemaker-jars-ubuntu.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
set -euo pipefail
77

88
# Script metadata
9-
readonly SCRIPT_VERSION="1.0.1"
9+
readonly SCRIPT_VERSION="1.0.2"
1010
readonly SCRIPT_NAME="FileMaker Apache Commons JAR Replacer (Ubuntu)"
1111
readonly CVE_ID="CVE-2025-46295"
1212
readonly COMMONS_TEXT_VERSION="1.11.0"

replace-filemaker-jars-windows.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ param(
8787
)
8888

8989
# Script configuration
90-
$script:ScriptVersion = "1.0.1"
90+
$script:ScriptVersion = "1.0.2"
9191
$script:CommonsTextVersion = "1.11.0"
9292
$script:CommonsLangVersion = "3.18.0"
9393
$script:DefaultJarBaseUrl = "https://repo1.maven.org/maven2/org/apache/commons"

0 commit comments

Comments
 (0)