Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -546,6 +546,16 @@ jobs:
mvn -B -q -f maven/pom.xml -pl windows,linux -am -DskipTests \
-Dcn1.binaries="${CN1_BINARIES}" compile
scripts/check-native-signatures.sh --require-all
# The native warning gate itself runs on the macOS/Windows/Linux legs that
# actually compile C; what runs HERE is its parser, against a hand-authored
# fixture, plus a structural check on the checked-in baselines. Both need no
# compiler, and both cover the ways this gate goes wrong silently: a parser
# that stops recognising a diagnostic reports zero warnings, which is
# indistinguishable from a clean build, and a baseline edited into a shape
# that no longer matches masks nothing while looking like it does.
- name: Check native warning parser and baselines
if: ${{ matrix.java-version == 8 }}
run: scripts/check-native-warnings.sh --self-test
- name: Run JavaScript Port smoke integration
if: ${{ matrix.java-version == 8 }}
working-directory: vm
Expand Down
14 changes: 14 additions & 0 deletions .github/workflows/scripts-ios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,18 @@ jobs:
CN1SS_FAIL_ON_MISMATCH: '1'
CN1SS_ALLOWED_MISSING: '0'
CN1SS_PORT_ID: ios-gl
# Count this build's compiler warnings and attribute each to whoever owns
# the code. This leg is the one that can: it sets no CN1_IOS_DERIVED_DATA,
# so run-ios-ui-tests.sh wipes its derived data and compiles every
# translation unit from cold -- an incremental build reports no warnings
# and is indistinguishable from a clean codebase. Its path filters are
# also a superset of the other iOS legs', so a PR touching only
# CodenameOne/src is still covered.
CN1_WARNING_CENSUS: '1'
CN1_WARNING_LEG: ios-sim-debug
# build-ios-app.sh stages the manifest under the default artifacts dir,
# which is not the per-step one above.
CN1_WARNING_MANIFEST: ${{ github.workspace }}/artifacts/cn1-source-manifest.txt
run: |
set -euo pipefail
mkdir -p "${ARTIFACTS_DIR}"
Expand Down Expand Up @@ -285,6 +297,8 @@ jobs:
artifacts/*-stats.txt
artifacts/vm_time.txt
artifacts/xcodebuild-list.txt
artifacts/cn1-source-manifest.txt
artifacts/ios-ui-tests/native-warnings.json
if-no-files-found: warn
retention-days: 14

Expand Down
15 changes: 15 additions & 0 deletions scripts/build-ios-app.sh
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,21 @@ stage_bytecode_translator_sources() {
find "$out_dir" -maxdepth 2 -type f \( -name '*.m' -o -name '*.c' -o -name '*.h' \) \
| sort > "$listing_file" || true

# The translator's record of where each of those files came from. The listing
# above cannot answer that -- generated code, the ParparVM runtime, the port
# natives and vendored third-party sources are all siblings in one flat
# directory -- and without it a warning in the build log has no owner. It sits
# one level up from the sources, in the project root, because anything left in
# the source directory is swept into the Xcode project's resources phase and
# shipped inside the .app.
local manifest_src="$(dirname "$bt_dir")/cn1-source-manifest.txt"
if [ -f "$manifest_src" ]; then
cp "$manifest_src" "$artifacts_dir/cn1-source-manifest.txt"
bia_log "Staged source manifest from $manifest_src"
else
bia_log "No source manifest at $manifest_src; the warning census cannot attribute this build"
fi

(
cd "$artifacts_dir"
zip -qry "$(basename "$zip_file")" "$(basename "$out_dir")"
Expand Down
Loading
Loading