diff --git a/0001-add-loongarch64-support-for-systemd.patch b/0001-add-loongarch64-support-for-systemd.patch new file mode 100644 index 0000000000000000000000000000000000000000..b816eaee01fae96e533d426a759e8e5b5f2500fa --- /dev/null +++ b/0001-add-loongarch64-support-for-systemd.patch @@ -0,0 +1,228 @@ +From 25aa680448881112b86fc68f2ea60aea9156109d Mon Sep 17 00:00:00 2001 +From: Wenlong Zhang +Date: Thu, 26 Oct 2023 03:02:12 +0000 +Subject: [PATCH] add loongarch64 support for systemd + +--- + src/basic/architecture.h | 3 +++ + src/basic/missing_syscall_def.h | 35 ++++++++++++++++++++++++++++++++- + src/boot/efi/meson.build | 3 ++- + src/boot/efi/pe.c | 2 ++ + 4 files changed, 41 insertions(+), 2 deletions(-) + +diff --git a/src/basic/architecture.h b/src/basic/architecture.h +index b86f5f3..e113144 100644 +--- a/src/basic/architecture.h ++++ b/src/basic/architecture.h +@@ -239,6 +239,9 @@ Architecture uname_architecture(void); + # define native_architecture() ARCHITECTURE_ARC + # define LIB_ARCH_TUPLE "arc-linux" + # endif ++#elif defined(__loongarch64) ++# define native_architecture() ARCHITECTURE_LOONGARCH64 ++# define LIB_ARCH_TUPLE "loongarch64-linux-gnu" + #else + # error "Please register your architecture here!" + #endif +diff --git a/src/basic/missing_syscall_def.h b/src/basic/missing_syscall_def.h +index 67cae70..8032e89 100644 +--- a/src/basic/missing_syscall_def.h ++++ b/src/basic/missing_syscall_def.h +@@ -31,6 +31,7 @@ + # else + # error "Unknown RISC-V ABI" + # endif ++# elif defined(__loongarch__) + # elif defined(__s390__) + # elif defined(__sparc__) + # elif defined(__x86_64__) +@@ -81,6 +82,8 @@ + # else + # error "Unknown RISC-V ABI" + # endif ++# elif defined(__loongarch__) ++# define systemd_NR_bpf 280 + # elif defined(__s390__) + # define systemd_NR_bpf 351 + # elif defined(__sparc__) +@@ -149,6 +152,8 @@ assert_cc(__NR_bpf == systemd_NR_bpf); + # else + # error "Unknown RISC-V ABI" + # endif ++# elif defined(__loongarch__) ++# define systemd_NR_close_range 436 + # elif defined(__s390__) + # define systemd_NR_close_range 436 + # elif defined(__sparc__) +@@ -217,6 +222,8 @@ assert_cc(__NR_close_range == systemd_NR_close_range); + # else + # error "Unknown RISC-V ABI" + # endif ++# elif defined(__loongarch__) ++# define systemd_NR_copy_file_range 285 + # elif defined(__s390__) + # define systemd_NR_copy_file_range 375 + # elif defined(__sparc__) +@@ -285,6 +292,8 @@ assert_cc(__NR_copy_file_range == systemd_NR_copy_file_range); + # else + # error "Unknown RISC-V ABI" + # endif ++# elif defined(__loongarch__) ++# define systemd_NR_epoll_pwait2 441 + # elif defined(__s390__) + # define systemd_NR_epoll_pwait2 441 + # elif defined(__sparc__) +@@ -353,6 +362,8 @@ assert_cc(__NR_epoll_pwait2 == systemd_NR_epoll_pwait2); + # else + # error "Unknown RISC-V ABI" + # endif ++# elif defined(__loongarch__) ++# define systemd_NR_getrandom 278 + # elif defined(__s390__) + # define systemd_NR_getrandom 349 + # elif defined(__sparc__) +@@ -421,6 +432,8 @@ assert_cc(__NR_getrandom == systemd_NR_getrandom); + # else + # error "Unknown RISC-V ABI" + # endif ++# elif defined(__loongarch__) ++# define systemd_NR_memfd_create 279 + # elif defined(__s390__) + # define systemd_NR_memfd_create 350 + # elif defined(__sparc__) +@@ -489,6 +502,8 @@ assert_cc(__NR_memfd_create == systemd_NR_memfd_create); + # else + # error "Unknown RISC-V ABI" + # endif ++# elif defined(__loongarch__) ++# define systemd_NR_mount_setattr 442 + # elif defined(__s390__) + # define systemd_NR_mount_setattr 442 + # elif defined(__sparc__) +@@ -557,6 +572,8 @@ assert_cc(__NR_mount_setattr == systemd_NR_mount_setattr); + # else + # error "Unknown RISC-V ABI" + # endif ++# elif defined(__loongarch__) ++# define systemd_NR_move_mount 429 + # elif defined(__s390__) + # define systemd_NR_move_mount 429 + # elif defined(__sparc__) +@@ -625,6 +642,8 @@ assert_cc(__NR_move_mount == systemd_NR_move_mount); + # else + # error "Unknown RISC-V ABI" + # endif ++# elif defined(__loongarch__) ++# define systemd_NR_name_to_handle_at 264 + # elif defined(__s390__) + # define systemd_NR_name_to_handle_at 335 + # elif defined(__sparc__) +@@ -693,6 +712,8 @@ assert_cc(__NR_name_to_handle_at == systemd_NR_name_to_handle_at); + # else + # error "Unknown RISC-V ABI" + # endif ++# elif defined(__loongarch__) ++# define systemd_NR_open_tree 428 + # elif defined(__s390__) + # define systemd_NR_open_tree 428 + # elif defined(__sparc__) +@@ -735,7 +756,7 @@ assert_cc(__NR_open_tree == systemd_NR_open_tree); + # define systemd_NR_openat2 437 + # elif defined(__ia64__) + # define systemd_NR_openat2 1461 +-# elif defined(__loongarch64) ++# elif defined(__loongarch__) + # define systemd_NR_openat2 437 + # elif defined(__m68k__) + # define systemd_NR_openat2 437 +@@ -829,6 +850,8 @@ assert_cc(__NR_openat2 == systemd_NR_openat2); + # else + # error "Unknown RISC-V ABI" + # endif ++# elif defined(__loongarch__) ++# define systemd_NR_pidfd_open 434 + # elif defined(__s390__) + # define systemd_NR_pidfd_open 434 + # elif defined(__sparc__) +@@ -897,6 +920,8 @@ assert_cc(__NR_pidfd_open == systemd_NR_pidfd_open); + # else + # error "Unknown RISC-V ABI" + # endif ++# elif defined(__loongarch__) ++# define systemd_NR_pidfd_send_signal 424 + # elif defined(__s390__) + # define systemd_NR_pidfd_send_signal 424 + # elif defined(__sparc__) +@@ -965,6 +990,8 @@ assert_cc(__NR_pidfd_send_signal == systemd_NR_pidfd_send_signal); + # else + # error "Unknown RISC-V ABI" + # endif ++# elif defined(__loongarch__) ++# define systemd_NR_pkey_mprotect 288 + # elif defined(__s390__) + # define systemd_NR_pkey_mprotect 384 + # elif defined(__sparc__) +@@ -1033,6 +1060,8 @@ assert_cc(__NR_pkey_mprotect == systemd_NR_pkey_mprotect); + # else + # error "Unknown RISC-V ABI" + # endif ++# elif defined(__loongarch__) ++# define systemd_NR_renameat2 276 + # elif defined(__s390__) + # define systemd_NR_renameat2 347 + # elif defined(__sparc__) +@@ -1101,6 +1130,8 @@ assert_cc(__NR_renameat2 == systemd_NR_renameat2); + # else + # error "Unknown RISC-V ABI" + # endif ++# elif defined(__loongarch__) ++# define systemd_NR_setns 268 + # elif defined(__s390__) + # define systemd_NR_setns 339 + # elif defined(__sparc__) +@@ -1169,6 +1200,8 @@ assert_cc(__NR_setns == systemd_NR_setns); + # else + # error "Unknown RISC-V ABI" + # endif ++# elif defined(__loongarch__) ++# define systemd_NR_statx 291 + # elif defined(__s390__) + # define systemd_NR_statx 379 + # elif defined(__sparc__) +diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build +index 0de4399..acd5c60 100644 +--- a/src/boot/efi/meson.build ++++ b/src/boot/efi/meson.build +@@ -24,6 +24,7 @@ efi_arch = { + 'x86_64': ['x64', 'x86_64'], + 'arm': ['arm', 'arm'], + 'aarch64': ['aa64', 'aarch64'], ++ 'loongarch64': ['loongarch64', 'loongarch64'], + 'riscv64': ['riscv64', 'riscv64'], + }.get(efi_arch, []) + +@@ -283,7 +284,7 @@ foreach arg : ['-Wl,--no-warn-execstack', + endif + endforeach + +-if efi_arch[1] in ['aarch64', 'arm', 'riscv64'] ++if efi_arch[1] in ['aarch64', 'arm', 'loongarch64', 'riscv64'] + efi_ldflags += ['-shared'] + # Aarch64, ARM32 and 64bit RISC-V don't have an EFI capable objcopy. + # Use 'binary' instead, and add required symbols manually. +diff --git a/src/boot/efi/pe.c b/src/boot/efi/pe.c +index 3d5da14..c99895b 100644 +--- a/src/boot/efi/pe.c ++++ b/src/boot/efi/pe.c +@@ -18,6 +18,8 @@ + # define TARGET_MACHINE_TYPE EFI_IMAGE_MACHINE_X64 + #elif defined(__aarch64__) + # define TARGET_MACHINE_TYPE EFI_IMAGE_MACHINE_AARCH64 ++#elif defined(__loongarch64) ++# define TARGET_MACHINE_TYPE EFI_IMAGE_MACHINE_LOONGARCH64 + #elif defined(__arm__) + # define TARGET_MACHINE_TYPE EFI_IMAGE_MACHINE_ARMTHUMB_MIXED + #elif defined(__riscv) && __riscv_xlen == 64 +-- +2.40.1 + diff --git a/systemd.spec b/systemd.spec index 1974eb979b8568f091bbe5f845bce2cea3e562c2..fed2eb7127e48479f17477d201df67b1a75f6f79 100644 --- a/systemd.spec +++ b/systemd.spec @@ -1,4 +1,4 @@ -%define anolis_release 7 +%define anolis_release 8 %global __requires_exclude pkg-config %global pkgdir %{_prefix}/lib/systemd @@ -10,9 +10,14 @@ %global systemd_local_dir /var/lib/systemd %bcond_without gnu_efi +%ifarch loongarch64 +%bcond_with bpf +%bcond_with tests +%else %bcond_without bpf -%bcond_with bootstrap %bcond_without tests +%endif +%bcond_with bootstrap %bcond_without lto %bcond_with inplace # disable networkd @@ -60,6 +65,7 @@ Patch0003: 0003-pam-actually-align-the-columns.patch Patch0201: use-bfq-scheduler.patch Patch0202: fedora-use-system-auth-in-pam-systemd-user.patch +Patch0203: 0001-add-loongarch64-support-for-systemd.patch BuildRequires: gcc gcc-c++ clang coreutils BuildRequires: libcap-devel libmount-devel libfdisk-devel libpwquality-devel @@ -397,6 +403,10 @@ if ! diff -u %{SOURCE1} ${triggers_new}; then echo -e " cp $PWD/${triggers_new} %{SOURCE1}\n\n\n" sleep 5 fi +%ifarch loongarch64 +sed -i "/tests\/test-bcd$/d" %{SOURCE31} +sed -i "/test-socket-bind/d" %{SOURCE31} +%endif %install %meson_install @@ -1925,6 +1935,9 @@ fi %doc docs/DISTRO_PORTING.md docs/HACKING.md %changelog +* Tue Oct 10 2023 Wenlong Zhang - 252.4-8 +- add loongarch64 support for systemd + * Tue Aug 15 2023 happy_orange - 252.4-7 - disable networkd because of the network has been provides by networkmanager package