summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2026-08-06 03:55:31 +0000
committerCoprDistGit <infra@openeuler.org>2026-08-06 03:55:31 +0000
commitbdda1d4e0911e0d470285abbc4ec473f41e37e3d (patch)
tree696117828ddc77a80120c1295b1b10e125baf784
parent1de4486d025911cd0564df39c2b288dfdd6a9d77 (diff)
automatic import of maca-driver-aarch64openeuler24.03_LTS_SP3
-rw-r--r--maca-driver-aarch64.spec348
-rw-r--r--sources0
2 files changed, 348 insertions, 0 deletions
diff --git a/maca-driver-aarch64.spec b/maca-driver-aarch64.spec
new file mode 100644
index 0000000..7772152
--- /dev/null
+++ b/maca-driver-aarch64.spec
@@ -0,0 +1,348 @@
+%global driver_version 3.7.0.23
+%global kmod_version 3.8.23
+%global source_file metax-driver-%{driver_version}-rpm-aarch64.run
+%global source_url https://repo.oepkgs.net/openEuler/rpm/openEuler-24.03-LTS-SP3/contrib/drivers/aarch64/Packages/%{source_file}
+%global payload_dir metax-driver-%{driver_version}
+%global driver_root /opt/mxdriver
+%global debug_package %{nil}
+%global _buildshell /bin/bash
+# Preserve the upstream prebuilt kernel modules and userspace binaries.
+%global __strip /bin/true
+%global __brp_strip %{nil}
+%global __brp_strip_comment_note %{nil}
+%global __brp_strip_static_archive %{nil}
+%global __arch_install_post %{nil}
+
+Name: maca-driver-aarch64
+Version: %{driver_version}
+Release: 1%{?dist}
+Summary: Repacked MetaX MACA DKMS driver %{driver_version} aarch64 bundle
+License: MetaX License
+URL: https://www.metax-tech.com/
+ExclusiveArch: aarch64
+BuildRequires: bash
+BuildRequires: cpio
+BuildRequires: coreutils
+BuildRequires: gzip
+BuildRequires: rpm
+BuildRequires: tar
+BuildRequires: wget
+BuildRequires: xz
+AutoReqProv: no
+
+# Only the DKMS driver mode is packaged. Firmware and userspace management
+# components required by that mode are retained.
+Requires: metax-driver = %{version}-%{release}
+
+%description
+This is a bundle package for the repacked MetaX MACA driver %{driver_version}
+aarch64 payload. The build downloads the upstream Makeself installer without
+executing it, then repacks the DKMS driver sources and their required firmware
+and userspace payloads as separate RPM subpackages.
+
+%package -n metax-driver
+Summary: MetaX driver DKMS-mode meta package
+Requires: metax-linux-dkms = %{version}-%{release}
+Requires: mxfw = %{version}-%{release}
+Requires: mxsmt = %{version}-%{release}
+AutoReqProv: no
+%description -n metax-driver
+Meta package and version marker for the DKMS MetaX driver installation.
+
+%package -n mxfw
+Summary: MetaX GPU firmware
+AutoReqProv: no
+%description -n mxfw
+Repacked firmware binaries for supported MetaX GPUs.
+
+%package -n mxsmt
+Summary: MetaX system management toolset
+Requires: bash
+AutoReqProv: no
+%description -n mxsmt
+Repacked MetaX system management library and mx-smi command-line tool.
+
+%package -n metax-linux-dkms
+Summary: MetaX Linux driver DKMS source
+Requires: autoconf
+Requires: automake
+Requires: bash
+Requires: dkms >= 1.95
+Requires: elfutils-libelf-devel
+AutoReqProv: no
+%description -n metax-linux-dkms
+Kernel module sources for MetaX Linux driver %{kmod_version}, packaged for
+DKMS-managed builds.
+
+%package -n metax-rdma-dkms
+Summary: MetaX RDMA driver DKMS source
+Requires: automake
+Requires: bash
+Requires: dkms >= 1.95
+Requires: elfutils-libelf-devel
+Requires: metax-linux-dkms = %{version}-%{release}
+AutoReqProv: no
+%description -n metax-rdma-dkms
+Kernel module sources for MetaX RDMA driver %{kmod_version}, packaged for
+DKMS-managed builds.
+
+%package -n mxgvm-dkms
+Summary: MetaX GPU virtualization driver DKMS source
+Requires: autoconf
+Requires: automake
+Requires: bash
+Requires: dkms >= 1.95
+Requires: elfutils-libelf-devel
+AutoReqProv: no
+%description -n mxgvm-dkms
+Kernel module sources for MetaX GPU virtualization driver %{kmod_version},
+packaged for DKMS-managed builds.
+
+%prep
+rm -rf %{payload_dir} %{source_file}
+
+%build
+set -euo pipefail
+cd %{_builddir}
+
+wget --tries=0 \
+ --retry-connrefused \
+ --waitretry=30 \
+ --timeout=30 \
+ --read-timeout=30 \
+ --continue \
+ -O "%{source_file}" \
+ "%{source_url}"
+
+rm -rf %{payload_dir}
+sh "%{source_file}" --noexec --noprogress --target "%{payload_dir}"
+cd %{payload_dir}
+
+cat > .rpm-package-map <<'EOF'
+rpm/metax-driver-3.7.0.23-1.aarch64.rpm metax-driver
+rpm/mxfw_3.7.0-1.noarch.rpm mxfw
+rpm/mxsmt_3.7.0-1.aarch64.rpm mxsmt
+dkms_rpm/metax-linux-dkms-3.8.23-1.aarch64.rpm metax-linux-dkms
+dkms_rpm/metax-rdma-dkms-3.8.23-1.aarch64.rpm metax-rdma-dkms
+dkms_rpm/mxgvm-dkms-3.8.23-1.aarch64.rpm mxgvm-dkms
+EOF
+
+%install
+set -euo pipefail
+cd %{_builddir}/%{payload_dir}
+rm -rf %{buildroot}
+mkdir -p %{buildroot}
+mkdir -p .filelists
+
+mkdir -p %{buildroot}%{_docdir}/%{name}
+cat > %{buildroot}%{_docdir}/%{name}/README <<'EOF'
+This package is a repackaged MetaX MACA driver aarch64 bundle. The main bundle
+installs the kernel driver exclusively through DKMS. The prebuilt kernel
+module, non-DKMS RDMA/GVM, and hypervisor RPM payloads are not repackaged.
+The upstream Makeself installer is only extracted and is never executed.
+EOF
+
+while read -r rpm_relpath pkg; do
+ rpm_path="$(pwd)/${rpm_relpath}"
+ filelist=".filelists/${pkg}.files"
+ payload_list=".filelists/${pkg}.payload"
+
+ if [ ! -f "${rpm_path}" ]; then
+ echo "missing RPM: ${rpm_path}" >&2
+ exit 1
+ fi
+
+ echo "==> installing rpm payload for ${pkg}: ${rpm_relpath}"
+ rpm2cpio "${rpm_path}" \
+ | cpio -t --quiet \
+ | awk '
+ $0 == "" || $0 == "." || $0 == "./" || $0 == "/" { next }
+ {
+ gsub(/^\.\//, "", $0)
+ gsub(/^\//, "", $0)
+ sub(/\/$/, "", $0)
+ if ($0 != "") print "/" $0
+ }
+ ' \
+ | sort -u > "${payload_list}"
+
+ if [ ! -s "${payload_list}" ]; then
+ echo "empty payload list for ${pkg}" >&2
+ rm -f -- "${payload_list}"
+ exit 1
+ fi
+
+ rpm -qpl --dump "${rpm_path}" \
+ | awk '
+ FNR == NR {
+ payload[$0] = 1
+ next
+ }
+
+ NF < 11 { next }
+ {
+ mode = $(NF - 6)
+ path = $1
+ for (i = 2; i <= NF - 10; i++) {
+ path = path " " $i
+ }
+
+ gsub(/^\.\//, "", path)
+ gsub(/^\//, "", path)
+ sub(/\/$/, "", path)
+ if (path == "") next
+ path = "/" path
+ if (!(path in payload)) next
+ if (mode ~ /^04/) {
+ print "%%dir " path
+ } else {
+ print path
+ }
+ }
+ ' "${payload_list}" - \
+ | sort -u > "${filelist}"
+
+ if [ ! -s "${filelist}" ]; then
+ echo "empty file list for ${pkg}" >&2
+ rm -f -- "${payload_list}"
+ exit 1
+ fi
+
+ rm -f -- "${payload_list}"
+ rpm2cpio "${rpm_path}" | (cd %{buildroot} && cpio -idmu --quiet)
+done < .rpm-package-map
+
+# Scriptlets below are adapted from the retained upstream RPMs. Runtime paths
+# are used directly because RPM_BUILD_ROOT is not meaningful at install.
+
+%postun -n mxfw -p /bin/sh
+rm -rf /lib/firmware/metax
+
+%post -n mxsmt -p /bin/sh
+ln -sfn %{driver_root}/bin/mx-smi /usr/bin/mx-smi
+ln -sfn %{driver_root}/share/mxsmi/mx-smi.1.gz /usr/share/man/man1/mx-smi.1.gz
+echo %{driver_root}/lib > /etc/ld.so.conf.d/mxsml.conf
+ldconfig
+
+%preun -n mxsmt -p /bin/sh
+if [ $1 -eq 0 ]; then
+ if [[ "$(readlink -f /usr/bin/mx-smi)" = "%{driver_root}"* ]]; then
+ rm -f /usr/bin/mx-smi
+ rm -f /usr/share/man/man1/mx-smi.1.gz
+ rm -f /etc/ld.so.conf.d/mxsml.conf
+ fi
+fi
+
+%pre -n metax-linux-dkms -p /bin/sh
+if [ -n "$(lsinitrd | grep metax-linux.ko)" ]; then
+ echo "remove old metax-linux.ko from initramfs"
+ dracut -f --omit-drivers metax-linux || true
+fi
+
+%post -n metax-linux-dkms -p /bin/sh
+mkdir -p /etc/dracut.conf.d/
+cat <<'EOF' > /etc/dracut.conf.d/omit-metax-linux.conf
+omit_drivers+=" metax-linux "
+EOF
+for POSTINST in /usr/lib/dkms/common.postinst /usr/share/metax-linux/postinst; do
+ if [ -f $POSTINST ]; then
+ $POSTINST metax-linux %{kmod_version} /usr/share/metax-linux
+ exit $?
+ fi
+ echo "WARNING: $POSTINST does not exist."
+done
+echo -e "ERROR: DKMS version is too old and metax-linux was not"
+echo -e "built with legacy DKMS support."
+echo -e "You must either rebuild metax-linux with legacy postinst"
+echo -e "support or upgrade DKMS to a more current version."
+exit 1
+
+%preun -n metax-linux-dkms -p /bin/sh
+echo -e
+echo -e "Uninstall of metax-linux module (version %{kmod_version}) beginning:"
+rm -f /etc/dracut.conf.d/*metax-linux*
+for kernel_dir in /lib/modules/*; do
+ if [ -f "$kernel_dir/extra/Module.symvers" ]; then
+ rm -f "$kernel_dir/extra/Module.symvers"
+ fi
+done
+dkms remove -m metax-linux -v %{kmod_version} --all --rpm_safe_upgrade
+exit 0
+
+%pre -n metax-rdma-dkms -p /bin/sh
+if [ -n "$(lsinitrd | grep metax-rdma.ko)" ]; then
+ echo "remove old metax-rdma.ko from initramfs"
+ dracut -f --omit-drivers metax-rdma || true
+fi
+
+%post -n metax-rdma-dkms -p /bin/sh
+mkdir -p /etc/dracut.conf.d/
+cat <<'EOF' > /etc/dracut.conf.d/omit-metax-rdma.conf
+omit_drivers+=" metax-rdma "
+EOF
+for POSTINST in /usr/lib/dkms/common.postinst /usr/share/metax-rdma/postinst; do
+ if [ -f $POSTINST ]; then
+ $POSTINST metax-rdma %{kmod_version} /usr/share/metax-rdma
+ exit $?
+ fi
+ echo "WARNING: $POSTINST does not exist."
+done
+echo -e "ERROR: DKMS version is too old and metax-rdma was not"
+echo -e "built with legacy DKMS support."
+echo -e "You must either rebuild metax-rdma with legacy postinst"
+echo -e "support or upgrade DKMS to a more current version."
+exit 1
+
+%preun -n metax-rdma-dkms -p /bin/sh
+echo -e
+echo -e "Uninstall of metax-rdma module (version %{kmod_version}) beginning:"
+rm -f /etc/dracut.conf.d/*metax-rdma*
+dkms remove -m metax-rdma -v %{kmod_version} --all --rpm_safe_upgrade
+exit 0
+
+%pre -n mxgvm-dkms -p /bin/sh
+if [ -n "$(lsinitrd | grep mxgvm.ko)" ]; then
+ echo "remove old mxgvm.ko from initramfs"
+ dracut -f --omit-drivers mxgvm || true
+fi
+
+%post -n mxgvm-dkms -p /bin/sh
+mkdir -p /etc/dracut.conf.d/
+cat <<'EOF' > /etc/dracut.conf.d/omit-mxgvm.conf
+omit_drivers+=" mxgvm "
+EOF
+for POSTINST in /usr/lib/dkms/common.postinst /usr/share/mxgvm/postinst; do
+ if [ -f $POSTINST ]; then
+ $POSTINST mxgvm %{kmod_version} /usr/share/mxgvm
+ exit $?
+ fi
+ echo "WARNING: $POSTINST does not exist."
+done
+echo -e "ERROR: DKMS version is too old and mxgvm was not"
+echo -e "built with legacy DKMS support."
+echo -e "You must either rebuild mxgvm with legacy postinst"
+echo -e "support or upgrade DKMS to a more current version."
+exit 1
+
+%preun -n mxgvm-dkms -p /bin/sh
+echo -e
+echo -e "Uninstall of mxgvm module (version %{kmod_version}) beginning:"
+rm -f /etc/dracut.conf.d/*mxgvm*
+dkms remove -m mxgvm -v %{kmod_version} --all --rpm_safe_upgrade
+exit 0
+
+%files
+%{_docdir}/%{name}/README
+
+%files -n metax-driver -f %{_builddir}/%{payload_dir}/.filelists/metax-driver.files
+%files -n mxfw -f %{_builddir}/%{payload_dir}/.filelists/mxfw.files
+%files -n mxsmt -f %{_builddir}/%{payload_dir}/.filelists/mxsmt.files
+%files -n metax-linux-dkms -f %{_builddir}/%{payload_dir}/.filelists/metax-linux-dkms.files
+%files -n metax-rdma-dkms -f %{_builddir}/%{payload_dir}/.filelists/metax-rdma-dkms.files
+%files -n mxgvm-dkms -f %{_builddir}/%{payload_dir}/.filelists/mxgvm-dkms.files
+
+%changelog
+* Wed Aug 05 2026 MetaX Packager <packager@example.invalid> - 3.7.0.23-1
+- Repack the MetaX MACA aarch64 driver and DKMS RPM payloads.
+- Use the DKMS kernel driver for the default bundle installation.
+- Omit all prebuilt kernel, non-DKMS virtualization, and hypervisor subpackages.
diff --git a/sources b/sources
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/sources