@@ -116,9 +116,6 @@ jobs:
116116 # staging directory
117117 STAGING='_staging'
118118 echo ::set-output name=STAGING::${STAGING}
119− # determine EXE suffix
120− EXE_suffix="" ; case ${{ matrix.job.target }} in *-pc-windows-*) EXE_suffix=".exe" ;; esac;
121− echo ::set-output name=EXE_suffix::${EXE_suffix}
122119 unset IS_RELEASE ; if [[ $GITHUB_REF =~ ^refs/tags/v[0-9].* ]]; then IS_RELEASE='true' ; fi
123120 echo ::set-output name=IS_RELEASE::${IS_RELEASE}
124121 # target-specific options
@@ -126,9 +123,6 @@ jobs:
126123 unset CARGO_TEST_OPTIONS
127124 unset CARGO_TEST_OPTIONS ; case ${{ matrix.job.target }} in arm-* | aarch64-*) CARGO_TEST_OPTIONS="--lib --bin ${PROJECT_NAME}" ;; esac;
128125 echo ::set-output name=CARGO_TEST_OPTIONS::${CARGO_TEST_OPTIONS}
129− # * executable for `strip`?
130− STRIP="strip" ; case ${{ matrix.job.target }} in arm-unknown-linux-gnueabihf) STRIP="arm-linux-gnueabihf-strip" ;; aarch64-unknown-linux-gnu) STRIP="aarch64-linux-gnu-strip" ;; *-pc-windows-msvc) STRIP="" ;; esac;
131− echo ::set-output name=STRIP::${STRIP}
132126 - name: Install Rust toolchain
133127 uses: actions-rs/toolchain@v1
134128 with:
@@ -151,6 +145,41 @@ jobs:
151145 use-cross: ${{ matrix.job.use-cross }}
152146 command: build
153147 args: --release --target=${{ matrix.job.target }} ${{ matrix.job.cargo-options }}
148+ - name: Strip release bin
149+ id: strip
150+ shell: bash
151+ run: |
152+ # Figure out suffix of binary
153+ EXE_suffix=""
154+ case ${{ matrix.job.target }} in
155+ *-pc-windows-*) EXE_suffix=".exe" ;;
156+ esac;
157+
158+ # Figure out what strip tool to use if any
159+ STRIP="strip"
160+ case ${{ matrix.job.target }} in
161+ arm-unknown-linux-gnueabihf) STRIP="arm-linux-gnueabihf-strip" ;;
162+ aarch64-unknown-linux-gnu) STRIP="aarch64-linux-gnu-strip" ;;
163+ *-pc-windows-msvc) STRIP="" ;;
164+ esac;
165+
166+ # Setup paths
167+ BIN_DIR="_cicd-intermediates/stripped-release-bin/"
168+ mkdir -p "${BIN_DIR}"
169+ BIN_NAME="${{ env.PROJECT_NAME }}${EXE_suffix}"
170+ BIN_PATH="${BIN_DIR}/${BIN_NAME}"
171+
172+ # Copy the release build binary to the result location
173+ cp "target/${{ matrix.job.target }}/release/${BIN_NAME}" "${BIN_DIR}"
174+
175+ # Also strip if possible
176+ if [ -n "${STRIP}" ]; then
177+ "${STRIP}" "${BIN_PATH}"
178+ fi
179+
180+ # Let subsequent steps know where to find the (stripped) bin
181+ echo ::set-output name=BIN_PATH::${BIN_PATH}
182+ echo ::set-output name=BIN_NAME::${BIN_NAME}
154183 - name: Test
155184 uses: actions-rs/cargo@v1
156185 with:
@@ -207,10 +236,7 @@ jobs:
207236 mkdir -p "${ARCHIVE_DIR}/autocomplete"
208237
209238 # Binary
210− cp 'target/${{ matrix.job.target }}/release/${{ env.PROJECT_NAME }}${{ steps.vars.outputs.EXE_suffix }}' "$ARCHIVE_DIR"
211−
212− # `strip` binary (if needed)
213− if [ -n "${{ steps.vars.outputs.STRIP }}" ]; then "${{ steps.vars.outputs.STRIP }}" "$ARCHIVE_DIR/${{ env.PROJECT_NAME }}${{ steps.vars.outputs.EXE_suffix }}" ; fi
239+ cp "${{ steps.strip.outputs.BIN_PATH }}" "$ARCHIVE_DIR"
214240
215241 # Man page
216242 cp 'target/${{ matrix.job.target }}/release/build/${{ env.PROJECT_NAME }}'-*/out/assets/manual/bat.1 "$ARCHIVE_DIR"
@@ -256,8 +282,7 @@ jobs:
256282 echo ::set-output name=DPKG_NAME::${DPKG_NAME}
257283
258284 # Binary
259− install -Dm755 'target/${{ matrix.job.target }}/release/${{ env.PROJECT_NAME }}${{ steps.vars.outputs.EXE_suffix }}' "${DPKG_DIR}/usr/bin/${{ env.PROJECT_NAME }}${{ steps.vars.outputs.EXE_suffix }}"
260− if [ -n "${{ steps.vars.outputs.STRIP }}" ]; then "${{ steps.vars.outputs.STRIP }}" "${DPKG_DIR}/usr/bin/${{ env.PROJECT_NAME }}${{ steps.vars.outputs.EXE_suffix }}" ; fi
285+ install -Dm755 "${{ steps.strip.outputs.BIN_PATH }}" "${DPKG_DIR}/usr/bin/${{ steps.strip.outputs.BIN_NAME }}"
261286
262287 # Man page
263288 install -Dm644 'target/${{ matrix.job.target }}/release/build/${{ env.PROJECT_NAME }}'-*/out/assets/manual/bat.1 "${DPKG_DIR}/usr/share/man/man1/${{ env.PROJECT_NAME }}.1"