From 8ad4f1860c13dcaf765ec63ffd98ff18216ba3d2 Mon Sep 17 00:00:00 2001 From: Michael Marineau Date: Sun, 19 Oct 2014 20:20:44 -0700 Subject: [PATCH 1/2] grub: sync with current upstream live ebuild Minor tweaks, doing this to simplify future changes/maintenance. --- .../coreos-overlay/sys-boot/grub/Manifest | 2 +- ...ld => grub-2.02_beta2_p20140825-r1.ebuild} | 36 ++++++++++--------- 2 files changed, 21 insertions(+), 17 deletions(-) rename sdk_container/src/third_party/coreos-overlay/sys-boot/grub/{grub-2.02_beta2_p20140825.ebuild => grub-2.02_beta2_p20140825-r1.ebuild} (92%) diff --git a/sdk_container/src/third_party/coreos-overlay/sys-boot/grub/Manifest b/sdk_container/src/third_party/coreos-overlay/sys-boot/grub/Manifest index 46e810d3b1..684b061769 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-boot/grub/Manifest +++ b/sdk_container/src/third_party/coreos-overlay/sys-boot/grub/Manifest @@ -1,3 +1,3 @@ DIST dejavu-sans-ttf-2.34.zip 406977 SHA256 242e8c1cb2bdc7458bece02cca898f962c2bc919dcf67d97428149228290184d SHA512 dcd802b9c83cfa749b7542d0855eb1facb665a035af8c05f58830fce3ce37ba8d4a6f0353c07ae924c7fc25460d330b7312cbaffd34a2cb314a8e222de385c1b WHIRLPOOL d8b3289997cc39aca1c909ac1cae79727a19932f07b116a4a0bcc83e4a2f136d05d18c8ef2b05504a2f1f65eba85f93d61d52b0c913be7bb3e23f6a403eb6a82 DIST grub-2.02~beta2_p20140825.tar.gz 6747194 SHA256 b867af0d7a6ba5848a2d1b24a654303739896e87e96f6a4e8ec6ebcfaa505bbc SHA512 c6a8b72848530c33dea005d045f583ad352b7a59a0af75bc85954441849959c217ed285e9404522ea4c46d9c28e276c2f0d48343e5f6f169eb8eed7135049e54 WHIRLPOOL b6cbca1d3da979fa17d530e7a7de7a9bc0fa32c14e69f8ad217542b248a32dcc1212e604e5784f15663b6b9e5be3933d9cd8c99b183ff2245efa49c2862c3aa2 -DIST unifont-7.0.01.pcf.gz 1358916 SHA256 7618a96ad50703213848af8ecae816828f528bb8ed179a749f7ca2b86eb15805 SHA512 f985e11729d18cb16d3e46fd1004242aa731a9b03ba16035f5954076686e8cdc39df9087daded5e044ead995b03650d8cf1bba9d060d65b5c3af630dbc9e3260 WHIRLPOOL da682398a22abd4282674d9a79b8fdd53e03054863cc166e43e2640dfb7f11c0b71cd3e42431f2086692f3a4202c2ecae9d6d7126249db0127e2da276aae7c9f +DIST unifont-7.0.05.pcf.gz 1359030 SHA256 c897bc3796b1c460d13fbed1d6d800027886405efa3715a31275183d3f85ce91 SHA512 d75d810521306e912228e10d7e08749392ade4b9f35199fa43694c57779054f152ba9b30ce6c3b3bd9bb925f60aebbb99f00d3448ed039e748e0353c787d9336 WHIRLPOOL 1af9cb9b6b3a4c46e596228d3231ef160300b0a5545c3e091eaceeb2b522ac1b25721f17f7f2f742a5a1ab92ccedebf4fe2649260284ab208dbd8696fa69594c diff --git a/sdk_container/src/third_party/coreos-overlay/sys-boot/grub/grub-2.02_beta2_p20140825.ebuild b/sdk_container/src/third_party/coreos-overlay/sys-boot/grub/grub-2.02_beta2_p20140825-r1.ebuild similarity index 92% rename from sdk_container/src/third_party/coreos-overlay/sys-boot/grub/grub-2.02_beta2_p20140825.ebuild rename to sdk_container/src/third_party/coreos-overlay/sys-boot/grub/grub-2.02_beta2_p20140825-r1.ebuild index 3aed5d897d..216230a402 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-boot/grub/grub-2.02_beta2_p20140825.ebuild +++ b/sdk_container/src/third_party/coreos-overlay/sys-boot/grub/grub-2.02_beta2_p20140825-r1.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2014 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-boot/grub/grub-2.02_beta2.ebuild,v 1.8 2014/06/22 18:02:08 floppym Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-boot/grub/grub-9999-r1.ebuild,v 1.21 2014/10/19 01:51:58 floppym Exp $ EAPI=5 @@ -38,11 +38,9 @@ else fi DEJAVU=dejavu-sans-ttf-2.34 -UNIFONT=unifont-7.0.01 -SRC_URI+=" truetype? ( - mirror://sourceforge/dejavu/${DEJAVU}.zip - mirror://gnu/unifont/${UNIFONT}/${UNIFONT}.pcf.gz -)" +UNIFONT=unifont-7.0.05 +SRC_URI+=" mirror://gnu/unifont/${UNIFONT}/${UNIFONT}.pcf.gz + truetype? ( mirror://sourceforge/dejavu/${DEJAVU}.zip )" DESCRIPTION="GNU GRUB boot loader" HOMEPAGE="http://www.gnu.org/software/grub/" @@ -56,7 +54,7 @@ GRUB_ALL_PLATFORMS=( # everywhere: emu # mips only: - qemu-mips yeeloong + qemu-mips loongson # amd64, x86, ppc, ppc64: ieee1275 # amd64, x86: @@ -66,9 +64,6 @@ GRUB_ALL_PLATFORMS=( ) IUSE+=" ${GRUB_ALL_PLATFORMS[@]/#/grub_platforms_}" -REQUIRED_USE="grub_platforms_qemu? ( truetype ) - grub_platforms_yeeloong? ( truetype )" - # os-prober: Used on runtime to detect other OSes # xorriso (dev-libs/libisoburn): Used on runtime for mkrescue RDEPEND=" @@ -80,7 +75,7 @@ RDEPEND=" device-mapper? ( >=sys-fs/lvm2-2.02.45 ) libzfs? ( sys-fs/zfs ) mount? ( sys-fs/fuse ) - truetype? ( media-libs/freetype ) + truetype? ( media-libs/freetype:2= ) ppc? ( sys-apps/ibm-powerpc-utils sys-apps/powerpc-utils ) ppc64? ( sys-apps/ibm-powerpc-utils sys-apps/powerpc-utils ) " @@ -91,6 +86,10 @@ DEPEND="${RDEPEND} sys-devel/bison sys-apps/help2man sys-apps/texinfo + grub_platforms_coreboot? ( media-libs/freetype:2 ) + grub_platforms_qemu? ( media-libs/freetype:2 ) + grub_platforms_ieee1275? ( media-libs/freetype:2 ) + grub_platforms_loongson? ( media-libs/freetype:2 ) grub_platforms_xen? ( app-emulation/xen-tools ) static? ( app-arch/xz-utils[static-libs(+)] @@ -157,16 +156,21 @@ src_unpack() { src_prepare() { [[ ${PATCHES} ]] && epatch "${PATCHES[@]}" + sed -i -e /autoreconf/d autogen.sh || die + if use multislot; then # fix texinfo file name, bug 416035 sed -i -e 's/^\* GRUB:/* GRUB2:/' -e 's/(grub)/(grub2)/' docs/grub.texi || die fi + epatch_user + if [[ -n ${GRUB_AUTOGEN} ]]; then python_setup bash autogen.sh || die fi + if [[ -n ${AUTOTOOLS_AUTORECONF} ]]; then autopoint() { return 0; } eautoreconf @@ -174,8 +178,10 @@ src_prepare() { } setup_fonts() { - ln -s "${WORKDIR}/${DEJAVU}/ttf/DejaVuSans.ttf" DejaVuSans.ttf || die ln -s "${WORKDIR}/${UNIFONT}.pcf" unifont.pcf || die + if use truetype; then + ln -s "${WORKDIR}/${DEJAVU}/ttf/DejaVuSans.ttf" DejaVuSans.ttf || die + fi } grub_configure() { @@ -222,10 +228,8 @@ grub_configure() { myeconfargs+=( --program-transform-name="s,grub,grub2," ) fi - if use truetype; then - mkdir -p "${BUILD_DIR}" || die - run_in_build_dir setup_fonts - fi + mkdir -p "${BUILD_DIR}" || die + run_in_build_dir setup_fonts autotools-utils_src_configure } From a03f650a0d55f4edb17f3553b4ce253f65286656 Mon Sep 17 00:00:00 2001 From: Michael Marineau Date: Sun, 19 Oct 2014 22:10:57 -0700 Subject: [PATCH 2/2] grub: add cros-workon based live ebuild, adjust use flags for testing After this grub unit tests almost work, for 'pc' at least. The only one in that set that doesn't work are some tests that rely on video checksums to validate the output. Tests for other targets like 'efi-64' are a whole new adventure to figure out. --- .../profiles/coreos/base/make.defaults | 3 + .../profiles/coreos/base/package.use | 3 + .../coreos/targets/generic/package.use | 1 - .../sys-boot/grub/grub-9999.ebuild | 304 ++++++++++++++++++ 4 files changed, 310 insertions(+), 1 deletion(-) create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-boot/grub/grub-9999.ebuild diff --git a/sdk_container/src/third_party/coreos-overlay/profiles/coreos/base/make.defaults b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/base/make.defaults index 191429c0e4..4342b226ec 100644 --- a/sdk_container/src/third_party/coreos-overlay/profiles/coreos/base/make.defaults +++ b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/base/make.defaults @@ -82,3 +82,6 @@ PORTAGE_WORKDIR_MODE="0755" # Enable our assorted Grub targets, don't whine about /boot GRUB_PLATFORMS="efi-64 pc xen" DONT_MOUNT_BOOT=1 + +# Both x86_64 and i386 targets are required for grub testing +QEMU_SOFTMMU_TARGETS="x86_64 i386" diff --git a/sdk_container/src/third_party/coreos-overlay/profiles/coreos/base/package.use b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/base/package.use index 2dee4e6f03..a5dc7c2aab 100644 --- a/sdk_container/src/third_party/coreos-overlay/profiles/coreos/base/package.use +++ b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/base/package.use @@ -54,3 +54,6 @@ sys-boot/grub -multislot -nls # disable "high performance ssh" patch net-misc/openssh -hpn + +# xz and lzo are required to run grub tests +sys-fs/squashfs-tools lzo xz diff --git a/sdk_container/src/third_party/coreos-overlay/profiles/coreos/targets/generic/package.use b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/targets/generic/package.use index f6ba9d51b6..29fc597460 100644 --- a/sdk_container/src/third_party/coreos-overlay/profiles/coreos/targets/generic/package.use +++ b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/targets/generic/package.use @@ -20,7 +20,6 @@ sys-apps/dbus -X -systemd sys-apps/smartmontools minimal sys-block/parted device-mapper sys-fs/lvm2 -lvm1 -readline -sys-fs/squashfs lzo sys-libs/ncurses minimal sys-libs/pam -berkdb sys-libs/gdbm berkdb diff --git a/sdk_container/src/third_party/coreos-overlay/sys-boot/grub/grub-9999.ebuild b/sdk_container/src/third_party/coreos-overlay/sys-boot/grub/grub-9999.ebuild new file mode 100644 index 0000000000..e98d31381c --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-boot/grub/grub-9999.ebuild @@ -0,0 +1,304 @@ +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-boot/grub/grub-9999-r1.ebuild,v 1.21 2014/10/19 01:51:58 floppym Exp $ + +EAPI=5 +CROS_WORKON_PROJECT="coreos/grub" +CROS_WORKON_REPO="git://github.com" +AUTOTOOLS_AUTORECONF=1 +GRUB_AUTOGEN=1 +PYTHON_COMPAT=( python{2_6,2_7,3_2,3_3,3_4} ) + +if [[ "${PV}" == 9999 ]]; then + KEYWORDS="~amd64 ~x86" +else + CROS_WORKON_COMMIT="x" + KEYWORDS="amd64 x86" +fi + +inherit cros-workon autotools-utils bash-completion-r1 eutils flag-o-matic mount-boot multibuild pax-utils python-any-r1 toolchain-funcs versionator + +DEJAVU=dejavu-sans-ttf-2.34 +UNIFONT=unifont-7.0.05 +SRC_URI+=" mirror://gnu/unifont/${UNIFONT}/${UNIFONT}.pcf.gz + truetype? ( mirror://sourceforge/dejavu/${DEJAVU}.zip )" + +DESCRIPTION="GNU GRUB boot loader" +HOMEPAGE="http://www.gnu.org/software/grub/" + +# Includes licenses for dejavu and unifont +LICENSE="GPL-3 truetype? ( BitstreamVera GPL-2-with-font-exception )" +SLOT="2" +IUSE="debug device-mapper doc efiemu mount +multislot nls static sdl test truetype libzfs" + +GRUB_ALL_PLATFORMS=( + # everywhere: + emu + # mips only: + qemu-mips loongson + # amd64, x86, ppc, ppc64: + ieee1275 + # amd64, x86: + coreboot multiboot efi-32 pc qemu xen + # amd64, ia64: + efi-64 +) +IUSE+=" ${GRUB_ALL_PLATFORMS[@]/#/grub_platforms_}" + +# os-prober: Used on runtime to detect other OSes +# xorriso (dev-libs/libisoburn): Used on runtime for mkrescue +RDEPEND=" + app-arch/xz-utils + >=sys-libs/ncurses-5.2-r5 + debug? ( + sdl? ( media-libs/libsdl ) + ) + device-mapper? ( >=sys-fs/lvm2-2.02.45 ) + libzfs? ( sys-fs/zfs ) + mount? ( sys-fs/fuse ) + truetype? ( media-libs/freetype:2= ) + ppc? ( sys-apps/ibm-powerpc-utils sys-apps/powerpc-utils ) + ppc64? ( sys-apps/ibm-powerpc-utils sys-apps/powerpc-utils ) +" +DEPEND="${RDEPEND} + ${PYTHON_DEPS} + app-misc/pax-utils + sys-devel/flex + sys-devel/bison + sys-apps/help2man + sys-apps/texinfo + grub_platforms_coreboot? ( media-libs/freetype:2 ) + grub_platforms_qemu? ( media-libs/freetype:2 ) + grub_platforms_ieee1275? ( media-libs/freetype:2 ) + grub_platforms_loongson? ( media-libs/freetype:2 ) + grub_platforms_xen? ( app-emulation/xen-tools ) + static? ( + app-arch/xz-utils[static-libs(+)] + truetype? ( + app-arch/bzip2[static-libs(+)] + media-libs/freetype[static-libs(+)] + sys-libs/zlib[static-libs(+)] + ) + ) + test? ( + dev-libs/libisoburn + sys-fs/squashfs-tools[lzo,xz] + grub_platforms_efi-64? ( app-emulation/qemu[qemu_softmmu_targets_x86_64] ) + grub_platforms_pc? ( app-emulation/qemu[qemu_softmmu_targets_i386] ) + ) + truetype? ( app-arch/unzip ) +" +RDEPEND+=" + kernel_linux? ( + grub_platforms_efi-32? ( sys-boot/efibootmgr ) + grub_platforms_efi-64? ( sys-boot/efibootmgr ) + ) + !multislot? ( !sys-boot/grub:0 ) + nls? ( sys-devel/gettext ) +" + +STRIP_MASK="*/grub/*/*.{mod,img}" +RESTRICT="test" + +QA_EXECSTACK=" + usr/bin/grub*-emu* + usr/lib*/grub/*/*.mod + usr/lib*/grub/*/*.module + usr/lib*/grub/*/kernel.exec + usr/lib*/grub/*/kernel.img +" + +QA_WX_LOAD=" + usr/lib*/grub/*/kernel.exec + usr/lib*/grub/*/kernel.img + usr/lib*/grub/*/*.image +" + +QA_PRESTRIPPED=" + usr/lib.*/grub/.*/kernel.img +" + +pkg_pretend() { + if [[ ${MERGE_TYPE} != binary ]]; then + # Bug 439082 + if ! version_is_at_least 4.8 "$(gcc-version)" && + $(tc-getLD) --version | grep -q "GNU gold"; then + eerror "GRUB does not function correctly when built with the gold linker." + eerror "Please select the bfd linker with binutils-config." + die "GNU gold detected" + fi + fi +} + +src_unpack() { + cros-workon_src_unpack + default_src_unpack +} + +src_prepare() { + sed -i -e /autoreconf/d autogen.sh || die + + if use multislot; then + # fix texinfo file name, bug 416035 + sed -i -e 's/^\* GRUB:/* GRUB2:/' -e 's/(grub)/(grub2)/' docs/grub.texi || die + fi + + epatch_user + + if [[ -n ${GRUB_AUTOGEN} ]]; then + python_setup + bash autogen.sh || die + fi + + if [[ -n ${AUTOTOOLS_AUTORECONF} ]]; then + autopoint() { return 0; } + eautoreconf + fi +} + +setup_fonts() { + ln -s "${WORKDIR}/${UNIFONT}.pcf" unifont.pcf || die + if use truetype; then + ln -s "${WORKDIR}/${DEJAVU}/ttf/DejaVuSans.ttf" DejaVuSans.ttf || die + fi +} + +grub_configure() { + local platform + + case ${MULTIBUILD_VARIANT} in + efi-32) + platform=efi + if [[ ${CTARGET:-${CHOST}} == x86_64* ]]; then + local CTARGET=${CTARGET:-i386} + fi ;; + efi-64) + platform=efi + if [[ ${CTARGET:-${CHOST}} == i?86* ]]; then + local CTARGET=${CTARGET:-x86_64} + local TARGET_CFLAGS="-Os -march=x86-64 ${TARGET_CFLAGS}" + local TARGET_CPPFLAGS="-march=x86-64 ${TARGET_CPPFLAGS}" + export TARGET_CFLAGS TARGET_CPPFLAGS + fi ;; + guessed) ;; + *) platform=${MULTIBUILD_VARIANT} ;; + esac + + local myeconfargs=( + --disable-werror + --program-prefix= + --libdir="${EPREFIX}"/usr/lib + --htmldir="${EPREFIX}"/usr/share/doc/${PF}/html + $(use_enable debug mm-debug) + $(use_enable debug grub-emu-usb) + $(use_enable device-mapper) + $(use_enable mount grub-mount) + $(use_enable nls) + $(use_enable truetype grub-mkfont) + $(use_enable libzfs) + $(use sdl && use_enable debug grub-emu-sdl) + ${platform:+--with-platform=}${platform} + + # Let configure detect this where supported + $(usex efiemu '' '--disable-efiemu') + ) + + if use multislot; then + myeconfargs+=( --program-transform-name="s,grub,grub2," ) + fi + + mkdir -p "${BUILD_DIR}" || die + run_in_build_dir setup_fonts + + autotools-utils_src_configure +} + +src_configure() { + # Bug 508758. + replace-flags -O3 -O2 + + # We don't want to leak flags onto boot code. + export HOST_CCASFLAGS=${CCASFLAGS} + export HOST_CFLAGS=${CFLAGS} + export HOST_CPPFLAGS=${CPPFLAGS} + export HOST_LDFLAGS=${LDFLAGS} + unset CCASFLAGS CFLAGS CPPFLAGS LDFLAGS + + use static && HOST_LDFLAGS+=" -static" + + if version_is_at_least 4.8 "$(gcc-version)"; then + export TARGET_LDFLAGS+=" -fuse-ld=bfd" + fi + + tc-export CC NM OBJCOPY STRIP + export TARGET_CC=${TARGET_CC:-${CC}} + tc-export BUILD_CC # Bug 485592 + + # Portage will take care of cleaning up GRUB_PLATFORMS + MULTIBUILD_VARIANTS=( ${GRUB_PLATFORMS:-guessed} ) + multibuild_parallel_foreach_variant grub_configure +} + +src_compile() { + # Sandbox bug 404013. + use libzfs && addpredict /etc/dfs:/dev/zfs + + multibuild_foreach_variant autotools-utils_src_compile + + use doc && multibuild_for_best_variant \ + autotools-utils_src_compile -C docs html +} + +src_test() { + # The qemu dependency is a bit complex. + # You will need to adjust QEMU_SOFTMMU_TARGETS to match the cpu/platform. + multibuild_foreach_variant autotools-utils_src_test +} + +src_install() { + multibuild_foreach_variant autotools-utils_src_install \ + bashcompletiondir="$(get_bashcompdir)" + + use doc && multibuild_for_best_variant run_in_build_dir \ + emake -C docs DESTDIR="${D}" install-html + + if use multislot; then + mv "${ED%/}"/usr/share/info/grub{,2}.info || die + fi + + insinto /etc/default + newins "${FILESDIR}"/grub.default-3 grub +} + +pkg_postinst() { + mount-boot_mount_boot_partition + + if [[ -e "${ROOT%/}/boot/grub2/grub.cfg" ]]; then + ewarn "The grub directory has changed from /boot/grub2 to /boot/grub." + ewarn "Please run grub2-install and grub2-mkconfig -o /boot/grub/grub.cfg." + + if [[ ! -e "${ROOT%/}/boot/grub/grub.cfg" ]]; then + mkdir -p "${ROOT%/}/boot/grub" + ln -s ../grub2/grub.cfg "${ROOT%/}/boot/grub/grub.cfg" + fi + fi + + mount-boot_pkg_postinst + + elog "For information on how to configure GRUB2 please refer to the guide:" + elog " http://wiki.gentoo.org/wiki/GRUB2_Quick_Start" + + if has_version 'sys-boot/grub:0'; then + elog "A migration guide for GRUB Legacy users is available:" + elog " http://www.gentoo.org/doc/en/grub2-migration.xml" + fi + + if [[ -z ${REPLACING_VERSIONS} ]]; then + if ! has_version sys-boot/os-prober; then + elog "Install sys-boot/os-prober to enable detection of other operating systems using grub2-mkconfig." + fi + if ! has_version dev-libs/libisoburn; then + elog "Install dev-libs/libisoburn to enable creation of rescue media using grub2-mkrescue." + fi + fi +}