summaryrefslogtreecommitdiffstats
path: root/functions
AgeCommit message (Collapse)AuthorFilesLines
2014-03-05add btrfs module quirk for linux 3.14WorMzy Tykashi1-1/+1
This patch adds in some extra hackery to make sure that users with btrfs root filesystems don't end up with unusable initrds due to the following change made upstream [1]. TL;DR: The btrfs module has dropped it's libcrc32c dependency, so mkinitcpio no longer pulls in the crc32c module necessary for the btrfs module to be inserted. The crc32c module was only pulled in previously due to mkinitcpio hackery [2], so extra hackery now seems like the logical path. This problem can be experienced by using linux-mainline on an Arch machine with a btrfs root filesystem. Besides from this extra hackery, an alternative workaround would be for users in this situation to add crc32c to their MODULES aray in their mkintcpio.conf. Of course, this needs to be done ahead of the linux-3.14 upgrade for them to avoid the problem (assuming none of their other modules depend on libcrc32c). [1] http://www.mail-archive.com/linux-btrfs@vger.kernel.org/msg30912.html [2] https://projects.archlinux.org/mkinitcpio.git/tree/functions?id=v16#n398
2013-12-01Load build and run hooks from /etc/initcpioDave Reisner1-1/+5
This lets users shoot themselves in the foot more easily, as they can put their own modified hooks into /etc/initcpio/{hooks,install} to override those shipped by the distro in /usr/lib/initcpio. To make debugging easier, include the full path of the hook being used when mkinitcpio runs in verbose mode. Implements FS#37796.
2013-11-27mkinitcpio: Allow building an image without modulesThomas Bächler1-1/+5
The '-k none' switch prevents mkinitcpio from adding modules to the image and keeps it from bailing out when it cannot find any.
2013-11-24functions: error out when buildroot isn't writeableDave Reisner1-0/+5
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2013-11-24mkinitcpio: add -d optionThomas Bächler1-17/+18
The -d (--generatedir) option writes the root of the generated image directly to the specified directory. Useful for generating a shutdown-ramfs with mkinitcpio -d /run/initramfs/.
2013-09-24autodetect: read modaliases from uevent filesDave Reisner1-5/+7
As suggested by Harald Hoyer, this is more accurate for the sake of following where udev gets its modaliases from. In some rare cases, it may even be more complete than scraping the raw modalias files. Also, introduce a wrapper around modprobe so that the options passed are never ommitted, or wrongly specified. In this case, a subtle bug with the -r flag is fixed due to using the wrong variable with modprobe's -d flag. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2013-09-20functions: always add toplevel dir in add_full_dirDave Reisner1-1/+2
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2013-09-09add mkinitcpio version marker in buildroot creationDave Reisner1-0/+3
It doesn't make any sense that this was added during the final image creation. This fixes a subtle bug that would manifest itself if the user archived the build root manually. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2013-07-08Generate /etc/ld.so.cache for imageDave Reisner1-0/+3
Shaves a trivial, but measurable, amount of time off of early userspace at the cost of a small cache file. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2013-05-07move install_modules to functions to allow for testingDave Reisner1-0/+41
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2013-05-07remove "arbitrary" limit from index_of()Dave Reisner1-4/+9
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2013-04-24functions: implement add_firmwareDave Reisner1-7/+25
Add this as an abstraction for the various places firmware might exist. Additionally, don't complain about missing firmware unless *none* of it can be found -- and even then, only throw a warning. NB: this means that users building images without the autodetect hook and a rudimentary hook like "block" will see warnings which are going to cause panic, chaos, and upheaval. I fully expect that this will result in extra non-work for me in the form of closing invalid bug reports. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2013-04-21functions: return a count of failures from map, if possibleDave Reisner1-1/+1
I don't have any particular use case for this, but it might be nice to have this available in the future. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2013-03-13mkinitcpio: honor updates directory for firmwareDave Reisner1-2/+5
This also removes a check which would have otherwise hidden a missing firmware error from the user. FS#34255. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2013-03-13mkinitcpio: fix reference to bad variable nameDave Reisner1-1/+1
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2013-01-31functions: add /usr/lib64 -> lib symlink0.13.0Dave Reisner1-2/+8
Relegate this and the other lib64 symlink to x86_64, too, since we have no business creating this on i686. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2013-01-24symlink /lib64 -> usr/lib in imageDave Reisner1-0/+1
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2013-01-21Do more to determine the color caps of the termDave Reisner1-0/+18
823e24 wasn't really correct, since running 'tput setaf 0' effectively sanity checks the terminfo as well as checking existance. However, it does nothing to affirm that the terminal is capable of supporting colors. Moreover, *never* fall back on the hardcoded escapes as doing so implies that we've found a broken terminfo and we have no idea what the terminal is capable of doing. This reverts commit 823e2454176d4381cd3acc30481e9d84cdc298b1.
2013-01-13factor out kver detection to functions fileDave Reisner1-0/+22
This leaves bash completion with a duplication, but this is intentional to avoid pulling in the entire functions file and worrying about pollution. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2013-01-12parseopts: remove superfluous continue/shift statementsDave Reisner1-5/+1
Found via apron. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2013-01-12functions: remove broken symlink errorDave Reisner1-4/+1
Due to using PATH lookups for hooks, we can't possibly end up with a broken symlink. The build will just error out on the hook not being found. Found via apron. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2013-01-12functions: always force a PATH lookup for typeDave Reisner1-3/+3
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2012-11-26functions: always return successfully if we ran a build hookDave Reisner1-0/+5
Removal of the old API (f85d28014134076) exposed the fact that a build hook returning an error would increment the builderrors. This isn't really wanted -- we don't want to declare a hard "pass/fail" for a hook, as the functions we actually care about passing/failing are the add_* functions which are of real concern (and already caught). Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2012-11-26handle deprecation notices in -H and -LDave Reisner1-0/+12
Separate out the printing from these flags to separate functions and examine each hook more closely, pointing out where it might be deprecated, and what should be used in place of it. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2012-11-26replace find_in_dirs with PATH= manipulationDave Reisner1-18/+5
Declaring our lookup paths like normal colon delimited PATHs lets us reuse them for builtins like source and type to do the same work that this function previously did. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2012-11-26unique _modpaths arrays in during buildDave Reisner1-1/+1
Declaring _modpaths as an associative array allows us to forego the printf|sort -u|xargs cp pipeline as we can guarantee that the array is already prepared. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2012-11-24functions: only show the basename of a deprecated hookDave Reisner1-1/+2
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2012-11-24obsolete old-style install hook APIDave Reisner1-48/+20
This removes any meaning from the definitions of MODULES, BINARIES, FILES, and SCRIPT within install hooks. It also removed the deprecated checked_modules() function, which is replaced by add_checked_modules(). Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2012-11-11functions: avoid printing empty autodetect arrayDave Reisner1-2/+1
Fixes FS#32532. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2012-10-21function: add a map() utility function0.11.0Dave Reisner1-24/+15
map() runs the first argument (a function) with each of the remaining arguments as $1. The return value of map() is only 0 if all the calls succeeded. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2012-10-21convert autodetect cache to hashDave Reisner1-4/+4
If mkinitcpio -s is run, we still flush this cache to disk before exiting. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2012-10-21functions: trim path of resolved symlinkDave Reisner1-1/+1
When reporting that a hook is deprecated, only show the hook name, not the full resolved path. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2012-10-07commit to some level of style in variable namingDave Reisner1-46/+46
This is an ugly patch, and probably does more than I'd like it to. The idea is that mkinitcpio adopts some sort of consistent style which I'm actually happy with. I define 3 kinds of variables: 1) local variables: all lower case, and scoped within functions. Use freely, as they're well contained. 2) global variables: these are known to mkinitcpio internally, but are global in scope. They mainly carry runtime configuration and collected data during the image generation process. These are always lower case, but carry a leading underscore to denote that they're global. 3) "API" variables: also global in scope, but exist "outside" of mkinitcpio -- either drawn in from the configuration file, or "exported" to the install hooks. These are always all upper case. When introducing new variables, extreme care must be taken to pick names that will not conflict with the environment inherited by mkinitcpio. A HACKING file is introduced with a similar description of the above, and more. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2012-09-30functions: avoid fully resolving soname symlinksDave Reisner1-4/+2
It's okay to fully resolve the symlink to add the regular file it points to, but avoid mangling the symlink name to try and preserve relative links. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2012-09-30functions: include image config on image itselfDave Reisner1-7/+6
For the purposes of accounting and debugging, it's nice to have this around. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2012-09-30functions: always treat ADDED_MODULES as a hashDave Reisner1-4/+4
Overlooked in b8d9c5cd2753e9. This change also assigns a value of "2" to builtin modules which are added to the the ADDED_MODULES array, to distinguish them from actual modules on disk. Using this, we can avoid adding builtins to the image's runtime config. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2012-09-17declare ADDED_MODULES as associative arrayDave Reisner1-2/+2
Lookups in the hash table are far faster than traversing the entire array, as this grows O(n) and introduces a particularly noticeable slowdown on larger images. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2012-09-17functions: allow add_symlink to only take a single argDave Reisner1-7/+18
In the case of a single arg, use readlink(1) to resolve the target of the symlink. Document this, and additionally note the lack of guarantee about the target of the symlink. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2012-09-17install fstab/mtab as part of base layoutDave Reisner1-0/+4
These are low level enough that they should be part of the base layout, similar to the filesystem package in userspace. Later hooks can easily override these, if they really want to. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2012-08-19functions: avoid creating /usr/sbinDave Reisner1-1/+1
Booo. This broke my boot. Should never have been added in f3638aaa0937. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2012-08-13functions: symlink /usr/local/sbin -> /usr/binDave Reisner1-1/+2
This was overlooked in 5f81d06e8b87. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2012-07-28implement --moduleroot optionDave Reisner1-2/+2
This might be useful for creating an initramfs image as part of a kernel package. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2012-07-24baseroot: add flagfile to indicate we're in an initramfsTom Gundersen1-1/+4
This is used by udev to deal with firmware requests for firmware that is not available until the real root. It will also be used by systemd to detect what to do, if that is ever used. ref: http://www.spinics.net/lists/linux-wireless/msg94522.html Signed-off-by: Tom Gundersen <teg@jklm.no>
2012-07-15initalize buildroot later, and out outside of hooksDave Reisner1-0/+26
mkinitcpio needs to be able to more tightly control the layout of the image. By moving this outside the control of the base hook, it's more reasonable to believe that a drop-in replacement for the base hook could be written, as it now only contains the utilities required for the /init that it provides. Being that initialize_buildroot is outside of a hook, we can make "raw" calls to coreutils that create the directories and symlinks, saving some overhead and forking. This also symlinks /usr/local/{lib,bin} into the common /usr/lib and /usr/bin, respectively, so that there's always a way to override libs and bins, and they're automatically pulled into our strict early init path of /usr/bin. Finally, we lump all this generally a little "later" in the early setup. This addresses an unseen "bug" wherein an extra temp directory that never gets used is created when leveraging a preset. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2012-06-12Update module filter to be aware of hyphens in the MODULES arrayBrian Parsons1-1/+1
[dave: fix whitespace and re-add needed quoting] Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2012-06-08Use declare -f over type -t to avoid subshellsDave Reisner1-1/+1
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2012-06-08functions: avoid adding nonexistant modules to configDave Reisner1-2/+6
If we didn't actually add a module to the image, avoid adding it to the runtime config for probing. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2012-06-08functions: style nitsDave Reisner1-3/+11
Avoid using compound commands where one side runs a command group. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2012-06-05explicitly unset build function before sourcingDave Reisner1-0/+1
This fixes an unlikely (and likely unseen) regression from 9a20048c6279cd. Without unsetting the build function before sourcing the hook file, we can't guarantee that we're running the build function tied to that specific file. Signed-off-by: Dave Reisner <dreisner@archlinux.org>
2012-06-02catch errors in ldd ELF dep resolutionDave Reisner1-1/+7
ldd reporting a library to be 'not found' is dangerous, and should be reported. Consider this a build error, which will hopefully prompt the user to reconsider before rebooting. Signed-off-by: Dave Reisner <dreisner@archlinux.org>