emacs 24.5のdebパッケージをUbuntu 14.04でビルドする

Ubuntu 14.04ではapt-get installで入れられるemacs24は24.3であり，ちょっと古い．
24.5のppaも現時点では無いようなので，自前ビルドしてみました．
せっかくなのでdebパッケージをビルドして，管理が楽になるようにします．
いくらか詰まったところがあったので記事にしてみました．

※ debパッケージのビルドは初心者なので，もっといい手順があったら教えてください．

### ソースのダウンロード

Wily(15.10)では24.5になっているので，そのソースをダウンロードします．
emacsen-commonというパッケージも新しくする必要があるのでダウンロードします．

    wget https://launchpad.net/ubuntu/+archive/primary/+files/emacs24_24.5%2B1.orig.tar.bz2
    wget https://launchpad.net/ubuntu/+archive/primary/+files/emacs24_24.5%2B1-1ubuntu2.debian.tar.xz
    wget https://launchpad.net/ubuntu/+archive/primary/+files/emacsen-common_2.0.8.tar.xz

### 解凍

それぞれ解凍します．

    tar xf emacsen-common_2.0.8.tar.xz
    tar xf emacs24_24.5+1.orig.tar.bz2
    mv emacs24-24.5+1.orig emacs24-24.5+1
    cd emacs24-24.5+1
    tar xf ../emacs24_24.5+1-1ubuntu4.debian.tar.xz
    cd ..

### パッチ当て

私の環境ではビルドに必要なlibgnults28-devを入れようとすると他のパッケージと競合したので，条件を緩和しました．

また，debian/patch-to-newというスクリプトに手を加える必要がありました(参考 http://git.willhughes.name/emacs/blob/master/debian/patch-to-news)．

以下，シェル上で実行するとパッチが当たります．

    patch -p0 << "EOS"
    diff -ur emacs24-24.5+1_org/debian/control emacs24-24.5+1/debian/control
    --- emacs24-24.5+1_org/debian/control	2015-10-29 23:00:59.000000000 +0900
    +++ emacs24-24.5+1/debian/control	2015-12-28 08:45:35.874903978 +0900
    @@ -9,7 +9,7 @@
      libgpm-dev [linux-any], libdbus-1-dev,
      autoconf, automake, autotools-dev, dpkg-dev (>> 1.10.0), quilt (>= 0.42),
      debhelper (>= 9), libxaw7-dev, sharutils, imagemagick, libgtk-3-dev,
    - libgnutls28-dev, libxml2-dev, libselinux1-dev [linux-any], libmagick++-dev,
    + libgnutls-dev, libxml2-dev, libselinux1-dev [linux-any], libmagick++-dev,
      libgconf2-dev, libasound2-dev [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64],
      libacl1-dev,
      zlib1g-dev
    diff -ur emacs24-24.5+1_org/debian/control.in emacs24-24.5+1/debian/control.in
    --- emacs24-24.5+1_org/debian/control.in	2015-09-18 02:58:21.000000000 +0900
    +++ emacs24-24.5+1/debian/control.in	2015-12-28 08:46:00.182903255 +0900
    @@ -9,7 +9,7 @@
      libgpm-dev [linux-any], libdbus-1-dev,
      autoconf, automake, autotools-dev, dpkg-dev (>> 1.10.0), quilt (>= 0.42),
      debhelper (>= 9), libxaw7-dev, sharutils, imagemagick, libgtk-3-dev,
    - libgnutls28-dev, libxml2-dev, libselinux1-dev [linux-any], libmagick++-dev,
    + libgnutls-dev, libxml2-dev, libselinux1-dev [linux-any], libmagick++-dev,
      libgconf2-dev, libasound2-dev [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64],
      libacl1-dev,
      zlib1g-dev
    diff -ur emacs24-24.5+1_org/debian/patch-to-news emacs24-24.5+1/debian/patch-to-news
    --- emacs24-24.5+1_org/debian/patch-to-news	2015-09-18 02:58:21.000000000 +0900
    +++ emacs24-24.5+1/debian/patch-to-news	2015-12-28 08:45:25.778904278 +0900
    @@ -4,6 +4,12 @@
     
     patch="$1"
     
    +if [ ! -f "$patch" -a -f "patches/$patch" ]; then
    +    patch="patches/$patch"
    +elif [ ! -f "$patch" -a -f "debian/patches/$patch" ]; then
    +    patch="debian/patches/$patch"
    +fi
    +
     sed '
       # delete everything after the first line starting with "--- " (the diff)
       /^--- [^ ]/,$d' < "$patch" \
    EOS

### ビルドに必要なパッケージのインストール

ビルドに必要なパッケージをインストールします．
もし足りなければビルドの際にdebuildが教えてくれます．

    sudo apt-get install build-essential \
                         devscripts \
                         libacl1-dev \
                         libcurl4-gnutls-dev \
                         libgconf2-dev \
                         libghc-gconf-dev \
                         libgif-dev \
                         libgnutls-dev \
                         libgpm-dev \
                         libjpeg-dev \
                         liblockfile-dev \
                         libm17n-dev \
                         libmagick++-dev \
                         libmagickcore-dev \
                         libncurses5-dev \
                         libotf-dev \
                         libpng12-dev \
                         librsvg2-dev \
                         libselinux1-dev \
                         libtiff4-dev \
                         libx11-dev \
                         libxft-dev \
                         libxml2-dev \
                         sharutils \
                         xaw3dg-dev
    
### ビルド

ビルド時間を短縮するため並列ビルドします．

    cd emacs24-24.5+1
    debuild -us -uc -j`nproc`

emacsen-commonの方も．こちらは並列ビルドしなくてもすぐ終わります．

    cd ../main
    debuild -us -uc

### インストール

できたdebパッケージをインストールしていきます．

    cd ..
    sudo dpkg -i emacsen-common_2.0.8_all.deb
    sudo dpkg -i emacs24-el_24.5+1-1ubuntu4_all.deb \
                 emacs24-bin-common_24.5+1-1ubuntu4_amd64.deb \
                 emacs24-common_24.5+1-1ubuntu4_all.deb \
                 emacs24_24.5+1-1ubuntu4_amd64.deb

終わりです．