this post was submitted on 07 Aug 2023
9 points (100.0% liked)

Linux

48240 readers
693 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

I'm working on a hobby project of mine which requires Gnu Make 4.4. I am now trying to setup the project's Travis pipeline on github. Travis, understandably, only offers LTS Ubuntu images and sadly Gnu Make 4.4 is not available on those images.

Is there any way, compiling from the sources aside, to install the said version on an Ubuntu image? Something like a PPA?

top 11 comments
sorted by: hot top controversial new old
[–] AProfessional@lemmy.world 2 points 1 year ago* (last edited 1 year ago) (1 children)

Alternative perspective: Why is make your newest dependency? It is a very uninteresting part of a project and you can target a slightly older version.

[–] bahmanm@lemmy.ml 1 points 1 year ago

That's usually true except that this project is about the Makefile itself 😁 I'm working on a set of useful recipes, targets and variables which I've always missed from Make's out-of-the-box offering - something like a stdlib/utils for Make.

And yes, as you may have already guessed, I've had to deal w/ Makefiles relatively frequently 😀

[–] sugar_in_your_tea@sh.itjust.works 2 points 1 year ago (1 children)

Docker is probably your best bet.

[–] bahmanm@lemmy.ml 1 points 1 year ago
[–] bahmanm@lemmy.ml 1 points 1 year ago

For posterity, I settled down on compiling Gnu Make 4.4 as part of the pipeline. It turned out to be a really quick step and not a trouble at all - takes 10-15s only!

On another note: thank you Gnu Make maintainers ❤️

[–] pnutzh4x0r@lemmy.ndlug.org 1 points 1 year ago (1 children)

Is there a reason for using Travis instead of GitHub's built-in CI system?

With the GitHub CI system, you can specify your own container image which could have GNU Make 4.4 already pre-installed (you build it once and then re-use it).

[–] bahmanm@lemmy.ml 1 points 1 year ago (1 children)

RE Travis: I feel quite comfortable and happy w/ Travis already. Additionally, I want to keep my reliance on github minimal. The only reason I'm using it is that it is where things are searched for and found by fellow programmers :-)

RE Container: My home machine is running Tumbleweed which's had Gnu Make 4.4 for a few months now already. I was trying to make the pipeline behave as closely as possible to the user's machine who may not have that version installed. Otherwise as you and @sugar_in_your_tea@sh.itjust.works mentioned, I could pack everything I'd need in a container.

[–] sugar_in_your_tea@sh.itjust.works 1 points 1 year ago* (last edited 1 year ago) (1 children)

You'd just use the container for testing other Make versions. If your users use Ubuntu, run your tests with an Ubuntu docker image. You can run several versions that way with minimal effort.

I don't know much about Travis, but it's pretty easy to set that up with Jenkins.

[–] bahmanm@lemmy.ml 1 points 1 year ago (1 children)

That's pretty much what I ended up doing. Install Gnu Make 4.4 as part of the pipeline. I then added a check to warn the user if the Make version they use is not supported.

[–] sugar_in_your_tea@sh.itjust.works 1 points 1 year ago (1 children)

No, I'm saying you'd support older versions of make in your project and use docker images in your CIb pipeline to test each of those supported versions. If you're not using any 4.4-specific features, 4.2 (20.04) and 4.3 (22.04) would probably work. So you'd have a docker container for every OS that you're officially supporting (or at least every version of make that supported OSes use).

[–] bahmanm@lemmy.ml 1 points 1 year ago

I see your point. Though the main thing, as I mentioned in the question, is that I'm using features from 4.4 so that strategy wouldn't work for me.