Skip to content

Undocumented dependency on GNAT 14? #5

@ulahello

Description

@ulahello

Hello,
I ran into a compile error in a dependency while installing gnatformat with GNAT 13, while using GNAT 14 worked perfectly. If gnatformat does depend on GNAT 14 then I figured it would be worth documenting if other people run into this. I checked the manual, but didn't see anything relevant aside from "have GNATPro installed".

To reproduce

$ nix-shell --pure -p gnat13 gnat13Packages.gprbuild alire libiconv gmp gmp.dev pkg-config unzip curl cacert git

[nix-shell:~]$ gnat --version
GNAT 13.3.0
Copyright (C) 1996-2023, Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[nix-shell:~]$ alr toolchain --select
Welcome to the toolchain selection assistant

In this assistant you can set up the default toolchain to be used with any crate
that does not specify its own top-level dependency on a version of gnat or
gprbuild.

If you choose "None", Alire will use whatever version is found in the
environment.

ⓘ Currently configured: gnat_external=13.3.0

Please select the gnat version for use with this configuration
  1. gnat_native=14.2.1
  2. None
  3. gnat_external=13.3.0 [Detected at (...)dg75xs88004jbrbgfnx11y1w8w-gnat-wrapper-13.3.0/bin/gnat]
  4. gnat_arm_elf=14.2.1
  5. gnat_avr_elf=14.2.1
  6. gnat_riscv64_elf=14.2.1
  7. gnat_xtensa_esp32_elf=14.2.1
  8. gnat_arm_elf=14.1.3
  9. gnat_avr_elf=14.1.3
  0. gnat_native=14.1.3
  a. (See more choices...)
Enter your choice index (first is default):
> 3
ⓘ Selected tool version gnat_external=13.3.0

ⓘ Choices for the following tool are narrowed down to releases compatible with just selected gnat_external=13.3.0

ⓘ Currently configured: gprbuild=18.0.0

Please select the gprbuild version for use with this configuration
  1. gprbuild=18.0.0 [Detected at (...)lpws58krs2hdwr102ggv53ynv0-gprbuild-25.0.0/bin/gprbuild]
  2. None
Enter your choice index (first is default):
> 1
ⓘ Selected tool version gprbuild=18.0.0



[nix-shell:~]$ alr get --build gnatformat
                                                                                                          ◷ Solving dependencies: 45.45% solved (5/11 deps, 17/58 solutions left)... Looking for external crate: lib                                                                                                          ◷ Solving dependencies: 45.45% solved (5/11 deps, 17/58 solutions left)... Looking for external crate: lib                                                                                                          ◷ Solving dependencies: 45.45% solved (5/11 deps, 17/58 solutions left)... Looking for external crate: lib                                                                                                          warn:
warn:    New solution is incomplete.
warn:    +        adasat          25.0.0 (new)
warn:    +📦      gnat            14.2.1 (new,gnat_native,indirect,binary)
warn:    +        gnatcoll        25.0.0 (new)
warn:    +        gnatcoll_gmp    25.0.0 (new,indirect)
warn:    +        gnatcoll_iconv  25.0.0 (new,indirect)
warn:    +        langkit_support 25.0.0 (new,indirect)
warn:    +        libadalang      25.0.0 (new)
warn:    +        libgpr          25.0.0 (new,indirect)
warn:    +        libgpr2         25.0.0 (new,indirect)
warn:    +        prettier_ada    25.0.0 (new)
warn:    +        vss             25.0.0 (new,indirect)
warn:    +        xmlada          25.0.0 (new,indirect)
warn:    Missing:
warn:    +❗      libgmp          *      (new,indirect,missing)
warn:
warn: Could not find a complete solution for gnatformat=25.0.0
Build will fail unless externals are made available, do you want to continue?
[Y] Yes  [N] No  (default is No) y
ⓘ Deploying gnatformat=25.0.0...
     -=O=-     #     #      #      #
warn: The following external dependencies are unavailable within Alire:
warn:    libgmp*
warn: Index 'community' version (1.3.0) is older than the newest supported by alr (1.4.0)
warn: You can disable this warning with settings key 'warning.old_index'
ⓘ If you experience any problems loading this index, you may need to reset the community index with 'alr index --reset-community'. Note that this operation will delete any local changes to the community index.
warn: They should be made available in the environment by the user.
warn: Generating possibly incomplete configuration because of missing dependencies
◴ Syncing build dir... warn: Generating possibly incomplete environment because of missing dependencies
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ⓘ Running post-fetch actions for xmlada=25.0.0...
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
checking whether gnat can build shared libs... yes
checking for a BSD-compatible install... /nix/store/vz67zaqyfln2jcqwar682kdlrxfx9vq1-coreutils-9.6/bin/install -c
checking whether ln -s works... yes
configure: creating ./config.status
config.status: creating xmlada_shared.gpr
config.status: creating Makefile
config.status: creating tests/dom/default.gpr
ⓘ Building gnatformat=25.0.0/gnat/gnatformat_driver.gpr...
Setup
   [mkdir]        object directory for project GNATCOLL_Minimal
   [mkdir]        library directory for project GNATCOLL_Minimal
   [mkdir]        object directory for project GNATCOLL_Core
   [mkdir]        library directory for project GNATCOLL_Core
   [mkdir]        object directory for project XmlAda_Sax
   [mkdir]        library directory for project XmlAda_Sax
   [mkdir]        object directory for project XmlAda_Schema
   [mkdir]        object directory for project GPR
   [mkdir]        library directory for project GPR
   [mkdir]        object directory for project GNATCOLL_Projects
   [mkdir]        library directory for project GNATCOLL_Projects
   [mkdir]        object directory for project GnatColl_GMP
   [mkdir]        library directory for project GnatColl_GMP
   [mkdir]        object directory for project GnatColl_Iconv
   [mkdir]        library directory for project GnatColl_Iconv
   [mkdir]        object directory for project VSS_GNAT
   [mkdir]        library directory for project VSS_GNAT
   [mkdir]        object directory for project Prettier_Ada
   [mkdir]        library directory for project Prettier_Ada
   [mkdir]        object directory for project AdaSAT
   [mkdir]        exec directory for project AdaSAT
   [mkdir]        library directory for project AdaSAT
   [mkdir]        object directory for project Langkit_Support
   [mkdir]        library directory for project Langkit_Support
   [mkdir]        object directory for project GPR2
   [mkdir]        library directory for project GPR2
   [mkdir]        object directory for project Libadalang
   [mkdir]        library directory for project Libadalang
   [mkdir]        object directory for project Gnatformat
   [mkdir]        library directory for project Gnatformat
   [mkdir]        exec directory for project Gnatformat_Driver
Compile
   [Ada]          gnatformat-ada_driver.adb
   [C]            gpr_parser-gdb.c
   [Ada]          gpr_parser_support-internal-analysis.adb
   [Ada]          gpr_parser_support-generic_api-analysis.adb
   [Ada]          gpr_parser_support-adalog-solver.adb
   [Ada]          gpr_parser_support-generic_bump_ptr.adb
   [Ada]          gpr_parser_support-array_utils.adb
   [Ada]          gpr_parser-implementation.adb
   [Ada]          gpr_parser_support-hashes.adb
   [Ada]          gpr_parser-lexer_implementation.adb
   [Ada]          gpr_parser-analysis.adb
   [Ada]          gpr_parser_support-diagnostics.adb
   [Ada]          gpr_parser-generic_api-introspection.ads
   [Ada]          gpr_parser_adasat.adb
   [Ada]          gpr_parser-unparsing.adb
   [Ada]          gpr_parser_support-names.adb
   [Ada]          gpr_parser_adasat-theory.ads
   [Ada]          gpr_parser_support-adalog-logic_var.adb
   [Ada]          gpr_parser-generic_introspection.adb
   [Ada]          gpr_parser_support-diagnostics-output.adb
   [Ada]          gpr_parser-generic_api.adb
   [Ada]          gpr_parser_support-cheap_sets.adb
   [Ada]          gpr_parser-parsers.adb
   [Ada]          gpr_parser_support-lexical_envs_impl.adb
   [Ada]          gpr_parser_adasat-dpll.adb
   [Ada]          gpr_parser_support-internal.ads
   [Ada]          gpr_parser_support-names-maps.adb
   [Ada]          gpr_parser-lexer_state_machine.adb
   [Ada]          gpr_parser_support-boxes.adb
   [Ada]          gpr_parser-iterators.adb
   [Ada]          gpr_parser_support-adalog-solver_interface.adb
   [Ada]          gpr_parser_support-symbols-precomputed.adb
   [Ada]          gpr_parser_support-tree_traversal_iterator.adb
   [Ada]          gpr_parser_support-adalog.ads
   [Ada]          gpr_parser-private_converters.adb
   [Ada]          gpr_parser-unparsing_implementation.adb
   [Ada]          gpr_parser-public_converters.adb
   [Ada]          gpr_parser_support-token_data_handlers.adb
   [Ada]          gpr_parser_support-images.adb
   [Ada]          gpr_parser_adasat-helpers.adb
   [Ada]          gpr_parser_support-adalog-main_support.ads
   [Ada]          gpr_parser_adasat-builders.adb
   [Ada]          gpr_parser_adasat-internals.ads
   [Ada]          gpr_parser_support-lexical_envs.ads
   [Ada]          gpr_parser_support-bump_ptr_vectors.adb
   [Ada]          gpr_parser_support-generic_api.adb
   [Ada]          gpr_parser-common.adb
   [Ada]          gpr_parser_support-types.ads
   [Ada]          gpr_parser_support-adalog-generic_main_support.adb
   [Ada]          gpr_parser_support-symbols.adb
   [Ada]          gpr_parser-c.adb
   [Ada]          gpr_parser.ads
   [Ada]          gpr_parser_support-packrat.adb
   [Ada]          gpr_parser_support-generic_api-introspection.adb
   [Ada]          gpr_parser_support-errors.ads
   [Ada]          gpr_parser_support-relative_get.adb
   [Ada]          gpr_parser_support-slocs.adb
   [Ada]          gpr_parser_support-bump_ptr.ads
   [Ada]          gpr_parser_support-text.adb
   [Ada]          gpr_parser_support-adalog-debug.adb
   [Ada]          gpr_parser_support-vectors.adb
   [Ada]          gpr_parser_support-iterators.adb
   [Ada]          gpr_parser-lexer.adb
   [Ada]          gpr_parser_support-internal-introspection.adb
   [Ada]          gpr_parser_support-file_readers.adb
   [Ada]          gpr_parser_support-internal-conversions.ads
   [Ada]          gpr_parser_adasat-decisions.adb
   [Ada]          gpr_parser_support.ads
   [Ada]          gpr_parser-debug.adb
   [Ada]          gpr_parser_adasat-vectors.adb
   [Ada]          gpr_parser-implementation-c.adb
   [Ada]          gpr_parser-rewriting_implementation.adb
   [Ada]          gpr_parser_adasat-formulas.adb
   [Ada]          gpr_parser-generic_impl.adb
   [Ada]          gpr_parser-rewriting.adb
   [Ada]          gpr_parser_support-internal-descriptor.ads
   [Ada]          gpr2-kb-embedded.adb
   [Ada]          gpr2-project_parser-registry.adb
   [Ada]          gpr2-project_parser.adb
   [Ada]          gpr2-view_internal.adb
   [Ada]          gpr2-pack_internal.ads
   [Ada]          gpr2-project_parser-set.ads
   [Ada]          gpr2-build-view_tables.adb
   [Ada]          gpr2-view_base_internal.ads
   [Ada]          gpr2-tree_internal.adb
   [Ada]          gpr2-project_parser-create.adb
   [Ada]          gpr2-tree_internal-view_builder.adb
   [Ada]          gpr2-build-artifacts.adb
   [Ada]          gpr2-build-process_manager-json.adb
   [Ada]          gpr2-build-artifacts-file_part.adb
   [Ada]          gpr2-build-actions-link.adb
   [Ada]          gpr2-build-source-sets.adb
   [Ada]          gpr2-build-process_manager.adb
   [Ada]          gpr2-build.ads
   [Ada]          gpr2-build-compilation_unit-maps.ads
   [Ada]          gpr2-build-actions-post_bind.adb
   [Ada]          gpr2-build-ali_parser.adb
   [Ada]          gpr2-build-actions-compile-ada.adb
   [Ada]          gpr2-build-actions.adb
   [Ada]          gpr2-build-compilation_unit.adb
   [Ada]          gpr2-build-actions-compile.adb
   [Ada]          gpr2-build-view_db.adb
   [Ada]          gpr2-build-source_base.adb
   [Ada]          gpr2-build-source_base-ada_parser.adb
   [Ada]          gpr2-build-signature.adb
gpr2-build-signature.adb:78:24: error: no selector "Finalize" for private type "JSON_Value" defined at gnatcoll-json.ads:167

   compilation of gpr2-build-signature.adb failed

gprbuild: *** compilation phase failed
error: Command ["gprbuild", "-s", "-j0", "-p", "-P", "/tmp/gnatformat_25.0.0_79117be8/gnat/gnatformat_driver.gpr"] exited with code 4

warn: gnatformat=25.0.0 successfully retrieved with missing dependencies but its build failed.
Dependencies were solved as follows:

   New solution is incomplete.
   +        adasat          25.0.0 (new)
   +📦      gnat            14.2.1 (new,gnat_native,indirect,binary)
   +        gnatcoll        25.0.0 (new)
   +        gnatcoll_gmp    25.0.0 (new,indirect)
   +        gnatcoll_iconv  25.0.0 (new,indirect)
   +        langkit_support 25.0.0 (new,indirect)
   +        libadalang      25.0.0 (new)
   +        libgpr          25.0.0 (new,indirect)
   +        libgpr2         25.0.0 (new,indirect)
   +        prettier_ada    25.0.0 (new)
   +        vss             25.0.0 (new,indirect)
   +        xmlada          25.0.0 (new,indirect)
   Missing:
   +❗      libgmp          *      (new,indirect,missing)
error: Build ended with errors

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions