Author: emaste
Date: Tue Mar 15 13:38:15 2016
New Revision: 296899
URL: https://svnweb.freebsd.org/changeset/base/296899

Log:
  Fix atkbdmap.h generation for sc/vt consoles
  
  Keymap header files have historically been generated using the build
  host's /usr/sbin/kbdcontrol and using the host's keymap files.
  
  However, that introduces an issue when building a kernel to use vt(4)
  on a system using sc(4), or vice versa: kbdcontrol searches for keymap
  files in the /usr/share subdirectory appropriate for the host, not the
  target.
  
  With this change the build searches both the and sc keymap directories
  from the source tree.
  
  PR:           193865
  Submitted by: Harald Schmalzbauer

Modified:
  head/sys/conf/files.amd64
  head/sys/conf/files.i386
  head/sys/conf/files.pc98
  head/sys/conf/files.sparc64

Modified: head/sys/conf/files.amd64
==============================================================================
--- head/sys/conf/files.amd64   Tue Mar 15 11:10:08 2016        (r296898)
+++ head/sys/conf/files.amd64   Tue Mar 15 13:38:15 2016        (r296899)
@@ -50,12 +50,12 @@ font.h                              optional        
sc_dflt_font            \
        clean           "font.h ${SC_DFLT_FONT}-8x14 ${SC_DFLT_FONT}-8x16 
${SC_DFLT_FONT}-8x8"
 #
 atkbdmap.h                     optional        atkbd_dflt_keymap       \
-       compile-with    "/usr/sbin/kbdcontrol -L ${ATKBD_DFLT_KEYMAP} | sed -e 
's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static 
accentmap_t.* = /static accentmap_t accent_map = /' > atkbdmap.h"               
     \
+       compile-with    "unset KEYMAP_PATH; for kmpath in 
${S:S/sys$/share/}/vt/keymaps ${S:S/sys$/share/}/syscons/keymaps; do 
kmapfile=$${kmpath}/${ATKBD_DFLT_KEYMAP:C/\.kbd$$//}.kbd; if [ -r $${kmapfile} 
]; then KEYMAP_PATH=$${kmpath}; fi; done; if [ X$${KEYMAP_PATH} != X ]; then 
env KEYMAP_PATH=$${KEYMAP_PATH} /usr/sbin/kbdcontrol -L ${ATKBD_DFLT_KEYMAP} | 
sed -e 's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static 
accentmap_t.* = /static accentmap_t accent_map = /' > atkbdmap.h; else echo 
Error: atkbd_dflt_keymap not found; exit 1; fi"                        \
        no-obj no-implicit-rule before-depend                           \
        clean           "atkbdmap.h"
 #
 ukbdmap.h                      optional        ukbd_dflt_keymap        \
-       compile-with    "/usr/sbin/kbdcontrol -L ${UKBD_DFLT_KEYMAP} | sed -e 
's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static 
accentmap_t.* = /static accentmap_t accent_map = /' > ukbdmap.h"                
      \
+       compile-with    "unset KEYMAP_PATH; for kmpath in 
${S:S/sys$/share/}/vt/keymaps ${S:S/sys$/share/}/syscons/keymaps; do 
kmapfile=$${kmpath}/${UKBD_DFLT_KEYMAP:C/\.kbd$$//}.kbd; if [ -r $${kmapfile} 
]; then KEYMAP_PATH=$${kmpath}; fi; done; if [ X$${KEYMAP_PATH} != X ]; then 
env KEYMAP_PATH=$${KEYMAP_PATH} /usr/sbin/kbdcontrol -L ${UKBD_DFLT_KEYMAP} | 
sed -e 's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static 
accentmap_t.* = /static accentmap_t accent_map = /' > ukbdmap.h; else echo 
Error:    ukbd_dflt_keymap not found; exit 1; fi"                 \
        no-obj no-implicit-rule before-depend                           \
        clean           "ukbdmap.h"
 #

Modified: head/sys/conf/files.i386
==============================================================================
--- head/sys/conf/files.i386    Tue Mar 15 11:10:08 2016        (r296898)
+++ head/sys/conf/files.i386    Tue Mar 15 13:38:15 2016        (r296899)
@@ -49,12 +49,12 @@ font.h                              optional        
sc_dflt_font            \
        clean           "font.h ${SC_DFLT_FONT}-8x14 ${SC_DFLT_FONT}-8x16 
${SC_DFLT_FONT}-8x8"
 #
 atkbdmap.h                     optional        atkbd_dflt_keymap       \
-       compile-with    "/usr/sbin/kbdcontrol -L ${ATKBD_DFLT_KEYMAP} | sed -e 
's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static 
accentmap_t.* = /static accentmap_t accent_map = /' > atkbdmap.h"               
     \
+       compile-with    "unset KEYMAP_PATH; for kmpath in 
${S:S/sys$/share/}/vt/keymaps ${S:S/sys$/share/}/syscons/keymaps; do 
kmapfile=$${kmpath}/${ATKBD_DFLT_KEYMAP:C/\.kbd$$//}.kbd; if [ -r $${kmapfile} 
]; then KEYMAP_PATH=$${kmpath}; fi; done; if [ X$${KEYMAP_PATH} != X ]; then 
env KEYMAP_PATH=$${KEYMAP_PATH} /usr/sbin/kbdcontrol -L ${ATKBD_DFLT_KEYMAP} | 
sed -e 's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static 
accentmap_t.* = /static accentmap_t accent_map = /' > atkbdmap.h; else echo 
Error: atkbd_dflt_keymap not found; exit 1; fi"                        \
        no-obj no-implicit-rule before-depend                           \
        clean           "atkbdmap.h"
 #
 ukbdmap.h                      optional        ukbd_dflt_keymap        \
-       compile-with    "/usr/sbin/kbdcontrol -L ${UKBD_DFLT_KEYMAP} | sed -e 
's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static 
accentmap_t.* = /static accentmap_t accent_map = /' > ukbdmap.h"                
      \
+       compile-with    "unset KEYMAP_PATH; for kmpath in 
${S:S/sys$/share/}/vt/keymaps ${S:S/sys$/share/}/syscons/keymaps; do 
kmapfile=$${kmpath}/${UKBD_DFLT_KEYMAP:C/\.kbd$$//}.kbd; if [ -r $${kmapfile} 
]; then KEYMAP_PATH=$${kmpath}; fi; done; if [ X$${KEYMAP_PATH} != X ]; then 
env KEYMAP_PATH=$${KEYMAP_PATH} /usr/sbin/kbdcontrol -L ${UKBD_DFLT_KEYMAP} | 
sed -e 's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static 
accentmap_t.* = /static accentmap_t accent_map = /' > ukbdmap.h; else echo 
Error:    ukbd_dflt_keymap not found; exit 1; fi"                 \
        no-obj no-implicit-rule before-depend                           \
        clean           "ukbdmap.h"
 #

Modified: head/sys/conf/files.pc98
==============================================================================
--- head/sys/conf/files.pc98    Tue Mar 15 11:10:08 2016        (r296898)
+++ head/sys/conf/files.pc98    Tue Mar 15 13:38:15 2016        (r296899)
@@ -46,7 +46,7 @@ svr4_assym.h                  optional        compat_svr4     
        \
        clean           "svr4_assym.h"
 #
 ukbdmap.h                      optional        ukbd_dflt_keymap        \
-       compile-with    "/usr/sbin/kbdcontrol -L ${UKBD_DFLT_KEYMAP} | sed -e 
's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static 
accentmap_t.* = /static accentmap_t accent_map = /' > ukbdmap.h"                
      \
+       compile-with    "unset KEYMAP_PATH; for kmpath in 
${S:S/sys$/share/}/vt/keymaps ${S:S/sys$/share/}/syscons/keymaps; do 
kmapfile=$${kmpath}/${ATKBD_DFLT_KEYMAP:C/\.kbd$$//}.kbd; if [ -r $${kmapfile} 
]; then KEYMAP_PATH=$${kmpath}; fi; done; if [ X$${KEYMAP_PATH} != X ]; then 
env KEYMAP_PATH=$${KEYMAP_PATH} /usr/sbin/kbdcontrol -L ${UKBD_DFLT_KEYMAP} | 
sed -e 's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static 
accentmap_t.* = /static accentmap_t accent_map = /' > ukbdmap.h; else echo 
Error:   ukbd_dflt_keymap not found; exit 1; fi"                 \
        no-obj no-implicit-rule before-depend                           \
        clean           "ukbdmap.h"
 #

Modified: head/sys/conf/files.sparc64
==============================================================================
--- head/sys/conf/files.sparc64 Tue Mar 15 11:10:08 2016        (r296898)
+++ head/sys/conf/files.sparc64 Tue Mar 15 13:38:15 2016        (r296899)
@@ -8,17 +8,17 @@
 # dependency lines other than the first are silently ignored.
 #
 atkbdmap.h                     optional        atkbd_dflt_keymap       \
-       compile-with    "/usr/sbin/kbdcontrol -L ${ATKBD_DFLT_KEYMAP} | sed -e 
's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static 
accentmap_t.* = /static accentmap_t accent_map = /' > atkbdmap.h"               
     \
+       compile-with    "unset KEYMAP_PATH; for kmpath in 
${S:S/sys$/share/}/vt/keymaps ${S:S/sys$/share/}/syscons/keymaps; do 
kmapfile=$${kmpath}/${ATKBD_DFLT_KEYMAP:C/\.kbd$$//}.kbd; if [ -r $${kmapfile} 
]; then KEYMAP_PATH=$${kmpath}; fi; done; if [ X$${KEYMAP_PATH} != X ]; then 
env KEYMAP_PATH=$${KEYMAP_PATH} /usr/sbin/kbdcontrol -L ${ATKBD_DFLT_KEYMAP} | 
sed -e 's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static 
accentmap_t.* = /static accentmap_t accent_map = /' > atkbdmap.h; else echo 
Error: atkbd_dflt_keymap not found; exit 1; fi"                        \
        no-obj no-implicit-rule before-depend                           \
        clean           "atkbdmap.h"
 #
 sunkbdmap.h                    optional        sunkbd_dflt_keymap      \
-       compile-with    "/usr/sbin/kbdcontrol -L ${SUNKBD_DFLT_KEYMAP} | sed -e 
's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static 
accentmap_t.* = /static accentmap_t accent_map = /' > sunkbdmap.h"              
    \
+       compile-with    "unset KEYMAP_PATH; for kmpath in 
${S:S/sys$/share/}/vt/keymaps ${S:S/sys$/share/}/syscons/keymaps; do 
kmapfile=$${kmpath}/${SUNKBD_DFLT_KEYMAP:C/\.kbd$$//}.kbd; if [ -r $${kmapfile} 
]; then KEYMAP_PATH=$${kmpath}; fi; done; if [ X$${KEYMAP_PATH} != X ]; then 
env KEYMAP_PATH=$${KEYMAP_PATH} /usr/sbin/kbdcontrol -L ${SUNKBD_DFLT_KEYMAP} | 
sed -e 's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static 
accentmap_t.* = /static accentmap_t accent_map = /' > sunkbdmap.h; else echo 
Error:      sunkbd_dflt_keymap not found; exit 1; fi"                       \
        no-obj no-implicit-rule before-depend                           \
        clean           "sunkbdmap.h"
 #
 ukbdmap.h                      optional        ukbd_dflt_keymap        \
-       compile-with    "/usr/sbin/kbdcontrol -L ${UKBD_DFLT_KEYMAP} | sed -e 
's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static 
accentmap_t.* = /static accentmap_t accent_map = /' > ukbdmap.h"                
      \
+       compile-with    "unset KEYMAP_PATH; for kmpath in 
${S:S/sys$/share/}/vt/keymaps ${S:S/sys$/share/}/syscons/keymaps; do 
kmapfile=$${kmpath}/${UKBD_DFLT_KEYMAP:C/\.kbd$$//}.kbd; if [ -r $${kmapfile} 
]; then KEYMAP_PATH=$${kmpath}; fi; done; if [ X$${KEYMAP_PATH} != X ]; then 
env KEYMAP_PATH=$${KEYMAP_PATH} /usr/sbin/kbdcontrol -L ${UKBD_DFLT_KEYMAP} | 
sed -e 's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static 
accentmap_t.* = /static accentmap_t accent_map = /' > ukbdmap.h; else echo 
Error:    ukbd_dflt_keymap not found; exit 1; fi"                 \
        no-obj no-implicit-rule before-depend                           \
        clean           "ukbdmap.h"
 #
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to