Modify binary kernel

master
Mike Hiretsky 15 years ago
parent 5ee0c42a23
commit 0e36a9dd3d

@ -19,16 +19,70 @@ calculate_update_kernel() {
# update initrd
[ -f ${dir}/initrd ] && rm -f ${dir}/initrd.old &&
mv ${dir}/initrd ${dir}/initrd.old
cp ${dir}/initramfs-${kname}-${kversion}-calculate ${dir}/initrd
# update initrd-install
[ -f ${dir}/initrd-install ] && rm -f ${dir}/initrd-install.old &&
mv ${dir}/initrd-install ${dir}/initrd-install.old
cp ${dir}/initramfs-${kname}-${kversion}-calculate ${dir}/initrd-install
ln -sf initramfs-${kname}-${kversion}-calculate ${dir}/initrd
# update System.map
[ -f ${dir}/System.map ] && rm -f ${dir}/System.map.old &&
mv ${dir}/System.map ${dir}/System.map.old
ln -sf System.map-${kname}-${kversion}-calculate ${dir}/System.map
}
is_broken_link() {
return [[ -n $( file $1 | grep "broken symbolic link" ) ]]
}
# @FUNCTION: calculate_restore_kernel
# @USAGE: [destination]
# @DESCRIPTION:
# Restore vmlinux.old and initrd.old in destination
calculate_restore_kernel() {
dir=$1
# restore vmlinuz
is_broken_link ${dir}/vmlinuz && [ -f ${dir}/vmlinuz.old ] &&
mv ${dir}/vmlinuz.old ${dir}/vmlinuz
# resotre initrd
is_broken_link ${dir}/initrd && [ -f ${dir}/initrd.old ] &&
mv ${dir}/initrd.old ${dir}/initrd
# restore System.map
is_broken_link ${dir}/System.map && [ -f ${dir}/System.map.old ] &&
mv ${dir}/System.map.old ${dir}/System.map
}
TMP_INITRAMFS=${T}/initramfs
SPLASH_DESCRIPTOR=/etc/splash/tty1/1024x768.cfg
# @FUNCTION: calculate_rm_modules_dir
# @USAGE: [CONTENTS]
# @DESCRIPTION:
# Remove installed files from lib/modules specified by CONTENTS file.
# For work need specify and create SLOT_T directory for .alreadydel flag file,
# which determined was or not file removing.
calculate_rm_modules_dir() {
PKG_CONTENTS=$1
[[ -f ${SLOT_T}/.alreadydel ]] && return 0 ||
touch ${SLOT_T}/.alreadydel &>/dev/null
addwrite "/lib/modules"
DIRRM=$( sed -rn '/^dir.*lib\/modules/ s/^\S+\s+(\S+)\s*.*$/\1/p' \
${PKG_CONTENTS} | sort -r)
FILERM=$( sed -rn '/^(obj|sym).*lib\/modules/ s/^\S+\s+(\S+)\s+.*$/\1/p' ${PKG_CONTENTS} )
if [[ -n ${FILERM} ]]
then
for f in ${FILERM}
do
rm -f $f
done
fi
if [[ -n ${DIRRM} ]]
then
for f in ${DIRRM}
do
rmdir $f &>/dev/null
done
fi
}
initramfs_unpack() {
mkdir -p ${TMP_INITRAMFS}
cd ${TMP_INITRAMFS}
@ -83,3 +137,20 @@ calculate_update_splash() {
initramfs_unpack $1 &&
initramfs_change_spalsh && initramfs_pack $1
}
# @FUNCTION: calculate_set_kernelversion
# @USAGE: KERNEL_DIR
# @DESCRIPTION:
# Change version in Makefile of kernel sources on version specified by
# variables KV_MAJOR KV_MINOR KV_PATCH KV_TYPE
calculate_set_kernelversion() {
KERNEL_DIR=$1
sed -ri "s/^VERSION = .*$/VERSION = $KV_MAJOR/" \
${KERNEL_DIR}/Makefile
sed -ri "s/^PATCHLEVEL = .*$/PATCHLEVEL = $KV_MINOR/" \
${KERNEL_DIR}/Makefile
sed -ri "s/^SUBLEVEL = .*$/SUBLEVEL = $KV_PATCH/" \
${KERNEL_DIR}/Makefile
sed -ri "s/^EXTRAVERSION = .*$/EXTRAVERSION = $KV_TYPE/" \
${KERNEL_DIR}/Makefile
}

@ -1,4 +1,4 @@
DIST linux-desktop-i686-2.6.31.7.tar.bz2 20694654 RMD160 9c975f2bb84cf2faa3c54556d9269a2210a2b899 SHA1 a45e32eade52c160c57cbc22b687210d2bfccd7a SHA256 9136eb788a624ec249726024ddfa062050b69cd9b3a1369d8a21ed93d82e5975
EBUILD linux-desktop-2.6.31.7.ebuild 1990 RMD160 4f154cf03bb110c1ca63c192b8a23b35114bc5b4 SHA1 eb63b21968b7d6e9cdfd335ddc73cc406a07551b SHA256 44b85692cd4f61d45b7c437e724b71f6af85428c30c81f13078b38cddf36172a
EBUILD linux-desktop-2.6.31.7.ebuild 2518 RMD160 ce49110ce0932ba9bc2030245bb0fc16066431f6 SHA1 2bbf0244fb3eac861bcdcb2ee5b0947705471671 SHA256 47c8ffc9e79cf681015354022202ef6add9649a91e2c3892aa8c39637b322bc3
MISC ChangeLog 438 RMD160 14d3ecc39e03397ddec05b7eb76c901758f3aa32 SHA1 3f66f71ae244e30e69ed273fece6228c1140dc63 SHA256 f45966bf552f3c5bb69449167314bafb281b5fc6cf426d0aea1ab7851ebadc48
MISC metadata.xml 301 RMD160 02bb86eab6405a3ef4c456cb74a1e75af6aa5908 SHA1 b175ee74e8df391d076f7eb5938f56a3b145ba14 SHA256 85b67abd7fbdbaf56de54b4d63580250b6f7ea0cfda624072a7601ee6d25ffd2

@ -9,22 +9,28 @@ DESCRIPTION="Binary kernel including the Gentoo patchset for the 2.6 kernel tree
HOMEPAGE="http://www.calculate-linux.org/linux-desktop"
SRC_URI="ftp://ftp.calculate.ru/pub/calculate/${PN}/${PN}-`arch`-${PV}.tar.bz2"
GENTOO_SOURCES_PV="2.6.31"
LICENSE="GPL-2"
KEYWORDS="~x86 ~amd64"
IUSE=""
KV_MAJOR=2
KV_MINOR=6
KV_PATCH=31
KV_TYPE=-calculate
SLOT="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
GENTOO_SOURCES_PV="${SLOT}"
GENTOO_SOURCES_PR="r7"
GENTOO_SOURCES_PVR="${GENTOO_SOURCES_PV}-${GENTOO_SOURCES_PR}"
SRC_NAME=linux-${GENTOO_SOURCES_PV}-gentoo-${GENTOO_SOURCES_PR}
SYSTEM="desktop"
LICENSE="GPL-2"
SLOT="2.6.31"
KEYWORDS="~x86 ~amd64"
IUSE=""
KV_FULL="${SLOT}${KV_TYPE}"
SLOT_T="${PORTAGE_TMPDIR}/portage/${CATEGORY}/${PN}-${SLOT}/temp"
DEPEND="=sys-kernel/gentoo-sources-${GENTOO_SOURCES_PVR}"
RDEPEND="${DEPEND}"
pkg_setup() {
:
mkdir -p ${SLOT_T}
}
src_unpack() {
@ -33,6 +39,15 @@ src_unpack() {
src_compile() {
cd ${WORKDIR}
addwrite "/usr/src/"
cp -Rpt ${ROOT}/usr/src/ usr/src/*
calculate_set_kernelversion ${ROOT}/usr/src/${SRC_NAME}
rm ${ROOT}/usr/src/linux
ln -sf ${SRC_NAME} ${ROOT}/usr/src/linux
cd ${ROOT}/usr/src/linux
make modules_prepare
cd ${WORKDIR}
}
src_install() {
@ -41,8 +56,12 @@ src_install() {
doins -r boot
doins -r lib
dosym /usr/src/${SRC_NAME} "/lib/modules/${GENTOO_SOURCES_PV}-calculate/source" || die "cannot install source symlink"
dosym /usr/src/${SRC_NAME} "/lib/modules/${GENTOO_SOURCES_PV}-calculate/build" || die "cannot install build symlink"
dosym /usr/src/${SRC_NAME} \
"/lib/modules/${GENTOO_SOURCES_PV}-calculate/source" ||
die "cannot install source symlink"
dosym /usr/src/${SRC_NAME} \
"/lib/modules/${GENTOO_SOURCES_PV}-calculate/build" ||
die "cannot install build symlink"
addwrite "/lib/firmware"
# Workaround kernel issue with colliding
@ -56,24 +75,26 @@ src_install() {
fi
done
addwrite "/usr/src/${SRC_NAME}"
for fwfile in `find "${D}/usr/src/${SRC_NAME}" -type f`; do
sysfile="${ROOT}/${fwfile/${D}}"
if [ -f "${sysfile}" ]; then
ewarn "Removing duplicated: ${sysfile}"
rm ${sysfile} || die "failed to remove ${sysfile}"
fi
done
doins -r usr
PKG_CONTENTS=${ROOT}/var/db/pkg/${CATEGORY}/${PN}-${SLOT}*/CONTENTS
test -f ${PKG_CONTENTS} && calculate_rm_modules_dir ${PKG_CONTENTS}
}
pkg_prerm() {
calculate_rm_modules_dir ${ROOT}/var/db/pkg/${CATEGORY}/${PF}/CONTENTS
}
pkg_postinst() {
calculate_update_splash /boot/initramfs-${SYSTEM}-${SLOT}-calculate
calculate_update_kernel ${SYSTEM} ${SLOT} /boot
calculate_update_splash ${ROOT}/boot/initramfs-${SYSTEM}-${SLOT}-calculate
calculate_update_kernel ${SYSTEM} ${SLOT} ${ROOT}/boot
KV_OUT_DIR=/usr/src/${SRC_NAME}
kernel-2_pkg_postinst
linux-mod_pkg_postinst
}
pkg_postrm() {
rm -f ${SLOT_T}/.alreadydel
rmdir ${SLOT_T} &>/dev/null
calculate_restore_kernel ${ROOT}/boot
}

@ -1,4 +1,4 @@
DIST linux-server-i686-2.6.31.7.tar.bz2 19745967 RMD160 859a42ff21742a5df2783dba4f67b4b5936db4d9 SHA1 7d890f4d003e0307cdeac7d244f3696ea56f344d SHA256 b5513bb8f6ad5fce504073158004986d2708528a5c13ae761ca15921ae909b6b
EBUILD linux-server-2.6.31.7.ebuild 1989 RMD160 9d351b694aa245e396ad98d755d138581c0870ed SHA1 a3da5ab15d01e3b47252cf41d78c91a39ac09234 SHA256 a5af538820565bbfc5543eff0ab4e0ac15ede27960f58b0f653c3cb3ec418ee4
EBUILD linux-server-2.6.31.7.ebuild 2517 RMD160 00c285e428209056d9bf499c5ee383b14767794b SHA1 741dd882e3a39c0dfd5a96667c67095255f9c106 SHA256 4ad4586afe32486cabc0e314acc706e148b58396152a8e1cf88ab58333a7b0de
MISC ChangeLog 434 RMD160 36ce8852efe13c558c364c0e2226d415b092d20a SHA1 553fc53f5a0a418a661ca31c03ffecfc87111bfb SHA256 d1c6409cd5ca84d48bc89449598ca4ea27e88edfc1373648f2ff09f0c87e5e0a
MISC metadata.xml 288 RMD160 5fd5b532cfce86a2e9a2a8b6ed45d37b50e35cbc SHA1 2cce1a3a0269f00995b3021bb73e27ded1de11e7 SHA256 876cd412c7719fddeb9a0e9c39179fe240cfa198f9db5db3b599e23f644b2459

@ -9,22 +9,28 @@ DESCRIPTION="Binary kernel including the Gentoo patchset for the 2.6 kernel tree
HOMEPAGE="http://www.calculate-linux.org/linux-desktop"
SRC_URI="ftp://ftp.calculate.ru/pub/calculate/${PN}/${PN}-`arch`-${PV}.tar.bz2"
GENTOO_SOURCES_PV="2.6.31"
LICENSE="GPL-2"
KEYWORDS="~x86 ~amd64"
IUSE=""
KV_MAJOR=2
KV_MINOR=6
KV_PATCH=31
KV_TYPE=-calculate
SLOT="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
GENTOO_SOURCES_PV="${SLOT}"
GENTOO_SOURCES_PR="r7"
GENTOO_SOURCES_PVR="${GENTOO_SOURCES_PV}-${GENTOO_SOURCES_PR}"
SRC_NAME=linux-${GENTOO_SOURCES_PV}-gentoo-${GENTOO_SOURCES_PR}
SYSTEM="server"
LICENSE="GPL-2"
SLOT="2.6.31"
KEYWORDS="~x86 ~amd64"
IUSE=""
KV_FULL="${SLOT}${KV_TYPE}"
SLOT_T="${PORTAGE_TMPDIR}/portage/${CATEGORY}/${PN}-${SLOT}/temp"
DEPEND="=sys-kernel/gentoo-sources-${GENTOO_SOURCES_PVR}"
RDEPEND="${DEPEND}"
pkg_setup() {
:
mkdir -p ${SLOT_T}
}
src_unpack() {
@ -33,6 +39,15 @@ src_unpack() {
src_compile() {
cd ${WORKDIR}
addwrite "/usr/src/"
cp -Rpt ${ROOT}/usr/src/ usr/src/*
calculate_set_kernelversion ${ROOT}/usr/src/${SRC_NAME}
rm ${ROOT}/usr/src/linux
ln -sf ${SRC_NAME} ${ROOT}/usr/src/linux
cd ${ROOT}/usr/src/linux
make modules_prepare
cd ${WORKDIR}
}
src_install() {
@ -41,8 +56,12 @@ src_install() {
doins -r boot
doins -r lib
dosym /usr/src/${SRC_NAME} "/lib/modules/${GENTOO_SOURCES_PV}-calculate/source" || die "cannot install source symlink"
dosym /usr/src/${SRC_NAME} "/lib/modules/${GENTOO_SOURCES_PV}-calculate/build" || die "cannot install build symlink"
dosym /usr/src/${SRC_NAME} \
"/lib/modules/${GENTOO_SOURCES_PV}-calculate/source" ||
die "cannot install source symlink"
dosym /usr/src/${SRC_NAME} \
"/lib/modules/${GENTOO_SOURCES_PV}-calculate/build" ||
die "cannot install build symlink"
addwrite "/lib/firmware"
# Workaround kernel issue with colliding
@ -56,24 +75,26 @@ src_install() {
fi
done
addwrite "/usr/src/${SRC_NAME}"
for fwfile in `find "${D}/usr/src/${SRC_NAME}" -type f`; do
sysfile="${ROOT}/${fwfile/${D}}"
if [ -f "${sysfile}" ]; then
ewarn "Removing duplicated: ${sysfile}"
rm ${sysfile} || die "failed to remove ${sysfile}"
fi
done
doins -r usr
PKG_CONTENTS=${ROOT}/var/db/pkg/${CATEGORY}/${PN}-${SLOT}*/CONTENTS
test -f ${PKG_CONTENTS} && calculate_rm_modules_dir ${PKG_CONTENTS}
}
pkg_prerm() {
calculate_rm_modules_dir ${ROOT}/var/db/pkg/${CATEGORY}/${PF}/CONTENTS
}
pkg_postinst() {
calculate_update_splash /boot/initramfs-${SYSTEM}-${SLOT}-calculate
calculate_update_kernel ${SYSTEM} ${SLOT} /boot
calculate_update_splash ${ROOT}/boot/initramfs-${SYSTEM}-${SLOT}-calculate
calculate_update_kernel ${SYSTEM} ${SLOT} ${ROOT}/boot
KV_OUT_DIR=/usr/src/${SRC_NAME}
kernel-2_pkg_postinst
linux-mod_pkg_postinst
}
pkg_postrm() {
rm -f ${SLOT_T}/.alreadydel
rmdir ${SLOT_T} &>/dev/null
calculate_restore_kernel ${ROOT}/boot
}

Loading…
Cancel
Save