令和になってもUbuntuでNot Tetrisがしたい


これは何?

以下2つの場合に読む備忘録
1. 新しいUbuntuに古いLove2Dを入れる
2. Ubuntuでtar ballをビルドする

導入

Not Tetrisは一見するとTetrisのように見えるクソゲー。
クロスプラットフォームなフレームワークLove2D上で動作する。

Linuxでもできる落ちゲーと聞いてプレイしようとした……が、動作せず。
どうやらapt install loveで取得したLove2Dと、当時のバージョンに互換性がないらしい。仕方がないので、tar ballからビルドすることにした。

前準備

ビルド環境

  • OS: Ubuntu 18.04.5 LTS
  • ビルドツール一式はapt install build-esseitial devscriptsでまとめて入っているものとする。
  • buildflags.confを以下の内容で作成するのがおすすめ。
$HOME/.config/dpkg/buildflags.conf
APPEND CFLAGS -march=native -pipe
APPEND CXXFLAGS -march=native -pipe

ソースコード

リンクからソースコードlove-0.7.2-linux-src.tar.gzを入手する。その後、作業用ディレクトリに展開する。

仮ビルド

仮Configure

  1. ./configure --helpを実行して、利用可能なオプションを眺めてみる。
  2. ./configureを実行する。
  3. おそらくSDLが無い事で怒られるので、依存パッケージを入れる
    configure.inやapt show love等の内容を参考に、libdevil-dev, libfreetype6-dev, liblua5.1-0-dev, libsdl1.2-dev等々を入れていく。
  4. configureが成功するまで頑張る。
    結果論だが./configure --enable-luajitしたらハマったので断念。

仮Make

  1. 以下の内容でcfg0.sh(修正前)を作成して、実行する。
  2. make する。
  3. OpenGL周りでコンパイルエラーが出るので、以下のようにcfg0.shを修正する。
  4. ./cfg0.shmakeの順に実行し、コンパイルが通るまで頑張る。
cfg0.sh(修正前)
#!/bin/bash
export CFLAGS="-pipe -O0"
export CXXFLAGS="-pipe -O0"
./configure
cfg0.sh(修正後)
#!/bin/bash
export CPPFLAGS="-DGL_GLEXT_PROTOTYPES"
export CFLAGS="-pipe -O0"
export CXXFLAGS="-pipe -O0"
./configure

本番ビルド+インストール

  1. make cleanする。
  2. dpkg-buildflags --export > cfg1.shとする。
  3. cfg1.shの適切な箇所に、-DGL_GLEXT_PROTOTYPES./configure --prefix=/opt/love --program-suffix=-0.7.2を追記する。
  4. cfg1してmakeして…(以下参照)
./cfg1
make
sudo make install
make clean

やったぜ