5 ms·
First beta release of Alire, the package manager for Ada/SPARK
- csb6 6y agoThis seems useful. One thing Ada has been lacking is a central place to upload and use dependencies. However, I’ve found that pure Ada code without a package manager is pretty easy to integrate using the gprbuild tool; you just copy the dependency’s .ads and .adb files into your project and add their enclosing folder to the list of source directories. gprbuild figures our how to build them pretty much automatically. So I wish that instead of using TOML files, the dependencies would be specified in the gprbuild project files themselves. The syntax/options of GPR files would probably have to be extended, but it would be nice to have only one layer of config files that contains everything needed to build an Ada library/project.
- jeff-davis 6y agoHow do you deal with versioning, etc?
- csb6 6y agoGPR project files are just a kind of config file. Their syntax is different than TOML files, but they could easily be given the capability to list dependencies and versions.
- touisteur 6y agoI agree, put it all in GPR files, no more makefiles, bash scripts. I'd go even further, make project extensions able to define build variables, so I have no more to type -X options... And with the GPR handling libraries and Libadalang there's already so much you can do...
- Fabien_C 6y agoAnother options would be to only have the TOML files and generate gprbuild file on the fly. I think that is something we will consider.
- OneWingedShark 6y ago> So I wish that instead of using TOML files, the dependencies would be specified in the gprbuild project files themselves. The syntax/options of GPR files would probably have to be extended, but it would be nice to have only one layer of config files that contains everything needed to build an Ada library/project. There are several problems with GPR. The first is that it's GNAT-only and no other compiler would recognize it. The second is more technical: GPR is more "stringly-typed" than it ought to be, and thus despite a somewhat Ada-like syntax it isn't nearly as nice as Ada-source. I've been mulling the idea of leveraging Ada's generic-system for a method to use as a Project specification/definition -- if you could have an Ada generic as a project-file, then you could [re]use the compiler/syntax-checker... I've also sketched out a way that Generic-parameters could be used by a project-builder program, generating an appropriate menu.
- pabs3 6y agoIs Ada a staticly linked language?
- henrikeh 6y agoThe GNAT compiler (part of GCC) supports both static and dynamic linking.
- pjmlp 6y agoAll compiled programming languages have supported static linking since the early days, then dynamic linking came into mainstream during the 90's, and most toolchains added support for both models, including Ada compilers.
- ajxs 6y agoThis is a great thing for the Ada community. I hope this encourages more contribution and collaboration on libraries that keep Ada useful for mainstream development.
- touisteur 6y agoAll I hope is that they'll think about corporate firewalls and provide a simple way to mirror the whole thing (including their gnat-subscriber-only & tools&libs versions). Or at least provide some kind of Web page with all the download links for the transitive dependencies for a package... PYPI kills me everytime I need to run any ML stuff, and I wish there was a systematic page to d/l all transitive dependencies (at least from requirements files and maybe setup.py static interpretation...)
- shakna 6y agoYou can grab and build the index from here [0], and add your own indices (with varying priorities). But if you want to actually proxy the individual download files, you'll need to iterate over the index files themselves, download them, and change their locations, which isn't overly difficult, but seems a bit beyond scope of a community index. [0] https://github.com/alire-project/alire-index https://github.com/alire-project/alire-index
- touisteur 6y agoThanks for this, shakna. As I'm trying to upgrade our whole bash-monster GNAT+gnatcoll+lal+florist+gtkada+younameit to the latest GNAT PRO continuous delivery, I wish I could just let some better tool do this...
- seg_lol 6y agoYou could create a zip of the contents of site-packages and add that your PYTHONPATH. Look for the metadata.json, in the dist-info directory { "requires": [ "chardet (>=3.0.2,<4)", "idna (>=2.5,<3)", "urllib3 (!=1.25.1,<1.26,!=1.25.0,>=1.21.1)", "certifi (>=2017.4.17)" ] } which I see isn't in all dist-info dirs. You could also look at pip download --no-binary ':all:' --src src requests It will download the source archives for those package and its deps. I think what you want is within reach. My email is profile, feel free to ask questions.
- touisteur 6y ago
- MaxBarraclough 6y agoCongratulations to all involved, this looks like a great addition to the Ada ecosystem. I like the use of tags to clarify which projects are in SPARK. I realise it's in beta, but, some feedback: on the linked Crates page, there doesn't seem to be a way to browse the source of the projects. I was expecting to be able to click a link and be taken to something akin to a GitHub page, but this doesn't seem to be possible. Some of the crates link to project home pages. Also, it would be neat if the Network graph page showed which projects were in SPARK, perhaps by using colour.
- Fabien_C 6y agoThanks for your feedback :) - there doesn't seem to be a way to browse the source of the projects. That's true, so far the contributors for crates have the option to provide a link to a website. This link can be to the repo, but it is not mandatory. - it would be neat if the Network graph page showed which projects were in SPARK Good idea :) Please open issues on the repo so we can keep track of your ideas: https://github.com/alire-project/alire https://github.com/alire-project/alire
- MaxBarraclough 6y agoDone. https://github.com/alire-project/alire/issues/603 https://github.com/alire-project/alire/issues/603
- e12e 6y ago> There is also a network graph view of the Alire ecosystem: https://alire.ada.dev/network https://alire.ada.dev/network Nice! Is there something similar for other languages?
- inamberclad 6y ago'Bout time! A lack of 3rd party libraries is a sticking point for a lot of Ada projects I'd like to do. The first party libraries are great though.
- mcguire 6y agoIt appears they may need more metadata about packages. The example "Finding an Ada PDF library" is https://alire.ada.dev/search/?q=pdf https://alire.ada.dev/search/?q=pdf. That leads to https://alire.ada.dev/crates/apdf.html https://alire.ada.dev/crates/apdf.html, with Apdf Standalone, portable package for producing dynamically PDF documents Author: Gautier de Montmollin Maintainer: fabien.chouteau@gmail.com License: MIT Version: 5.0.0 Dependencies: No dependency. Tags: No tags. Badge: [Copy image location: https://img.shields.io/endpoint?url=https://alire.ada.dev/badges/apdf.json] Searching for Apdf points to http://www.a-pdf.com/ http://www.a-pdf.com/, which doesn't look like it's Ada-ish. Is Apdf https://apdf.sourceforge.io/ https://apdf.sourceforge.io/? [Ah, yes it is.]