Phase 2c-1: ac 모듈 per-service 분해 (1서비스=1파일+카피북) + build.sh 이중스타일
- app/src/ac/svc/: 30 서비스 .pgc + 31 카피북 .h (각 typedef struct + prototype) - ac_svr.pgc = 얇은 디스패처(advertise 테이블만) - build.sh: src/<mod>/svc/*.pgc → lib<mod>svc.a 링크, inline/split 자동판별 - ac dbio 25 + batch 17 + run 17 스크립트 - 고유도: svc 30/30, dbio 25/25 (정규화 md5, 클론 0) - 검증: 12서버 runok, 333 서비스, 매입체인 XA 커밋, prepared_xacts=0 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
bec83c721e
commit
c3b99a8b75
139 changed files with 3363 additions and 653 deletions
38
app/build.sh
38
app/build.sh
|
|
@ -29,12 +29,20 @@ PGLIB="$(pg_config --libdir)"
|
|||
mkdir -p "$BIN" "$LIB" "$OBJ"
|
||||
|
||||
# Includes for every compile (CFLAGS is honored by buildserver/buildclient and
|
||||
# by our direct gcc calls). Add every module's dbio dir so headers resolve.
|
||||
# by our direct gcc calls). Add every module's dbio AND svc dir so headers resolve
|
||||
# (svc/*.pgc copybooks include the module's dbio + common headers).
|
||||
CFLAGS="-I$UBF -I$EXINC -I$PGINC -I$SRC/common"
|
||||
for d in "$SRC"/*/dbio; do [ -d "$d" ] && CFLAGS="$CFLAGS -I$d"; done
|
||||
for d in "$SRC"/*/svc; do [ -d "$d" ] && CFLAGS="$CFLAGS -I$d"; done
|
||||
export CFLAGS
|
||||
PGLINK="-L$PGLIB -lecpg -lpq"
|
||||
|
||||
# ecpg needs the same header search path as gcc (its preprocessor opens the
|
||||
# #include'd copybooks to find EXEC SQL host-var decls). Mirror CFLAGS' -I set.
|
||||
ECPG_INC="-I$UBF -I$SRC/common"
|
||||
for d in "$SRC"/*/dbio; do [ -d "$d" ] && ECPG_INC="$ECPG_INC -I$d"; done
|
||||
for d in "$SRC"/*/svc; do [ -d "$d" ] && ECPG_INC="$ECPG_INC -I$d"; done
|
||||
|
||||
log() { echo "[build] $*"; }
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
|
|
@ -59,7 +67,7 @@ ecpg_gen() {
|
|||
local pgc="$1" base out
|
||||
base="$(basename "${pgc%.pgc}")"
|
||||
out="$OBJ/${base}.c"
|
||||
ecpg -I"$UBF" -I"$(dirname "$pgc")" -o "$out" "$pgc"
|
||||
ecpg $ECPG_INC -I"$(dirname "$pgc")" -o "$out" "$pgc"
|
||||
echo "$out"
|
||||
}
|
||||
|
||||
|
|
@ -79,9 +87,11 @@ NSVR=0; NDBIO=0; NBATCH=0
|
|||
# ---------------------------------------------------------------------------
|
||||
# 2..4 per module: dbio lib, server, batches
|
||||
# ---------------------------------------------------------------------------
|
||||
NSVC=0
|
||||
for m in "${MODS[@]}"; do
|
||||
MDIR="$SRC/$m"
|
||||
DBIO_LIB=""
|
||||
SVC_LIB=""
|
||||
|
||||
# -- dbio static lib (optional) --
|
||||
if compgen -G "$MDIR/dbio/*.pgc" >/dev/null; then
|
||||
|
|
@ -98,11 +108,29 @@ for m in "${MODS[@]}"; do
|
|||
NDBIO=$((NDBIO+1))
|
||||
fi
|
||||
|
||||
# -- module server <mod>_svr --
|
||||
# -- per-service static lib (NEW legacy layout, optional) --
|
||||
# A module may keep its services INLINE in <mod>_svr.pgc (old style) OR split
|
||||
# them into svc/*.pgc, one service per file (new style). Both are supported;
|
||||
# when svc/*.pgc exist they are archived into lib<mod>svc.a and linked in.
|
||||
if compgen -G "$MDIR/svc/*.pgc" >/dev/null; then
|
||||
log "lib${m}svc.a"
|
||||
SVC_OBJS=()
|
||||
for pgc in "$MDIR"/svc/*.pgc; do
|
||||
c="$(ecpg_gen "$pgc")"
|
||||
o="${c%.c}.o"
|
||||
gcc -c $CFLAGS "$c" -o "$o"
|
||||
SVC_OBJS+=("$o")
|
||||
done
|
||||
ar rcs "$LIB/lib${m}svc.a" "${SVC_OBJS[@]}"
|
||||
SVC_LIB="$LIB/lib${m}svc.a"
|
||||
NSVC=$((NSVC+1))
|
||||
fi
|
||||
|
||||
# -- module server <mod>_svr (links svc lib + dbio lib + common) --
|
||||
log "${m}_svr"
|
||||
SVR_C="$(ecpg_gen "$MDIR/${m}_svr.pgc")"
|
||||
buildserver -o "$BIN/${m}_svr" -f "$SVR_C" \
|
||||
-a "$DBIO_LIB $LIB/libacqcommon.a $PGLINK"
|
||||
-a "$SVC_LIB $DBIO_LIB $LIB/libacqcommon.a $PGLINK"
|
||||
NSVR=$((NSVR+1))
|
||||
|
||||
# -- batches (optional): each *.pgc -> its own client executable --
|
||||
|
|
@ -184,5 +212,5 @@ $(gen_servers)
|
|||
</endurox>
|
||||
EOF
|
||||
|
||||
log "DONE: modules=${#MODS[@]} servers=$NSVR dbio_libs=$NDBIO batches=$NBATCH clients=$NCLI"
|
||||
log "DONE: modules=${#MODS[@]} servers=$NSVR svc_libs=$NSVC dbio_libs=$NDBIO batches=$NBATCH clients=$NCLI"
|
||||
echo "[build] server binaries: ${MODS[*]/%/_svr}"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue