fix: broken symlinks and pipeline variable expansion#4
Merged
Conversation
- Fix 3 broken symlinks in samples/DevFlow.Sample.Linux/ that pointed
to ../SampleMauiApp/ (old name) instead of ../DevFlow.Sample/
(Components, Resources, wwwroot). This caused UseDotNet@2 to fail
with ENOENT when walking the directory tree.
- Use compile-time template expressions (${{ variables.X }}) instead
of runtime macros ($(X)) when passing to template parameters.
Runtime macros don't resolve at template expansion time, causing
display names to show literal $(_ProductName) instead of DevFlow.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Fixes build failures and improves Azure Pipelines template parameter expansion by correcting sample symlink targets and using compile-time variable expressions where required.
Changes:
- Updated broken symlink targets in
samples/DevFlow.Sample.Linux/to point to../DevFlow.Sample/instead of the previous repo name. - Switched selected
extends.parametersvalues to compile-time expressions (${{ variables.* }}) to avoid literal runtime macro strings in template-expanded fields.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| samples/DevFlow.Sample.Linux/wwwroot | Updates symlink target to the correct sample path to prevent ENOENT failures. |
| samples/DevFlow.Sample.Linux/Resources | Updates symlink target to the correct sample path to prevent ENOENT failures. |
| samples/DevFlow.Sample.Linux/Components | Updates symlink target to the correct sample path to prevent ENOENT failures. |
| eng/pipelines/devflow-official.yml | Uses compile-time variable expressions for template parameters so display names and other compile-time fields expand correctly. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
You can also share your feedback on Copilot code review. Take the survey.
Redth
added a commit
that referenced
this pull request
Mar 29, 2026
Add GTK lifecycle hooks, font manager, and desktop integration
This was referenced Apr 24, 2026
rmarinho
added a commit
that referenced
this pull request
Apr 30, 2026
- Remove local --dry-run option; use GlobalOptions.DryRunOption (finding #1) - Return exit code 0 for 'skipped' status on non-macOS (finding #2) - Wrap install action in try-catch using E2206 error code (finding #3) - Replace null-forgiving with null-conditional on license check (finding #4) - Defensive copy Platforms list with .ToList() (finding #5) - Clarify cancellation limitation comment (finding #6) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
rmarinho
added a commit
that referenced
this pull request
Apr 30, 2026
- Remove local --dry-run option; use GlobalOptions.DryRunOption (finding #1) - Return exit code 0 for 'skipped' status on non-macOS (finding #2) - Wrap install action in try-catch using E2206 error code (finding #3) - Replace null-forgiving with null-conditional on license check (finding #4) - Defensive copy Platforms list with .ToList() (finding #5) - Clarify cancellation limitation comment (finding #6) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
rmarinho
added a commit
that referenced
this pull request
Apr 30, 2026
…all command (#196) * Refactor AppleProvider to delegate to EnvironmentChecker and add install command - Delegate CheckHealth() to Xamarin.MacDev.EnvironmentChecker.Check() instead of manually querying XcodeManager/CommandLineTools/RuntimeService separately - Add Xcode license acceptance check (new E2205 error code) - Add SDK Platforms health check showing discovered platform SDKs - Upgrade CLT-missing severity from Warning to Error (blocks development) - Add 'maui apple install' command wrapping AppleInstaller.Install() for one-command environment bootstrapping (consistent with 'maui android install') - Add --platform and --dry-run options to the install command - Register AppleInstallResult in JSON source generator context - Update FakeAppleProvider with InstallEnvironmentAsync support Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address PR review feedback for apple install command - Remove local --dry-run option; use GlobalOptions.DryRunOption (finding #1) - Return exit code 0 for 'skipped' status on non-macOS (finding #2) - Wrap install action in try-catch using E2206 error code (finding #3) - Replace null-forgiving with null-conditional on license check (finding #4) - Defensive copy Platforms list with .ToList() (finding #5) - Clarify cancellation limitation comment (finding #6) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add unit tests for 'maui apple install' command Tests cover: - Command structure (install exists, --platform option, no local --dry-run) - Option parsing (multiple --platform values) - Handler invocation via FakeAppleProvider - Platform filter passthrough - Global --dry-run option propagation - Exit code 0 for 'ok' and 'skipped' status - Exit code 1 for 'failed' status Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address review feedback: fix docs, exit code, default platform - Fix <returns> doc to describe AppleInstallResult (not 'environment check') - Fix XcodeVersion doc comment to say 'version and build number' (not path) - Return exit code 1 on non-macOS for consistent signaling - Default --platform to iOS; add 'all' option to install all runtimes - Add test for --platform all passing null filter to provider Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add Apple CLI smoke test script and update instructions - Create eng/smoke-tests/apple-cli-smoke-test.sh with 7 automated checks: xcode list, runtime list, simulator list, start/stop simulator, install dry-run (default iOS), install dry-run (all platforms) - Update copilot-instructions.md to run smoke tests after Apple provider changes or Xamarin.Apple.Tools.MaciOS version updates on macOS Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Update version * Open Simulator UI automatically on 'maui apple simulator start' - Add --no-open flag to suppress UI launch (for CI/headless usage) - Add OpenSimulatorApp() to IAppleProvider interface - Implement via 'open -a Simulator' in AppleProvider - Default behavior: boot device + open Simulator.app window Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix Apple install tests on Windows: skip handler tests on non-macOS The install command handler returns exit code 1 on non-macOS platforms (by design). Skip the handler-invocation tests when not running on macOS since they test provider interaction, not the platform guard. Command structure tests (Exists, HasPlatformOption, ParsesPlatformOption, ParsesPlatformDefault) remain cross-platform. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
mattleibow
added a commit
that referenced
this pull request
May 12, 2026
Critical/High fixes: - #1: Use namespace+class for unique hint names (prevents AddSource crash when two pages share the same simple class name) - #2: CrossFileResolver uses FQN lookup + ambiguity detection for duplicate simple names across namespaces - #3: CollectionView conditional rendering fixed — no more [[double brackets]], uses unified annotation list builder - #4: Root ContentPage walks children directly, preventing SemanticProperties on root from swallowing the entire page - #5: Visibility conditions on layout containers now propagate as condition group wrappers ('When [visible when X = true]:') - #6: Property-element content (ContentPage.Content, ScrollView.Content) no longer dropped — unknown property elements are transparent by default, only known non-visual ones (Resources, Triggers, etc.) are suppressed - #7: Shell routes stored in UiElement for Shell page markdown Medium fixes: - #8: Promoted containers (Border with Description) now walk children too, preserving actionable descendants like buttons - #9: Unresolved user controls kept as placeholders (previously dropped), important for third-party controls with SemanticProperties - #10: DataTrigger with IsVisible=False setter now correctly inverted to 'hidden when Property = Value' instead of 'visible when' - #11: IsVisible=False elements skipped entirely — not reachable by screen readers, should not appear in accessibility-first index - #12: Aggregate namespace validated as legal C# before emitting - #13: Always use global:: for page references in aggregate, even for no-namespace pages - #14: BindingRegex now requires whitespace after 'Binding' keyword, preventing false matches like {BindingSource} - #15: CrossFileResolver uses in-progress set for cycle detection, preventing partial cache on indirect A→B→A cycles Low fixes: - #16: Dead emptyViewChildren code block removed - #17: Removed unused TemplateVariants from dead CollectionView code 104 exact-match tests, all passing. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes
1. Broken symlinks causing UseDotNet@2 failure
samples/DevFlow.Sample.Linux/had 3 symlinks pointing to../SampleMauiApp/(the original repo name). Fixed to point to../DevFlow.Sample/:Components→../DevFlow.Sample/ComponentsResources→../DevFlow.Sample/Resourceswwwroot→../DevFlow.Sample/wwwrootThis caused:
ENOENT: no such file or directory, stat .../Components2. Pipeline variable expansion
Template parameters need compile-time expressions (
${{ variables.X }}) not runtime macros ($(X)). Runtime macros pass through as literal strings, causing display names likeBuild & Test ($(_ProductName) macOS)instead ofBuild & Test (DevFlow macOS).Changed
buildConfig,solutionFilter, andproductNameto use${{ variables. }}. LeftsignType/signas$()since they are conditional variables.