Readit News logoReadit News
Posted by u/ajdude a year ago
Show HN: Getada: rustup-like installer for Ada's toolchain/package managergetada.dev...
One of my goals with Ada is to have a one-liner copy-paste terminal command for people to install Ada so they can get to coding in just a few minutes. After extensive testing I feel like it's ready for general release[1].

Getada was inspired by Rustup[2] and aside from the init script is written entirely in Ada.

It's completely open source and you can check out the readme and code on github[3]. It currently supports all non-windows platforms that Alire has an official release for, which at present is Linux (glibc) and MacOS. If you try running it on an unsupported platform, it tries to point you in the right direction. For example, you can install Alire on windows with an already-existing installer.

It downloads the latest version of Alire[4] (Ada's toolchain and package manager, similar to Cargo) for your platform as a zip file to a temporary directory and then extracts it to a binary directory. By default the temporary directory (configure with "-t /directory" or "--tmp=/directory") defaulted to $TMPDIR or /tmp. The config directory is ~/.getada (change via "-c /directory", "--cfg=/directory", or $GETADA_CFG), and the alr and getada binaries go in ~/.getada/bin (configure with ""-b /directory", "--bin=/directory", or $GETADA_BIN). It also tries to add the file to your path by dropping a "env.sh" file into ~/.profile/ (disable with -p or --no-path).

If you don't allow executables in temporary or home directories, you can change all of these via environmental variables or passing parameters.

You can remove it all by running: getada --uninstall

Now you can create a brand new Ada project with: alr init --bin my_project (How to use Alire[5] for more details)

Since one of the biggest complaints about Ada is getting the toolchain [6], I hope this can solve a lot of problems for newcomers to the language.

[1] https://www.getada.dev

[2] https://rustup.rs/

[3] https://github.com/aj-ianozi/getada

[4] https://alire.ada.dev/

[5] https://www.getada.dev/how-to-use-alire.html

[6] https://programming.dev/comment/9438211

rami3l · a year ago
As a current Rustup maintainer with a bit of Ada background I gotta say: nice work!

I do feel Ada as a language is way ahead of its time, but when I was learning it (a while before the first Alire release) I was also puzzled by dev environment setup. I guess the Rust experience has shown the importance of a friendly onboarding experience, so I’m very glad to see Ada is going this direction as well with Alire and now Getada :)

adezxc · a year ago
> Since one of the biggest complaints about Ada is getting the toolchain [6], I hope this can solve a lot of problems for newcomers to the language.

It might be just me, but Alire isn't great, I tried it multiple times, it's great for getting complicated dependencies e.g Utilada, but I go for GPRBuild as it just avoids all the fuss when programming across Linux/macOS.

I might try a hard switch at one point as I didn't use Alire 2.0.0 that much, so maybe it's better now.

Avshalom · a year ago
I believe you'll find its actually utilada

alire doesn't let you use capital letters...

Lucretia9 · a year ago
Alire is a frontend to the toolchain, including gprbuild, it just handles grabbing the projects as well.
adezxc · a year ago
Yes, but it kinda locks you into running 'alr build' and adds other things inside 'config' directory like user's distro and other things. My guess it's probably great when you already have a done project and want to publish it, but if you want to compile your code ASAP, it's much easier to avoid it completely (except for pulling packages)
anta40 · a year ago
alire is similar to virtualenv, yes? Every time you create a project, a fresh Ada toolchain will be downloaded.
synack · a year ago
The toolchain is cached, so it only gets downloaded once.
didip · a year ago
This is amazing. devX matter a lot for adoption. I keep hearing about Ada a lot but the learning experience were difficult when I tried it.
kevlar700 · a year ago
Did you come across? https://learn.adacore.com
throwaway81523 · a year ago
> One of my goals with Ada is to have a one-liner copy-paste terminal command for people to install Ada so they can get to coding in just a few minutes. After extensive testing I feel like it's ready for general release[1].

I never had trouble with this? Apt-get install gnat or similar has always worked for me. I only played around with Ada though, never did anything serious with it. Installing from source wasn't too bad either. But, trying to install spark from source was a big mess back in the day. I don't know about now.

tormeh · a year ago
What's cool about rustup is having many different versions of the same toolchain installed at the same time, and automatically using the appropriate toolchain version for a project. That's downright magical.
ajdude · a year ago
Yeah, that's another major benefit; I can get different toolchain versions or even cross-compile to different architectures via "alr toolchain --select"
01HNNWZ0MV43FF · a year ago
Distro package managers often lag by a bit, hence the explosion of language-level package managers in the last... when did NPM come out... 14 years
apitman · a year ago
I got my start programming through an avionics apprenticeship. My first project was porting an Ada project to C. Still hurts my heart to think about now that I'm experienced enough to appreciate a lot more of the implications.
inamberclad · a year ago
I'm a little confused - is this just a wrapper around https://alire.ada.dev/ ? That tool itself isn't very hard to install.
ajdude · a year ago
Getting alire installed involves downloading the zip, extracting the binary, and moving the binary to a directory in $PATH. If you're on a mac, you also have to run an "xattr" command on the tool to get it running.

I've seen the last parts get newcomers tripped up so Getada takes the rustup approach.

It uses github's api to retrieve the latest published release of alire[1] and then downloads and extracts it to a specified directory in $HOME. Then it creates an env file[2] and sources that file in .profile and/or .zshenv. It also logs everything that it does so it can undo it later with getada --uninstall

[1] https://github.com/alire-project/alire/releases

[2] Here's roughly what the env file looks like that it creates https://github.com/AJ-Ianozi/getada/blob/main/src/shells.adb...

Karellen · a year ago
> Getting alire installed involves downloading the zip, extracting the binary, and moving the binary to a directory in $PATH. If you're on a mac, you also have to run an "xattr" command on the tool to get it running.

Is that considered a high bar for software developers to get right?

vips7L · a year ago
Shouldn't a good package manager just take care of those steps?
zilti · a year ago
That is literally a bash oneliner - pipe curl into tar, and have it unpack to ~/.local/bin.
crabbone · a year ago
Alire is kind of a bummer on musl systems...

I don't know if this tool solves the problem, but on musl systems (eg. Apline) you have to build Alire from source... i.e. bootstrapping, dependencies... it's not pretty.

ajdude · a year ago
> I don't know if this tool solves the problem

Not yet but it's on my list as a "phase 2" of sorts for getada. I have an alpine VPS that I'm playing around with but the main issue is that while alire can be built for alpine, any compilers it pulls from its toolchain won't work with it since none of them are built against musl. We've been talking about it here https://github.com/alire-project/alire/issues/792#issuecomme...

ultra_nick · a year ago
Bringing Ada into the 21st century bit by bit.
owlstuffing · a year ago
Yep, happy to see it, well deserved. Def a sleeper with tons of potential.

Comprehensive IntelliJ-level IDE tooling could bring Ada to the forefront where it belongs. Would be nice anyway.

sitzkrieg · a year ago
Other ecosystems are still catching up in some ways
trollian · a year ago
How is this not called "Byron"?
pixelatedindex · a year ago
Is this supposed to be a reference to something? I'm not following this logic :(
sebtron · a year ago
Byron (the poet) was Ada Lovelace's father
nmz · a year ago
Stop being smart. The tool is called GetAda, what does it do? It gets ada. What would byron do? will you remember 3 years from now?
fiddlerwoaroof · a year ago
What happens when the community decides this one isn’t good enough and comes up with a replacement? The problem I’ve always had with these descriptive names is (a) they are often hard to google because they conflict with all sorts of documentation about the problem space and (b) when they’re deprecated, they become a trap for beginners. “Cute” project names are better for the same reason as we don’t name children and pets random English phrases describing them.
jclulow · a year ago
Well then surely it should be "UpdAda"?

(I hardly...)