Skip to content

Commit a242058

Browse files
committed
Add dynamic wheel size reporting and fix artifact names
- Extract and analyze wheel contents to calculate actual sizes - Report: wheel size (compressed), JRE size, JARs size, installed size - Each platform shows real measured values, not estimates - Fix artifact names: replace / with - in all artifact uploads
1 parent b57ed77 commit a242058

3 files changed

Lines changed: 101 additions & 5 deletions

File tree

.github/workflows/release-python-packages.yml

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,64 @@ jobs:
155155
exit 1
156156
fi
157157
158+
# Report wheel sizes with actual component breakdown
159+
echo "" >> $GITHUB_STEP_SUMMARY
160+
echo "## 📦 Built Wheels" >> $GITHUB_STEP_SUMMARY
161+
echo "" >> $GITHUB_STEP_SUMMARY
162+
echo "| Platform | Wheel Size | JRE Size | JARs Size | Installed Size |" >> $GITHUB_STEP_SUMMARY
163+
echo "|----------|------------|----------|-----------|----------------|" >> $GITHUB_STEP_SUMMARY
164+
165+
for WHEEL_FILE in dist/*.whl; do
166+
WHEEL_NAME=$(basename "$WHEEL_FILE")
167+
WHEEL_SIZE_BYTES=$(stat -c%s "$WHEEL_FILE")
168+
WHEEL_SIZE_MB=$(echo "scale=1; $WHEEL_SIZE_BYTES / 1024 / 1024" | bc)
169+
170+
# Extract platform from filename
171+
if [[ "$WHEEL_NAME" == *"manylinux"*"x86_64"* ]]; then
172+
PLATFORM="linux/amd64"
173+
elif [[ "$WHEEL_NAME" == *"manylinux"*"aarch64"* ]]; then
174+
PLATFORM="linux/arm64"
175+
elif [[ "$WHEEL_NAME" == *"macosx"*"x86_64"* ]]; then
176+
PLATFORM="darwin/amd64"
177+
elif [[ "$WHEEL_NAME" == *"macosx"*"arm64"* ]]; then
178+
PLATFORM="darwin/arm64"
179+
elif [[ "$WHEEL_NAME" == *"win_amd64"* ]]; then
180+
PLATFORM="windows/amd64"
181+
else
182+
PLATFORM="unknown"
183+
fi
184+
185+
# Analyze wheel contents
186+
TEMP_DIR=$(mktemp -d)
187+
unzip -q "$WHEEL_FILE" -d "$TEMP_DIR"
188+
189+
# Calculate component sizes
190+
if [ -d "$TEMP_DIR"/arcadedb/jre ]; then
191+
JRE_SIZE_BYTES=$(du -sb "$TEMP_DIR"/arcadedb/jre | cut -f1)
192+
JRE_SIZE_MB=$(echo "scale=1; $JRE_SIZE_BYTES / 1024 / 1024" | bc)
193+
else
194+
JRE_SIZE_MB="N/A"
195+
fi
196+
197+
JAR_SIZE_BYTES=$(find "$TEMP_DIR" -name "*.jar" -exec du -cb {} + 2>/dev/null | tail -1 | cut -f1)
198+
if [ -n "$JAR_SIZE_BYTES" ] && [ "$JAR_SIZE_BYTES" != "0" ]; then
199+
JAR_SIZE_MB=$(echo "scale=1; $JAR_SIZE_BYTES / 1024 / 1024" | bc)
200+
else
201+
JAR_SIZE_MB="N/A"
202+
fi
203+
204+
INSTALLED_SIZE_BYTES=$(du -sb "$TEMP_DIR" | cut -f1)
205+
INSTALLED_SIZE_MB=$(echo "scale=0; $INSTALLED_SIZE_BYTES / 1024 / 1024" | bc)
206+
207+
rm -rf "$TEMP_DIR"
208+
209+
echo "| $PLATFORM | ${WHEEL_SIZE_MB}M | ${JRE_SIZE_MB}M | ${JAR_SIZE_MB}M | ~${INSTALLED_SIZE_MB}M |" >> $GITHUB_STEP_SUMMARY
210+
done
211+
212+
echo "" >> $GITHUB_STEP_SUMMARY
213+
echo "**Note**: Sizes are uncompressed except for Wheel Size (compressed)" >> $GITHUB_STEP_SUMMARY
214+
echo "" >> $GITHUB_STEP_SUMMARY
215+
158216
- name: Verify wheel versions
159217
run: |
160218
for WHEEL_FILE in dist/*.whl; do

.github/workflows/test-python-bindings.yml

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -117,10 +117,48 @@ jobs:
117117
echo "| ❌ Failed | ${{ steps.pytest.outputs.failed || 'N/A' }} |" >> $GITHUB_STEP_SUMMARY
118118
echo "" >> $GITHUB_STEP_SUMMARY
119119
120-
echo "### Package Info:" >> $GITHUB_STEP_SUMMARY
120+
echo "### 📦 Package Info:" >> $GITHUB_STEP_SUMMARY
121121
echo "" >> $GITHUB_STEP_SUMMARY
122-
echo "- **Package**: arcadedb-embedded (~160MB)" >> $GITHUB_STEP_SUMMARY
123-
echo "- **JRE**: Bundled (no Java installation required)" >> $GITHUB_STEP_SUMMARY
122+
123+
# Get wheel size and analyze contents
124+
WHEEL_FILE=$(ls dist/*.whl 2>/dev/null | head -n1)
125+
if [ -n "$WHEEL_FILE" ]; then
126+
WHEEL_SIZE_BYTES=$(stat -c%s "$WHEEL_FILE" 2>/dev/null || stat -f%z "$WHEEL_FILE" 2>/dev/null)
127+
WHEEL_SIZE_MB=$(echo "scale=1; $WHEEL_SIZE_BYTES / 1024 / 1024" | bc)
128+
129+
# Unzip and analyze components (wheel is a zip file)
130+
TEMP_DIR=$(mktemp -d)
131+
unzip -q "$WHEEL_FILE" -d "$TEMP_DIR"
132+
133+
# Calculate JRE size (in jre/ directory)
134+
if [ -d "$TEMP_DIR"/arcadedb/jre ]; then
135+
JRE_SIZE_BYTES=$(du -sb "$TEMP_DIR"/arcadedb/jre 2>/dev/null | cut -f1)
136+
JRE_SIZE_MB=$(echo "scale=1; $JRE_SIZE_BYTES / 1024 / 1024" | bc)
137+
else
138+
JRE_SIZE_MB="N/A"
139+
fi
140+
141+
# Calculate JAR size (*.jar files)
142+
JAR_SIZE_BYTES=$(find "$TEMP_DIR" -name "*.jar" -exec du -cb {} + 2>/dev/null | tail -1 | cut -f1)
143+
if [ -n "$JAR_SIZE_BYTES" ] && [ "$JAR_SIZE_BYTES" != "0" ]; then
144+
JAR_SIZE_MB=$(echo "scale=1; $JAR_SIZE_BYTES / 1024 / 1024" | bc)
145+
else
146+
JAR_SIZE_MB="N/A"
147+
fi
148+
149+
# Calculate installed size (total uncompressed)
150+
INSTALLED_SIZE_BYTES=$(du -sb "$TEMP_DIR" 2>/dev/null | cut -f1)
151+
INSTALLED_SIZE_MB=$(echo "scale=0; $INSTALLED_SIZE_BYTES / 1024 / 1024" | bc)
152+
153+
rm -rf "$TEMP_DIR"
154+
155+
echo "- **Wheel Size**: ${WHEEL_SIZE_MB}M (compressed)" >> $GITHUB_STEP_SUMMARY
156+
echo "- **JRE Size**: ${JRE_SIZE_MB}M (uncompressed)" >> $GITHUB_STEP_SUMMARY
157+
echo "- **JARs Size**: ${JAR_SIZE_MB}M (uncompressed)" >> $GITHUB_STEP_SUMMARY
158+
echo "- **Installed Size**: ~${INSTALLED_SIZE_MB}M (total uncompressed)" >> $GITHUB_STEP_SUMMARY
159+
fi
160+
161+
echo "- **Platform**: ${{ matrix.platform }}" >> $GITHUB_STEP_SUMMARY
124162
echo "- **Features**: All ArcadeDB features except gRPC wire protocol" >> $GITHUB_STEP_SUMMARY
125163
126164
- name: Upload test results
@@ -136,7 +174,7 @@ jobs:
136174
- name: Upload wheel artifact
137175
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
138176
with:
139-
name: wheel-${{ matrix.platform }}-test
177+
name: wheel-${{ matrix.platform == 'linux/amd64' && 'linux-amd64' || matrix.platform == 'linux/arm64' && 'linux-arm64' || matrix.platform == 'darwin/amd64' && 'darwin-amd64' || matrix.platform == 'darwin/arm64' && 'darwin-arm64' || 'windows-amd64' }}-test
140178
path: bindings/python/dist/*.whl
141179
retention-days: 7
142180

bindings/python/build.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ TARGET_PLATFORM=$(echo "$PLATFORM" | sed 's|/|-|' | sed 's/amd64/x64/')
144144
echo -e "${CYAN}🎯 Target platform: ${YELLOW}${PLATFORM}${NC}"
145145
echo -e "${CYAN}🎯 JRE platform: ${YELLOW}${TARGET_PLATFORM}${NC}"
146146
echo ""
147-
147+
A
148148
# Determine Docker build platform (always Linux for cross-compilation)
149149
# We build ON linux/amd64 or linux/arm64, but FOR any target platform
150150
DOCKER_PLATFORM="${PLATFORM}"

0 commit comments

Comments
 (0)