Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: SuperOscar - 03.03.23 - klo:15.49

Otsikko: Makefile asennuksessa ja ehdolliset päätökset
Kirjoitti: SuperOscar - 03.03.23 - klo:15.49
Sattuisiko joku tietämään… Minulla kun on käytössä eri järjestelmiä, eräiden omien apuohjelmien asentamisessa pitää aina valita, pannaanko niiden omistajaksi staff- vai wheel-ryhmä – Debianissa staff, openSUSEssa wheel. Yleensä olen asennusta varten tehnyt skriptin, mutta kävi mielessä, kävisikö Makefile ja ”make install”.

Muuten toimii, mutta ongelma on tuo ryhmän valinta. Lueskelin otsa tuskanhiessä GNU maken ohjeita (https://www.gnu.org/software/make/manual/make.html) ja päättelin, että ns. secondary expansion voisi olla ratkaisu: ensimmäisellä lukukerralla Makefile päättäisi ryhmän, toisella lukukerralla asettaisi sen käyttöön.

Tällaista yritin:

Koodia: [Valitse]
# "getent group wheel” palauttaa /etc/group-tiedostosta rivin,
# JOS siellä sellaista on
WHEEL := $(shell getent group wheel)
# Aloitetaan toisen lukukerran erikoisjärjestelyt…
.SECONDEXPANSION:
# Jos $(WHEEL) sisältää toisella lukukerralla jotakin…
ifneq ($$(WHEEL),)
ADMINS := wheel
else
ADMINS := staff
endif
# Seuraava rivi lienee turha, mutta lisäsin kumminkin
.SECONDEXPANSION:
# $(ADMINS)-muuttujan pitäisi toisella lukukerralla sisältää
# oikea ryhmä
INSTALL = install -m 755 -g $$(ADMINS)

Tämä ei todellakaan toimi, edes niin että tietäisi mitä se tekee, koska se jää vain ikuisesti jonnekin.

Voi hyvin olla, että ideani on mahdoton ja oikeasti pitäisi olla skripti, joka generoisi järjestelmäkohtaisesti Makefilen. Se tuntuisi kuitenkin ajanhaaskuulta, koska saman tien skriptillä voi sitten tehdä kaiken.

Mielipiteitä kovemmilta hakkereilta?
Otsikko: Vs: Makefile asennuksessa ja ehdolliset päätökset
Kirjoitti: SuperOscar - 04.03.23 - klo:15.19
Itse itselleni vastaten… Ilmeisesti se mitä tavoittelen on makelle liian hienoa, mutta se onnistunee, että ensin asettaa makefilessä ehdoitta muuttujan arvon ja sitten muuttaa sitä komentoriviltä:

Koodia: [Valitse]
make install ADMINS=staff