[OpenWrt-Devel] cyclic dependency for /lib/functions.sh and /lib/functions/system.sh in special case

Adrian Schmutzler mail at adrianschmutzler.de
Fri Mar 13 12:13:24 EDT 2020


Hi,

> -----Original Message-----
> From: openwrt-devel [mailto:openwrt-devel-bounces at lists.openwrt.org] On
> Behalf Of mans0n
> Sent: Freitag, 13. März 2020 14:35
> To: Adrian Schmutzler <mail at adrianschmutzler.de>; openwrt-
> devel at lists.openwrt.org
> Subject: Re: [OpenWrt-Devel] cyclic dependency for /lib/functions.sh and
> /lib/functions/system.sh in special case
> 
> Hi Adrian,
> 
> On 2020-03-13 03:38, mail at adrianschmutzler.de (Adrian Schmutzler) wrote:
>  > Hi,
>  >
>  > I just wanted to source /lib/functions.sh in /lib/functions/system.sh
>  > (base-files package), as several functions in the latter require the
> former and
>  > it's annoying (and untidy) to have to include both files in several
> places.
>  >
>  > However, I realized that currently /lib/functions/system.sh is sourced in
>  > /lib/functions.sh, function default_postinst():
>  >
>  >
> https://github.com/openwrt/openwrt/blob/8df14c229c02a3b9329afc6e3ebf4f8a
> ec5b59ed
>  > /package/base-files/files/lib/functions.sh#L257
>  >
>  > So, currently effectively both files depend on each other in at least
> one case.
>  >
>  > However, in default_postinst(), it looks to me like no function from
> system.sh
>  > is actually used directly, but it's merely put there as an "external
> include"
>  > for the /etc/uci-defaults/* files processed there.
>  >
>  > I'd like to resolve this, both as I think the sourcing of
> /lib/functions.sh in
>  > /lib/functions/system.sh is helpful and tidy and because I think the
> cross
>  > dependency is quite undesirable.
>  >
>  > I see two solutions to that problem:
>  >
>  > 1. Remove the sourcing of /lib/functions/system.sh in
> default_postinst(). That
>  > would be the tidiest way IMO, as dependencies used in a uci-default
> script
>  > should just be put there. But it might break things if people relied
> on it. It
>  > would be relatively easy to fix uci-default scripts in openwrt repos, but
>  > downstream might complain. Still, I'd prefer this solution.
> 
> I like your first solution. It seems there's only one uci-defaults file
> in OpenWrt
> repo which really uses /lib/functions/system.sh. I guess downstream
> projects can
> handle it relatively easily.
> 
> And if we are going to break things, I'd also like to create something like
> /lib/functions/mtd.sh and move all mtd functions to there (and rename
> system.sh
> to macaddr.sh if possible). I don't feel there's no good reason to keep
> find_mtd_part()
> in functions.sh and find_mtd_chardev() in system.sh.
> Then we might even don't need to source /lib/functions.sh in
> /lib/functions/system.sh
> at the first place. (I think /lib/functions.sh is too big to be sourced
> everywhere...)
> But that would really break things heavily, so it's just my thought.

Thanks for your response.

I've actually tried the mtd.sh solution, but it's too painful.

So, I've come up with a smaller solution, still based on option 1 ...

Best

Adrian

> 
> Thanks.
> 
>  >
>  > 2. A second option would be to keep the include, but just move the
> function
>  > default_postinst() out of /lib/functions.sh (from my perspective, it
> doesn't
>  > really match there anyway) into a different library file (which?).
> This would
>  > still resolve my "dependency problem".
>  >
>  > Any opinions?
>  >
>  > Best
>  >
>  > Adrian
>  >
>  >
> 
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list