#@ load("@ytt:data", "data")
#@ load("@ytt:overlay", "overlay")
#@ load("/lib/create_component.lib.yml", "single_build_component")

#@ source_url = "https://github.com/systemd/systemd/archive/v246.tar.gz"

#@yaml/text-templated-strings
---
#@ def libudev_args():
license: source/LICENSE.LGPL2.1
configure: |
  mkdir -p "$BUILD_DIR" "$BUILD_DIR/source"
  extract.sh --into "$BUILD_DIR/source" "(@= source_url @)"
  find "$BUILD_DIR/source/" -name meson.build -exec sed -i "s|install\s*:\s*|install_rpath : '$RPATH_PLACEHOLDER/lib', \0|" {} \;

  patch-if-exists "${ORCHESTRA_DOTDIR}/patches/systemd-libudev-old-glibc-compatibility.patch" "$BUILD_DIR/source"

  export CC=clang
  export CXX=clang++
  meson setup \
    --buildtype plain \
    --libdir=lib \
    --prefix "$ORCHESTRA_ROOT" \
    --wrap-mode nodownload \
    -Drootprefix=/ \
    -Drootlibdir=/usr/lib64 \
    -Dima=true \
    -Ddefault-hierarchy=unified \
    -Dacl=false \
    -Dapparmor=false \
    -Daudit=false \
    -Dlibcryptsetup=false \
    -Dlibcurl=false \
    -Ddns-over-tls=false \
    -Delfutils=false \
    -Dgcrypt=false \
    -Dgnu-efi=false \
    -Dhomed=false \
    -Dhwdb=false \
    -Dmicrohttpd=false \
    -Didn=false \
    -Dimportd=false \
    -Dbzip2=false \
    -Dzlib=false \
    -Dkmod=false \
    -Dlz4=false \
    -Dxz=false \
    -Dzstd=false \
    -Dlibiptc=false \
    -Dpam=false \
    -Dp11kit=false \
    -Dpcre2=false \
    -Dpolkit=false \
    -Dpwquality=false \
    -Dqrencode=false \
    -Drepart=false \
    -Dseccomp=false \
    -Dselinux=false \
    -Ddbus=false \
    -Dxkbcommon=false \
    -Ddefault-kill-user-processes=false \
    -Dcreate-log-dirs=false \
    -Dbacklight=false \
    -Dbinfmt=false \
    -Dcoredump=false \
    -Denvironment-d=false \
    -Dfirstboot=false \
    -Dhibernate=false \
    -Dhostnamed=false \
    -Dldconfig=false \
    -Dlocaled=false \
    -Dman=false \
    -Dnetworkd=false \
    -Dquotacheck=false \
    -Drandomseed=false \
    -Drfkill=false \
    -Dsysusers=false \
    -Dtimedated=false \
    -Dtimesyncd=false \
    -Dtmpfiles=false \
    -Dvconsole=false \
    -Dstatic-libsystemd=false \
    -Dstatic-libudev=false \
    -Ddebug-gui=false \
    -Ddocumentation=false \
    -Dlibwacom=false \
    -Dtests=false \
    -Dudev-dir=/lib/udev \
    -Db_ndebug=true \
    -Dc_args="(@= data.values.use_old_glibc_cflags @) -w -DO_PATH=010000000 -DAT_EMPTY_PATH=0x1000 -Dsecure_getenv=getenv -DCLOCK_BOOTTIME=7 -DCLOCK_REALTIME_ALARM=8 -DCLOCK_BOOTTIME_ALARM=9" \
    -Dc_link_args="(@= data.values.use_old_glibc_ldflags @) -fuse-ld=gold -L$ORCHESTRA_ROOT/lib -Wl,-z,origin -Wl,--enable-new-dtags -Wl,-rpath,$RPATH_PLACEHOLDER/lib" \
    "$BUILD_DIR" \
    "$BUILD_DIR/source"
install: |
  cd "$BUILD_DIR"
  ninja src/udev/libudev.so.1.6.18
  cd "${DESTDIR}${ORCHESTRA_ROOT}"
  cp -a "$BUILD_DIR/src/udev/libudev.so.1.6.18" lib/
  ln -s libudev.so.1.6.18 lib/libudev.so.1.6
  ln -s libudev.so.1.6 lib/libudev.so.1
  ln -s libudev.so.1 lib/libudev.so
  mkdir -p share/pkgconfig include
  cp -a "$BUILD_DIR/source/src/libudev/libudev.h" include/
  cp -a "$BUILD_DIR/src/libudev/libudev.pc" share/pkgconfig/
build_dependencies:
  - host-c-toolchain
#@ end

#@overlay/match by=overlay.all, expects=1
#@overlay/match-child-defaults missing_ok=True
---
components:
  ui/libudev: #@ single_build_component(**libudev_args())