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 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:
# "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?