fix(user): 修复clean ./user时出现参数过长的问题 (#1037)

This commit is contained in:
yuyi2439 2024-11-22 22:49:10 +08:00 committed by GitHub
parent 081428c0d8
commit 23ccf763b6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
16 changed files with 0 additions and 353 deletions

View File

@ -1,10 +1,5 @@
user_sub_dirs = apps
SUBDIR_ROOTS := .
DIRS := . $(shell find $(SUBDIR_ROOTS) -type d)
GARBAGE_PATTERNS := *.o *.a
GARBAGE := $(foreach DIR,$(DIRS),$(addprefix $(DIR)/,$(GARBAGE_PATTERNS)))
DADK_VERSION=$(shell dadk -V | awk 'END {print $$2}')
# 最小的DADK版本
MIN_DADK_VERSION = 0.1.11
@ -65,7 +60,6 @@ copy_sysconfig: dadk_run
.PHONY: clean
clean:
rm -rf $(GARBAGE)
$(MAKE) dadk_clean
@list='$(user_sub_dirs)'; for subdir in $$list; do \
echo "Clean in dir: $$subdir";\

View File

@ -1,15 +0,0 @@
# port目录
---
本目录移植到DragonOS的应用程序。
可以包含以下类型的文件:
- 移植的patch以及编译脚本、编译用的Dockerfile等
- 把子目录作为git仓库的submodule
## 注意
编译好libc之后要把sysroot/usr/lib的文件复制到$HOME/opt/dragonos-host-userspace/x86_64-dragonos/lib. 因为ld会从这里面找链接的东西。
目前由于DragonOS的libc还不完善所以尚未能使用用户态交叉编译器来编译flex。

View File

@ -1 +0,0 @@
build-binutils/

View File

@ -1,41 +0,0 @@
# 本Dockerfile用于构建binutils 2.38的交叉编译环境
FROM ubuntu:jammy
# Install dependencies
RUN apt-get update && apt-get install -y \
autoconf2.69 \
automake \
bison \
build-essential \
flex \
gawk \
gettext \
git \
libgmp-dev \
libmpc-dev \
libmpfr-dev \
libncurses5-dev \
libtool \
m4 \
make \
ninja-build \
python3 \
texinfo \
wget \
xz-utils \
zlib1g-dev \
wget \
&& rm /usr/bin/autoconf && ln -s /usr/bin/autoconf2.69 /usr/bin/autoconf
WORKDIR /opt
# download automake 1.15.1
RUN wget http://mirrors.ustc.edu.cn/gnu/automake/automake-1.15.1.tar.xz && \
tar -xvf automake-1.15.1.tar.xz && \
cd automake-1.15.1 && \
./configure --prefix=/usr && \
make && \
make install && \
cd .. && \
rm -rf automake-1.15.1 automake-1.15.1.tar.xz

View File

@ -1,25 +0,0 @@
# binutils-2.38
## 说明
这里是移植到用户态的binutils-2.38用于DragonOS的用户态编译器。在编译这里之前请先在项目根目录下运行`make -j $(nproc)`, 以确保编译binutils所依赖的依赖库已经编译好。
先修改build.sh中的路径配置好需要的信息再使用以下命令即可开始编译
```bash
bash build.sh
```
---
请注意如果您要修改binutils的代码请先使用以下命令构建编辑binutils代码配置的环境
```bash
docker build --no-cache -t dragonos-binutils-build .
```
然后再在binutils目录下执行以下命令进入容器
```bash
docker run --rm -it -v $PWD:/workdir -w /workdir dragonos-binutils-build
```

View File

@ -1,42 +0,0 @@
# 编译前请先设置参数
sys_root=$DRAGONOS_SYSROOT
binutils_path=请填写binutils的路径
# 要安装到的目录
PREFIX=$HOME/opt/dragonos-host-userspace
if [ ! -d ${binutils_path} ]; then
echo "Error: ${binutils_path} not found"
exit 1
fi
if [ ! -d ${sys_root} ]; then
echo "Error: ${sys_root} not found"
exit 1
fi
mkdir -p build-binutils || exit 1
mkdir -p ${PREFIX} || exit 1
# 安装依赖
# 注意texinfo和binutils的版本是否匹配
# 注意gmp/mpc/mpfr和gcc/g++的版本是否匹配
sudo apt-get install -y \
g++ \
gcc \
make \
texinfo \
libgmp3-dev \
libmpc-dev \
libmpfr-dev \
flex \
wget
cd build-binutils
${binutils_path}/configure --prefix=${PREFIX} --target=x86_64-dragonos --with-sysroot=${sys_root} --disable-werror || exit 1
make -j $(nproc) || exit 1
make install || exit 1
make clean || exit 1
rm -rf build-binutils

View File

@ -1 +0,0 @@
docker run --rm -it -v $PWD:/workdir -w /workdir binutils-2.38

View File

@ -1,17 +0,0 @@
source pkg-config.sh
path=(
gmp/6.2.1
mpfr/4.1.1
mpc/1.2.1
flex/2.6.4
)
current_path=$(pwd)
for i in ${path[@]}; do
echo "Building $i"
cd $i
./build.sh || exit 1
cd $current_path
done
cd $current_path

View File

@ -1 +0,0 @@
build/

View File

@ -1,37 +0,0 @@
# 编译前请先设置参数
sys_root=$DRAGONOS_SYSROOT
src_path=请填写flex的路径
current_path=$(pwd)
# 要安装到的目录
PREFIX=/usr
if [ ! -d ${src_path} ]; then
echo "Error: ${src_path} not found"
exit 1
fi
if [ ! -d ${sysroot} ]; then
echo "Error: ${sysroot} not found"
exit 1
fi
cd ${src_path}
autoreconf --install
autoconf
sed -i 's/ios[*]/ios* | dragonos* /' build-aux/config.sub
cd ${current_path}
mkdir -p build || exit 1
mkdir -p ${PREFIX} || exit 1
cd build
${src_path}/configure --prefix=${PREFIX} --host=x86_64-dragonos || exit 1
make -j $(nproc) || exit 1
make DESTDIR=${sys_root} install|| exit 1
make clean
cd ..
rm -rf build

View File

@ -1 +0,0 @@
build-gcc/

View File

@ -1,51 +0,0 @@
##############################################
# DragonOS hosted gcc build script
#
# This script is used to build userland gcc for DragonOSRunning on Linux)
##############################################
# 编译前请先设置参数
sys_root=$DRAGONOS_SYSROOT
gcc_path=请填写gcc的路径
# 要安装到的目录
PREFIX=$HOME/opt/dragonos-host-userspace
if [ ! -d ${gcc_path} ]; then
echo "Error: ${gcc_path} not found"
exit 1
fi
if [ ! -d ${sys_root} ]; then
echo "Error: ${sys_root} not found"
exit 1
fi
# 安装依赖
# 注意texinfo和binutils的版本是否匹配
# 注意gmp/mpc/mpfr和gcc/g++的版本是否匹配
sudo apt-get install -y \
g++ \
gcc \
make \
texinfo \
libgmp3-dev \
libmpc-dev \
libmpfr-dev \
flex \
wget
mkdir -p build-gcc || exit 1
mkdir -p ${PREFIX} || exit 1
cd build-gcc
${gcc_path}/configure --prefix=${PREFIX} --target=x86_64-dragonos --with-sysroot=${sys_root} --disable-werror --disable-shared --disable-bootstrap --enable-languages=c,c++ || exit 1
make all-gcc all-target-libgcc -j $(nproc) || exit 1
make install-gcc install-target-libgcc -j $(nproc) || exit 1
# 这里会报错,暂时不知道为什么
# make all-target-libstdc++-v3 -j $(nproc) || exit 1
# make install-target-libstdc++-v3 -j $(nproc) || exit 1
make clean
cd ..
rm -rf build-gcc

View File

@ -1,28 +0,0 @@
# 编译前请先设置参数
sys_root=$DRAGONOS_SYSROOT
gmp_path=请填写gmp的路径
# 要安装到的目录
PREFIX=/usr
if [ ! -d ${gmp_path} ]; then
echo "Error: ${gmp_path} not found"
exit 1
fi
if [ ! -d ${sysroot} ]; then
echo "Error: ${sysroot} not found"
exit 1
fi
mkdir -p build-gmp || exit 1
mkdir -p ${PREFIX} || exit 1
cd build-gmp
${gmp_path}/configure --prefix=${PREFIX} --host=x86_64-dragonos || exit 1
make -j $(nproc) || exit 1
make DESTDIR=${sys_root} install|| exit 1
make clean
cd ..
rm -rf build-gmp

View File

@ -1,35 +0,0 @@
# 编译前请先设置参数
sys_root=$DRAGONOS_SYSROOT
mpc_path=请填写mpc的路径
# 要安装到的目录
PREFIX=/usr
current_path=$(pwd)
if [ ! -d ${mpc_path} ]; then
echo "Error: ${mpc_path} not found"
exit 1
fi
if [ ! -d ${sysroot} ]; then
echo "Error: ${sysroot} not found"
exit 1
fi
cd ${mpc_path}
autoreconf --install || exit 1
autoconf
sed -i 's/ios[*]/ios* | dragonos* /' build-aux/config.sub
cd ${current_path}
mkdir -p build || exit 1
mkdir -p ${PREFIX} || exit 1
cd build
${mpc_path}/configure --prefix=${PREFIX} --host=x86_64-dragonos --target=x86_64-dragonos --with-mpfr=$sys_root/usr --with-gmp=$sys_root/usr || exit 1
make -j $(nproc) || exit 1
make DESTDIR=${sys_root} install || exit 1
make clean
cd ..
rm -rf build

View File

@ -1,37 +0,0 @@
# 编译前请先设置参数
sys_root=$DRAGONOS_SYSROOT
src_path=请填写mpfr的路径
current_path=$(pwd)
# 要安装到的目录
PREFIX=/usr
if [ ! -d ${src_path} ]; then
echo "Error: ${src_path} not found"
exit 1
fi
if [ ! -d ${sysroot} ]; then
echo "Error: ${sysroot} not found"
exit 1
fi
cd ${src_path}
autoreconf --install
autoconf
sed -i 's/ios[*]/ios* | dragonos* /' config.sub
cd ${current_path}
mkdir -p build || exit 1
mkdir -p ${PREFIX} || exit 1
cd build
${src_path}/configure --prefix=${PREFIX} --host=x86_64-dragonos || exit 1
make -j $(nproc) || exit 1
make DESTDIR=${sys_root} install|| exit 1
make clean
cd ..
rm -rf build

View File

@ -1,15 +0,0 @@
#!/bin/sh
# Fill these in appropriately:
ROOT_PATH=$(dirname $(dirname $(pwd)))
DRAGONOS_SYSROOT=$ROOT_PATH/bin/sysroot
export PKG_CONFIG_SYSROOT_DIR=$DRAGONOS_SYSROOT
export PKG_CONFIG_LIBDIR=$DRAGONOS_SYSROOT/usr/lib/pkgconfig
# TODO: If it works this should probably just be set to the empty string.
# export PKG_CONFIG_PATH=$PKG_CONFIG_LIBDIR
# Use --static here if your OS only has static linking.
# TODO: Perhaps it's a bug in the libraries if their pkg-config files doesn't
# record that only static libraries were built.
# exec pkg-config --static "$@"