http://reval-mocchi.rhcloud.com

Roswell-cartridgeを作った

OpenShiftでCommonLispのWebアプリケーションを動かしたいと思ったときに,Roswellがあると便利だと気付いた. 例えば,処理系を変えたい場合とか.

github.com

OpenShiftはデプロイ時などの前後でアクションを起こすことができる. なので,そこでRoswellを使っていろいろすると良さそう. 注意点として,cartridgeではRoswellにPATHを通すことができないので,実行時に指定する必要がある. ; sshで接続した場合は,bash_profileを読んでくれるので解決できる.

PATH=${OPENSHIFT_ROSWELL_DIR}/bin:$PATH HOME=${OPENSHIFT_ROSWELL_DIR}/home ros install ccl-bin

Roswellを好きな場所にインストールする

大抵、コンフィグファイルはホームディレクトリ直下に置かれることが多い為、環境変数HOMEを指定して使う人は多いと思う。
; Emacsの時はこれで解決できる。
 

しかし、UNIX環境でRoswellの設定を意識しない状態で使用するとgetpwnamで取得したホームディレクトリが使用される。

その為、環境変数HOMEを使用しても働かない。
 
では、どうするかと言うと
環境変数にROSWELL_HOMEを指定する必要がある。
 
しかし、その辺の処理にバグあって使えなかった。
なので、修正投げたよ!取り込まれました!
; 佐野さんありがとうございます!
 
2015/10/11現在はreleaseに入っていないので、masterをcloneすれば解決できる。
 
追記:
上記の内容は,homedirの話で,configdirは$HOME直下に作られていた.
そのため,ROSWELL_HOMEとHOMEを指定する必要がある.
 

OpenShiftでGitBucket

最近,OpenShiftのcartridgeを作るのにはまっています.

OpenShiftって自由度高いんだなと思えるサンプルとして,GitBucketのcartridgeを作りました.

; Herokuでも可能だが...

github.com

使い方

rhc create-app gitbucket 'http://cartreflect-claytondev.rhcloud.com/reflect?github=mocchit/gitbucket-cartridge'

作成し終えたらすぐにアクセスして,ID/PASSWORD root/rootでSignInしてアカウント情報を書き換える.

外に立てたサーバで,private repositoryを使いたいだけならBitbucketで十分だった. 社内で,OpenShiftを使う場合に生きるかも?

GitBucketとは

github.com

pacstrapでこけた

Portable Arch Linuxを作成するために,USBメモリ*1へBaseSystemをインストールしようとしたら....

error: could not open file /mnt/usbstick/var/cache/pacman/pkg/vi-1:070224-2-x86_64.pkg.tar.xz.part: Invalid argument
error: could not open file /mnt/usbstick/var/cache/pacman/pkg/vi-1:070224-2-x86_64.pkg.tar.xz.part: Invalid argument
warning: failed to retrieve some files
error: failed to commit transaction (failed to retrieve some files)
Errors occurred, no packages were upgraded.
==> ERROR: Failed to install packages to new root

option:enable style:terminal

初期

vi-1:070224-2-x86_64.pkg.tar.xz.partのファイル名を疑ったがそうでもないらしい...

迷走

Fedoraでpacstrapを入れて試してみるも同じ失敗.

解決

ググったらでてきた. USBメモリの容量が大き場合はext4じゃないとだめだったのか. umountしてから

mkfs.ext4 /dev/sdb1

で解決した.

参照元:https://www.reddit.com/r/linux4noobs/comments/2u37mo/trouble_installing_arch_base_via_pacstrap/

メモ

デバイス探すとき

lsblk

*1:

OpenShiftでEmacs Webアプリケーションを動かす!!

Emacsでブログエンジンを動かしてる人*1もいるようだし, これからはEmacs Webアプリケーションの時代がくる予感!

また,僕はOpenShiftをよく使うので,Emacs cartridgeがあると便利だと思い作った. github.com

使い方

前提

  • OpenShiftアカウント
  • rhc

    OpenShiftにアプリケーションを作成

rhc create-app emacs 'http://cartreflect-claytondev.rhcloud.com/reflect?github=mocchit/emacs-cartridge'

アプリケーションを書く場所

前行程を行うとemacsというディレクトリが作成されている. その中あるinit.elにガリガリ書き込んでいく.

cd emacs
ls
=> init.el

Emacs cartridgeについて

elnodeが事前に(package-install 'elnode)されている. 他に追加する必要があれば,(package-install XXX)してください.

x86エミュレータをCommon Lispで実装

自作x86エミュレータ本を買っていたので,2.3の初めてのエミュレータを実装してみた.

結果

f:id:mocchit:20150923204342p:plain

コード

参考

Macで自作エミュレータで学ぶx86アーキテクチャ本を進める...1章

Macで自作エミュレータで学ぶx86アーキテクチャ本を進めるには,以下のものが必要でした.

1章

  • gcc Xcodeのgccでは,オプションが使えないものがある. 調べて互換のあるオプションを探すのも骨が折れるので,brew install gcc --universal. もしくは,brew upgrade gcc
  • gobjdump objdumpがないので,gobjdumpを入れる.brew install binutilsで入れる.
  • nasm 現状では,なくてもよい.brew install nsamでいれる.

    起きたエラー

    gcc

  • brew upgrade gccで解決
$ brew install gcc --universal
==> Downloading http://ftpmirror.gnu.org/gcc/gcc-5.2.0/gcc-5.2.0.tar.bz2
==> Downloading from http://ftp.jaist.ac.jp/pub/GNU/gcc/gcc-5.2.0/gcc-5.2.0.tar.bz2
######################################################################## 100.0%
==> Patching
patching file gcc/jit/Make-lang.in
patching file gcc/jit/jit-playback.c
Hunk #1 succeeded at 2459 with fuzz 2 (offset 43 lines).
==> ../configure --build=x86_64-apple-darwin14.3.0 --prefix=/usr/local/Cellar/gcc/5.2.0 --libdir=/usr/local/Cellar/gcc/5.2.0/lib/gcc/5 --enable-languages=c,c++,objc,obj-c++,fortran --program-suffix=
==> make bootstrap
==> make install
make[4]: *** [install-multi] Error 2
make[3]: *** [install-am] Error 2
make[2]: *** [install] Error 2
make[1]: *** [install-target-libgfortran] Error 2
make: *** [install] Error 2
couldn't understand kern.osversion `14.3.0'

READ THIS: https://git.io/brew-troubleshooting

These open issues may also help:
apple-gcc42 takes priority over modern gcc https://github.com/Homebrew/homebrew/issues/41055
gcc 4.9.2 fails to produce debugging information https://github.com/Homebrew/homebrew/issues/34976
Object files deleted during build of gcc needed by gdb https://github.com/Homebrew/homebrew/issues/35734
MacOS.(gcc|clang|llvm)_version can return nil https://github.com/Homebrew/homebrew/issues/18781

option:enable style:terminal title:gcc