Skip to content

Commit 45f6671

Browse files
Add loongarch64-linux support
Signed-off-by: 吴小白 <[email protected]>
1 parent 51d355f commit 45f6671

20 files changed

+239
-4
lines changed

ci-matrix.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
{"name": "build", "arch": "x86_64"},
2626
{"name": "build.cross", "arch": "x86_64"},
2727
{"name": "build.cross-riscv64", "arch": "x86_64"},
28+
{"name": "build.cross-loongarch64", "arch": "x86_64"},
2829
{"name": "build.debian9", "arch": "aarch64"},
2930
{"name": "gcc", "arch": "x86_64"},
3031
{"name": "gcc.debian9", "arch": "aarch64"},

ci-targets.yaml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,27 @@ linux:
9999
- freethreaded+lto
100100
minimum-python-version: "3.13"
101101

102+
loongarch64-unknown-linux-gnu:
103+
arch: loongarch64
104+
libc: gnu
105+
python_versions:
106+
- "3.9"
107+
- "3.10"
108+
- "3.11"
109+
- "3.12"
110+
- "3.13"
111+
- "3.14"
112+
build_options:
113+
- debug
114+
- noopt
115+
- lto
116+
build_options_conditional:
117+
- options:
118+
- freethreaded+debug
119+
- freethreaded+noopt
120+
- freethreaded+lto
121+
minimum-python-version: "3.13"
122+
102123
s390x-unknown-linux-gnu:
103124
arch: s390x
104125
libc: gnu

cpython-unix/base.Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Debian Jessie.
22
FROM debian@sha256:32ad5050caffb2c7e969dac873bce2c370015c2256ff984b70c1c08b3a2816a0
3-
MAINTAINER Gregory Szorc <[email protected]>
3+
LABEL org.opencontainers.image.authors="Gregory Szorc <[email protected]>"
44

55
RUN groupadd -g 1000 build && \
66
useradd -u 1000 -g 1000 -d /build -s /bin/bash -m build && \

cpython-unix/base.debian9.Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Debian Stretch.
22
FROM debian@sha256:c5c5200ff1e9c73ffbf188b4a67eb1c91531b644856b4aefe86a58d2f0cb05be
3-
MAINTAINER Gregory Szorc <[email protected]>
3+
LABEL org.opencontainers.image.authors="Gregory Szorc <[email protected]>"
44

55
RUN groupadd -g 1000 build && \
66
useradd -u 1000 -g 1000 -d /build -s /bin/bash -m build && \

cpython-unix/build-cpython.sh

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,15 @@ if [[ "${PYBUILD_PLATFORM}" = macos* ]]; then
6969
fi
7070
fi
7171

72+
# configure doesn't support cross-compiling on LoongArch. Teach it.
73+
if [ "${PYBUILD_PLATFORM}" != "macos" ]; then
74+
case "${PYTHON_MAJMIN_VERSION}" in
75+
3.9|3.10|3.11)
76+
patch -p1 -i ${ROOT}/patch-configure-add-loongarch-triplet.patch
77+
;;
78+
esac
79+
fi
80+
7281
# disable readelf check when cross-compiling on older Python versions
7382
if [ -n "${CROSS_COMPILING}" ]; then
7483
if [ -n "${PYTHON_MEETS_MAXIMUM_VERSION_3_11}" ]; then
@@ -1091,6 +1100,9 @@ armv7-unknown-linux-gnueabi)
10911100
armv7-unknown-linux-gnueabihf)
10921101
PYTHON_ARCH="arm-linux-gnueabihf"
10931102
;;
1103+
loongarch64-unknown-linux-gnu)
1104+
PYTHON_ARCH="loongarch64-linux-gnu"
1105+
;;
10941106
mips-unknown-linux-gnu)
10951107
PYTHON_ARCH="mips-linux-gnu"
10961108
;;

cpython-unix/build-libX11.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ if [ -n "${CROSS_COMPILING}" ]; then
5454
armv7-unknown-linux-gnueabihf)
5555
EXTRA_FLAGS="${EXTRA_FLAGS} --enable-malloc0returnsnull"
5656
;;
57+
loongarch64-unknown-linux-gnu)
58+
EXTRA_FLAGS="${EXTRA_FLAGS} --enable-malloc0returnsnull"
59+
;;
5760
mips-unknown-linux-gnu)
5861
EXTRA_FLAGS="${EXTRA_FLAGS} --enable-malloc0returnsnull"
5962
;;
@@ -78,6 +81,9 @@ if [ -n "${CROSS_COMPILING}" ]; then
7881
aarch64-unknown-linux-musl)
7982
EXTRA_FLAGS="${EXTRA_FLAGS} --enable-malloc0returnsnull"
8083
;;
84+
loongarch64-unknown-linux-musl)
85+
EXTRA_FLAGS="${EXTRA_FLAGS} --enable-malloc0returnsnull"
86+
;;
8187
mips-unknown-linux-musl)
8288
EXTRA_FLAGS="${EXTRA_FLAGS} --enable-malloc0returnsnull"
8389
;;

cpython-unix/build-libxcb.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,12 @@ export PKG_CONFIG_PATH=/tools/deps/share/pkgconfig:/tools/deps/lib/pkgconfig
1313
tar -xf libxcb-${LIBXCB_VERSION}.tar.gz
1414
pushd libxcb-${LIBXCB_VERSION}
1515

16+
if [[ "${TARGET_TRIPLE}" = loongarch64* ]]; then
17+
rm -f build-aux/config.guess build-aux/config.sub
18+
curl -sSL -o build-aux/config.guess 'https://git.savannah.gnu.org/cgit/config.git/plain/config.guess'
19+
curl -sSL -o build-aux/config.sub 'https://git.savannah.gnu.org/cgit/config.git/plain/config.sub'
20+
fi
21+
1622
if [ "${CC}" = "musl-clang" ]; then
1723
EXTRA_FLAGS="--disable-shared"
1824
fi

cpython-unix/build-main.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ def main():
9595
"toolchain-image-build",
9696
"toolchain-image-build.cross",
9797
"toolchain-image-build.cross-riscv64",
98+
"toolchain-image-build.cross-loongarch64",
9899
"toolchain-image-build.debian9",
99100
"toolchain-image-gcc",
100101
"toolchain-image-xcb",

cpython-unix/build-ncurses.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,8 @@ else
109109
"
110110
fi
111111

112+
mkdir -p ${ROOT}/out/usr/lib
113+
112114
CFLAGS="${EXTRA_TARGET_CFLAGS} -fPIC" CPPFLAGS="${EXTRA_TARGET_CFLAGS} -fPIC" LDFLAGS="${EXTRA_TARGET_LDFLAGS}" ./configure ${CONFIGURE_FLAGS}
113115
make -j ${NUM_CPUS}
114116
make -j ${NUM_CPUS} install DESTDIR=${ROOT}/out

cpython-unix/build-xorgproto.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@ export PKG_CONFIG_PATH=/tools/deps/share/pkgconfig
1515
tar -xf xorgproto-${XORGPROTO_VERSION}.tar.gz
1616
pushd xorgproto-${XORGPROTO_VERSION}
1717

18+
if [[ "${TARGET_TRIPLE}" = loongarch64* ]]; then
19+
rm -f config.guess.sub config.sub
20+
curl -sSL -o config.guess 'https://git.savannah.gnu.org/cgit/config.git/plain/config.guess'
21+
curl -sSL -o config.sub 'https://git.savannah.gnu.org/cgit/config.git/plain/config.sub'
22+
fi
23+
1824
CFLAGS="${EXTRA_TARGET_CFLAGS} -fPIC" CPPFLAGS="${EXTRA_TARGET_CFLAGS} -fPIC" LDFLAGS="${EXTRA_TARGET_LDFLAGS}" ./configure \
1925
--build=${BUILD_TRIPLE} \
2026
--host=${TARGET_TRIPLE} \

0 commit comments

Comments
 (0)