CodeLite

今日のやつは先日、宗教的な理由(違ッ!)で却下されたものです。
コンパイルされた最新版が手に入るんだから、わざわざHomebrewでビルドする必要が無いということらしい。

The following script installs CodeLite on OSX with Homebrew.
But I (and Homebrew team) recommend to use the official build one from Cask of Homebrew.

class Codelite < Formula
  desc "Cross platform C/C++/PHP and Node.js IDE written in C++"
  homepage "https://codelite.org"
  url "https://github.com/eranif/codelite/archive/11.0.tar.gz"
  sha256 "9eb23ea635fc746318a832efd752b08027c11efcd9af7f494f31dbaacdd651a1"

  depends_on "ccache" => :build
  depends_on "cmake" => :build
  depends_on "openssl"
  depends_on "wxmac"

  def install
    # Known Issue:
    # If you built `wxmac` with "--with-stl" option, you cannot build this Formula.
    # Because this Formula requires cxx11.

    # https://github.com/eranif/codelite/issues/1284
    # https://github.com/eranif/codelite/pull/1797
    inreplace "CMakeLists.txt", "set(WX_COMPONENTS \"std\")", "set(WX_COMPONENTS \"std aui propgrid ribbon\")"
    inreplace "codelite_terminal/CMakeLists.txt", "wxWidgets REQUIRED", "wxWidgets COMPONENTS std stc REQUIRED"
    mkdir "build-release" do
      system "cmake", "..", "-DCL_PREFIX=#{prefix}", *std_cmake_args
      system "make", "install"
      prefix.install "codelite.app"
    end
  end

  test do
    system "#{opt_prefix}/codelite.app/Contents/MacOS/codelite-clang-format", "--version"
  end
end




OGLFT

テストを作るのが面倒なのでPull Requestに出すつもりがないです。暇な方はTestを追加して私の代わりにPR出して下さい。

The following script installs OGLFT on OSX with Homebrew.
Required "gle"

class Oglft < Formula
  desc "OpenGL-FreeType Library"
  homepage "https://oglft.sourceforge.net/"
  url "https://downloads.sourceforge.net/project/oglft/oglft/Version%200.9/oglft-0.9.tar.gz"
  sha256 "80fde279efaeab4d87b650579a094a725267478d933339dc7cd398367b4368e5"

  depends_on "autoconf" => :build
  depends_on "automake" => :build
  depends_on "libtool" => :build
  depends_on "freetype"
  depends_on "gle"

  def install
    inreplace ["liboglft/OGLFT.h", "configure.ac", "configure", "config/config.h.in"],
               "GL/gl.h", "OpenGL/gl.h"
    inreplace ["liboglft/OGLFT.h", "configure.ac", "configure", "config/config.h.in"],
               "GL/glu.h", "OpenGL/glu.h"
    ENV.append "CPPFLAGS", "-I#{Formula["freetype"].opt_include}/freetype2 "
    system "autoreconf", "-vi"
    system "./configure", "--disable-debug",
                          "--disable-dependency-tracking",
                          "--disable-silent-rules",
                          "--prefix=#{prefix}"
    system "make", "install"
  end
end




GLE-graphics

またもやHomebrewで絶対にマージされないようなScriptを書いてしまったでござる。

The following script installs GLE-graphics on OSX with Homebrew.

class GleGraphics < Formula
  desc "Graphics Layout Engine"
  homepage "https://glx.sourceforge.net/"
  url "https://downloads.sourceforge.net/project/glx/gle4%20%28Current%20Active%20Version%29/4.2.5/gle-graphics-4.2.5f-src.tar.gz"
  version "4.2.5"
  sha256 "6cd6b1d82cbf2c7a0b0affbd67c0ec32460ef6a13f6b41dfdd6f308fd651f102"

  option "with-fonts", "install additional fonts"

  depends_on "pkg-config" => :build
  depends_on "cairo" => :optional
  depends_on "jpeg"
  depends_on "libpng"
  depends_on "libtiff"
  depends_on :x11

  patch :p0 do
    url "https://raw.githubusercontent.com/macports/macports-ports/master/graphics/gle-graphics/files/patch-hash-map.diff"
    sha256 "59769465080c539573313411c301314b18aa407e61858ce3b42d9f3b0660b1e4"
  end
  patch :p0 do
    url "https://raw.githubusercontent.com/macports/macports-ports/master/graphics/gle-graphics/files/patch-src-gle-gle-poppler.cpp.diff"
    sha256 "50f2d4674c47dbf1f8a3fc3c19936a9c49d0f70dfd28e2259af77477a0887f16"
  end
  patch do
    url "https://bugs.debian.org/cgi-bin/bugreport.cgi?att=1;bug=853420;filename=001-fix-ftbfs-with-gcc7.diff;msg=14"
    sha256 "ab724f5b32eb3f81391b4e9059a87ddadf5e2b1c0689b5794ec6ad2d74f2c1df"
  end

  def install
    args = %w[--disable-debug --disable-dependency-tracking --with-libgle=both --disable-silent-rules --with-x --without-qt]
    args << "--with-extrafonts" if build.with? "fonts"
    args <<  (build.with?("cairo") ? "--with-cairo" : "--without-cairo" )
    args << "--with-arch=#{MacOS.preferred_arch}" << "--prefix=#{prefix}"
    system "./configure", *args
    system "make" # To do "make", "install" without this step gives "install empty".
    system "make", "install"
  end
end




MoltenVK

またもやHomebrewで絶対にマージされないようなScriptを書いてしまったでござる。
MacOS(とiOS)向けVulkanグラフィックドライバーの評価版をインストールします。
現在把握している事例では、これでMoltenVKをインストールすると、SDL2をビルドする時に発見されてリンクされちゃいますが、Cocoaがvulkanの存在を知らないためヤバいことになります(ぉぃ。

The following script installs Molten Vulkan on OSX with Homebrew.

2017.11/12

Adapted to ver.0.19.0.
MoltenGL was split from MoltenVK.

class Moltenvk < Formula
  desc "Traial of Molten Vulkan graphics API on macOS"
  homepage "https://moltengl.com/moltenvk/"
  url "https://s3.amazonaws.com/moltengl/downloads/Molten-0.19.0.zip"
  sha256 "b87892e74faefd1d12b404b65e08b603bf2a3617b8a38f2ddd2560c93e1ed832"

  keg_only "Molten Vulkan is still preview version"

  def install
    bin.install "Molten-#{version}/MoltenShaderConverter/Tools/MoltenShaderConverter"
    lib.install "Molten-#{version}/MoltenShaderConverter/MoltenGLSLToSPIRVConverter/macOS/MoltenGLSLToSPIRVConverter.framework",
                "Molten-#{version}/MoltenShaderConverter/MoltenSPIRVToMSLConverter/macOS/MoltenSPIRVToMSLConverter.framework",
                "Molten-#{version}/MoltenVK/macOS/MoltenVK.framework"
    include.install Dir["Molten-#{version}/MoltenVK/include/*"]
  end
end




libvo-amrwbenc

最近はHomebrewでは test blockがない新規Formulaは絶対に採用されないようになって、新規にscriptを書いても、Testを作るのがだるくって自分専用になるんですよ。

The following script installs libvo-amrwbenc(vo-amrwbenc) on OSX with Homebrew.
Save as "vo-amrwbenc.rb" into Homebrew's "Formula" folder (You may find "/usr/local/Homebrew/Library/Tap/homebrew/homebrew-core/Formula").
And do "brew install -s vo-amrwbenc".

class VoAmrwbenc < Formula
  desc "the Adaptive MultiRate Wideband (AMR-WB) audio codec"
  homepage "https://github.com/mstorsjo/vo-amrwbenc"
  url "https://github.com/mstorsjo/vo-amrwbenc/archive/v0.1.3.tar.gz"
  sha256 "85c79997ba7ddb9c95b5ddbe9ea032e27595390f3cbd686ed46a69e485cc053c"

  depends_on "autoconf" => :build
  depends_on "automake" => :build
  depends_on "libtool" => :build

  def install
    system "autoreconf", "-iv"
    system "./configure", "--disable-debug",
                          "--disable-dependency-tracking",
                          "--disable-silent-rules",
                          "--prefix=#{prefix}"
    system "make", "install"
  end
end




libyuv

需要があるとは思えない、libyuvの自家製Homebrewスクリプトです。私はlibvpxに組み込むつもりですが、他に用途があるのでしょうか?
コピペして、"libyuv.rb"という名前で保存してお使い下さい。

The following script installs libyuv on OSX with Homebrew.

class Libyuv < Formula
  desc "YUV scaling and conversion functionality"
  homepage "https://bugs.chromium.org/p/libyuv/adminIntro"
  url "https://chromium.googlesource.com/libyuv/libyuv.git",
      :revision => "311add63c2e73cf50cc0e89cf94ebf3fc5632560"
  head "https://chromium.googlesource.com/libyuv/libyuv.git"
  version "0.0.0"

  depends_on "cmake" => :build
  depends_on "jpeg-turbo"

  def install
    ENV.deparallelize
    ENV["LDDLFLAGS"] = "-L/usr/lib -L#{Formula["jpeg-turbo"].opt_lib}"
    ENV.append "LDFLAGS","-ljpeg"
    ENV.append "CPPFLAGS","-I#{Formula["jpeg-turbo"].opt_include}"

    args = std_cmake_args
    args << "-DJPEG_LIBRARY=#{Formula["jpeg-turbo"].opt_lib}/libjpeg.dylib"
    system "cmake", ".", *args
    system "make", "install"
  end

  test do
    system "#{Formula["libyuv"].opt_bin}/yuvconvert", "--help"
  end
end

libyuvのcmakeが勝手にlibjpegのライブラリを見つけて、mpegデコーダーに利用しようとするもリンクエラーとなるため、探せなくしてあります。
基本、"version 0.0.0" とかいう不安定版に対するスクリプトはHomebrewには採用されません。

追記

上記のlibjpegの件、libyuvのサイトに「libjpegとのリンクが上手く行かない」という旨のBug reportを発見。それに対して「libturbojpeg を使用するように」との返答がなされています。

$ nm -o /usr/local/Cellar/jpeg-turbo/1.5.2/lib/libturbojpeg.dylib | grep "_jpeg_CreateDecompress"
/usr/local/Cellar/jpeg-turbo/1.5.2/lib/libturbojpeg.dylib: 00000000000113d0 T _jpeg_CreateDecompress

なるほど、リンクできなかったオブジェクトは確かにlibturbojpegの中にあります。
jpeg-turboへのリンクに成功しました。

$ otool -L /usr/local/Cellar/libyuv/0.0.0/lib/libyuv.dylib
/usr/local/Cellar/libyuv/0.0.0/lib/libyuv.dylib:
	/usr/local/opt/libyuv/lib/libyuv.dylib (compatibility version 0.0.0, current version 0.0.0)
	/usr/local/opt/jpeg-turbo/lib/libjpeg.8.dylib (compatibility version 10.0.0, current version 10.2.0)
	/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 400.9.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.0.0)

これを踏まえまして、上記のスクリプトjpeg-turbo を使用するものに差し替えさせていただきました。


倉庫番ヘルパー

そもそもJavaScriptで完全に解くというモノを目指していたのですが、開発途中でJavascriptは処理が遅いため荷が重いと思い、Perlで完全に解くモノを開発することに変更。
で、Perlで解けるものができたものの、1瞬で解ける問題もあれば数時間掛かることもあり、まして解けない問題を投稿とされると大変なことになるためにCGIで公開することを断念。
そんな訳で、倉庫番ヘルパーという中途半端なものを公開します。

所詮ヘルパーですのでヒント(解析結果)は提示しますが解くのはあなたです。

また、倉庫番の問題には著作権があるらしいため、問題自体は私のサイトにはありません。
フリーで公開されている問題を読み込むか、メモ帳などで作成して下さい。
村瀬芳生さんのサイトに106問公開されており、そのまま読み込めることを確認済みです。
とりあえず、実際に"手製001"を読み込んで、「Show Hint」ボタンを連打してみてください。Hintが出尽くすとボタンが消えます。
すると、"I think there are 4 ways to push."と言われます。
ここで、押して良いと言われているNo.3の荷物を↓に押してみましょう。で、また「Show Hint」ボタンを連打すると、No.1〜3の荷物にロックが掛かります。つまり、No.1〜3の荷物はもう動かせません。
「押せるって言ったじゃん」というクレームは受け付けません(ぉぃ。ていうか、そこまで予見出来たら神だ。
そんな時は「Back」ボタンで戻って下さい。

100問解いて2問しか使わない処理もあり、実際、チェックのために47問解いて48問目に初めてエラーが起きてバグに気づくというハメに。
もしかしたらまだバグがあるかもですので、見つけた場合はお知らせ下さい。