2016年6月24日金曜日

Emacsのshow-paren-match-faceがremoved

emacsのgit versionを使っているのだが、今日のupdateでshow-paren-match-faceが削除された。

commit c430f7e23fc2c22f251ace4254e37dea1452dfc3
Author: Mark Oteiza <mvoteiza@udel.edu>
Date: Thu Jun 23 17:13:11 2016 -0400
Remove some face aliases obsoleted in 22.1
...
* lisp/paren.el (show-paren-match-face, show-paren-mismatch-face):
...
以下のように、show-paren-matchを設定すれば良い:

(set-face-attribute 'show-paren-match nil
   :background 'unspecified
   :underline "turquoise")

2016年6月1日水曜日

Linux kernel 4.7-rc1をmake-kpkgでbuildする

概要

Linux kernel 4.7-rc1がreleaseされたが、buildでコケた。

Build environment

* Intel Core i7-6700K + DDR4 64GByte
* Debian Sid / Experimental
* gcc.real (Debian 6.1.1-4) 6.1.1 20160519
* Linux 4.7-rc1 (from Git)
* time (MAKEFLAGS= DEBIAN_BUILDARCH=native CONCURRENCY_LEVEL=8 CC='ccache gcc' CXX='ccache g++' fakeroot make-kpkg --initrd kernel_image)

error message

いつも通り、早速make-kpkgでbuildを試みたのだが、見事にコケた:

>   CC      arch/x86/boot/edd.o
> /tmp/ccENSHy1.s: Assembler messages:
> /tmp/ccENSHy1.s:35: Error: instruction `shlx' isn't supported in 16-bit mode.
> /tmp/ccENSHy1.s:39: Error: instruction `andn' isn't supported in 16-bit mode.
>   CC      arch/x86/boot/main.o
> scripts/Makefile.build:289: recipe for target 'arch/x86/boot/cpucheck.o' failed
> make[2]: *** [arch/x86/boot/cpucheck.o] Error 1
> make[2]: *** Waiting for unfinished jobs....

見ての通り、16bit modeでsupportされていないinstructionが使われている。

workaround

arch/x86/以下にあるcodeは-m32でcompileされるんじゃないのかな?と思い、関係しているであろうarch/x86/boot/Makefile@68を編集 (-m32を追加):

KBUILD_CFLAGS   := $(USERINCLUDE) $(REALMODE_CFLAGS) -D_SETUP
KBUILD_CFLAGS   := $(USERINCLUDE) $(REALMODE_CFLAGS) -D_SETUP -m32

これでbuildは通ったが、本当にこんなworkaroundで大丈夫なのかは不明。

ちなみに、Linux 4.6では全く同じ環境でbuildが通っているので、Linux 4.7で色々変わった関係だろう。