2001Yのプロフォール画像

2001Y@Y20010920T

set -euo pipefail

# 0) 変数
ROOT="$HOME/macports-local/dports"
PKG="sysutils/dvtm"

# 1) ローカル Portfile リポジトリ作成&Portfile取得
mkdir -p "$ROOT/$PKG/files"
cp "$(port dir dvtm)/Portfile" "$ROOT/$PKG/Portfile"

# 2) “元ソース”からパッチを自動生成(同じ編集を当てて差分作成)
sudo port -k clean dvtm
sudo port -k extract dvtm
W="$(port -q work dvtm)/dvtm-0.15"

TMP="$(mktemp -d)"
cp "$W/dvtm.c"        "$TMP/dvtm.c.orig"
cp "$W/config.def.h"  "$TMP/config.def.h.orig"
cp "$TMP/dvtm.c.orig" "$TMP/dvtm.c"
cp "$TMP/config.def.h.orig" "$TMP/config.def.h"

# 2a) 同名衝突する関数 send -> dvtm_send に改名(2ファイル)
/usr/bin/sed -i '' -E 's/^[[:space:]]*static[[:space:]]+void[[:space:]]+send\(/static void dvtm_send(/' "$TMP/dvtm.c"
/usr/bin/sed -i '' -E 's/^[[:space:]]*send\([[:space:]]*const char \*args\[\]\)/dvtm_send(const char *args[])/' "$TMP/dvtm.c"
/usr/bin/sed -i '' -E 's/\{[[:space:]]*send,/{ dvtm_send,/' "$TMP/config.def.h"

# 2b) 統一diffパッチとして保存(2つに分ける)
diff -u "$TMP/dvtm.c.orig"       "$TMP/dvtm.c" \
  > "$ROOT/$PKG/files/patch-dvtm.c-rename-send.diff"
diff -u "$TMP/config.def.h.orig" "$TMP/config.def.h" \
  > "$ROOT/$PKG/files/patch-config.def.h-rename-send.diff"

# 3) Portfile にパッチ指定を追記(重複追記は避ける)
PATCH_LINE='patchfiles-append patch-dvtm.c-rename-send.diff patch-config.def.h-rename-send.diff'
grep -qF "$PATCH_LINE" "$ROOT/$PKG/Portfile" || printf "\n%s\n" "$PATCH_LINE" >> "$ROOT/$PKG/Portfile"

# 4) ローカルツリーを sources.conf に最優先で追加(先頭に入れる)
SRC="/opt/local/etc/macports/sources.conf"
ENTRY="file://$ROOT [default]"
grep -qF "$ENTRY" "$SRC" || sudo sed -i '' "1s|^|$ENTRY\n|" "$SRC"

# 5) 反映して入れ直し(同版再ビルド)
sudo port -v selfupdate
sudo port -f uninstall dvtm || true
sudo port -v install dvtm

# 6) 動作確認
command -v dvtm && dvtm -v