Skip to content

Compilation

Helge Heß edited this page Sep 17, 2024 · 1 revision

The goal is to compile OGo against a current (2024) Ubuntu w/ the included GNUstep-base library, and a current SOPE version forked off the SOGo.nu SOPE fork. (traditionally OGo would usually run against libFoundation, not GNUstep-base for reasons that do not matter anymore)

Setting up a base environment Docker container

  • TODO: Build an image w/ just the runtime libs, w/o headers (i.e. -dev) packages

Basic Dev Setup Image

FROM ubuntu:noble

LABEL maintainer="Helge Heß <me@helgehess.eu>"

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get -y -qq update
RUN apt-get -y -qq upgrade

RUN apt-get -y -qq install \
  libxml2-dev libldap2 libldap-dev libpq-dev libpq5 \
  libmemcached-dev libmemcached-tools libcurl4-openssl-dev \
  libcrypt-dev make libz-dev

RUN apt-get -y -qq install gobjc

RUN apt-get -y -qq install \
  gnustep-make \
  gnustep-base-runtime \
  libgnustep-base-dev

Sample build:

docker build \
  -t helje5/gnustep-base-devsetup:0.1.0 \
  -f Dockerfile \
  $PWD/empty-ctx \
docker images | grep helje5

Image w/ some Dev Tools

Based on the image above, adds Emacs and other useful tools.

FROM helje5/gnustep-base-dev:0.1.0

LABEL maintainer="Helge Heß <me@helgehess.eu>"

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get -y -qq install \
  emacs less tree file \
  sudo gosu gdb linux-tools-generic strace

RUN useradd -u 501 --create-home --shell /bin/bash developer
RUN adduser developer sudo
RUN adduser developer root
RUN chmod -R g+w /usr/local/

# SOPE tries to install stuff into this
RUN chmod -R g+w /usr/share/GNUstep

USER developer
WORKDIR /home/developer

Building SOPE & OGo in Docker

WIP. Ideally we want to dockerize that, so that it can be run as a public image.

docker run -it --rm \
  --name OGoDev  \
  --link PG:PG   \
  -p 12000:12000 \
  -v "/Users/helge/dev/OpenGroupware:/src" \
  helje5/gnustep-base-devsetup:0.1.0 \
  bash

cd /src/SOPE
./configure \
  --with-gnustep  \
  --enable-debug  \
  --disable-strip \
  --enable-xml    \
  --enable-postgresql \
  --enable-openldap   \
  --with-ssl=ssl 
make -j 8
make install

cd /src/OpenGroupware.org/
./configure \
  --with-gnustep \
  --gsmake=/usr/share/GNUstep/Makefiles \
  --enable-debug \
  --disable-strip
make -j 8
make install

Running it

WIP. Ideally we want to dockerize that, so that it can be run as a public image.

source /usr/share/GNUstep/Makefiles/GNUstep.sh
defaults write ogo-webui-5.5 WOLogFile -
defaults write ogo-webui-5.5 WONoDetach YES
defaults write ogo-webui-5.5 WOUseWatchDog NO
defaults write ogo-webui-5.5 WOPidFile /tmp/ogo.pid
defaults write ogo-webui-5.5 WOPort "localhost:12000"
defaults write ogo-webui-5.5 NGBundlePath \
  "/usr/local/lib/GNUstep/Bundles:/usr/local/lib/GNUstep/Models-5.5:/usr/local/lib/GNUstep/WOxElemBuilders-4.9:/usr/local/lib/GNUstep/WebUI-5.5"
defaults write NSGlobalDomain LSConnectionDictionary '{databaseName=OGo;hostName=PG;port=5432;userName=OGo;password=...;}'

# Start the daemon:
/usr/local/bin/ogo-webui-5.5
Clone this wiki locally