Commit Graph

64 Commits (34bbbbf9c3b39e7b2d81df590aad5cdbd00280d6)

Author SHA1 Message Date
Yousong Zhou b2aa820b48 base-files: fix getting gid from group_add_next
Shell function return code only has range [0, 255].  Other values will
be truncated, e.g. return 65536 will have the same effect as return 0

While at it, drop other "return $rc" where rc will almost always take
value 0 and whose value current callers actually do not check

Fixes FS#988

Signed-off-by: Yousong Zhou <>
6 years ago
Marko Ratkaj 73c745f64f fix default_postinst function
When we run "opkg install" on a package that installs an uci-defaults
script, will fail to evaluate that script in its
default_postinst function.

This happens because there is no "./" present and it searches for the
file in paths specified by the PATH variable. This would work on bash,
but it will not work on ash and some other shells like sh, zsh. This
applys to the ". filename" directive used in this case.

This patch will make the path relative to the /etc/uci-defaults

Fixes: FS#1021

Signed-off-by: Marko Ratkaj <>
6 years ago
Jo-Philipp Wich 2b6facc8d4 include: simplify module autoloading
Let the generic postinstall script invoke "kmodloader" when the just
installed package contains any /etc/module.d/ entries.

This allows us to skip the explicit "insert_module()" calls in the
package postinstall.

Due to the removed insert_module calls we do not need to assemble a
complete list of modules per package anymore, which allows for vast
simplification of the package generation code.

While we're at it, also support specifying default parameters for
modules using either the MODPARAM or MODPARAM.modulename variables
in KernelPackage.

Signed-off-by: Jo-Philipp Wich <>
6 years ago
Yousong Zhou f334a0cdb8 base-files: allocate uid/gid starting from 65536
There already exist static assignment of uid/gid 65533 in packages feed
and we have nobody/nogroup taking 65534 as their ids.  Let's change the
pid of dynamic assignment to start from 65536 so that the two assignment
scheme will not collide with each other

While at it, fix the scan command checking existence of uid/gid

Signed-off-by: Yousong Zhou <>
7 years ago
Felix Fietkau ec99142474 base-files: add generic board_name function to
This will be used to replace all those nasty board specific scripts
that do basically the same thing

Signed-off-by: Felix Fietkau <>
7 years ago
Rafał Miłecki b522292405 base-files: add support for overlaying rootfs content
This adds support for install-overlay define. When used in package it
allows installing files to a special directory that gets copied to the
root when installing it.
It allows overwriting files provided by other packages.

Signed-off-by: Rafał Miłecki <>
7 years ago
Jonas Gorski 48cfc826eb base-files: ignore failure of stopping services on removal
Packages that do a killall <cmd> with the same name as the init script
will fail the prerm step when the service isn't running. Do make them
removable without having to restart the service, ignore the return code.

Signed-off-by: Jonas Gorski <>
Acked-by: Jo-Philipp Wich <>
7 years ago
Jonas Gorski afaa34ccd7 base-files: don't modify enabled state of service on upgrade
Properly stop/start services on upgrade, but don't change the enabled

Signed-off-by: Jonas Gorski <>
Acked-by: Jo-Philipp Wich <>
7 years ago
Matthias Schiffer 26b4216f95
base-files: make default_prerm work offline
IPKG_INSTROOT must be respected for offline removal (used for per-device

Signed-off-by: Matthias Schiffer <>
8 years ago
Jo-Philipp Wich 7f69458296 base-files: rework postinstall uci-defaults handling
Some package postinstall operations, e.g. those emitted by the LuCI build
system, source and delete the uci-defaults themselves upon package insteall,
causing the generic defaults apply code to trigger shell errors like:

    .../luci-app-ddns.postinst: .: line 130: can't open './40_luci-ddns'

Rework the generic apply code to check the existence of the uci-defaults
script before trying to source it, use sed to prefilter the list of entries
from the control file and perform the directory change in a subshell,
avoiding the need for cd $OLDPWD.

Signed-off-by: Jo-Philipp Wich <>
8 years ago
Daniel Golle 9b9c78e071 base-files: evaluate uci-defaults on run-time installations
Packages may install scripts into /etc/uci-defaults to be executed once
after installation, usually at the first boot of the target. This works
fine if the package was installed to the rootfs during build or using
the ImageBuilder.
If the package is installed using opkg during run-time uci-defaults
were applied only after a reboot of the device. Avoid the need to
reboot by evaluting the package's uci-defaults in default-postinst.

Signed-off-by: Daniel Golle <>
8 years ago
John Crispin ed07ef1601 base-files: split user/group addition code into a function
Signed-off-by: John Crispin <>
8 years ago
Jo-Philipp Wich 33b3594332 base-files: refactor default_postinst()
- Simplify user spec parsing code
 - Alias IPKG_INSTROOT to shorten code
 - Quote variables where appropriate
 - Remove a useless-use-of-cat instance
 - Suppress errors in case control or list files are missing

Signed-off-by: Jo-Philipp Wich <>

SVN-Revision: 46975
9 years ago
John Crispin e83643d31c base-files: default_postinst: propagate the real postinst return code
Using the postinst script for sanity checks and expecting opkg to fail
if the postinst didn't return 0 was possible in Barrier Breaker, propagate
the real postinst return code through default_postinst to restore this

Signed-off-by: Matthias Schiffer <>

SVN-Revision: 46653
9 years ago
Jonas Gorski d0af85c9a5 base-files: fix default pre-/postrm for packages with a dot
Instead of stripping everything after the first dot, strip everything
after the last dot.
This fixes pre-/postrm actions for packages with a dot in their name,
like libusb-1.0.

Fixes #19668.

Signed-off-by: Jonas Gorski <>

SVN-Revision: 45702
9 years ago
John Crispin bbad3f360e modules: fix postinst generation for kernel modules
Fixes ticket #19352.

Signed-off-by: Yousong Zhou <>
Signed-off-by: John Crispin <>

SVN-Revision: 45367
9 years ago
John Crispin 5cd8a482f3 base-files: default_postinst() fix variable colision
The name variable contains at first the package name,
and after the last group name.
This patch fixes /etc/rc.d symlink creation (at least).

Change name in pkgname, change the other name in ugname
(user group name), and id in ugid (user group id)

Signed-off-by: Etienne CHAMPETIER <>

SVN-Revision: 44253
9 years ago
John Crispin b0d2a9e77a base-files: default_postinst() - create user:group first (resend)
create user:group before running postinst-pkg. the postinst hook might require
the user:group to already exist.

Signed-off-by: Christian Schoenebeck <>

SVN-Revision: 43472
9 years ago
John Crispin 666659fb31 default_postinst() fix wrong call of group_add
[base-files] default_postinst() fix wrong call of group_add
after 12bae65d07d29854204715cebc1ef1eae237fd9b group_add is
always called. shell scripting can be tricky...

wrong call:
[ -n "$gid" ] && group_exists $name || group_add $name $gid

this leads to a call of 'group_add' when $gid is emtpy, proof:

root@box:~ functionA() { echo A; }
root@box:~ functionB() { echo B; }
root@box:~ VAR=
root@box:~ [ -n "$VAR" ] && functionA || functionB
root@box:~ # functionB was called, but VAR is not filled
root@box:~ VAR=filled
root@box:~ [ -n "$VAR" ] && functionA || functionB

Signed-off-by: Bastian Bittorf <>

SVN-Revision: 42926
9 years ago
John Crispin d099a34980 base-files: default_postinst() force clear luci-indexcache
Inside every LuCI package you need to clear luci-indexcache and
sometimes when installing non LuCI pacakges it's also needed to clear
it. Easier put it into default_postinst().

Signed-off-by: Christian Schoenebeck <>

SVN-Revision: 42923
9 years ago
John Crispin 5efe2e5e3c base-files: the USERID code path did not check for duplicate groups
Signed-off-by: John Crispin <>

SVN-Revision: 42919
9 years ago
John Crispin a3bf98495a base-files: extend USERID:=syntax
it is now possible to inlie the uid and gid in the syntax


Signed-off-by: John Crispin <>

SVN-Revision: 42838
10 years ago
John Crispin f9cccd2c14 base-files: make postinst script run inside a subshell
Signed-off-by: John Crispin <>

SVN-Revision: 42800
10 years ago
John Crispin 44249f71a8 postinst trigger: the new postinst trigger broke IB
Signed-off-by: John Crispin <>

SVN-Revision: 42571
10 years ago
John Crispin d6dbc22bbc ipkg: add a default postinst/prerm script
the postinst script enables/starts the init.d scripts upon package installation
and installs the users required by the package.

the prerm script stops and disables the init.d scripts.

Signed-off-by: John Crispin <>

SVN-Revision: 42470
10 years ago
Luka Perkov be2a057787 base-files: define yes/no as valid boolean options
ubox validate_data defines yes/no as valid boolean options, do the same in
config_get_bool too.

Signed-off-by: Luka Perkov <>

SVN-Revision: 41405
10 years ago
Felix Fietkau dd58e15b84 base-files: add back missing function for find_mtd_part to /lib/ (fixes #15496)
Signed-off-by: Felix Fietkau <>

SVN-Revision: 40426
10 years ago
Felix Fietkau 28f4f4a6d7 /lib/ remove config_rename()
Signed-off-by: Felix Fietkau <>

SVN-Revision: 40412
10 years ago
Felix Fietkau 4a9ea80ef0 /lib/ move rarely used mtd and macaddr related functions to /lib/functions/
Signed-off-by: Felix Fietkau <>

SVN-Revision: 40411
10 years ago
Felix Fietkau e700dcaf04 /lib/ remove jffs2_mark_erase()
Signed-off-by: Felix Fietkau <>

SVN-Revision: 40410
10 years ago
Felix Fietkau d368cc63fe base-files: remove config_clear() and list_remove()
Signed-off-by: Felix Fietkau <>

SVN-Revision: 40409
10 years ago
Felix Fietkau 3d275a8deb base-files: move uci_apply_defaults() to /etc/init.d/boot
Signed-off-by: Felix Fietkau <>

SVN-Revision: 40408
10 years ago
Felix Fietkau 4a6ad541d8 /lib/ remove hotplug_dev()
Signed-off-by: Felix Fietkau <>

SVN-Revision: 40406
10 years ago
Felix Fietkau ba2b6f661b /lib/ remove strtok()
Signed-off-by: Felix Fietkau <>

SVN-Revision: 40405
10 years ago
Felix Fietkau c27c5b9cbc /lib/ move preinit related functions to /lib/functions/
Signed-off-by: Felix Fietkau <>

SVN-Revision: 40404
10 years ago
Felix Fietkau e90b695157 /lib/ remove pi_include()
Signed-off-by: Felix Fietkau <>

SVN-Revision: 40403
10 years ago
Felix Fietkau 1d763171bf /lib/ remove jffs2_ready()
Signed-off-by: Felix Fietkau <>

SVN-Revision: 40402
10 years ago
Felix Fietkau 0f2524f473 /lib/ remove support for non-overlayfs overlay fopivot types
Signed-off-by: Felix Fietkau <>

SVN-Revision: 40401
10 years ago
John Crispin 834204bda6 base-files: fix mount-utils incompatibility
Signed-off-by: Toke Høiland-Jørgensen <>

SVN-Revision: 39169
10 years ago
John Crispin 93e9a71538 base-files: allow users to delect debug level during boot
Signed-off-by: John Crispin <>

SVN-Revision: 38909
10 years ago
Gabor Juhos b7914344ad base-files: add macaddr_canonicalize helper function
In commit r38690, the MAC address canonicalization
has been converted to use 'tr' instead of 'printf'.
This only works if with MAC addresses which uses
the 'xx:xx:xx:xx:xx:xx' format.

However on some boards, the MAC addresses are stored
in different format in the mtd partition. Some vendors
are using hyphens or dots as separators instead of
colons. Also the leading zeroes may be missing from the
individual octets or those are replaced with spaces.

Add a new function which can be used to convert these
into the 'xx:xx:xx:xx:xx:xx' format. Also update the
'mtd_get_mac_ascii' function to use the new helper.

The helper function is based on this code:

Signed-off-by: Gabor Juhos <>

SVN-Revision: 38803
10 years ago
Gabor Juhos 23cf426324 base-files: mtd_get_mac_ascii bugfix
The mtd_get_mac_ascii utility function was broken. This fixes it.

  - Remove the superfluous include of /lib/ The
    function is already in that file so it is pointless,
  - only use a variable if the whole key word matches,
  - don't try to process the MAC address if it is empty,
  - use 'tr' to canonicalize the MAC address,

Signed-off-by: Daniel Gimpelevich <>
[juhosg: add more fixes, update commit message]
Signed-off-by: Gabor Juhos <>

SVN-Revision: 38690
10 years ago
Gabor Juhos 8d55ea10ad base-files: add mtd_get_part_size helper
Signed-off-by: Gabor Juhos <>

SVN-Revision: 37475
11 years ago
John Crispin 43a3d87b83 package: fix insmod on install
the procd changes broke the postinst insmod.

Signed-off-by: John Crispin <>

SVN-Revision: 37015
11 years ago
John Crispin 4c43cacce0 base-files: module loading is now handled by ubox/kmodloader
Signed-off-by: John Crispin <>

SVN-Revision: 37003
11 years ago
Gabor Juhos c4f14fab9b base-files: minor cosmetic corrections for
- update copyright header
  - remove superfluous shebang left-over from changeset 34794
  - unify function declaration

[juhosg: keep Vertical Communications' copyright notice]

Signed-off-by: Michael Heimpold <>
Signed-off-by: Gabor Juhos <>

SVN-Revision: 35646
11 years ago
Gabor Juhos 5a8c63b47e base-files: add macaddr_{add,2bin,setbit_la} helpers
Signed-off-by: Gabor Juhos <>

SVN-Revision: 35614
11 years ago
Gabor Juhos 70d40b2ddd base-files: add mtd_get_mac_{ascii,binary} helpers
Signed-off-by: Gabor Juhos <>

SVN-Revision: 35612
11 years ago
Steven Barth f657787b52 base-files: Fix a typo in config_list_foreach
SVN-Revision: 34893
11 years ago
Mirko Vogt 4d4b2d3ced merge /lib/functions/ and /lib/
SVN-Revision: 34794
11 years ago