# FHS Rocky Linux 10 빌드

Rocky Linux 10 컨테이너에서 저장소를 직접 마운트하고 FHS를 빌드한다.

## 실행 준비와 컨테이너

```bash
cd "$(git rev-parse --show-toplevel)"
RUN_ID="$(date +%Y%m%d%H%M%S)-$$"
FHS_CONTAINER="fhs-rocky10-${RUN_ID}"

podman pull docker.io/rockylinux/rockylinux:10
podman run -d \
  --name "$FHS_CONTAINER" \
  --volume "$PWD:/workspace:Z" \
  --workdir /workspace/fhs \
  docker.io/rockylinux/rockylinux:10 sleep infinity
```

소스는 복사하지 않고 `-v`로 현재 저장소를 `/workspace`에 마운트한다.

## 의존성과 고정 경로 준비

```bash
podman exec "$FHS_CONTAINER" bash -lc '
  dnf install -y \
    findutils gcc gcc-c++ make pkgconf-pkg-config bc \
    boost-devel openssl-devel sqlite-devel openldap-devel \
    libpq-devel apr-devel apr-util-devel
'

podman exec "$FHS_CONTAINER" bash -lc '
  set -e
  mkdir -p /user/db/pgsql/lib /user/service/httpd/lib
  ln -sfn /usr/include /user/db/pgsql/include
  ln -sfn /usr/lib64/libpq.so /user/db/pgsql/lib/libpq.a
  ln -sfn /usr/include/apr-1 /user/service/httpd/include
  ln -sfn /usr/lib64/libapr-1.so /user/service/httpd/lib/libapr-1.a
'
```

## FHS 빌드

```bash
podman exec -w /workspace/fhs "$FHS_CONTAINER" bash -lc '
  set +e
  for component in arcmond2 cls csagentd fimngd ftsd sh-opendav; do
    make clean -C "$component" >/dev/null 2>&1
    echo "===== BUILD ${component} ====="
    make all -C "$component"
    echo "===== STATUS ${component} $? ====="
  done
'
```

## 실제 결과

실행 당시 Rocky Linux 10.2, GCC 14.3.1 환경에서 확인했다.

| 구성요소 | 결과 |
| --- | ---: |
| `arcmond2` | 2 |
| `cls` | 2 |
| `csagentd` | 2 |
| `fimngd` | 2 |
| `ftsd` | 0 |
| `sh-opendav` | 2 |

`arcmond2`는 `makedev`, `cls`는 `setproctitle`, `csagentd`와
`fimngd`는 타입 미정의로 실패했다.
`sh-opendav`는 `all` target이 없다.

```bash
file fhs/ftsd/src/ftsd
file fhs/ftsd/interface/sample/ftsd_test
```
