public inbox for development@lists.ipfire.org
 help / color / mirror / Atom feed
From: Robin Roevens <robin.roevens@disroot.org>
To: development@lists.ipfire.org
Subject: Re: [PATCH 1/3] buildprocess: Add extra metadata to meta-* files
Date: Fri, 18 Jun 2021 00:28:36 +0200	[thread overview]
Message-ID: <d37a464a08c0d3796a442655795283cd3b527c9b.camel@disroot.org> (raw)
In-Reply-To: <5A6FBFC4-9888-4FD0-8972-8C2DE7495042@ipfire.org>

[-- Attachment #1: Type: text/plain, Size: 17976 bytes --]

Hi

Michael Tremer schreef op do 10-06-2021 om 12:27 [+0100]:
> Hello,
> 
> > On 6 Jun 2021, at 19:41, Robin Roevens <robin.roevens(a)disroot.org>
> > wrote:
> > 
> > Hi Michael
> > 
> > I know/see a lot of activity here, so I assume you are always quite
> > busy and may have missed my last reaction?
> 
> Yes, sorry, I missed this, or didn’t know what to say. Feel free to
> remind me if you didn’t hear from me within a couple of days.
> 
> > Should I proceed with my proposition to add
> > Summary: SUMMARY
> > Services: SERVICES
> > to the pak metadata including an INSTALL_SERVICE_INITSCRIPTS macro
> 
> I would say yes. Do we have any unanswered questions left?
Not for this patch-set at the moment, I think..

> 
> Is Jonatan happy?
I don't know.. @Jonatan, are you happy? :-)

> 
> > Should I also add 
> > InitScripts: INITSCRIPTS
> > for non-service initscripts.. just for completion of metadata ?
> 
> Hmm, I would say no. If there is no point to it, then leave it.
> 
> We can always add it later if we decide that we want it later.
In the light of possibly adding this later, I opt for the more generic
INSTALL_INITSCRIPTS macro accepting a list of initscripts to install.
Most common way of calling it from the lfs files would then be:

$(call INSTALL_INITSCRIPTS,$(SERVICES))

> 
> > And in that case a more generic INSTALL_INITSCRIPTS macro accepting
> > a
> > list of initscripts to install? (see mail history below for
> > explanation
> > of my intentions)
> > 
> > Or should we find other methods to have this info ready for
> > services.cgi and/or monitoring agents ?
> 
> No, I believe this is a good solution. We can then have a function
> that queries the package database and shows all services correctly.
> 
> That sounds clean to me and is re-usable and extensible.
I think so too.

I started working on changing all pak-lfs files with the additional
fields. When finished and tested, how should I post this change ?
As there are about 200+ lfs files that wil be modified, mostly just
adding a SUMMARY and SERVICES field. Should I post those changes as one
big patch? I assume no-one will be happy if I start posting 200+
patches into the mailing list?

I could try splitting up into patches containing only non-service paks,
and another containing all paks installing initscripts, and then maybe
some separate patches for lfs files that contain some corner cases
should I encounter such paks ?

This of course next to patches to add the INSTALL_INITSCRIPTS macro and
pakfire library change to read/use this additional metadata.

Regards

Robin

> 
> -Michael
> 
> > 
> > Regards
> > Robin
> > 
> > Robin Roevens schreef op ma 24-05-2021 om 22:23 [+0200]:
> > > Hi Michael
> > > 
> > > Michael Tremer schreef op di 18-05-2021 om 16:09 [+0100]:
> > > > 
> > > > 
> > > > > On 14 May 2021, at 21:07, Robin Roevens <   
> > > > > robin.roevens(a)disroot.org>
> > > > > wrote:
> > > > > 
> > > > > Hi
> > > > > 
> > > > > Michael Tremer schreef op vr 14-05-2021 om 13:24 [+0100]:
> > > > > > Hello Jonatan,
> > > > > > 
> > > > > > Yes I get your point. Just because a package has more than
> > > > > > one
> > > > > > initscript does not mean they both should be listed in
> > > > > > services.cgi.
> > > > > > 
> > > > > > It is a weird corner case, but how do we want to handle
> > > > > > this?
> > > > > > 
> > > > > > -Michael
> > > > > 
> > > > > Maybe a slight renaming of my proposed new variable
> > > > > INITSCRIPTS to
> > > > > SERVICES in the LFS files would make it a bit more clear that
> > > > > this
> > > > > concerns only service-initscripts?
> > > > > 
> > > > > The INSTALL_INITSCRIPTS macro could then be renamed to
> > > > > INSTALL_SERVICE_INITSCRIPTS.
> > > > > 
> > > > > If we then also keep the original INSTALL_INITSCRIPT macro,
> > > > > that
> > > > > macro
> > > > > can  then be used to install non-service initscripts if
> > > > > required.
> > > > > Or
> > > > > even to install all required initscripts in the occasion that
> > > > > you
> > > > > want
> > > > > to skip some service-initscripts defined in SERVICES because
> > > > > they
> > > > > are
> > > > > included in the source, like the situation Jonatan pointed
> > > > > out (in
> > > > > this
> > > > > case the SERVICES variable is filled with the sole purpose to
> > > > > serve
> > > > > as
> > > > > metadata).
> > > > > 
> > > > > So this would then result in:
> > > > > ---
> > > > > define INSTALL_INITSCRIPT
> > > > >   install -m 754 -v $(DIR_SRC)/src/initscripts/packages/$(1) 
> > > > > /etc/rc.d/init.d/$(1)
> > > > > endef
> > > > > 
> > > > > define INSTALL_SERVICE_INITSCRIPTS
> > > > >   for service in $(SERVICES); do \
> > > > >      $(call INSTALL_INITSCRIPT,$$service) || exit 1; \
> > > > >   done
> > > > > endef
> > > > > ---
> > > > > 
> > > > > Optionally we could also add again a variable INITSCRIPTS
> > > > > with the
> > > > > purpose to list non-service initscripts. so
> > > > > SERVICES - for service-initscripts
> > > > > INITSCRIPTS - for non-service-initscripts
> > > > > 
> > > > > and in the meta-* files:
> > > > > ---
> > > > > Name: NAME
> > > > > Summary: SUMMARY
> > > > > ProgVersion: VER
> > > > > Release: RELEASE
> > > > > Size: SIZE
> > > > > Dependencies: DEPS
> > > > > File: NAME-VER-RELEASE.ipfire
> > > > > Services: SERVICES
> > > > > InitScripts: INITSCRIPTS
> > > > > ---
> > > > > 
> > > > > Maybe that info could also come in handy sooner or later ?
> > > > 
> > > > This sounds rather complicated to me.
> > > > 
> > > > What are our objectives here? Does Zabbix want/need to
> > > > start/stop
> > > > services? And if so, why?
> > > 
> > > I was not directly thinking of Zabbix specifically here. The
> > > objective
> > > is to have a central 'database' of metadata for the pak's that
> > > can come
> > > in handy for current and possibly future functionality of IPFire.
> > > And a
> > > single way of retrieving this information (both by using "pakfire
> > > info"
> > > or directly accessing the pakfire library, in my proposal). 
> > > 
> > > Knowing which pak's provide which services can be used in
> > > service.cgi
> > > (which currently does give users the possibility to start/stop
> > > services
> > > indeed) and can be used for monitoring agents like Zabbix, but
> > > also
> > > Nagios or possibly others to know which services to monitor.
> > > 
> > > This instead of my earlier proposal of re-using parts of the
> > > services.cgi code in a separate script for zabbix_agentd, which
> > > you
> > > pointed out that should be done cleaner using some central way of
> > > storing/retrieving that information.
> > > 
> > > Zabbix does have functionality to implement starting/stopping
> > > those
> > > services using a context menu in the Zabbix web GUI; and a user
> > > can
> > > easily implement that on it's own (as this should be done mainly
> > > on
> > > server-side anyway) if he wants to and has the information of
> > > which
> > > services should run. This could be done by zabbix server logging
> > > into
> > > the IPFire machine using ssh and using addonctrl or by the agent,
> > > which
> > > would then need permission to addonctrl start/stop. But I think
> > > that is
> > > something for the user to decide on his own as you pointed out
> > > previously, giving zabbix agent root permission on addonctrl
> > > start/stop
> > > is a possible extra security risk. So I don't think we should
> > > provide
> > > that out of the box. (Maybe it could be a configurable 'setting'
> > > in the
> > > IPFire webgui some time in the future, but not something to focus
> > > on
> > > currently)
> > > 
> > > But with that said, I don't really understand your remark here as
> > > I
> > > only propose a way for the LFS files to populate the "Services"
> > > meta-
> > > data and I only threw in "Initscripts" for non-service
> > > initscripts,
> > > just for completeness of the meta-data.
> > > And to prevent duplication of the list of initscripts, I added a
> > > macro
> > > to install those in one go instead of again 'defining' this list
> > > by
> > > needing to call INSTALL_INITSCRIPT individually for each
> > > initscript
> > > while we now have a list of them in a variable. And due to the
> > > remark
> > > of Jonatan I now also kept the original INSTALL_INITSCRIPT for
> > > the pak
> > > maintainer to use in corner cases.
> > > 
> > > But this has nothing to do with actually stopping/starting
> > > services
> > > other that providing information about which services are
> > > installed
> > > (and maybe could be stopped/started if wanted).
> > > 
> > > If it would make things more clear, I could work my last mail out
> > > in an
> > > actual patch ?
> > > 
> > > Regards
> > > Robin
> > > 
> > > > 
> > > > > In this case the INSTALL_SERVICE_INITSCRIPTS could again be
> > > > > renamed
> > > > > back to INSTALL_INITSCRIPTS, now accepting a parameter which
> > > > > is a
> > > > > list
> > > > > of initscripts to install, so one could call:
> > > > > ---
> > > > > $(call INSTALL_INITSCRIPTS,$(SERVICES))
> > > > > $(call INSTALL_INITSCRIPTS,$(INITSCRIPTS))
> > > > > ---
> > > > > to install all initscripts.
> > > > > 
> > > > > Or even provide again an additional macro
> > > > > INSTALL_ALL_INITSCRIPTS
> > > > > which
> > > > > would then install both SERVICES and INITSCRIPTS (or even
> > > > > replace
> > > > > the
> > > > > above suggested INSTALL_SERVICE_INITSCRIPTS, so resulting in
> > > > > a
> > > > > macro to
> > > > > install all initscripts (SERVICES and INITSCRIPTS) and a
> > > > > macro to
> > > > > install a single initscript in case some of the ones listed
> > > > > in
> > > > > SERVICES
> > > > > and/or INITSCRIPTS need to be skipped..
> > > > > 
> > > > > But I think the INSTALL_INITSCRIPTS which takes a list of
> > > > > services
> > > > > to
> > > > > install as parameter is probably the most generic one, giving
> > > > > you
> > > > > the
> > > > > possibility to install all SERVICES in one go, and then
> > > > > individually
> > > > > install only those INITSCRIPTS not included in the source if
> > > > > INITSCRIPTS contains such initscript(s) or vice versa.
> > > > > 
> > > > > Robin
> > > > > 
> > > > > > 
> > > > > > > On 12 May 2021, at 19:49, Jonatan Schlag <
> > > > > > > jonatan.schlag(a)ipfire.org>
> > > > > > > wrote:
> > > > > > > 
> > > > > > > Hi,
> > > > > > > 
> > > > > > > > Am 23.04.2021 um 18:16 schrieb Robin Roevens <
> > > > > > > > robin.roevens(a)disroot.org>:
> > > > > > > > 
> > > > > > > > * Introduce SUMMARY and INITSCRIPTS macro's in LFS-
> > > > > > > > makefiles.
> > > > > > > > * Add a Summary and InitScripts field to the meta-*
> > > > > > > > addon
> > > > > > > > files
> > > > > > > > containing the value's of those macro's.
> > > > > > > > * Replace the INSTALL_INITSCRIPT makefile macro by a
> > > > > > > > new
> > > > > > > > INSTALL_INITSCRIPTS macro/method that will install all
> > > > > > > > initscripts
> > > > > > > > defined in the new INITSCRIPTS macro.
> > > > > > > > * Adapt libvirt and zabbix_agentd pak as examples of
> > > > > > > > how to
> > > > > > > > use
> > > > > > > > this.
> > > > > > > > 
> > > > > > > > Signed-off-by: Robin Roevens
> > > > > > > > <robin.roevens(a)disroot.org>
> > > > > > > > ---
> > > > > > > > lfs/Config        | 8 ++++++--
> > > > > > > > lfs/libvirt       | 6 ++++--
> > > > > > > > lfs/zabbix_agentd | 5 ++++-
> > > > > > > > src/pakfire/meta  | 2 ++
> > > > > > > > 4 files changed, 16 insertions(+), 5 deletions(-)
> > > > > > > > 
> > > > > > > > diff --git a/lfs/Config b/lfs/Config
> > > > > > > > index eadbbc408..61d6f0c82 100644
> > > > > > > > --- a/lfs/Config
> > > > > > > > +++ b/lfs/Config
> > > > > > > > @@ -299,15 +299,19 @@ define PAK
> > > > > > > >   # Create meta file
> > > > > > > >   sed \
> > > > > > > >       -e "s/NAME/$(PROG)/g" \
> > > > > > > > +        -e "s/SUMMARY/$(SUMMARY)/g" \
> > > > > > > >       -e "s/VER/$(VER)/g" \
> > > > > > > >       -e "s/RELEASE/$(PAK_VER)/g" \
> > > > > > > >       -e "s/DEPS/$(DEPS)/g" \
> > > > > > > >       -e "s/SIZE/$$(stat --format=%s
> > > > > > > > /install/packages/$(PROG)-
> > > > > > > > $(VER)-$(PAK_VER).ipfire)/g" \
> > > > > > > > +        -e "s/INITSCRIPTS/$(INITSCRIPTS)/g" \
> > > > > > > >     < /usr/src/src/pakfire/meta >
> > > > > > > > /install/packages/meta-
> > > > > > > > $(PROG)
> > > > > > > > endef
> > > > > > > > 
> > > > > > > > -define INSTALL_INITSCRIPT
> > > > > > > > -    install -m 754 -v
> > > > > > > > $(DIR_SRC)/src/initscripts/packages/$(1) 
> > > > > > > > /etc/rc.d/init.d/$(1)
> > > > > > > > +define INSTALL_INITSCRIPTS
> > > > > > > > +    for initscript in $(INITSCRIPTS); do \
> > > > > > > > +        install -m 754 -v
> > > > > > > > $(DIR_SRC)/src/initscripts/packages/$$initscript 
> > > > > > > > /etc/rc.d/init.d/$$initscript; \
> > > > > > > > +    done
> > > > > > > > endef
> > > > > > > > 
> > > > > > > > ifeq "$(BUILD_ARCH)" "$(filter $(BUILD_ARCH),aarch64
> > > > > > > > riscv64)"
> > > > > > > > diff --git a/lfs/libvirt b/lfs/libvirt
> > > > > > > > index 28a95d317..be5d3db3a 100644
> > > > > > > > --- a/lfs/libvirt
> > > > > > > > +++ b/lfs/libvirt
> > > > > > > > @@ -25,6 +25,7 @@
> > > > > > > > include Config
> > > > > > > > 
> > > > > > > > VER        = 6.5.0
> > > > > > > > +SUMMARY       = Server side daemon and supporting
> > > > > > > > files for
> > > > > > > > libvirt
> > > > > > > > 
> > > > > > > > THISAPP    = libvirt-$(VER)
> > > > > > > > DL_FILE    = $(THISAPP).tar.xz
> > > > > > > > @@ -37,6 +38,8 @@ PAK_VER    = 25
> > > > > > > > 
> > > > > > > > DEPS       = ebtables libpciaccess libtirpc libyajl
> > > > > > > > ncat qemu
> > > > > > > > 
> > > > > > > > +INITSCRIPTS= libvirtd virtlogd
> > > > > > > > +
> > > > > > > > #######################################################
> > > > > > > > ######
> > > > > > > > ######
> > > > > > > > ############
> > > > > > > > # Top-level Rules
> > > > > > > > #######################################################
> > > > > > > > ######
> > > > > > > > ######
> > > > > > > > ############
> > > > > > > > @@ -121,8 +124,7 @@ $(TARGET) : $(patsubst
> > > > > > > > %,$(DIR_DL)/%,$(objects))
> > > > > > > >   cd $(DIR_APP)/build_libvirt && make install
> > > > > > > > 
> > > > > > > >   #install initscripts
> > > > > > > > -    $(call INSTALL_INITSCRIPT,libvirtd)
> > > > > > > > -    $(call INSTALL_INITSCRIPT,virtlogd)
> > > > > > > > +    @$(INSTALL_INITSCRIPTS)
> > > > > > > >   mv /usr/libexec/libvirt-guests.sh
> > > > > > > > /etc/rc.d/init.d/libvirt-
> > > > > > > > guests
> > > > > > > And here my approach maybe breaks :-). How could we
> > > > > > > handle
> > > > > > > this? It
> > > > > > > is not a daemon, more something like a startup/shutdown
> > > > > > > scripts
> > > > > > > for
> > > > > > > machines... (And should not appear in the service.cgi).
> > > > > > > So
> > > > > > > parsing
> > > > > > > the root file may yield wrong results and your way would
> > > > > > > be the
> > > > > > > better one. 
> > > > > > > 
> > > > > > > Jonatan
> > > > > > > > 
> > > > > > > >   # Backup
> > > > > > > > diff --git a/lfs/zabbix_agentd b/lfs/zabbix_agentd
> > > > > > > > index c69643a54..a72fe024b 100644
> > > > > > > > --- a/lfs/zabbix_agentd
> > > > > > > > +++ b/lfs/zabbix_agentd
> > > > > > > > @@ -25,6 +25,7 @@
> > > > > > > > include Config
> > > > > > > > 
> > > > > > > > VER        = 4.2.6
> > > > > > > > +SUMMARY    = Zabbix Agent
> > > > > > > > 
> > > > > > > > THISAPP    = zabbix-$(VER)
> > > > > > > > DL_FILE    = $(THISAPP).tar.gz
> > > > > > > > @@ -35,6 +36,8 @@ PROG       = zabbix_agentd
> > > > > > > > PAK_VER    = 4
> > > > > > > > DEPS       =
> > > > > > > > 
> > > > > > > > +INITSCRIPTS= zabbix_agentd
> > > > > > > > +
> > > > > > > > #######################################################
> > > > > > > > ######
> > > > > > > > ######
> > > > > > > > ############
> > > > > > > > # Top-level Rules
> > > > > > > > #######################################################
> > > > > > > > ######
> > > > > > > > ######
> > > > > > > > ############
> > > > > > > > @@ -106,7 +109,7 @@ $(TARGET) : $(patsubst
> > > > > > > > %,$(DIR_DL)/%,$(objects))
> > > > > > > >   chown zabbix.zabbix /var/run/zabbix
> > > > > > > > 
> > > > > > > >   # Install initscripts
> > > > > > > > -    $(call INSTALL_INITSCRIPT,zabbix_agentd)
> > > > > > > > +    @$(INSTALL_INITSCRIPTS)
> > > > > > > > 
> > > > > > > >   # Install sudoers include file
> > > > > > > >   install -v -m 644
> > > > > > > > $(DIR_SRC)/config/zabbix_agentd/sudoers \
> > > > > > > > diff --git a/src/pakfire/meta b/src/pakfire/meta
> > > > > > > > index d97b2a0fa..849b9cd6c 100644
> > > > > > > > --- a/src/pakfire/meta
> > > > > > > > +++ b/src/pakfire/meta
> > > > > > > > @@ -1,6 +1,8 @@
> > > > > > > > Name: NAME
> > > > > > > > +Summary: SUMMARY
> > > > > > > > ProgVersion: VER
> > > > > > > > Release: RELEASE
> > > > > > > > Size: SIZE
> > > > > > > > Dependencies: DEPS
> > > > > > > > File: NAME-VER-RELEASE.ipfire
> > > > > > > > +InitScripts: INITSCRIPTS
> > > > > > > > -- 
> > > > > > > > 2.31.1
> > > > > > > > 
> > > > > > > > 
> > > > > > > > -- 
> > > > > > > > Dit bericht is gescanned op virussen en andere
> > > > > > > > gevaarlijke
> > > > > > > > inhoud door MailScanner en lijkt schoon te zijn.
> > > > > > 
> > > > > > 
> > > > > 
> > > > > 
> > > > > -- 
> > > > > Dit bericht is gescanned op virussen en andere gevaarlijke
> > > > > inhoud door MailScanner en lijkt schoon te zijn.
> > > > 
> > > > 
> > > 
> > > 
> > 
> > 
> > -- 
> > Dit bericht is gescanned op virussen en andere gevaarlijke
> > inhoud door MailScanner en lijkt schoon te zijn.
> > 
> 
> 


-- 
Dit bericht is gescanned op virussen en andere gevaarlijke
inhoud door MailScanner en lijkt schoon te zijn.


  reply	other threads:[~2021-06-17 22:28 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-23 16:15 [PATCH 0/3] Pakfile metadata enhancements Robin Roevens
2021-04-23 16:15 ` [PATCH 1/3] buildprocess: Add extra metadata to meta-* files Robin Roevens
2021-05-12 18:49   ` Jonatan Schlag
2021-05-14 12:24     ` Michael Tremer
2021-05-14 20:07       ` Robin Roevens
2021-05-18 15:09         ` Michael Tremer
2021-05-24 20:23           ` Robin Roevens
2021-06-06 18:41             ` Robin Roevens
2021-06-10 11:27               ` Michael Tremer
2021-06-17 22:28                 ` Robin Roevens [this message]
2021-06-18  8:32                   ` Michael Tremer
2021-06-10 11:24             ` Michael Tremer
2021-05-14 12:23   ` Michael Tremer
2021-05-14 20:16     ` Robin Roevens
2021-05-18 11:12       ` Michael Tremer
2021-04-23 16:15 ` [PATCH 2/3] pakfire: add 'info <pak(s)>' option Robin Roevens
2021-05-13  8:02   ` Jonatan Schlag
2021-05-13 19:11     ` Robin Roevens
2021-05-14 12:19       ` Michael Tremer
2021-05-14 20:24         ` Robin Roevens
2021-05-25 11:22           ` Michael Tremer
2021-04-23 16:15 ` [PATCH 3/3] services.cgi: use new Pakfire::pakinfo function Robin Roevens
2021-05-11 19:30 ` group call for review/opinions/idea's (was: [PATCH 0/3] Pakfile metadata enhancements) Robin Roevens
2021-05-12 18:45 ` [PATCH 0/3] Pakfile metadata enhancements Jonatan Schlag
2021-05-12 22:31   ` Robin Roevens
2021-05-15 12:10     ` Adolf Belka

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d37a464a08c0d3796a442655795283cd3b527c9b.camel@disroot.org \
    --to=robin.roevens@disroot.org \
    --cc=development@lists.ipfire.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox