diff --git a/95-akmodsposttrans.install b/95-akmodsposttrans.install index 407e9ac..b66551c 100755 --- a/95-akmodsposttrans.install +++ b/95-akmodsposttrans.install @@ -41,13 +41,19 @@ fi case "${COMMAND}" in add) - # Exit early if system-update.target is active - rhbz#1518401 - /usr/bin/systemctl -q is-active system-update-pre.target system-update.target - RET=$? + # needs to run in background as rpmdb might be locked otherwise + if [ -e /bin/systemctl ] ; then + # Exit early if system-update.target is active - rhbz#1518401 + /bin/systemctl is-active system-update.target &>/dev/null + RET=$? - [[ $RET == 0 ]] && exit 0 + [ $RET == 0 ] && exit 0 - /bin/systemctl restart "akmods@${KERNEL_VERSION}.service" --no-block >/dev/null 2>&1 + /bin/systemctl restart akmods@${KERNEL_VERSION}.service --no-block >/dev/null 2>&1 + else + nohup /usr/sbin/akmods --from-kernel-posttrans --kernels ${KERNEL_VERSION} > /dev/null 2>&1 & + fi + exit 0 ;; remove) # Nothing to do diff --git a/README.secureboot b/README.secureboot index 908b282..059977f 100644 --- a/README.secureboot +++ b/README.secureboot @@ -46,6 +46,6 @@ below. You can confirm the enrollment of the new keypair once the system rebooted with: - `mokutil --list-enrolled + `mokutil --list-enrolled | grep Issuer` or with: `mokutil --test-key /etc/pki/akmods/certs/public_key.der` diff --git a/akmods b/akmods index 9af6046..b0ed55f 100644 --- a/akmods +++ b/akmods @@ -37,7 +37,7 @@ # global vars myprog="akmods" -myver="0.6.2" +myver="0.6.0" kmodlogfile= continue_line="" tmpdir= @@ -47,39 +47,6 @@ verboselevel=2 # So we always retry anyway alwaystry=1 -# Check Running plymouth -no_plymouth=1 -last_message="" - -function check_plymouth() { - which plymouth > /dev/null 2> /dev/null - if [[ "$?" -eq 1 ]] - then - no_plymouth=1 - return 0 - fi - - plymouth --ping - no_plymouth=$? -} - -# new or del, msg -akmods_echo_plymouth(){ - if [[ "$no_plymouth" -eq 0 ]] - then - if [[ "$1" -eq 1 ]] - then - plymouth display-message --text="$2" - last_message=$2 - else - if [ -z "${last_message}" ]; then - plymouth hide-message --text="$last_message" & - last_message="" - fi - fi - fi -} - akmods_echo() { # where to output @@ -91,7 +58,7 @@ akmods_echo() shift # output to console - if (( verboselevel >= this_verbose )) ; then + if (( ${verboselevel} >= ${this_verbose} )) ; then if [[ "${1}" == "--success" ]] ; then echo_success continue_line="" @@ -110,7 +77,7 @@ akmods_echo() elif [[ "${1}" == "-n" ]] ; then continue_line="true" fi - echo "$@" >&"${this_fd}" + echo "$@" >&${this_fd} fi # no need to print the status flags in the logs @@ -124,11 +91,11 @@ akmods_echo() fi # global logfile - echo "$(date +%Y/%m/%d\ %H:%M:%S) akmods: $*" >> "/var/log/akmods/akmods.log" + echo "$(date +%Y/%m/%d\ %H:%M:%S) akmods: $@" >> "/var/log/akmods/akmods.log" # the kmods logfile as well, if we work on a kmod if [[ -n "${kmodlogfile}" ]] ; then - echo "$(date +%Y/%m/%d\ %H:%M:%S) akmods: $*" >> "${kmodlogfile}" + echo "$(date +%Y/%m/%d\ %H:%M:%S) akmods: $@" >> "${kmodlogfile}" fi } @@ -140,7 +107,7 @@ finally() # remove lockfile rm -f /var/cache/akmods/.lockfile - exit "${1:-128}" + exit ${1:-128} } # Make sure finally() is run regardless of reason for exiting. @@ -148,7 +115,7 @@ trap "finally" ABRT HUP INT QUIT create_tmpdir() { - if ! tmpdir="$(mktemp -d -p /tmp "${myprog}.XXXXXXXX")/" ; then + if ! tmpdir="$(mktemp -d -p /tmp ${myprog}.XXXXXXXX)/" ; then akmods_echo 2 1 "ERROR: failed to create tmpdir." akmods_echo 2 1 --failure ; return 1 fi @@ -169,13 +136,11 @@ remove_tmpdir() cleanup_cachedir () { - local excluded - excluded=$(find /boot -name 'vmlinuz-*' '!' -name '*rescue*' 2>/dev/null | sed 's/.*vmlinuz-//') - local -a file_list - mapfile -t file_list < <(find /var/cache/akmods -mindepth 2 -type f -not -name .last.log 2>/dev/null | grep -Fv -f <(echo "${excluded}")) - for one_file in "${file_list[@]}"; do - if grep -q ".*\.rpm$" <<< "${one_file}" ; then - if ! rpm -q "$(basename "${one_file%.rpm}")" >/dev/null ; then + for one_file in $(ls /var/cache/akmods/*/* 2>/dev/null | \ + grep -v "$(ls -I "*rescue*" /boot/vmlinuz-* | \ + sed 's%.*vmlinuz-%%g')") ; do + if $(grep -qE ".*\.rpm$" <<< "${one_file}") ; then + if ! $(rpm -q "$(basename ${one_file%.rpm})" >/dev/null) ; then rm -f "${one_file}" fi else @@ -196,6 +161,11 @@ init () UMASK=022 umask ${UMASK} + # fall back to current kernel if user didn't provide one + if [[ ! -n "${kernels}" ]] ; then + kernels="$(uname -r)" + fi + # we get the echo_{success,failure} stuff from there if [[ -r /etc/rc.d/init.d/functions ]] ; then source /etc/rc.d/init.d/functions @@ -285,7 +255,7 @@ check_default_kernel() # IMPORTANT: "bootctl is-installed" check that systemd-boot is installed only. # It doesn't check if systemd-boot is the default loader. # So we assume grubby results if available - if command -v grubby >/dev/null 2>&1 ; then + if [ ! -h /usr/sbin/grubby ] && command -v grubby >/dev/null 2>&1 ; then default_kernel=$(grubby --default-kernel | sed -e 's/^.*vmlinuz-//') elif bootctl is-installed >/dev/null 2>&1 ; then # Leave jq as optional - isDefault requires systemd 253 @@ -302,15 +272,14 @@ check_default_kernel() default_kernel="" fi - local _kernels - if [[ "${default_kernel}" == "$(uname -r)" ]] ; then - _kernels="${default_kernel}" + if [[ x${default_kernel} == x"$(uname -r)" ]] ; then + local _kernels="${default_kernel}" else - _kernels="${default_kernel} $(uname -r)" + local _kernels="${default_kernel} $(uname -r)" fi for _kernel in ${_kernels} ; do - if check_kernel_devel "${_kernel}" ; then + if [[ $(check_kernel_devel "${_kernel}" == 0) ]] ; then kernels="${kernels} ${_kernel}" fi done @@ -362,7 +331,6 @@ buildinstall_kmod() unset TMPDIR # build module using akmod - akmods_echo_plymouth 1 "akmod: Building ${this_kmodsrpm}..." akmods_echo 1 4 "Building RPM using the command '/usr/sbin/akmodsbuild --kernels ${this_kernelver} ${this_kmodsrpm}'" /sbin/runuser -s /bin/bash -c "/usr/sbin/akmodsbuild --quiet --kernels ${this_kernelver} --outputdir ${tmpdir}results --logfile ${tmpdir}/akmodsbuild.log ${this_kmodsrpm}" akmods >> "${kmodlogfile}" 2>&1 local returncode=$? @@ -373,14 +341,10 @@ buildinstall_kmod() fi # result - if (( returncode != 0 )) ; then + if (( ! ${returncode} == 0 )) ; then if [[ -n "${continue_line}" ]] ; then akmods_echo 1 2 --failure fi - - akmods_echo_plymouth 0 "" - akmods_echo_plymouth 1 "akmod: Building ${this_kmodsrpm} failed!" - sleep 5 akmods_echo 2 1 "Building rpms failed; see /var/cache/akmods/${this_kmodname}/${this_kmodverrel}-for-${this_kernelver}.failed.log for details" cp -fl "${kmodlogfile}" "/var/cache/akmods/${this_kmodname}/${this_kmodverrel}-for-${this_kernelver}.failed.log" kmodlogfile="" @@ -389,18 +353,13 @@ buildinstall_kmod() fi # dnf/yum install - repository disabled on purpose see rfbz#3350 - - akmods_echo_plymouth 0 "" - akmods_echo_plymouth 1 "akmod: Installing ${this_kmodsrpm}..." akmods_echo 1 4 "Installing newly built rpms" - local -a rpm_paths - mapfile -t rpm_paths < <(find "${tmpdir}results" -type f -name '*.rpm' | grep -v debuginfo) if [[ -f /usr/bin/dnf ]] ; then akmods_echo 1 4 "DNF detected" - dnf -y "${pkg_install:-install}" --nogpgcheck --disablerepo='*' "${rpm_paths[@]}" >> "${kmodlogfile}" 2>&1 + dnf -y ${pkg_install:-install} --nogpgcheck --disablerepo='*' $(find "${tmpdir}results" -type f -name '*.rpm' | grep -v debuginfo) >> "${kmodlogfile}" 2>&1 else akmods_echo 1 4 "DNF not found, using YUM instead." - yum -y "${pkg_install:-install}" --nogpgcheck --disablerepo='*' "${rpm_paths[@]}" >> "${kmodlogfile}" 2>&1 + yum -y ${pkg_install:-install} --nogpgcheck --disablerepo='*' $(find "${tmpdir}results" -type f -name '*.rpm' | grep -v debuginfo) >> "${kmodlogfile}" 2>&1 fi local returncode=$? @@ -408,14 +367,10 @@ buildinstall_kmod() cp "${tmpdir}results/"* "/var/cache/akmods/${this_kmodname}/" # everything fine? - if (( returncode != 0 )) ; then + if (( ${returncode} != 0 )) ; then if [[ -n "${continue_line}" ]] ; then akmods_echo 1 2 --failure fi - - akmods_echo_plymouth 0 "" - akmods_echo_plymouth 1 "akmod: Installing ${this_kmodsrpm} failed!" - sleep 5 akmods_echo 2 1 "Could not install newly built RPMs. You can find them and the logfile in:" akmods_echo 2 1 "/var/cache/akmods/${this_kmodname}/${this_kmodverrel}-for-${this_kernelver}.failed.log" cp -fl "${kmodlogfile}" "/var/cache/akmods/${this_kmodname}/${this_kmodverrel}-for-${this_kernelver}.failed.log" @@ -430,8 +385,6 @@ buildinstall_kmod() kmodlogfile="" remove_tmpdir - akmods_echo_plymouth 0 "" - return 0 } @@ -445,8 +398,7 @@ check_kmod_up2date() return 1 fi - local kmodpackage_file - kmodpackage_file="$(modinfo "${this_kmodname}" -k "${this_kernelver}" -n 2>/dev/null)" + local kmodpackage_file="$(modinfo ${this_kmodname} -k ${this_kernelver} -n 2>/dev/null)" # kmod present, even with weak-modules? if [[ ! -n "${kmodpackage_file}" ]] && [[ ! -d /lib/modules/${this_kernelver}/extra/${this_kmodname}/ ]] ; then @@ -463,13 +415,12 @@ check_kmod_up2date() fi # kmod up2date? - local kmodpackage # Weak module symlink case - if [ -n "${kmodpackage_file}" ] && [ -h "${kmodpackage_file}" ] && echo "${kmodpackage_file}" | grep -q "weak-updates" ; then - kmodpackage="$(rpm -qf "$(readlink -e "${kmodpackage_file}")" 2> /dev/null)" + if [ -n "${kmodpackage_file}" ] && [ -h "${kmodpackage_file}" ] && $(echo "${kmodpackage_file}" | grep -q "weak-updates") ; then + local kmodpackage="$(rpm -qf $(readlink -e ${kmodpackage_file}) 2> /dev/null)" # Regular module file case else - kmodpackage="$(rpm -qf "/lib/modules/${this_kernelver}/extra/${this_kmodname}/" 2> /dev/null)" + local kmodpackage="$(rpm -qf /lib/modules/${this_kernelver}/extra/${this_kmodname}/ 2> /dev/null)" fi if [[ ! -n "${kmodpackage}" ]] ; then # seems we didn't get what we wanted @@ -477,10 +428,8 @@ check_kmod_up2date() akmods_echo 1 2 -n "Warning: Could not determine what package owns /lib/modules/${this_kernelver}/extra/${this_kmodname}/" return 0 fi - local kmodver - kmodver=$(rpm -q --qf '%{EPOCH}:%{VERSION}-%{RELEASE}\n' "${kmodpackage}" | sed 's|(none)|0|; s!\.\(fc\|el\|lvn\)[0-9]*!!g') - local akmodver - akmodver=$(rpm -qp --qf '%{EPOCH}:%{VERSION}-%{RELEASE}\n' /usr/src/akmods/"${this_kmodname}"-kmod.latest | sed 's|(none)|0|; s!\.\(fc\|el\|lvn\)[0-9]*!!g') + local kmodver=$(rpm -q --qf '%{EPOCH}:%{VERSION}-%{RELEASE}\n' "${kmodpackage}" | sed 's|(none)|0|; s!\.\(fc\|el\|lvn\)[0-9]*!!g') + local akmodver=$(rpm -qp --qf '%{EPOCH}:%{VERSION}-%{RELEASE}\n' /usr/src/akmods/"${this_kmodname}"-kmod.latest | sed 's|(none)|0|; s!\.\(fc\|el\|lvn\)[0-9]*!!g') rpmdev-vercmp "${kmodver}" "${akmodver}" &>/dev/null local retvalue=$? @@ -507,8 +456,7 @@ check_kmods() akmods_echo 1 2 -n "Checking kmods exist for ${this_kernelver}" for akmods_kmodfile in /usr/src/akmods/*-kmod.latest ; do - local this_kmodname - this_kmodname="$(basename "${akmods_kmodfile%%-kmod.latest}")" + local this_kmodname="$(basename ${akmods_kmodfile%%-kmod.latest})" # actually check this akmod? if [[ -n "${akmods}" ]] ; then @@ -521,7 +469,7 @@ check_kmods() fi # go - if ! check_kmod_up2date "${this_kernelver}" "${this_kmodname}" ; then + if ! check_kmod_up2date ${this_kernelver} ${this_kmodname} ; then # okay, kmod wasn't found or is not up2date if [[ -n "${continue_line}" ]] ; then akmods_echo 1 2 --success @@ -539,15 +487,14 @@ check_kmods() fi fi - local this_kmodverrel - this_kmodverrel="$(rpm -qp --qf '%{VERSION}-%{RELEASE}' "${akmods_kmodfile}" | sed 's!\.\(fc\|el\|lvn\)[0-9]*!!g' )" + local this_kmodverrel="$(rpm -qp --qf '%{VERSION}-%{RELEASE}' "${akmods_kmodfile}" | sed 's!\.\(fc\|el\|lvn\)[0-9]*!!g' )" if [[ ! -n "${alwaystry}" ]] && [[ -e "/var/cache/akmods/${this_kmodname}/${this_kmodverrel}-for-${this_kernelver}".failed.log ]] ; then akmods_echo 1 2 -n "Ignoring ${this_kmodname}-kmod as it failed earlier" akmods_echo 1 2 --warning local someignored="true" else akmods_echo 1 2 -n "Building and installing ${this_kmodname}-kmod" - buildinstall_kmod "${this_kernelver}" "${this_kmodname}" "${akmods_kmodfile}" "${this_kmodverrel}" + buildinstall_kmod ${this_kernelver} ${this_kmodname} ${akmods_kmodfile} ${this_kmodverrel} local returncode=$? if [[ "$returncode" == "0" ]] ; then akmods_echo 1 2 --success @@ -574,7 +521,7 @@ check_kmods() # akmods for newly installed akmod rpms as wells as akmods.service run # after udev and systemd-modules-load.service have tried to load modules - if [[ -n "${somesucceeded}" ]] && [[ "${this_kernelver}" == "$(uname -r)" ]] ; then + if [[ -n "${somesucceeded}" ]] && [[ ${this_kernelver} = "$(uname -r)" ]] ; then find /sys/devices -name modalias -print0 | xargs -0 cat | xargs modprobe -a -b -q if [ -f /usr/bin/systemctl ] ; then systemctl restart systemd-modules-load.service @@ -605,7 +552,7 @@ while [ "${1}" ] ; do exit 1 fi - if ! check_kernel_devel "${1}" ; then + if [[ $(check_kernel_devel "${1}" != 0) ]] ; then echo "ERROR: kernel or kernel-devel required for ${1}" >&2 exit 1 fi @@ -659,11 +606,11 @@ while [ "${1}" ] ; do shift ;; --verbose) - (( verboselevel++ )) + let verboselevel++ shift ;; --quiet) - (( verboselevel-- )) + let verboselevel-- shift ;; --help) @@ -682,7 +629,6 @@ while [ "${1}" ] ; do esac done -check_plymouth # sanity checks init @@ -693,7 +639,7 @@ fi # go for kernel in ${kernels} ; do - check_kmods "${kernel}" + check_kmods ${kernel} done # finished :) diff --git a/akmods-kmodgenca b/akmods-kmodgenca index eab0882..dafe69b 100644 --- a/akmods-kmodgenca +++ b/akmods-kmodgenca @@ -433,12 +433,6 @@ function create_cacert_config() { # Set '-batch' argument. AUTOMATIC_BUILD_OPTION="-batch" - local cert_country_code=$(locale country_ab2) - if [[ -z ${cert_country_code} ]]; then - echo -e "${BOLD_YELLOW_TEXT}WARNING:${CLEAR_TEXT} COULD NOT DETECT COUNTRY CODE FROM LOCALE; USING FALLBACK VALUE: US" >&2 - cert_country_code=US - fi - # Utilise default values if 'AUTOMATIC_BUILD' is equal to '1'. # - Set OpenSSL field values. # - Comment default and min/max values. @@ -447,7 +441,7 @@ function create_cacert_config() { -e "s#\(emailAddress *= \).*#\1akmods@${cert_hostname}#" \ -e "s#\(localityName *= \).*#\1None#" \ -e "s#\(stateOrProvinceName *= \).*#\1None#" \ - -e "s#\(countryName *= \).*#\1${cert_country_code}#" \ + -e "s#\(countryName *= \).*#\1$(locale country_ab2)#" \ -e "s#\(commonName *= \).*#\1${KEYNAME}#" \ -e "s/^[^#]*_default *= /#&/" \ -e "s/^[^#]*_min/#&/" \ diff --git a/akmods-ostree-post b/akmods-ostree-post index 747d0ed..517e1b3 100644 --- a/akmods-ostree-post +++ b/akmods-ostree-post @@ -43,7 +43,7 @@ finally() # remove tmpfiles remove_tmpdir - exit "${1:-128}" + exit ${1:-128} } # Make sure finally() is run regardless of reason for exiting. @@ -51,7 +51,7 @@ trap "finally" ABRT HUP INT QUIT create_tmpdir() { - if ! tmpdir="$(mktemp -d -p /tmp "${myprog}.XXXXXXXX")/" ; then + if ! tmpdir="$(mktemp -d -p /tmp ${myprog}.XXXXXXXX)/" ; then echo "ERROR: failed to create tmpdir." >&2 finally 1 fi @@ -79,24 +79,24 @@ for kernel in ${kernels} ; do echo "Building ${srpm} for kernel ${kernel}" # Note: This builds as root, but this is pretty safe because its happening in the ostree %post sandbox. # In fact, given that /usr is a rofiles-fuse mount no other user can access /usr in this sandbox anyway. - akmodsbuild --quiet --kernels "${kernel}" --outputdir "${tmpdir}results" --logfile "${tmpdir}/akmodsbuild.log" "${srpm}" 2>&1 + akmodsbuild --quiet --kernels ${kernel} --outputdir ${tmpdir}results --logfile "${tmpdir}/akmodsbuild.log" "${srpm}" 2>&1 returncode=$? - if (( returncode != 0 )); then + if (( ! ${returncode} == 0 )); then finally 1 fi done for f in $(find "${tmpdir}results" -type f -name '*.rpm' | grep -v debuginfo) ; do - rpm2cpio "${f}" | cpio --quiet -D / -id + rpm2cpio $f | cpio --quiet -D / -id returncode=$? - if (( returncode != 0 )); then + if (( ! ${returncode} == 0 )); then echo "Extracting $f failed:" 2>&1 finally 1 fi done for kernel in ${kernels} ; do - depmod -v "${kernel}" 2>&1 + depmod -v ${kernel} 2>&1 done finally 0 diff --git a/akmods.service b/akmods.service.in similarity index 90% rename from akmods.service rename to akmods.service.in index 587913d..22530d3 100644 --- a/akmods.service +++ b/akmods.service.in @@ -1,7 +1,7 @@ [Unit] Description=Builds and install new kmods from akmod packages ConditionPathExists=!/run/ostree-booted -Before=display-manager.service +Before=@SERVICE@ After=akmods-keygen.target Wants=akmods-keygen.target diff --git a/akmods.spec b/akmods.spec index 88d3cef..e3de822 100644 --- a/akmods.spec +++ b/akmods.spec @@ -1,5 +1,5 @@ Name: akmods -Version: 0.6.2 +Version: 0.6.0 Release: %autorelease Summary: Automatic kmods build and install tool @@ -11,7 +11,7 @@ Source0: 95-akmods.preset Source1: akmods Source2: akmodsbuild Source3: akmods.h2m -Source6: akmods.service +Source6: akmods.service.in Source7: akmods-shutdown Source8: akmods-shutdown.service Source9: README @@ -26,16 +26,15 @@ Source17: akmods-kmodgenca Source18: akmods-keygen.target Source19: akmods-keygen@.service Source20: %{name}-tmpfiles.conf -Source21: akmods.sysusers.conf BuildArch: noarch BuildRequires: help2man -# Needed for older branches el8+, noop on f43+ -%{?sysusers_requires_compat} - # not picked up automatically +%if 0%{?rhel} == 6 +Requires: %{_bindir}/nohup +%endif Requires: %{_bindir}/flock Requires: %{_bindir}/time @@ -69,6 +68,7 @@ Suggests: (kernel-devel if kernel-core) Suggests: (kernel-rt-devel if kernel-rt) # we create a special user that used by akmods to build kmod packages +Requires(pre): shadow-utils # systemd unit requirements. BuildRequires: systemd @@ -125,9 +125,9 @@ install -pm 0755 %{SOURCE13} %{buildroot}%{_prefix}/lib/kernel/install.d/ mkdir -p \ %{buildroot}%{_unitdir} \ %{buildroot}%{_presetdir} - +sed "s|@SERVICE@|display-manager.service|" %{SOURCE6} >\ + %{buildroot}%{_unitdir}/akmods.service install -pm 0644 %{SOURCE0} %{buildroot}%{_presetdir}/ -install -pm 0644 %{SOURCE6} %{buildroot}%{_unitdir}/ install -pm 0755 %{SOURCE7} %{buildroot}%{_sbindir}/ install -pm 0644 %{SOURCE8} %{buildroot}%{_unitdir}/ install -pm 0644 %{SOURCE11} %{buildroot}%{_unitdir}/ @@ -143,11 +143,13 @@ help2man -N -i %{SOURCE3} -s 1 \ -o %{buildroot}%{_mandir}/man1/akmodsbuild.1 \ %{buildroot}%{_sbindir}/akmodsbuild -install -m0644 -D %{SOURCE21} %{buildroot}%{_sysusersdir}/akmods.conf - %pre -%sysusers_create_compat %{SOURCE21} +# create group and user +getent group akmods >/dev/null || groupadd -r akmods +getent passwd akmods >/dev/null || \ +useradd -r -g akmods -d /var/cache/akmods/ -s /sbin/nologin \ + -c "User is used by akmods to build akmod packages" akmods %post %systemd_post akmods.service @@ -195,7 +197,6 @@ install -m0644 -D %{SOURCE21} %{buildroot}%{_sysusersdir}/akmods.conf %dir %attr(-,akmods,akmods) %{_localstatedir}/cache/akmods %dir %attr(0775,root,akmods) %{_localstatedir}/log/%{name} %{_mandir}/man1/* -%{_sysusersdir}/akmods.conf %changelog diff --git a/akmods.sysusers.conf b/akmods.sysusers.conf deleted file mode 100644 index 6dd7280..0000000 --- a/akmods.sysusers.conf +++ /dev/null @@ -1,3 +0,0 @@ -#Type Name ID GECOS Home directory Shell -g akmods - - - - -u akmods - 'User is used by akmods to build akmod packages' /var/cache/akmods/ - diff --git a/akmodsbuild b/akmodsbuild index 23b0783..848c392 100644 --- a/akmodsbuild +++ b/akmodsbuild @@ -23,10 +23,14 @@ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # myprog="akmodsbuild" -myver="0.6.2" +myver="0.5.6" # defaults that might get overwritten by user: kernels="$(uname -r)" +target="$(uname -m)" +if [[ "${target}" == "armv7l" ]] ; then + target="armv7hl" +fi numberofjobs=$(grep -c processor /proc/cpuinfo 2> /dev/null) verboselevel=2 outputdir="${PWD}" @@ -60,7 +64,7 @@ init () # SRPMS available? for srpm in ${srpms}; do - if [[ ! -r "${srpm}" ]] ; then + if [[ ! -r ${srpm} ]] ; then echo "ERROR: Can't find SRPM ${srpm}" exit 1 fi @@ -77,28 +81,19 @@ init () # make sure this is a number - if ! (( numberofjobs > 0 )) ; then + if ! (( ${numberofjobs} > 0 )) ; then echo "Warning: using hardcoded defaut value for number of jobs" numberofjobs=2 fi ## preparations # tmpdir - if ! tmpdir="$(mktemp -d -p /tmp "${myprog}.XXXXXXXX")" ; then + if ! tmpdir="$(mktemp -d -p /tmp ${myprog}.XXXXXXXX)" ; then echo "ERROR: Could create tempdir." exit 1 fi - if [ -z "${target}" ] ; then - case "${kernels}" in - *x86_64_v4) target=x86_64_v4;; - *x86_64_v3) target=x86_64_v3;; - *x86_64_v2) target=x86_64_v2;; - *armv7hl) target=armv7hl;; - *) target="$(uname -m)" ;; - esac - fi - # buildtree + # buildtreee mkdir "${tmpdir}"/{BUILD,SOURCES,SPECS,SRPMS,RPMS,RPMS/"${target}"} # logfile @@ -106,7 +101,7 @@ init () logfile="${tmpdir}/logfile" fi - if { [[ -e "${logfile}" ]] && [[ ! -w "${logfile}" ]] ; } || ! touch "${logfile}" ; then + if ( [[ -e "${logfile}" ]] && [[ ! -w "${logfile}" ]] ) || ! touch "${logfile}" ; then echo "ERROR: Could not write logfile." finally exit 1 @@ -148,12 +143,12 @@ akmods_echo() fi # output to console - if (( verboselevel >= this_verbose )) ; then - echo "$@" >&"${this_fd}" + if (( ${verboselevel} >= ${this_verbose} )) ; then + echo "$@" >&${this_fd} fi # global logfile - if [[ ! -n "${notlogfile}" ]] ; then + if [[ ! -n ${notlogfile} ]] ; then echo "$@" >> "${logfile}" fi } @@ -164,8 +159,8 @@ watch_rpmbuild() # background function to show rpmbuild progress # does't use akmods_echo here; this stage handles the output on its own # (seperate process and there is no need to log this) - if (( verboselevel == 2 )) ; then - tail --pid "${1}" -n +1 -s 0.1 -f "${2}" 2>/dev/null | grep --line-buffered -e '%prep' -e '%build' -e '%install' -e '%clean' | while read -r line ; do + if (( ${verboselevel} == 2 )) ; then + tail --pid ${1} -n +1 -s 0.1 -f ${2} 2>/dev/null | grep --line-buffered -e '%prep' -e '%build' -e '%install' -e '%clean' | while read line ; do if [[ "${line}" != "${line##*prep}" ]] ; then echo -n "prep " elif [[ "${line}" != "${line##*build}" ]] ; then @@ -177,8 +172,8 @@ watch_rpmbuild() # last linefeed is done by the caller fi done - elif (( verboselevel > 2 )) ; then - tail --pid "${1}" -n +1 -s 0.1 -f "${2}" + elif (( ${verboselevel} > 2 )) ; then + tail --pid ${1} -n +1 -s 0.1 -f ${2} fi } @@ -199,32 +194,31 @@ process_srpm() --define "_rpmdir ${tmpdir}/RPMS" \ --define "_smp_mflags -j${numberofjobs}" \ --define "kernels ${kernels}" \ - --target "${target}" \ + --target ${target} \ --rebuild "${source_rpm}" 2>&1 | tee -a "${logfile}" > "${tmpdir}/.joblog" & local rpmbuild_jobid=$! # show progress - if (( verboselevel >= 2 )) ; then - watch_rpmbuild "${rpmbuild_jobid}" "${tmpdir}/.joblog" 2> /dev/null & + if (( ${verboselevel} >= 2 )) ; then + watch_rpmbuild ${rpmbuild_jobid} "${tmpdir}/.joblog" 2> /dev/null & local watch_jobid=$! fi # wait for rpmbuild - wait "${rpmbuild_jobid}" - local rpmbuild_returncode - rpmbuild_returncode=$(tail -n 1 "${tmpdir}/.jobexit") + wait ${rpmbuild_jobid} + local rpmbuild_returncode=$(tail -n 1 "${tmpdir}/.jobexit") unset rpmbuild_jobid # give watch_rpmbuild a moment to catch up; kill it if it does not - if (( verboselevel >= 2 )) ; then + if (( ${verboselevel} >= 2 )) ; then sleep 0.5 - kill "${watch_jobid}" &> /dev/null + kill ${watch_jobid} &> /dev/null unset watch_jobid fi # did rpmbuild succeed? - if (( rpmbuild_returncode != 0 )) ; then + if (( ${rpmbuild_returncode} != 0 )) ; then # linefeed: akmods_echo 1 2 "" @@ -232,16 +226,15 @@ process_srpm() akmods_echo 2 2 --not-logfile "--- " tail -n 35 "${tmpdir}/.joblog" >&2 akmods_echo 2 2 --not-logfile "---" - return "${rpmbuild_returncode}" + return ${rpmbuild_returncode} fi # finish status for watch_rpmbuild - if (( verboselevel >= 2 )) ; then - akmods_echo 1 2 -n "Successful; " + if (( ${verboselevel} >= 2 )) ; then + akmods_echo 1 2 -n "Successfull; " fi - local rpms_built - rpms_built="$(cd "${tmpdir}"/RPMS/"${target}" || exit ; echo *)" + local rpms_built="$(cd "${tmpdir}"/RPMS/"${target}" ; echo *)" if ! mv "${tmpdir}/RPMS/${target}/"* "${outputdir}" ; then # linefeed: @@ -251,11 +244,11 @@ process_srpm() return 128 fi - if (( verboselevel == 1 )) ; then + if (( ${verboselevel} == 1 )) ; then for rpm in ${rpms_built}; do echo "${outputdir%%/}/${rpm}" done - elif (( verboselevel >= 2 )) ; then + elif (( ${verboselevel} >= 2 )) ; then akmods_echo 1 2 "Saved ${rpms_built} in ${outputdir%%/}/" fi @@ -318,11 +311,11 @@ while [ "${1}" ] ; do shift ;; -v|--verbose) - (( verboselevel++ )) + let verboselevel++ shift ;; -q|--quiet) - (( verboselevel-- )) + let verboselevel-- shift ;; -h|--help) @@ -350,12 +343,12 @@ init # go for srpm in ${srpms}; do - process_srpm "${srpm}" + process_srpm ${srpm} returncode=$? - if (( returncode != 0 )) ; then + if (( ${returncode} != 0 )) ; then finally - exit "${returncode}" + exit ${returncode} fi done diff --git a/akmodsinit b/akmodsinit new file mode 100644 index 0000000..3f401c7 --- /dev/null +++ b/akmodsinit @@ -0,0 +1,47 @@ +#!/bin/bash - +# +# akmodinit Builds and install new kmods from akmod packages +# +# Author: Thorsten Leemhuis +# +# chkconfig: 2345 5 95 +# +# description: akmodsinit calls akmod during system boot to build and install +# kmods for the currently running kernel if neccessary. +# +# processname: akmodsd +# pidfile: /var/run/akmodsd.pid +# + +### BEGIN INIT INFO +# Provides: akmodsd +# Required-Start: $local_fs +# Required-Stop: $local_fs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Builds and install new kmods from akmod packages +# Description: akmodsinit calls akmod during system boot to build and install +# kmods for the currently running kernel if neccessary. +### END INIT INFO + +start_akmods () +{ + # build and install all kmods if neccessary + # for the currently running kernel (default in akmods) + /usr/sbin/akmods --from-init +} + + +# See how we were called. +case "$1" in + start|restart|reload|condrestart) + start_akmods + ;; + stop|status) + exit 0 + ;; + *) + echo $"Usage: $0 start" + exit 2 + ;; +esac diff --git a/changelog b/changelog index 6bcb2f2..5a64c5b 100644 --- a/changelog +++ b/changelog @@ -1,178 +1,216 @@ -* Fri May 02 2025 Marcel Hetzendorfer - 0.6.0-11 -- Show building and installing on plymouth boot screen - -* Tue Feb 11 2025 Zbigniew Jędrzejewski-Szmek - 0.6.0-10 -- Add sysusers.d config file to allow rpm to create users/groups - automatically - -* Thu Jan 16 2025 Fedora Release Engineering - 0.6.0-9 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Wed Dec 11 2024 Nicolas Chauvet - 0.6.0-8 -- Update others hostname occurences - -* Tue Dec 10 2024 Nicolas Chauvet - 0.6.0-7 -- Drop hostname deps - rhbz#2330137 - -* Thu Nov 28 2024 Nicolas Chauvet - 0.6.0-6 -- Validate or discard default_kernel - rhbz#2270414 - -* Fri Nov 08 2024 Nicolas Chauvet - 0.6.0-5 -- Fix KEYNAME lengh - rhbz#2323702 - -* Wed Oct 02 2024 Rohan Barar - 0.6.0-4 -- Add robust missing key pair logic - -* Wed Oct 02 2024 Rohan Barar - 0.6.0-3 -- Improved error handling + Bug fixes - -* Tue Oct 01 2024 Rohan Barar - 0.6.0-2 -- Add check for elevated privileges - -* Tue Oct 01 2024 Nicolas Chauvet - 0.6.0-1 -- Bump akmods version - -* Tue Oct 01 2024 Nicolas Chauvet - 0.5.10-30 -- Remove duplicate akmodsposttrans call - rhbz#2011120 - -* Thu Sep 26 2024 Rohan Barar - 0.5.10-29 -- Avoid double error on empty user-provided key pair name. - -* Thu Sep 26 2024 Rohan Barar - 0.5.10-28 -- Corrected erroneous code introduced in previous commits. - -* Thu Sep 26 2024 Rohan Barar - 0.5.10-27 -- Fixed typo 'if' to 'fi'. - -* Thu Sep 26 2024 Rohan Barar - 0.5.10-26 -- Added check for existing key pair with same name as user-specified new - key pair name. - -* Thu Sep 26 2024 Rohan Barar - 0.5.10-25 -- Added ability for user to name key pair. - -* Sun Sep 22 2024 Rohan Barar - 0.5.10-24 -- Introduced loop to gracefully handle extremely rare key pair name - collision events. - -* Sat Sep 21 2024 Rohan Barar - 0.5.10-23 -- Refactor key pair naming scheme to enhance robustness + Removed collision - check and key pair backup function due to bug with ':' in file names - alongside superfluous nature of function given improved naming scheme. - -* Sat Sep 21 2024 Rohan Barar - 0.5.10-22 -- Removed 'sudo' prefixes as per request in PR #23. - -* Sat Sep 21 2024 Rohan Barar - 0.5.10-21 -- Further improvements to argument parsing logic. - -* Fri Sep 20 2024 Rohan Barar - 0.5.10-20 -- Improved clarity of exit status code comments. - -* Fri Sep 20 2024 Rohan Barar - 0.5.10-19 -- Revert "Utilise robust shebang." as per request on PR #23. - -* Fri Sep 20 2024 Rohan Barar - 0.5.10-18 -- Added support for combined single-letter arguments + Chowned symlinks. - -* Fri Sep 20 2024 Rohan Barar - 0.5.10-17 -- Improved mokutil error handling + Added sudo prefixes. - -* Fri Sep 20 2024 Rohan Barar - 0.5.10-16 -- Added error handling for failed cacert modification. - -* Fri Sep 20 2024 Rohan Barar - 0.5.10-15 -- Whitespace changes for consistency. - -* Fri Sep 20 2024 Rohan Barar - 0.5.10-14 -- Extract functions to enhance readability + Set 'commonName' to match - 'KEYNAME'. - -* Fri Sep 20 2024 Rohan Barar - 0.5.10-13 -- Added logic to detect broken existing key pairs. - -* Fri Sep 20 2024 Rohan Barar - 0.5.10-12 -- Improved user feedback in event of existing key pair. - -* Fri Sep 20 2024 Rohan Barar - 0.5.10-11 -- Updated copyright information. - -* Fri Sep 20 2024 Rohan Barar - 0.5.10-10 -- Various changes to avoid ShellCheck warnings. - -* Fri Sep 20 2024 Rohan Barar - 0.5.10-9 -- Align license to 80 character width. - -* Fri Sep 20 2024 Rohan Barar - 0.5.10-8 -- Utilise robust shebang. - -* Fri Sep 20 2024 Rohan Barar - 0.5.10-7 -- Removed hard-coded paths. - -* Fri Aug 23 2024 Nicolas Chauvet - 0.5.10-6 -- Fix parsing multiple kernel - -* Fri Aug 23 2024 Nicolas Chauvet - 0.5.10-5 -- Use check_kernel_devel return code as appropriate - -* Fri Aug 23 2024 Nicolas Chauvet - 0.5.10-4 -- Change check_kernel_devel() to return instead of exit - -* Fri Aug 23 2024 Nicolas Chauvet - 0.5.10-3 -- akmods --from-init only operates on current kernel - -* Fri Aug 23 2024 Nicolas Chauvet - 0.5.10-2 -- Deprecate akmods-shutdown script - -* Fri Aug 23 2024 Nicolas Chauvet - 0.5.10-1 -- Bump to akmods 0.5.10 - -* Fri Aug 23 2024 Nicolas Chauvet - 0.5.9-8 -- Only check for default_kernel is no value - rhbz#2293047 - -* Fri Aug 23 2024 Nicolas Chauvet - 0.5.9-7 -- Revert "Call Init before the argument parser" - -* Fri Aug 23 2024 Nicolas Chauvet - 0.5.9-6 -- Switch to use sdubby alternatives to grubby - -* Fri Aug 23 2024 Nicolas Chauvet - 0.5.9-5 -- Drop older rhel and use -core - -* Fri Aug 23 2024 Nicolas Chauvet - 0.5.9-4 -- Drop older rhel cases - -* Mon Aug 19 2024 Jonathan Wakely - 0.5.9-3 -- Fix bug URLs in man page - -* Wed Jul 17 2024 Fedora Release Engineering - 0.5.9-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Thu Jul 04 2024 Nicolas Chauvet - 0.5.9-1 -- akmods release 0.5.9 - -* Thu Jul 04 2024 Hans de Goede - 0.5.8-10 -- Fix intel-ipu6-kmod installation with kernel >= 6.10 - -* Thu Jul 04 2024 Marius Schwarz - 0.5.8-9 -- Call Init before the argument parser - -* Mon Jan 22 2024 Fedora Release Engineering - 0.5.8-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Fri Jan 19 2024 Fedora Release Engineering - 0.5.8-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Tue Dec 05 2023 Nicolas Chauvet - 0.5.8-6 -- Workaround for rhbz#1889136 when localpkg_gpgcheck=True - * Wed Jul 19 2023 Fedora Release Engineering - 0.5.8-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild -* Fri May 05 2023 Nicolas Chauvet - 0.5.8-1 +* Fri May 5 2023 Nicolas Chauvet - 0.5.8-1 - Don't emit weak-deps from deprecated arches on all - Allow akmods --rebuild to force rebuild+reinstall - rhbz#2140012 - ensure to build for grub or systemd-boot default kernel - rhbz#2124086 - Drop "which" as akmods dependency +* Wed Jan 18 2023 Fedora Release Engineering - 0.5.7-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild +* Wed Jul 20 2022 Fedora Release Engineering - 0.5.7-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Wed May 04 2022 Nicolas Chauvet - 0.5.7-8 +- Fix logrotate permission access to /var/log/akmods directory - rhbz#2078490 +- Rename logrotate config file + +* Wed Mar 09 2022 Timothée Ravier - 0.5.7-7 +- Use 'Require' instead of 'Suggest' for kernel*-devel packages. + +* Thu Jan 27 2022 Nicolas Viéville - 0.5.7-6 +- Adapt usage of lockfile to systemd-tmpfiles +- Re-locate akmods logs in /var/log + +* Wed Jan 26 2022 Timothée Ravier - 0.5.7-5 +- Use kernel*-core variants in conditional Suggests + +* Wed Jan 19 2022 Fedora Release Engineering - 0.5.7-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Mon Dec 20 2021 Nicolas Chauvet - 0.5.7-3 +- Drop perl-interpeter +- Drop akmodsinit +- Only use preset on rhel +- kernel-devel-matched support + see also https://src.fedoraproject.org/rpms/akmods/pull-request/7 + +* Fri Dec 10 2021 Nicolas Chauvet - 0.5.7-2 +- Bump kmodtool requirement +- Rename kABI list +- Drop EL6 support +- Switch to distro agnostic deps + +* Fri Oct 22 2021 Nicolas Viéville - 0.5.7-1 +- Add local akmods CA signing keys and support tools to sign modules for + Secure boot thanks to Stanislas Leduc +- Add akmods-keygen service to generate MOK key pair on first run + +* Fri Oct 22 2021 Nicolas Viéville - 0.5.6-29 +- Remove trailing spaces and clean-up +- Use %%{name} when possible +- Convert if statement from "[!] $variable" to "[!] -n $variable" +- Fix kernel list build when parsing command line options +- Ensure to build for grub default kernel +- Improve detection of already installed (weak-)modules in akmods (RHEL) +- akmods uses logrotate and clean-up /var/cache/akmods sub-directories of + old logs and rpm files from no more installed kmod packages + (rhbz #1542658). + +* Wed Jul 21 2021 Fedora Release Engineering - 0.5.6-28 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Mon Jan 25 2021 Fedora Release Engineering - 0.5.6-27 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Mon Jul 27 2020 Fedora Release Engineering - 0.5.6-26 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jan 28 2020 Fedora Release Engineering - 0.5.6-25 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Wed Nov 20 2019 Nicolas Viéville - 0.5.6-24 +- Check kernel presence differently for systemd-boot machines - rhbz#1769144 + +* Wed Oct 16 2019 Leigh Scott - 0.5.6-23 +- Add requires kernel-abi-whitelists for RHEL + +* Wed Jul 24 2019 Fedora Release Engineering - 0.5.6-22 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Mon May 20 2019 Nicolas Chauvet - 0.5.6-21 +- Add check for rhel8 + +* Wed May 15 2019 Nicolas Viéville - 0.5.6-20 +- Fix akmodsposttrans after kernel update/install on Fedora >= 28 and + RHEL >= 7 - rhbz#1709055 + +* Thu Feb 28 2019 Alexander Larsson - 0.5.6-19 +- Support ostree/silverblue builds - rhbz#1667014 + +* Thu Feb 28 2019 Hans de Goede +- Do not fail when the old initscripts pkg is not installed - rhbz#1680121 + +* Thu Jan 31 2019 Fedora Release Engineering - 0.5.6-18 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Mon Nov 05 2018 Nicolas Chauvet - 0.5.6-17 +- Don't enforce target arch - rhbz#1644430 +- Rework log file path +- Avoid using /usr/lib/modules for el6 compat + +* Thu Jul 12 2018 Fedora Release Engineering - 0.5.6-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Mon Mar 26 2018 Nicolas Chauvet - 0.5.6-15 +- Add inihibitor for akmods@.service +- Use restart on akmodsposttrans + +* Mon Mar 26 2018 Nicolas Chauvet - 0.5.6-14 +- Switch to always retry by default +- Drop akmods preset by f28 +- Don't enable service on ah +- Test a rw directory + +* Wed Feb 07 2018 Fedora Release Engineering - 0.5.6-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Wed Dec 13 2017 Nicolas Chauvet - 0.5.6-12 +- Update kernel posttrans method - rhbz#1518401 + +* Thu Aug 03 2017 Nicolas Chauvet - 0.5.6-11 +- Rework kernel-devel requires on el + +* Thu Aug 03 2017 Nicolas Chauvet - 0.5.6-10 +- Enable suggests on fedora +- Add back el6 support in spec +- Add Requires elfutils-libelf-devel + +* Wed Jul 26 2017 Fedora Release Engineering - 0.5.6-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Thu Jul 13 2017 Petr Pisar - 0.5.6-8 +- perl dependency renamed to perl-interpreter + + +* Thu May 4 2017 Hans de Goede - 0.5.6-7 +- "udevadm trigger" may have bad side-effects (rhbz#454407) instead + look for modalias files under /sys/devices and call modprobe directly +- Fix exit status when no akmod packages are installed, so that systemd + does not consider the akmods.service as having failed to start + +* Wed May 3 2017 Hans de Goede - 0.5.6-6 +- Run "udevadm trigger" and "systemctl restart systemd-modules-load.service" + when new kmod packages have been build and installed so that the new + modules may be used immediately without requiring a reboot + +* Mon Mar 6 2017 Hans de Goede - 0.5.6-5 +- Add LICENSE file (rhbz#1422918) + +* Fri Feb 24 2017 Hans de Goede - 0.5.6-4 +- Replace %%{_prefix}/lib/systemd/system-preset with %%{_presetdir} + +* Thu Feb 16 2017 Hans de Goede - 0.5.6-3 +- Submit to Fedora for package review + +* Mon Nov 28 2016 Nicolas Chauvet - 0.5.6-2 +- Use Suggests kernel-devel weak-dependency - see rfbz#3386 + +* Fri Oct 14 2016 Richard Shaw - 0.5.6-1 +- Disable shutdown systemd service file by default. +- Remove modprobe line from main service file. + +* Wed Aug 17 2016 Sérgio Basto - 0.5.4-3 +- New release + +* Sun Jan 03 2016 Nicolas Chauvet - 0.5.4-2 +- Revert conflicts kernel-debug-devel + +* Thu Jul 23 2015 Richard Shaw - 0.5.4-1 +- Do not mark a build as failed when only installing the RPM fails. +- Run akmods-shutdown script instead of akmods on shutdown. +- Add systemd preset file to enable services by default. + +* Wed Jul 15 2015 Richard Shaw - 0.5.3-2 +- Add package conflicts to stop pulling in kernel-debug-devel, fixes BZ#3386. +- Add description for the formatting of the parameter, BZ#3580. +- Update static man pages and clean them up. +- Fixed another instance of TMPDIR causing issues. +- Added detection of dnf vs yum to akmods, fixed BZ#3481. + +* Wed Apr 1 2015 Richard Shaw - 0.5.2-1 +- Fix temporary directory creation when TMPDIR environment variable is set, + fixes BZ#2596. +- Update systemd scripts to use macros. +- Fix akmods run on shutdown systemd unit file, fixes BZ#3503. + +* Sun Nov 16 2014 Nicolas Chauvet - 0.5.1-4 +- Fix akmods on armhfp - rfbz#3117 +- Use yum instead of rpm to install packages - rfbz#3350 + Switch to a better date format + +* Fri Jan 11 2013 Richard Shaw - 0.5.1-3 +- Really fix akmods.service.in. + +* Fri Jun 01 2012 Richard Shaw - 0.5.1-2 +- Add service file to run again on shutdown. +- Add conditional for Fedora 18 to specify correct systemd graphical service. + +* Thu Apr 12 2012 Nicolas Chauvet - 0.4.0-4 +- Rebuilt + +* Tue Mar 20 2012 Richard Shaw - 0.4.0-3 +- Add additional error output if the needed kernel development files are not + installed. (Fixes #561) + +* Mon Mar 05 2012 Richard Shaw - 0.4.0-2 +- Remove remaining references to previous Fedora releases +- Remove legacy SysV init script from CVS. +- Added man page for akmods and cleaned up man page for akmodsbuild. + +* Tue Feb 07 2012 Nicolas Chauvet - 0.4.0-1 +- Update for UsrMove support +- Remove unused references to older fedora +- Change Requires from kernel-devel to kernel-devel-uname-r