@@ -104,10 +104,8 @@ pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
104
104
exe = EXE(
105
105
pyz,
106
106
a.scripts,
107
- a.binaries,
108
- a.zipfiles,
109
- a.datas,
110
107
[],
108
+ exclude_binaries=True,
111
109
name='nixopus',
112
110
debug=False,
113
111
bootloader_ignore_signals=False,
@@ -122,6 +120,17 @@ exe = EXE(
122
120
codesign_identity=None,
123
121
entitlements_file=None,
124
122
)
123
+
124
+ coll = COLLECT(
125
+ exe,
126
+ a.binaries,
127
+ a.zipfiles,
128
+ a.datas,
129
+ strip=False,
130
+ upx=True,
131
+ upx_exclude=[],
132
+ name='nixopus'
133
+ )
125
134
EOF
126
135
127
136
log_success " Spec file created: $SPEC_FILE "
@@ -136,7 +145,7 @@ build_wheel() {
136
145
}
137
146
138
147
build_binary () {
139
- log_info " Building binary... "
148
+ log_info " Building binary"
140
149
141
150
poetry run pyinstaller --clean --noconfirm $SPEC_FILE
142
151
@@ -148,53 +157,46 @@ build_binary() {
148
157
aarch64|arm64) ARCH=" arm64" ;;
149
158
esac
150
159
151
- BINARY_NAME =" ${APP_NAME} _${OS} _${ARCH} "
160
+ BINARY_DIR_NAME =" ${APP_NAME} _${OS} _${ARCH} "
152
161
153
- if [[ " $OS " == " darwin" || " $OS " == " linux" ]]; then
154
- if [[ -f " $BUILD_DIR /$APP_NAME " ]]; then
155
- mv $BUILD_DIR /$APP_NAME $BUILD_DIR /$BINARY_NAME
156
- ln -sf " $BINARY_NAME " " $BUILD_DIR /$APP_NAME "
157
- fi
158
- elif [[ " $OS " == " mingw" * || " $OS " == " cygwin" * || " $OS " == " msys" * ]]; then
159
- if [[ -f " $BUILD_DIR /${APP_NAME} .exe" ]]; then
160
- mv $BUILD_DIR /${APP_NAME} .exe $BUILD_DIR /${BINARY_NAME} .exe
161
- cp " $BUILD_DIR /${BINARY_NAME} .exe" " $BUILD_DIR /${APP_NAME} .exe"
162
- fi
163
- fi
164
162
165
- log_success " Binary built: $BUILD_DIR /$BINARY_NAME "
166
- log_success " User-friendly link created: $BUILD_DIR /$APP_NAME "
163
+ if [[ -d " $BUILD_DIR /$APP_NAME " ]]; then
164
+ mv " $BUILD_DIR /$APP_NAME " " $BUILD_DIR /$BINARY_DIR_NAME "
165
+
166
+
167
+ cat > " $BUILD_DIR /$APP_NAME " << EOF
168
+ #!/bin/bash
169
+ # Nixopus CLI wrapper
170
+ SCRIPT_DIR="\$ (cd "\$ (dirname "\$ {BASH_SOURCE[0]}")" && pwd)"
171
+ exec "\$ SCRIPT_DIR/$BINARY_DIR_NAME /$APP_NAME " "\$ @"
172
+ EOF
173
+ chmod +x " $BUILD_DIR /$APP_NAME "
174
+
175
+ log_success " Binary directory built: $BUILD_DIR /$BINARY_DIR_NAME /"
176
+ log_success " Wrapper script created: $BUILD_DIR /$APP_NAME "
177
+ else
178
+ log_error " Build failed - directory $BUILD_DIR /$APP_NAME not found"
179
+ exit 1
180
+ fi
167
181
}
168
182
169
183
test_binary () {
170
- log_info " Testing binary..."
171
-
172
- OS=$( uname -s | tr ' [:upper:]' ' [:lower:]' )
173
- ARCH=$( uname -m)
174
-
175
- case $ARCH in
176
- x86_64) ARCH=" amd64" ;;
177
- aarch64|arm64) ARCH=" arm64" ;;
178
- esac
179
184
180
- BINARY_NAME=" ${APP_NAME} _${OS} _${ARCH} "
181
- BINARY_PATH=" $BUILD_DIR /$BINARY_NAME "
182
-
183
- if [[ " $OS " == " mingw" * || " $OS " == " cygwin" * || " $OS " == " msys" * ]]; then
184
- BINARY_PATH=" $BUILD_DIR /${BINARY_NAME} .exe"
185
- fi
185
+ log_info " Testing binary..."
186
+
187
+ WRAPPER_PATH=" $BUILD_DIR /$APP_NAME "
186
188
187
- if [[ -f " $BINARY_PATH " ]]; then
188
- chmod +x " $BINARY_PATH "
189
+ if [[ -f " $WRAPPER_PATH " ]]; then
190
+ chmod +x " $WRAPPER_PATH "
189
191
190
- if $BINARY_PATH --version; then
192
+ if " $WRAPPER_PATH " --version; then
191
193
log_success " Binary test passed"
192
194
else
193
195
log_error " Binary test failed"
194
196
exit 1
195
197
fi
196
198
else
197
- log_error " Binary not found for testing: $BINARY_PATH "
199
+ log_error " Wrapper script not found for testing: $WRAPPER_PATH "
198
200
exit 1
199
201
fi
200
202
}
@@ -211,20 +213,17 @@ create_release_archive() {
211
213
esac
212
214
213
215
ARCHIVE_NAME=" ${APP_NAME} _${OS} _${ARCH} "
214
- BINARY_NAME =" ${APP_NAME} _${OS} _${ARCH} "
216
+ BINARY_DIR_NAME =" ${APP_NAME} _${OS} _${ARCH} "
215
217
216
218
cd $BUILD_DIR
217
219
220
+
218
221
if [[ " $OS " == " darwin" || " $OS " == " linux" ]]; then
219
- if [[ -f " $BINARY_NAME " ]]; then
220
- tar -czf " ${ARCHIVE_NAME} .tar.gz" " $BINARY_NAME "
221
- log_success " Archive created: $BUILD_DIR /${ARCHIVE_NAME} .tar.gz"
222
- fi
222
+ tar -czf " ${ARCHIVE_NAME} .tar.gz" " $BINARY_DIR_NAME " " $APP_NAME "
223
+ log_success " Archive created: $BUILD_DIR /${ARCHIVE_NAME} .tar.gz"
223
224
elif [[ " $OS " == " mingw" * || " $OS " == " cygwin" * || " $OS " == " msys" * ]]; then
224
- if [[ -f " ${BINARY_NAME} .exe" ]]; then
225
- zip " ${ARCHIVE_NAME} .zip" " ${BINARY_NAME} .exe"
226
- log_success " Archive created: $BUILD_DIR /${ARCHIVE_NAME} .zip"
227
- fi
225
+ zip -r " ${ARCHIVE_NAME} .zip" " $BINARY_DIR_NAME " " $APP_NAME "
226
+ log_success " Archive created: $BUILD_DIR /${ARCHIVE_NAME} .zip"
228
227
fi
229
228
230
229
cd ..
0 commit comments