Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 10 Feb 2015 18:20:35 +0000 (UTC)
From:      Kris Moore <kmoore@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r378790 - in head/sysutils/grub2-pcbsd: . files
Message-ID:  <201502101820.t1AIKZtS042648@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kmoore
Date: Tue Feb 10 18:20:34 2015
New Revision: 378790
URL: https://svnweb.freebsd.org/changeset/ports/378790
QAT: https://qat.redports.org/buildarchive/r378790/

Log:
  - Update grub2-pcbsd to bring it in sync with PC-BSD's repo
  - Add support for "cleaner" boot-menus, list old BEs in their own submenu
  - Fix an issue with geli passphrase passthrough
  - Bump PORTREV

Added:
  head/sysutils/grub2-pcbsd/files/50_otherbe.in   (contents, props changed)
Modified:
  head/sysutils/grub2-pcbsd/Makefile
  head/sysutils/grub2-pcbsd/distinfo
  head/sysutils/grub2-pcbsd/files/00_header.in
  head/sysutils/grub2-pcbsd/files/10_ktrueos.in
  head/sysutils/grub2-pcbsd/pkg-plist

Modified: head/sysutils/grub2-pcbsd/Makefile
==============================================================================
--- head/sysutils/grub2-pcbsd/Makefile	Tue Feb 10 18:03:14 2015	(r378789)
+++ head/sysutils/grub2-pcbsd/Makefile	Tue Feb 10 18:20:34 2015	(r378790)
@@ -3,11 +3,11 @@
 
 PORTNAME=	grub2-pcbsd
 PORTVERSION=	2.02p
-PORTREVISION=	22
+PORTREVISION=	24
 CATEGORIES=	sysutils
 MASTER_SITES=   http://www.pcbsd.org/~kris/software/ \
 		ftp://ftp.pcbsd.org/pub/software/
-DISTNAME=	grub-2.02_4
+DISTNAME=	grub-2.02_5
 
 MAINTAINER=	kmoore@FreeBSD.org
 COMMENT=	Multiboot boot loader
@@ -34,7 +34,7 @@ CONFIGURE_ARGS=	--disable-werror --local
 CONFIGURE_ENV=	CPP="${CC} -E" \
 		LEX=${LOCALBASE}/bin/flex
 
-SUB_FILES=	00_header 10_kfreebsd 10_ktrueos 30_os-prober
+SUB_FILES=	00_header 10_kfreebsd 10_ktrueos 30_os-prober 50_otherbe
 
 OPTIONS_DEFINE=	MKFONT FUSE
 OPTIONS_DEFAULT=MKFONT
@@ -88,6 +88,7 @@ post-install:
 	@${INSTALL_SCRIPT} ${WRKDIR}/10_kfreebsd ${STAGEDIR}${PREFIX}/etc/grub.d/
 	@${INSTALL_SCRIPT} ${WRKDIR}/10_ktrueos ${STAGEDIR}${PREFIX}/etc/grub.d/
 	@${INSTALL_SCRIPT} ${WRKDIR}/30_os-prober ${STAGEDIR}${PREFIX}/etc/grub.d/
+	@${INSTALL_SCRIPT} ${WRKDIR}/50_otherbe ${STAGEDIR}${PREFIX}/etc/grub.d/
 	@${MV} ${STAGEDIR}${PREFIX}/etc/grub.d/40_custom ${STAGEDIR}/${PREFIX}/etc/grub.d/40_custom.dist
 
 .include <bsd.port.post.mk>

Modified: head/sysutils/grub2-pcbsd/distinfo
==============================================================================
--- head/sysutils/grub2-pcbsd/distinfo	Tue Feb 10 18:03:14 2015	(r378789)
+++ head/sysutils/grub2-pcbsd/distinfo	Tue Feb 10 18:20:34 2015	(r378790)
@@ -1,2 +1,2 @@
-SHA256 (grub-2.02_4.tar.xz) = a83d1d5cbde835183252f640899bbe6700b7517f49d844756e0ec81d32a27309
-SIZE (grub-2.02_4.tar.xz) = 4471692
+SHA256 (grub-2.02_5.tar.xz) = ef44c89fa681c8308f847fa682c64d19e1bf296bbd7db0e282c1ecc9b0f9314a
+SIZE (grub-2.02_5.tar.xz) = 4994516

Modified: head/sysutils/grub2-pcbsd/files/00_header.in
==============================================================================
--- head/sysutils/grub2-pcbsd/files/00_header.in	Tue Feb 10 18:03:14 2015	(r378789)
+++ head/sysutils/grub2-pcbsd/files/00_header.in	Tue Feb 10 18:20:34 2015	(r378790)
@@ -91,7 +91,7 @@ fi
 export menuentry_id_option
 
 if [ x"\${gelipassphrase}" != x ]; then
-  set pass=\$gelipassphrase
+  set pass="\$gelipassphrase"
   export pass
 fi
 

Modified: head/sysutils/grub2-pcbsd/files/10_ktrueos.in
==============================================================================
--- head/sysutils/grub2-pcbsd/files/10_ktrueos.in	Tue Feb 10 18:03:14 2015	(r378789)
+++ head/sysutils/grub2-pcbsd/files/10_ktrueos.in	Tue Feb 10 18:20:34 2015	(r378790)
@@ -207,7 +207,7 @@ detect_beadm()
       NICK="TrueOS"
    fi
 
-   # Figure out which BE to list first
+   # Only list the default BE here
    $BEADM list -H >/tmp/.grub-beadm.$$ 2>/dev/null
    while read line
    do
@@ -216,10 +216,9 @@ detect_beadm()
 
      # Is this BE marked as wanting to be used for next boot? Make it the first one if so
      if [ "$flags" = "NR" -o "$flags" = "R" ] ; then
-        BE_LIST="$be $BE_LIST"
-        continue
+        BE_LIST="$be"
+        break
      fi
-     BE_LIST="$BE_LIST $be"
    done < /tmp/.grub-beadm.$$
    rm /tmp/.grub-beadm.$$
 
@@ -233,6 +232,11 @@ detect_beadm()
       cdatatime=`echo $beLine | awk '{print $6}'`
       ztank=`echo $cdataset | cut -d '/' -f 1`
       shortdataset="/`echo $cdataset | cut -d '/' -f 2-5`"
+      # Get the BE nickname if it exists
+      beNickName=`${BEADM} list | grep "^${b} " | tr -s ' ' | cut -d ' ' -f 7-12`
+      if [ -z "$beNickName" ] ; then
+         beNickName="$b"
+      fi
 
       # First part of this dataset
       cat > /tmp/.grubdataset.$$.1 << EOF
@@ -258,8 +262,8 @@ EOF
 
       # Lets start a submenu for each BE
 cat << EOF
-# Start TrueOS BE Submenu
-submenu "${NICK} ($b) - ${cdatadate} ${cdatatime}" {
+
+submenu "${NICK} (${beNickName}) - ${cdatadate} ${cdatatime}" {
 EOF
   
   # Lets do the default entry first
@@ -343,13 +347,28 @@ EOF
     set kFreeBSD.xvesa=YES
   }
 EOF
+    # Now for non-xorg mode
+    #################################
+    cat << EOF
+  menuentry "Boot to console (Disable X)" {
+EOF
+    # Get the dataset guts
+    cat /tmp/.grubdataset.$$.1
+    echo "    kfreebsd ${shortdataset}/@/boot/kernel/kernel"
+    echo "    kfreebsd_loadenv ${shortdataset}@/boot/device.hints"
+    cat /tmp/.grubdataset.$$.2
+
+    # Set any options
+    cat << EOF
+    set kFreeBSD.noxorg=YES
+  }
+EOF
   fi
 
 
       # Lastly lets close the submenu section
       cat << EOF
 }
-# End TrueOS BE
 
 EOF
    done

Added: head/sysutils/grub2-pcbsd/files/50_otherbe.in
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/grub2-pcbsd/files/50_otherbe.in	Tue Feb 10 18:20:34 2015	(r378790)
@@ -0,0 +1,392 @@
+#!/bin/sh
+#
+# Copyright 2014 iXsystems (Kris Moore)
+# All rights reserved
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted providing that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+
+# Script to detect TrueOS / PC-BSD disk installations and create grub
+# entries for them
+
+ROOTFS=`mount | awk '/ \/ / {print $1}'`
+BEDS="$( echo ${ROOTFS} | awk -F '/' '{print $2}' )"
+if [ "$BEDS" = "dev" ] ; then BEDS="ROOT"; fi
+
+serial=0;
+console=0;
+for x in ${GRUB_TERMINAL_OUTPUT}; do
+    if [ xserial = "x$x" ]; then
+        serial=1;
+    fi
+    if [ xgfxterm = "x$x" ]; then
+        console=1;
+    fi
+    if [ xconsole = "x$x" ]; then
+        console=1;
+    fi
+done
+if [ "x$serial" = "x1" ]; then
+    if [ "x$console" = "x1" ]; then
+        out="-Dh"
+    else
+        out="-h"
+    fi
+fi
+
+display_loaderopts()
+{
+  # Optional ARG1, set to a ZFS dataset to mount and read values from
+  if [ -n "$1" ] ; then
+     fMnt="/mnt.$$"
+     mkdir $fMnt
+     mount -t zfs  ${1} $fMnt >/dev/null 
+     if [ $? -ne 0 ] ; then
+        echo "Failed to mount ${1}" >&2
+        return
+     fi
+  else
+     fMnt=""
+  fi
+  
+  # Create our placeholder to save _load entries to parse
+  touch /tmp/.lRObjs.$$
+  touch /tmp/.lSysCtls.$$
+
+  # Loader files, in order of which to read them
+  lFiles="${fMnt}/boot/loader.conf.local ${fMnt}/boot/loader.conf ${fMnt}/boot/loader.conf.trueos ${fMnt}/boot/loader.conf.pcbsd"
+  for f in $lFiles
+  do
+     if [ ! -e "$f" ] ; then continue ; fi
+
+     # Lets parse any of the _load= lines
+     grep "_load=" ${f} | grep -v "^#" >/tmp/.lObjs.$$
+     while read line
+     do
+       loadVal="`echo $line | cut -d '=' -f 1`"
+       # Is this value already set in a higher priority file?
+       grep -q "^${loadVal}" /tmp/.lRObjs.$$
+       if [ $? -eq 0 ];then continue; fi
+
+       # Save this value for later
+       echo "$line" >> /tmp/.lRObjs.$$
+       haveObjs=1
+
+     done < /tmp/.lObjs.$$
+     rm /tmp/.lObjs.$$
+
+     # Lets look for any sysctls to set
+     grep "." ${f} | grep "=" | grep -v "^#" | grep -v "_load" >/tmp/.sObjs.$$
+     while read line
+     do
+       loadVal="`echo $line | cut -d '=' -f 1`"
+       # Is this value already set in a higher priority file?
+       grep -q "^${loadVal}" /tmp/.lSysCtls.$$
+       if [ $? -eq 0 ];then continue; fi
+
+       # Save this value for later
+       echo "$line" >> /tmp/.lSysCtls.$$
+       haveSysCtls=1
+
+     done < /tmp/.sObjs.$$
+     rm /tmp/.sObjs.$$
+  done
+
+  # Using GELI encryption?
+  haveGELI="false"
+
+  # Now lets echo out the modules to load
+  if [ "$haveObjs" = "1" ] ; then
+    while read line
+    do
+      echo "$line" | grep -q '"YES"'
+      if [ $? -ne 0 ] ; then continue ; fi
+      module="`echo $line | cut -d '=' -f 1 | sed 's|_load||g'`"
+      # Try to locate module now
+      if [ -e "${fMnt}/boot/kernel/${module}.ko" ] ; then
+        mPath="kernel"
+      elif [ -e "${fMnt}/boot/modules/${module}.ko" ] ; then
+        mPath="modules"
+      else
+	# This isn't a module that we can see, lets set it as a variable
+	#echo "No such module $line, setting as a variable" >&2
+        echo "$line" >> /tmp/.lSysCtls.$$
+        continue
+      fi
+
+      # Are we loading GELI module?
+      if [ "$module" = "geom_eli" ] ; then haveGELI="true" ; fi
+
+      echo "    kfreebsd_module_elf ${loadPrefix}/@/boot/${mPath}/${module}.ko"
+    done < /tmp/.lRObjs.$$
+  fi
+
+  # Add our compat kenv lines
+  echo "    set kFreeBSD.bootfile=\"kernel\""
+  echo "    set kFreeBSD.kernel=\"kernel\""
+  echo "    set kFreeBSD.kernel_options=\"\""
+  echo "    set kFreeBSD.kernelname=\"/boot/kernel/kernel\""
+  echo "    set kFreeBSD.module_path=\"/boot/kernel;/boot/modules\""
+
+  # Any kenv to set?
+  if [ "$haveSysCtls" = "1" ] ; then
+    while read line
+    do
+      # Strip out the vfs.root.mountfrom, we set that elsewhere
+      echo "$line" | grep -q "vfs.root.mountfrom"
+      if [ $? -eq 0 ] ; then continue ; fi
+
+      line="`echo $line | sed 's|"||g'`"
+      key="`echo $line | cut -d '=' -f 1`"
+      val="`echo $line | cut -d '=' -f 2`"
+      if [ -z "$key" -o -z "$val" ] ; then continue ; fi
+      echo "    set kFreeBSD.${key}=\"${val}\""
+    done < /tmp/.lSysCtls.$$
+  fi
+
+  rm /tmp/.lRObjs.$$
+  rm /tmp/.lSysCtls.$$
+  if [ -n "$1" ] ; then
+     umount /mnt.$$ >/dev/null
+     rmdir /mnt.$$ >/dev/null
+  fi
+
+  # Set the grub.platform kenv variable
+  echo "    set kFreeBSD.grub.platform=\"\$grub_platform\""
+
+  # See if we need to do GELI passphrase passthrough
+  if [ "$haveGELI" = "true" ] ; then
+    echo "    set kFreeBSD.kern.geom.eli.passphrase=\"\$pass\""
+  fi
+}
+
+detect_beadm()
+{
+   /usr/bin/which -s beadm >/dev/null 2>/dev/null
+   if [ $? -ne 0 ] ; then return 0; fi
+
+   # Check if we are running from the installer and use its beadm
+   if [ -e "/root/beadm.install" ] ; then
+      BEADM="/root/beadm.install"
+
+      # Check if this is valid
+      testBE=`$BEADM list`
+      if [ -z "$testBE" ] ; then
+        # No BE's, lets switch back to regular mode
+        BEADM="`/usr/bin/which beadm`"
+      fi
+   else
+      BEADM="`/usr/bin/which beadm`"
+   fi
+
+   ${BEADM} list >/dev/null 2>/dev/null
+   if [ $? -ne 0 ] ; then return 0; fi
+
+
+   if [ -e "/etc/defaults/pcbsd" ] ; then
+      NICK="PC-BSD"
+   else
+      NICK="TrueOS"
+   fi
+
+   # Now we will list all the non-default BEs
+   $BEADM list -H >/tmp/.grub-beadm.$$ 2>/dev/null
+   while read line
+   do
+     be=`echo $line | awk '{print $1}'`
+     flags=`echo $line | awk '{print $2}'`
+
+     # Skip the active BE
+     if [ "$flags" = "NR" -o "$flags" = "R" ] ; then
+	continue
+     fi
+     BE_LIST="${be} ${BE_LIST}"
+   done < /tmp/.grub-beadm.$$
+   rm /tmp/.grub-beadm.$$
+
+   if [  -z "$BE_LIST" ] ; then return; fi
+
+   echo "submenu \"Boot Environment Menu\" {"
+
+   # Get list of beadm datasets
+   for b in $BE_LIST
+   do 
+      # Got a beadm snapshot, lets get the complete dataset name
+      beLine=`${BEADM} list -a | grep "/$BEDS/${b}"`
+      cdataset=`echo $beLine | awk '{print $1}'`
+      cdatadate=`echo $beLine | awk '{print $5}'`
+      cdatatime=`echo $beLine | awk '{print $6}'`
+      ztank=`echo $cdataset | cut -d '/' -f 1`
+      shortdataset="/`echo $cdataset | cut -d '/' -f 2-5`"
+      # Get the BE nickname if it exists
+      beNickName=`${BEADM} list | grep "^${b} " | tr -s ' ' | cut -d ' ' -f 7-12`
+      if [ -z "$beNickName" ] ; then
+         beNickName="$b"
+      fi
+
+      # First part of this dataset
+      cat > /tmp/.grubdataset.$$.1 << EOF
+    insmod zfs
+    search --no-floppy -s -l $ztank
+EOF
+
+      # Second part of loader to save
+      cat > /tmp/.grubdataset.$$.2 << EOF
+    kfreebsd_module ${shortdataset}/@/boot/zfs/zpool.cache type=/boot/zfs/zpool.cache
+    set kFreeBSD.vfs.root.mountfrom=zfs:$cdataset
+EOF
+      
+      # Now lets look for options in loader.conf to load
+      loadPrefix="${shortdataset}"
+      # If this is the current mounted dataset, we can skip mounting it
+      mount | grep -q -e "$cdataset on / (" -e "$cdataset on /mnt ("
+      if [ $? -eq 0 ] ; then
+        display_loaderopts >>/tmp/.grubdataset.$$.2
+      else
+        display_loaderopts $cdataset >> /tmp/.grubdataset.$$.2
+      fi
+
+      # Lets start a submenu for each BE
+cat << EOF
+
+submenu "${NICK} (${beNickName}) - ${cdatadate} ${cdatatime}" {
+EOF
+  
+  # Lets do the default entry first
+  #################################
+  cat << EOF
+  menuentry "Normal Bootup" {
+EOF
+  # Get the dataset guts
+  cat /tmp/.grubdataset.$$.1
+  echo "    kfreebsd ${shortdataset}/@/boot/kernel/kernel ${out}"
+  echo "    kfreebsd_loadenv ${shortdataset}@/boot/device.hints"
+  cat /tmp/.grubdataset.$$.2
+
+  # Set any options
+  cat << EOF
+  }
+EOF
+
+  # Next lets do single user mode
+  #################################
+  cat << EOF
+  menuentry "Single User Mode" {
+EOF
+  # Get the dataset guts
+  cat /tmp/.grubdataset.$$.1
+  echo "    kfreebsd ${shortdataset}/@/boot/kernel/kernel ${out} -s"
+  echo "    kfreebsd_loadenv ${shortdataset}@/boot/device.hints"
+  cat /tmp/.grubdataset.$$.2
+
+  # Set any options
+  cat << EOF
+  }
+EOF
+
+  # Next lets do verbose mode
+  #################################
+  cat << EOF
+  menuentry "Verbose Mode" {
+EOF
+  # Get the dataset guts
+  cat /tmp/.grubdataset.$$.1
+  echo "    kfreebsd ${shortdataset}/@/boot/kernel/kernel ${out} -v"
+  echo "    kfreebsd_loadenv ${shortdataset}@/boot/device.hints"
+  cat /tmp/.grubdataset.$$.2
+
+  # Set any options
+  cat << EOF
+  }
+EOF
+
+  if [ -e "/etc/defaults/pcbsd" ] ; then
+    # Next lets do display wizard
+    #################################
+    cat << EOF
+  menuentry "Run the Display Wizard" {
+EOF
+    # Get the dataset guts
+    cat /tmp/.grubdataset.$$.1
+    echo "    kfreebsd ${shortdataset}/@/boot/kernel/kernel"
+    echo "    kfreebsd_loadenv ${shortdataset}@/boot/device.hints"
+    cat /tmp/.grubdataset.$$.2
+
+    # Set any options
+    cat << EOF
+    set kFreeBSD.runwiz=YES
+  }
+EOF
+    # Now for vesa mode
+    #################################
+    cat << EOF
+  menuentry "Run X in vesa mode" {
+EOF
+    # Get the dataset guts
+    cat /tmp/.grubdataset.$$.1
+    echo "    kfreebsd ${shortdataset}/@/boot/kernel/kernel"
+    echo "    kfreebsd_loadenv ${shortdataset}@/boot/device.hints"
+    cat /tmp/.grubdataset.$$.2
+
+    # Set any options
+    cat << EOF
+    set kFreeBSD.xvesa=YES
+  }
+EOF
+    # Now for non-xorg mode
+    #################################
+    cat << EOF
+  menuentry "Boot to console (Disable X)" {
+EOF
+    # Get the dataset guts
+    cat /tmp/.grubdataset.$$.1
+    echo "    kfreebsd ${shortdataset}/@/boot/kernel/kernel"
+    echo "    kfreebsd_loadenv ${shortdataset}@/boot/device.hints"
+    cat /tmp/.grubdataset.$$.2
+
+    # Set any options
+    cat << EOF
+    set kFreeBSD.noxorg=YES
+  }
+EOF
+  fi
+
+
+      # Lastly lets close the submenu section
+      cat << EOF
+}
+
+EOF
+   done
+
+   echo "}"
+   echo ""
+
+   # Cleanup after ourselves
+   if [ -e "/tmp/.grubdataset.$$.1" ] ; then
+     rm /tmp/.grubdataset.$$.1
+     rm /tmp/.grubdataset.$$.2
+   fi
+}
+
+# Detect our types of disk layouts
+detect_beadm
+

Modified: head/sysutils/grub2-pcbsd/pkg-plist
==============================================================================
--- head/sysutils/grub2-pcbsd/pkg-plist	Tue Feb 10 18:03:14 2015	(r378789)
+++ head/sysutils/grub2-pcbsd/pkg-plist	Tue Feb 10 18:20:34 2015	(r378790)
@@ -157,6 +157,7 @@ etc/grub.d/00_header
 etc/grub.d/30_os-prober
 etc/grub.d/40_custom.dist
 etc/grub.d/41_custom
+etc/grub.d/50_otherbe
 etc/grub.d/10_kfreebsd
 etc/grub.d/10_ktrueos
 etc/grub.d/README
@@ -620,6 +621,33 @@ sbin/grub-set-default
 sbin/grub-sparc64-setup
 sbin/grub-reboot
 share/grub/grub-mkconfig_lib
+share/locale/ast/LC_MESSAGES/grub.mo
+share/locale/ca/LC_MESSAGES/grub.mo
+share/locale/da/LC_MESSAGES/grub.mo
+share/locale/de/LC_MESSAGES/grub.mo
+share/locale/eo/LC_MESSAGES/grub.mo
+share/locale/es/LC_MESSAGES/grub.mo
+share/locale/fi/LC_MESSAGES/grub.mo
+share/locale/fr/LC_MESSAGES/grub.mo
+share/locale/gl/LC_MESSAGES/grub.mo
+share/locale/hu/LC_MESSAGES/grub.mo
+share/locale/id/LC_MESSAGES/grub.mo
+share/locale/it/LC_MESSAGES/grub.mo
+share/locale/ja/LC_MESSAGES/grub.mo
+share/locale/lt/LC_MESSAGES/grub.mo
+share/locale/nb/LC_MESSAGES/grub.mo
+share/locale/nl/LC_MESSAGES/grub.mo
+share/locale/pa/LC_MESSAGES/grub.mo
+share/locale/pl/LC_MESSAGES/grub.mo
+share/locale/pt_BR/LC_MESSAGES/grub.mo
+share/locale/ru/LC_MESSAGES/grub.mo
+share/locale/sl/LC_MESSAGES/grub.mo
+share/locale/sv/LC_MESSAGES/grub.mo
+share/locale/tr/LC_MESSAGES/grub.mo
+share/locale/uk/LC_MESSAGES/grub.mo
+share/locale/vi/LC_MESSAGES/grub.mo
+share/locale/zh_CN/LC_MESSAGES/grub.mo
+share/locale/zh_TW/LC_MESSAGES/grub.mo
 man/man1/grub-editenv.1.gz
 man/man1/grub-fstest.1.gz
 man/man1/grub-kbdcomp.1.gz



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201502101820.t1AIKZtS042648>