FROM ubuntu:22.04 AS builder
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
		apt-utils build-essential git cmake pkg-config \
		openssl libssl-dev libnl-3-dev libnl-genl-3-dev libnl-route-3-dev \
		iptables \
		#clang libclang-dev \
		valgrind \
		&& rm -rf /var/lib/apt/lists/*

WORKDIR /tmp

# json-c
RUN \
	git clone https://github.com/json-c/json-c.git && \
	cd json-c && \
	cmake -DCMAKE_INSTALL_PREFIX=/usr . && \
	make && \
	make install

# libubox
RUN \
      git clone  git://git.openwrt.org/project/libubox.git && \
      cd libubox && mkdir build && cd build && \
      cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE:String="Release" -DBUILD_LUA=OFF -DBUILD_EXAMPLES=OFF .. && \
      make -j2 && \
      make install

# uci
RUN \
	git clone git://git.openwrt.org/project/uci.git && \
	cd uci && \
	cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE:String="Release" -DBUILD_LUA=OFF . && \
	make -j2 && \
	make install

# ubus
RUN \
	git clone https://git.openwrt.org/project/ubus.git && \
	cd ubus && \
	cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE:String="Release" -DBUILD_LUA=OFF -DBUILD_EXAMPLES=OFF . && \
	make -j2 && \
	make install

# libeasy
RUN \
	git clone https://dev.iopsys.eu/hal/libeasy.git && \
	cd libeasy && mkdir build && cd build && \
	cmake -DCMAKE_INSTALL_PREFIX=/usr .. && make -j2 && make install

# libwifiutils + libwifi-7
RUN \
	git clone https://dev.iopsys.eu/hal/libwifi.git && \
	cd libwifi && mkdir -p libwifiutils/build && cd libwifiutils/build && \
	cmake .. && make -j2 && make install && cd - && \
	mkdir -p libwifi/build && cd libwifi/build && \
	cmake -DCMAKE_INSTALL_PREFIX=/usr .. -DHAS_WIFI=ON -DWIFI_TYPE=TEST && make -j2 && make install

# wifimngr
RUN \
	git clone https://dev.iopsys.eu/hal/wifimngr.git && \
	mkdir -p wifimngr/build && cd wifimngr/build && \
	cmake .. && make -j2 && make install

# ieee1905
RUN \
	git clone https://dev.iopsys.eu/multi-ap/ieee1905.git && \
	cd ieee1905/src && \
	CFLAGS="-DHAS_WIFI -DHAS_UBUS -DEXTENSION_ALLOWED -DEASYMESH_VERSION=6" make && \
	CFLAGS="-DHAS_WIFI -DHAS_UBUS -DEXTENSION_ALLOWED -DEASYMESH_VERSION=6" make install

# map-agent
RUN \
	git clone https://dev.iopsys.eu/multi-ap/map-agent.git && \
	cd map-agent/src && \
	CFLAGS="-DEASYMESH_VERSION=6" make && \
	CFLAGS="-DEASYMESH_VERSION=6" make install

# map-controller
RUN \
	git clone https://dev.iopsys.eu/multi-ap/map-controller.git && \
	cd map-controller/src && ls && \
	CFLAGS="-DEASYMESH_VERSION=6" make && \
	CFLAGS="-DEASYMESH_VERSION=6" make install


RUN echo "Done building packages. Now copying files..."

# Stage 2: runtime
FROM ubuntu:22.04
RUN apt-get update && \
	apt-get install -y --no-install-recommends \
	iproute2 procps uuid-runtime socat \
	&& rm -rf /var/lib/apt/lists/*

WORKDIR /
COPY --from=builder /usr /usr

RUN mkdir -p /etc/config
COPY ./files/etc/config/* /etc/config/
COPY ./files/sbin/* /sbin/
COPY ./files/lib /lib

ENTRYPOINT ["/sbin/multiap.sh"]
#CMD ["bash"]
