Make it safe to do updates

This commit is contained in:
David Heinemeier Hansson committed 2026-03-19 18:26:44 +01:00
1 parent 87851ffae3
commit 1a76269919
2 files changed
+177 -174

No files matched your search

+169 -169
View File
@@ -2,31 +2,31 @@
pkgname=intel-ipu7-camera pkgname=intel-ipu7-camera
pkgver=1.0.1 pkgver=1.0.1
pkgrel=2 pkgrel=3
pkgdesc="Intel IPU7 MIPI camera stack for Hurrican/Performance (OV08X40 + hardware ISP)" pkgdesc="Intel IPU7 MIPI camera stack for Hurrican/Performance (OV08X40 + hardware ISP)"
arch=('x86_64') arch=('x86_64')
url="https://github.com/TsaiGaggery/hurrican_omarchy_enabling" url="https://github.com/TsaiGaggery/hurrican_omarchy_enabling"
license=('GPL-2.0-or-later') license=('GPL-2.0-or-later')
depends=( depends=(
'dkms' 'dkms'
'linux-headers' 'linux-headers'
'v4l2loopback-dkms' 'v4l2loopback-dkms'
'gstreamer' 'gstreamer'
'gst-plugins-base' 'gst-plugins-base'
'gst-plugins-good' 'gst-plugins-good'
'gst-plugins-bad' 'gst-plugins-bad'
'jsoncpp' 'jsoncpp'
'libdrm' 'libdrm'
'python' 'python'
) )
makedepends=( makedepends=(
'git' 'git'
'base-devel' 'base-devel'
'cmake' 'cmake'
'autoconf' 'autoconf'
'automake' 'automake'
'libtool' 'libtool'
'pkgconf' 'pkgconf'
) )
install=intel-ipu7-camera.install install=intel-ipu7-camera.install
options=('!strip') options=('!strip')
@@ -38,188 +38,188 @@ _ipu7_camera_hal_commit="b1f6ebef12111fb5da0133b144d69dd9b001836c"
_icamerasrc_commit="4fb31db76b618aae72184c59314b839dedb42689" _icamerasrc_commit="4fb31db76b618aae72184c59314b839dedb42689"
source=( source=(
"ipu7-drivers::git+https://github.com/intel/ipu7-drivers.git#commit=${_ipu7_drivers_commit}" "ipu7-drivers::git+https://github.com/intel/ipu7-drivers.git#commit=${_ipu7_drivers_commit}"
"vision-drivers::git+https://github.com/intel/vision-drivers.git#commit=${_vision_drivers_commit}" "vision-drivers::git+https://github.com/intel/vision-drivers.git#commit=${_vision_drivers_commit}"
"ipu7-camera-bins::git+https://github.com/intel/ipu7-camera-bins.git#commit=${_ipu7_camera_bins_commit}" "ipu7-camera-bins::git+https://github.com/intel/ipu7-camera-bins.git#commit=${_ipu7_camera_bins_commit}"
"ipu7-camera-hal::git+https://github.com/intel/ipu7-camera-hal.git#commit=${_ipu7_camera_hal_commit}" "ipu7-camera-hal::git+https://github.com/intel/ipu7-camera-hal.git#commit=${_ipu7_camera_hal_commit}"
"icamerasrc::git+https://github.com/intel/icamerasrc.git#commit=${_icamerasrc_commit}" "icamerasrc::git+https://github.com/intel/icamerasrc.git#commit=${_icamerasrc_commit}"
"0003-icvs-set-rgbcamera_pwrup_host-0-for-Panther-Lake.patch" "0003-icvs-set-rgbcamera_pwrup_host-0-for-Panther-Lake.patch"
"dkms-ipu7-drivers.conf" "dkms-ipu7-drivers.conf"
"dkms-vision-drivers.conf" "dkms-vision-drivers.conf"
"camera-deps.conf" "camera-deps.conf"
"v4l2loopback-modprobe.conf" "v4l2loopback-modprobe.conf"
"v4l2loopback-modules-load.conf" "v4l2loopback-modules-load.conf"
"camera-init.service" "camera-init.service"
"camera-feed-watch" "camera-feed-watch"
"camera-feed-watch.service" "camera-feed-watch.service"
"hide-ipu7-v4l2.conf" "hide-ipu7-v4l2.conf"
"disable-libcamera.conf" "disable-libcamera.conf"
"90-ipu7-psys.rules" "90-ipu7-psys.rules"
"camera-tmpfiles.conf" "camera-tmpfiles.conf"
"ov08x40.yaml" "ov08x40.yaml"
"camera-sleep-hook" "camera-sleep-hook"
) )
sha256sums=( sha256sums=(
'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP'
'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP'
'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP'
'SKIP' 'SKIP' 'SKIP' 'SKIP'
) )
prepare() { prepare() {
cd "${srcdir}/vision-drivers" cd "${srcdir}/vision-drivers"
git config user.email "build@localhost" git config user.email "build@localhost"
git config user.name "Build" git config user.name "Build"
if ! git log --oneline -1 | grep -q "rgbcamera_pwrup_host"; then if ! git log --oneline -1 | grep -q "rgbcamera_pwrup_host"; then
git am "${srcdir}/0003-icvs-set-rgbcamera_pwrup_host-0-for-Panther-Lake.patch" git am "${srcdir}/0003-icvs-set-rgbcamera_pwrup_host-0-for-Panther-Lake.patch"
fi fi
# Stage proprietary libs/headers for build-time use # Stage proprietary libs/headers for build-time use
local staging="${srcdir}/staging" local staging="${srcdir}/staging"
rm -rf "${staging}" rm -rf "${staging}"
mkdir -p "${staging}/usr/lib" "${staging}/usr/include" "${staging}/usr/lib/pkgconfig" mkdir -p "${staging}/usr/lib" "${staging}/usr/include" "${staging}/usr/lib/pkgconfig"
cd "${srcdir}/ipu7-camera-bins" cd "${srcdir}/ipu7-camera-bins"
cp -P lib/lib* "${staging}/usr/lib/" cp -P lib/lib* "${staging}/usr/lib/"
cp -r include/* "${staging}/usr/include/" cp -r include/* "${staging}/usr/include/"
cp -r lib/pkgconfig/* "${staging}/usr/lib/pkgconfig/" cp -r lib/pkgconfig/* "${staging}/usr/lib/pkgconfig/"
for pc in "${staging}"/usr/lib/pkgconfig/*.pc; do for pc in "${staging}"/usr/lib/pkgconfig/*.pc; do
sed -i "s|^prefix=.*|prefix=${staging}/usr|" "$pc" sed -i "s|^prefix=.*|prefix=${staging}/usr|" "$pc"
done done
if [[ -d /usr/include/json ]] && [[ ! -e /usr/include/jsoncpp/json ]]; then if [[ -d /usr/include/json ]] && [[ ! -e /usr/include/jsoncpp/json ]]; then
mkdir -p "${staging}/usr/include/jsoncpp" mkdir -p "${staging}/usr/include/jsoncpp"
ln -sf /usr/include/json "${staging}/usr/include/jsoncpp/json" ln -sf /usr/include/json "${staging}/usr/include/jsoncpp/json"
fi fi
} }
build() { build() {
local staging="${srcdir}/staging" local staging="${srcdir}/staging"
export PKG_CONFIG_PATH="${staging}/usr/lib/pkgconfig:${PKG_CONFIG_PATH:-}" export PKG_CONFIG_PATH="${staging}/usr/lib/pkgconfig:${PKG_CONFIG_PATH:-}"
export LIBRARY_PATH="${staging}/usr/lib:${LIBRARY_PATH:-}" export LIBRARY_PATH="${staging}/usr/lib:${LIBRARY_PATH:-}"
export LD_LIBRARY_PATH="${staging}/usr/lib:${LD_LIBRARY_PATH:-}" export LD_LIBRARY_PATH="${staging}/usr/lib:${LD_LIBRARY_PATH:-}"
export CPATH="${staging}/usr/include:${CPATH:-}" export CPATH="${staging}/usr/include:${CPATH:-}"
cd "${srcdir}/ipu7-camera-hal" cd "${srcdir}/ipu7-camera-hal"
rm -rf build && mkdir -p build && cd build rm -rf build && mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release \ cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \ -DCMAKE_INSTALL_LIBDIR=lib \
-DBUILD_CAMHAL_ADAPTOR=ON \ -DBUILD_CAMHAL_ADAPTOR=ON \
-DBUILD_CAMHAL_PLUGIN=ON \ -DBUILD_CAMHAL_PLUGIN=ON \
-DIPU_VERSIONS="ipu75xa" \ -DIPU_VERSIONS="ipu75xa" \
-DUSE_STATIC_GRAPH=ON \ -DUSE_STATIC_GRAPH=ON \
-DUSE_STATIC_GRAPH_AUTOGEN=ON \ -DUSE_STATIC_GRAPH_AUTOGEN=ON \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \ -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
-DCMAKE_PREFIX_PATH="${staging}/usr" \ -DCMAKE_PREFIX_PATH="${staging}/usr" \
-DCMAKE_LIBRARY_PATH="${staging}/usr/lib" \ -DCMAKE_LIBRARY_PATH="${staging}/usr/lib" \
-DCMAKE_INCLUDE_PATH="${staging}/usr/include" \ -DCMAKE_INCLUDE_PATH="${staging}/usr/include" \
.. ..
make -j"$(nproc)" make -j"$(nproc)"
make DESTDIR="${staging}" install make DESTDIR="${staging}" install
install -Dm644 "${srcdir}/ipu7-camera-hal/libcamhal.pc" \ install -Dm644 "${srcdir}/ipu7-camera-hal/libcamhal.pc" \
"${staging}/usr/lib/pkgconfig/libcamhal.pc" "${staging}/usr/lib/pkgconfig/libcamhal.pc"
sed -i "s|^prefix=.*|prefix=${staging}/usr|" "${staging}/usr/lib/pkgconfig/libcamhal.pc" sed -i "s|^prefix=.*|prefix=${staging}/usr|" "${staging}/usr/lib/pkgconfig/libcamhal.pc"
cd "${srcdir}/icamerasrc" cd "${srcdir}/icamerasrc"
export CHROME_SLIM_CAMHAL=ON export CHROME_SLIM_CAMHAL=ON
[[ ! -f configure ]] && ./autogen.sh [[ ! -f configure ]] && ./autogen.sh
./configure --prefix=/usr ./configure --prefix=/usr
make -j"$(nproc)" make -j"$(nproc)"
} }
package() { package() {
# DKMS: IPU7 drivers (ISYS + PSYS + ACPI) # DKMS: IPU7 drivers (ISYS + PSYS + ACPI)
local ipu7_dkms_dir="${pkgdir}/usr/src/ipu7-drivers-${pkgver}" local ipu7_dkms_dir="${pkgdir}/usr/src/ipu7-drivers-${pkgver}"
install -dm755 "${ipu7_dkms_dir}" install -dm755 "${ipu7_dkms_dir}"
cp -r "${srcdir}/ipu7-drivers/"* "${ipu7_dkms_dir}/" cp -r "${srcdir}/ipu7-drivers/"* "${ipu7_dkms_dir}/"
rm -rf "${ipu7_dkms_dir}/.git" rm -rf "${ipu7_dkms_dir}/.git"
install -Dm644 "${srcdir}/dkms-ipu7-drivers.conf" "${ipu7_dkms_dir}/dkms.conf" install -Dm644 "${srcdir}/dkms-ipu7-drivers.conf" "${ipu7_dkms_dir}/dkms.conf"
sed -i "s/@PKGVER@/${pkgver}/" "${ipu7_dkms_dir}/dkms.conf" sed -i "s/@PKGVER@/${pkgver}/" "${ipu7_dkms_dir}/dkms.conf"
# DKMS: Vision drivers (CVS) # DKMS: Vision drivers (CVS)
local cvs_dkms_dir="${pkgdir}/usr/src/vision-drivers-${pkgver}" local cvs_dkms_dir="${pkgdir}/usr/src/vision-drivers-${pkgver}"
install -dm755 "${cvs_dkms_dir}" install -dm755 "${cvs_dkms_dir}"
cp -r "${srcdir}/vision-drivers/"* "${cvs_dkms_dir}/" cp -r "${srcdir}/vision-drivers/"* "${cvs_dkms_dir}/"
install -Dm644 "${srcdir}/dkms-vision-drivers.conf" "${cvs_dkms_dir}/dkms.conf" install -Dm644 "${srcdir}/dkms-vision-drivers.conf" "${cvs_dkms_dir}/dkms.conf"
sed -i "s/@PKGVER@/${pkgver}/" "${cvs_dkms_dir}/dkms.conf" sed -i "s/@PKGVER@/${pkgver}/" "${cvs_dkms_dir}/dkms.conf"
# Firmware # Firmware
install -dm755 "${pkgdir}/usr/lib/firmware/intel/ipu" install -dm755 "${pkgdir}/usr/lib/firmware/intel/ipu"
install -Dm644 "${srcdir}/ipu7-camera-bins/lib/firmware/intel/ipu/"*.bin \ install -Dm644 "${srcdir}/ipu7-camera-bins/lib/firmware/intel/ipu/"*.bin \
-t "${pkgdir}/usr/lib/firmware/intel/ipu/" -t "${pkgdir}/usr/lib/firmware/intel/ipu/"
# Proprietary libraries + headers from ipu7-camera-bins # Proprietary libraries + headers from ipu7-camera-bins
cd "${srcdir}/ipu7-camera-bins" cd "${srcdir}/ipu7-camera-bins"
install -dm755 "${pkgdir}/usr/lib" install -dm755 "${pkgdir}/usr/lib"
cp -P lib/lib* "${pkgdir}/usr/lib/" cp -P lib/lib* "${pkgdir}/usr/lib/"
install -dm755 "${pkgdir}/usr/include" install -dm755 "${pkgdir}/usr/include"
cp -r include/* "${pkgdir}/usr/include/" cp -r include/* "${pkgdir}/usr/include/"
install -dm755 "${pkgdir}/usr/lib/pkgconfig" install -dm755 "${pkgdir}/usr/lib/pkgconfig"
cp -r lib/pkgconfig/* "${pkgdir}/usr/lib/pkgconfig/" cp -r lib/pkgconfig/* "${pkgdir}/usr/lib/pkgconfig/"
# Camera HAL + config # Camera HAL + config
cd "${srcdir}/ipu7-camera-hal/build" cd "${srcdir}/ipu7-camera-hal/build"
make DESTDIR="${pkgdir}" install make DESTDIR="${pkgdir}" install
cd "${srcdir}/ipu7-camera-hal" cd "${srcdir}/ipu7-camera-hal"
install -dm755 "${pkgdir}/usr/share/defaults/etc/camera" install -dm755 "${pkgdir}/usr/share/defaults/etc/camera"
install -Dm644 config/linux/ipu75xa/libcamhal_configs.json \ install -Dm644 config/linux/ipu75xa/libcamhal_configs.json \
"${pkgdir}/usr/share/defaults/etc/camera/" "${pkgdir}/usr/share/defaults/etc/camera/"
install -Dm644 config/linux/ipu75xa/*.aiqb \ install -Dm644 config/linux/ipu75xa/*.aiqb \
-t "${pkgdir}/usr/share/defaults/etc/camera/" -t "${pkgdir}/usr/share/defaults/etc/camera/"
install -dm755 "${pkgdir}/etc/camera/ipu75xa/gcss" install -dm755 "${pkgdir}/etc/camera/ipu75xa/gcss"
install -Dm644 config/linux/ipu75xa/gcss/*.bin \ install -Dm644 config/linux/ipu75xa/gcss/*.bin \
-t "${pkgdir}/etc/camera/ipu75xa/gcss/" -t "${pkgdir}/etc/camera/ipu75xa/gcss/"
install -dm755 "${pkgdir}/etc/camera/ipu75xa/sensors" install -dm755 "${pkgdir}/etc/camera/ipu75xa/sensors"
install -Dm644 config/linux/ipu75xa/sensors/*.json \ install -Dm644 config/linux/ipu75xa/sensors/*.json \
-t "${pkgdir}/etc/camera/ipu75xa/sensors/" -t "${pkgdir}/etc/camera/ipu75xa/sensors/"
install -Dm644 config/linux/ipu75xa/pipe_scheduler_profiles.json \ install -Dm644 config/linux/ipu75xa/pipe_scheduler_profiles.json \
"${pkgdir}/etc/camera/ipu75xa/" "${pkgdir}/etc/camera/ipu75xa/"
install -Dm644 config/linux/ipu75xa/pnp_profiles.json \ install -Dm644 config/linux/ipu75xa/pnp_profiles.json \
"${pkgdir}/etc/camera/ipu75xa/" "${pkgdir}/etc/camera/ipu75xa/"
# icamerasrc GStreamer plugin # icamerasrc GStreamer plugin
cd "${srcdir}/icamerasrc" cd "${srcdir}/icamerasrc"
make DESTDIR="${pkgdir}" install make DESTDIR="${pkgdir}" install
# modprobe / modules-load # modprobe / modules-load
install -Dm644 "${srcdir}/camera-deps.conf" \ install -Dm644 "${srcdir}/camera-deps.conf" \
"${pkgdir}/usr/lib/modprobe.d/camera-deps.conf" "${pkgdir}/usr/lib/modprobe.d/camera-deps.conf"
install -Dm644 "${srcdir}/v4l2loopback-modprobe.conf" \ install -Dm644 "${srcdir}/v4l2loopback-modprobe.conf" \
"${pkgdir}/usr/lib/modprobe.d/v4l2loopback-camera.conf" "${pkgdir}/usr/lib/modprobe.d/v4l2loopback-camera.conf"
install -Dm644 "${srcdir}/v4l2loopback-modules-load.conf" \ install -Dm644 "${srcdir}/v4l2loopback-modules-load.conf" \
"${pkgdir}/usr/lib/modules-load.d/v4l2loopback.conf" "${pkgdir}/usr/lib/modules-load.d/v4l2loopback.conf"
# systemd # systemd
install -Dm644 "${srcdir}/camera-init.service" \ install -Dm644 "${srcdir}/camera-init.service" \
"${pkgdir}/usr/lib/systemd/system/camera-init.service" "${pkgdir}/usr/lib/systemd/system/camera-init.service"
install -Dm644 "${srcdir}/camera-feed-watch.service" \ install -Dm644 "${srcdir}/camera-feed-watch.service" \
"${pkgdir}/usr/lib/systemd/user/camera-feed-watch.service" "${pkgdir}/usr/lib/systemd/user/camera-feed-watch.service"
install -Dm755 "${srcdir}/camera-feed-watch" \ install -Dm755 "${srcdir}/camera-feed-watch" \
"${pkgdir}/usr/bin/camera-feed-watch" "${pkgdir}/usr/bin/camera-feed-watch"
# WirePlumber # WirePlumber
install -Dm644 "${srcdir}/hide-ipu7-v4l2.conf" \ install -Dm644 "${srcdir}/hide-ipu7-v4l2.conf" \
"${pkgdir}/usr/share/wireplumber/wireplumber.conf.d/hide-ipu7-v4l2.conf" "${pkgdir}/usr/share/wireplumber/wireplumber.conf.d/hide-ipu7-v4l2.conf"
install -Dm644 "${srcdir}/disable-libcamera.conf" \ install -Dm644 "${srcdir}/disable-libcamera.conf" \
"${pkgdir}/usr/share/wireplumber/wireplumber.conf.d/disable-libcamera.conf" "${pkgdir}/usr/share/wireplumber/wireplumber.conf.d/disable-libcamera.conf"
# udev / tmpfiles / libcamera tuning # udev / tmpfiles / libcamera tuning
install -Dm644 "${srcdir}/90-ipu7-psys.rules" \ install -Dm644 "${srcdir}/90-ipu7-psys.rules" \
"${pkgdir}/usr/lib/udev/rules.d/90-ipu7-psys.rules" "${pkgdir}/usr/lib/udev/rules.d/90-ipu7-psys.rules"
install -Dm644 "${srcdir}/camera-tmpfiles.conf" \ install -Dm644 "${srcdir}/camera-tmpfiles.conf" \
"${pkgdir}/usr/lib/tmpfiles.d/camera.conf" "${pkgdir}/usr/lib/tmpfiles.d/camera.conf"
install -Dm644 "${srcdir}/ov08x40.yaml" \ install -Dm644 "${srcdir}/ov08x40.yaml" \
"${pkgdir}/usr/share/libcamera/ipa/simple/ov08x40.yaml" "${pkgdir}/usr/share/libcamera/ipa/simple/ov08x40.yaml"
# Sleep hook to re-probe camera after suspend/hibernate # Sleep hook — staged here, installed to system-sleep by the .install scriptlet
install -Dm755 "${srcdir}/camera-sleep-hook" \ install -Dm755 "${srcdir}/camera-sleep-hook" \
"${pkgdir}/usr/lib/systemd/system-sleep/camera-sleep-hook" "${pkgdir}/usr/share/intel-ipu7-camera/camera-sleep-hook"
} }
@@ -10,7 +10,13 @@ _remove_pipewire_camera() {
[ -f "$conf" ] && sed -i 's/,PipeWireCamera//g' "$conf" [ -f "$conf" ] && sed -i 's/,PipeWireCamera//g' "$conf"
} }
_install_sleep_hook() {
cp /usr/share/intel-ipu7-camera/camera-sleep-hook /usr/lib/systemd/system-sleep/camera-sleep-hook
chmod 755 /usr/lib/systemd/system-sleep/camera-sleep-hook
}
post_install() { post_install() {
_install_sleep_hook
systemctl daemon-reload systemctl daemon-reload
systemctl enable camera-init.service systemctl enable camera-init.service
udevadm control --reload-rules 2>/dev/null || true udevadm control --reload-rules 2>/dev/null || true
@@ -24,12 +30,8 @@ post_install() {
fi fi
} }
pre_upgrade() {
# Remove sleep hook if it exists untracked from a prior manual install
rm -f /usr/lib/systemd/system-sleep/camera-sleep-hook
}
post_upgrade() { post_upgrade() {
_install_sleep_hook
systemctl daemon-reload systemctl daemon-reload
udevadm control --reload-rules 2>/dev/null || true udevadm control --reload-rules 2>/dev/null || true
} }
@@ -47,6 +49,7 @@ pre_remove() {
} }
post_remove() { post_remove() {
rm -f /usr/lib/systemd/system-sleep/camera-sleep-hook
systemctl daemon-reload systemctl daemon-reload
udevadm control --reload-rules 2>/dev/null || true udevadm control --reload-rules 2>/dev/null || true
} }