あなたのMacをLinuxもどきに
以下のライブラリをインストールすると, Linux用のソースコードが簡単に configure, make コマンドでインストールできるようになります.ほれ,HomebrewとかMacportとか,甘い言葉に釣られてうっかりインストールするとシステムが不安定化するし,あんたがシステム管理しなきゃじゃないですか.全部MacOSネイティブなら,それを避けることができるようになる.管理はAppleがやってくれるから, OSX10とかのでも問題なく動くしね.
- gettext なんか知らんけど基本的なやつ
- gettext-0.21-osx12.4 Intel & arm64
- gettext-0.19-osx10 Intel Only
- pkg-config パッケージを管理するプログラムらしいです
- autoconf なんか知らねえ
- automake なんか自動なんじゃねえか?
- libtool libなtoolだよ.ほんまか?こっちが新バージョン
- libxml XMLだとさ. こっちが新バージョン
- readline
もしかすると, gawk, gmake あたりもインストールした方が良いのか?
以下は自力でインストールする変人向け
autoconf
cd autoconf-2.71 ./configure makefswatch -x /usr/local/ > files.log &
sudo make install
kill %1
fswatch_analyze.sh -c _binary < files.log
pkgbuild --identifier autoconf-2.71-osx13.0.1 --root _binary autoconf-2.71-osx13.0.pkg
automake
なにこれ. auto的にmakeするかもしれない.
cd automake-1.16.5 ./configure makefswatch -x /usr/local/ > files.log &
sudo make install
kill %1
fswatch_analyze.sh -c _binary < files.log
pkgbuild --identifier automake-1.61.5-osx13.0.1 --root _binary automake-1.61.5-osx13.0.pkg
doxygen
ごくまれにdoxygenを欲しがる馬鹿がいる. ここで良いのでは. インストールできたら
sudo ln -s /Applications/Doxygen.app/Contents/Resources/doxygen /usr/local/bin/
gettext
たまにgettextが必要な人もいる.
ARM64ビルド
cd gettext-0.21/ ./configure make fswatch -x /usr/local > files.log & sudo make install kill %1 fswatch_analyze.sh -c _binary files.log
なるほど,結構いっぱいであるな.
_binary/usr/local/bin/envsubst
_binary/usr/local/bin/gettext
_binary/usr/local/bin/msgattrib
_binary/usr/local/bin/msgcat
_binary/usr/local/bin/msgcmp
_binary/usr/local/bin/msgcomm
_binary/usr/local/bin/msgconv
_binary/usr/local/bin/msgen
_binary/usr/local/bin/msgexec
_binary/usr/local/bin/msgfilter
_binary/usr/local/bin/msgfmt
_binary/usr/local/bin/msggrep
_binary/usr/local/bin/msginit
_binary/usr/local/bin/msgmerge
_binary/usr/local/bin/msgunfmt
_binary/usr/local/bin/msguniq
_binary/usr/local/bin/ngettext
_binary/usr/local/bin/recode-sr-latin
_binary/usr/local/bin/xgettext
_binary/usr/local/lib/libasprintf.0.dylib
_binary/usr/local/lib/libgettextlib-0.21.dylib
_binary/usr/local/lib/libgettextpo.0.dylib
_binary/usr/local/lib/libgettextsrc-0.21.dylib
_binary/usr/local/lib/libintl.8.dylib
_binary/usr/local/lib/libtextstyle.0.dylib
これが豚化の対象ですね. pig.txt に入れておきます.
X86ビルド
cd gettext-0.21/ ./configure make
豚ビルド
対象を豚にする.
cd arm64/gettext-0.21 ./pig.txt|while read line;do lipo -info $line;done Non-fat file: /usr/local/bin/envsubst is architecture: arm64 Non-fat file: /usr/local/bin/gettext is architecture: arm64 Non-fat file: /usr/local/bin/msgattrib is architecture: arm64 Non-fat file: /usr/local/bin/msgcat is architecture: arm64 Non-fat file: /usr/local/bin/msgcmp is architecture: arm64 Non-fat file: /usr/local/bin/msgcomm is architecture: arm64 Non-fat file: /usr/local/bin/msgconv is architecture: arm64 Non-fat file: /usr/local/bin/msgen is architecture: arm64 Non-fat file: /usr/local/bin/msgexec is architecture: arm64 Non-fat file: /usr/local/bin/msgfilter is architecture: arm64 Non-fat file: /usr/local/bin/msgfmt is architecture: arm64 Non-fat file: /usr/local/bin/msggrep is architecture: arm64 Non-fat file: /usr/local/bin/msginit is architecture: arm64 Non-fat file: /usr/local/bin/msgmerge is architecture: arm64 Non-fat file: /usr/local/bin/msgunfmt is architecture: arm64 Non-fat file: /usr/local/bin/msguniq is architecture: arm64 Non-fat file: /usr/local/bin/ngettext is architecture: arm64 Non-fat file: /usr/local/bin/recode-sr-latin is architecture: arm64 Non-fat file: /usr/local/bin/xgettext is architecture: arm64 Non-fat file: /usr/local/lib/libasprintf.0.dylib is architecture: arm64 Non-fat file: /usr/local/lib/libgettextlib-0.21.dylib is architecture: arm64 Non-fat file: /usr/local/lib/libgettextpo.0.dylib is architecture: arm64 Non-fat file: /usr/local/lib/libgettextsrc-0.21.dylib is architecture: arm64 Non-fat file: /usr/local/lib/libintl.8.dylib is architecture: arm64 Non-fat file: /usr/local/lib/libtextstyle.0.dylib is architecture: arm64
では,
get_arch(){ A=`lipo -info $1` if [ "${A%%:*}" == "Non-fat file" ];then N1=1;else N1=0;fi V1="${A##*:}" echo $V1 } cat pig.txt|while read line do fn=`basename $line` dn=`dirname $line` bn=`basename $dn` XF=`find ../../x86_64/gettext-0.21/gettext-runtime -name $fn |grep .libs` if [ "$XF" == "" ];then XF=`find ../../x86_64/gettext-0.21/gettext-tools -name $fn |grep .libs` fi if [ "$XF" == "" ];then XF=`find ../../x86_64/gettext-0.21 -name $fn |grep .libs` fi A1=`get_arch $line` A2=`get_arch $XF` lipo -create -arch $A1 $line -arch $A2 $XF -output $bn/$fn lipo -info $line lipo -info $XF lipo -info $bn/$fn done
これをやってみると,
Non-fat file: /usr/local/bin/envsubst is architecture: arm64 Non-fat file: ../../x86_64/gettext-0.21/gettext-runtime/src/.libs/envsubst is architecture: x86_64 Architectures in the fat file: bin/envsubst are: x86_64 arm64 Non-fat file: /usr/local/bin/gettext is architecture: arm64 Non-fat file: ../../x86_64/gettext-0.21/gettext-runtime/src/.libs/gettext is architecture: x86_64 Architectures in the fat file: bin/gettext are: x86_64 arm64 Non-fat file: /usr/local/bin/msgattrib is architecture: arm64 Non-fat file: ../../x86_64/gettext-0.21/gettext-tools/src/.libs/msgattrib is architecture: x86_64 Architectures in the fat file: bin/msgattrib are: x86_64 arm64 Non-fat file: /usr/local/bin/msgcat is architecture: arm64 Non-fat file: ../../x86_64/gettext-0.21/gettext-tools/src/.libs/msgcat is architecture: x86_64 Architectures in the fat file: bin/msgcat are: x86_64 arm64 Non-fat file: /usr/local/bin/msgcmp is architecture: arm64 Non-fat file: ../../x86_64/gettext-0.21/gettext-tools/src/.libs/msgcmp is architecture: x86_64 Architectures in the fat file: bin/msgcmp are: x86_64 arm64 Non-fat file: /usr/local/bin/msgcomm is architecture: arm64 Non-fat file: ../../x86_64/gettext-0.21/gettext-tools/src/.libs/msgcomm is architecture: x86_64 Architectures in the fat file: bin/msgcomm are: x86_64 arm64 Non-fat file: /usr/local/bin/msgconv is architecture: arm64 Non-fat file: ../../x86_64/gettext-0.21/gettext-tools/src/.libs/msgconv is architecture: x86_64 Architectures in the fat file: bin/msgconv are: x86_64 arm64 Non-fat file: /usr/local/bin/msgen is architecture: arm64 Non-fat file: ../../x86_64/gettext-0.21/gettext-tools/src/.libs/msgen is architecture: x86_64 Architectures in the fat file: bin/msgen are: x86_64 arm64 Non-fat file: /usr/local/bin/msgexec is architecture: arm64 Non-fat file: ../../x86_64/gettext-0.21/gettext-tools/src/.libs/msgexec is architecture: x86_64 Architectures in the fat file: bin/msgexec are: x86_64 arm64 Non-fat file: /usr/local/bin/msgfilter is architecture: arm64 Non-fat file: ../../x86_64/gettext-0.21/gettext-tools/src/.libs/msgfilter is architecture: x86_64 Architectures in the fat file: bin/msgfilter are: x86_64 arm64 Non-fat file: /usr/local/bin/msgfmt is architecture: arm64 Non-fat file: ../../x86_64/gettext-0.21/gettext-tools/src/.libs/msgfmt is architecture: x86_64 Architectures in the fat file: bin/msgfmt are: x86_64 arm64 Non-fat file: /usr/local/bin/msggrep is architecture: arm64 Non-fat file: ../../x86_64/gettext-0.21/gettext-tools/src/.libs/msggrep is architecture: x86_64 Architectures in the fat file: bin/msggrep are: x86_64 arm64 Non-fat file: /usr/local/bin/msginit is architecture: arm64 Non-fat file: ../../x86_64/gettext-0.21/gettext-tools/src/.libs/msginit is architecture: x86_64 Architectures in the fat file: bin/msginit are: x86_64 arm64 Non-fat file: /usr/local/bin/msgmerge is architecture: arm64 Non-fat file: ../../x86_64/gettext-0.21/gettext-tools/src/.libs/msgmerge is architecture: x86_64 Architectures in the fat file: bin/msgmerge are: x86_64 arm64 Non-fat file: /usr/local/bin/msgunfmt is architecture: arm64 Non-fat file: ../../x86_64/gettext-0.21/gettext-tools/src/.libs/msgunfmt is architecture: x86_64 Architectures in the fat file: bin/msgunfmt are: x86_64 arm64 Non-fat file: /usr/local/bin/msguniq is architecture: arm64 Non-fat file: ../../x86_64/gettext-0.21/gettext-tools/src/.libs/msguniq is architecture: x86_64 Architectures in the fat file: bin/msguniq are: x86_64 arm64 Non-fat file: /usr/local/bin/ngettext is architecture: arm64 Non-fat file: ../../x86_64/gettext-0.21/gettext-runtime/src/.libs/ngettext is architecture: x86_64 Architectures in the fat file: bin/ngettext are: x86_64 arm64 Non-fat file: /usr/local/bin/recode-sr-latin is architecture: arm64 Non-fat file: ../../x86_64/gettext-0.21/gettext-tools/src/.libs/recode-sr-latin is architecture: x86_64 Architectures in the fat file: bin/recode-sr-latin are: x86_64 arm64 Non-fat file: /usr/local/bin/xgettext is architecture: arm64 Non-fat file: ../../x86_64/gettext-0.21/gettext-tools/src/.libs/xgettext is architecture: x86_64 Architectures in the fat file: bin/xgettext are: x86_64 arm64 Non-fat file: /usr/local/lib/libasprintf.0.dylib is architecture: arm64 Non-fat file: ../../x86_64/gettext-0.21/gettext-runtime/libasprintf/.libs/libasprintf.0.dylib is architecture: x86_64 Architectures in the fat file: lib/libasprintf.0.dylib are: x86_64 arm64 Non-fat file: /usr/local/lib/libgettextlib-0.21.dylib is architecture: arm64 Non-fat file: ../../x86_64/gettext-0.21/gettext-tools/gnulib-lib/.libs/libgettextlib-0.21.dylib is architecture: x86_64 Architectures in the fat file: lib/libgettextlib-0.21.dylib are: x86_64 arm64 Non-fat file: /usr/local/lib/libgettextpo.0.dylib is architecture: arm64 Non-fat file: ../../x86_64/gettext-0.21/gettext-tools/libgettextpo/.libs/libgettextpo.0.dylib is architecture: x86_64 Architectures in the fat file: lib/libgettextpo.0.dylib are: x86_64 arm64 Non-fat file: /usr/local/lib/libgettextsrc-0.21.dylib is architecture: arm64 Non-fat file: ../../x86_64/gettext-0.21/gettext-tools/src/.libs/libgettextsrc-0.21.dylib is architecture: x86_64 Architectures in the fat file: lib/libgettextsrc-0.21.dylib are: x86_64 arm64 Non-fat file: /usr/local/lib/libintl.8.dylib is architecture: arm64 Non-fat file: ../../x86_64/gettext-0.21/gettext-runtime/intl/.libs/libintl.8.dylib is architecture: x86_64 Architectures in the fat file: lib/libintl.8.dylib are: x86_64 arm64 Non-fat file: /usr/local/lib/libtextstyle.0.dylib is architecture: arm64 Non-fat file: ../../x86_64/gettext-0.21/libtextstyle/lib/.libs/libtextstyle.0.dylib is architecture: x86_64 Architectures in the fat file: lib/libtextstyle.0.dylib are: x86_64 arm64
できたな.
sudo cp bin/* /usr/local/bin/ sudo cp lib/* /usr/local/lib/
ではパッケージを作成
fswatch_analyze.sh -c _pig files.log pkgbuild --identifier gettext-0.21 --root _pig gettext-0.21-osx12.4.pkg
help2man
cd help2man-1.47.10
./configure
make
fswatch -x /usr/local/ > files.log &
sudo make install
kill %1
fswatch_analyze.sh -c _binary < files.log
pkgbuild --identifier help2man-1.47.10 --root _binary help2man-1.47.10-osx10.14.pkg
libtool
libtoolはversion 2.4.6で十分に新しいようであるが, 大昔にコンパイルしたままなので, 再コンパイルしてみる.
cd libtool-2.4.6 make distclean ./configure CC=clang CXX=clang++ fswatch -x /usr/local > files.log sudo make install kill %1 fswatch_analyze.sh -c _binary files.log pkgbuild --identifier libtool --root _binary libtool-2.4.6-osx10.14.pkg
こんなんでいいのかな. でも時々, -c オプションが無いとかいって怒られる.
git clone git://git.savannah.gnu.org/libtool.git cd libtool ./bootstrap ./configure make
ReadLine
ReadなLineをインストールします.
INTEL
cd x86_64
tar zxf ../readline-8.2.tar.gz
cd readline-8.2
./configure
make
fswatch -x /usr/local/ > files.log &
sudo make install
kill %1
fswatch_analyze.sh -c _binary files.log
ARM64
cd arm64
tar zxf readline-8.2.tar.gz
cd readline-8.2
./configure
make
fswatch -x /usr/local/ > files.log &
kill %1
fswatch_analyze.sh -c _binary files.log
豚ビルド
$ cd universal $ mkdir readline-8.2 $ cd readline-8.2 $ fatty_apple.sh ../../x86_64/readline-8.2/_binary/usr/local/lib\ ../../arm64/readline-8.2/_binary/usr/local/lib\ universal libreadline.8.2.dylib libhistory.8.2.dylib Architectures in the fat file: universal/libreadline.8.2.dylib are: x86_64 arm64 Architectures in the fat file: universal/libhistory.8.2.dylib are: x86_64 arm64 $ mv universal/*dylib ../../arm64/readline-8.2/_binary/usr/local/lib $ cd ../../arm64/readline-8.2 $ lipo -info _binary/usr/local/lib/*dylib Architectures in the fat file: _binary/usr/local/lib/libhistory.8.2.dylib are: x86_64 arm64 Architectures in the fat file: _binary/usr/local/lib/libhistory.8.dylib are: x86_64 arm64 Architectures in the fat file: _binary/usr/local/lib/libhistory.dylib are: x86_64 arm64 Architectures in the fat file: _binary/usr/local/lib/libreadline.8.2.dylib are: x86_64 arm64 Architectures in the fat file: _binary/usr/local/lib/libreadline.8.dylib are: x86_64 arm64 Architectures in the fat file: _binary/usr/local/lib/libreadline.dylib are: x86_64 arm64 $ pkgbuild --identifier readline-8.2 --root _binary readline-8.2-osx13.0.pkg
XZ
cd xz-5.2.4 ./configure make fswatch -x /usr/local/ > files.log & sudo make install kill %1 fswatch_analyze.sh -c _binary < files.log pkgbuild --identifier xz-5.2.4 --root _binary xz-5.2.4-osx10.14.pkg
添付 | サイズ |
---|---|
gettext-0.21-osx12.4.pkg | 6.14 MB |