解决设置rust workspace带来的“工具链不一致”的问题 (#345)

更改workflow
This commit is contained in:
LoGin 2023-08-26 21:36:13 +08:00 committed by GitHub
parent 9a367aa7eb
commit e92d022810
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 46 additions and 22 deletions

View File

@ -34,7 +34,5 @@ jobs:
printf "\n" >> user/libs/libc/src/include/internal/bindings/bindings.rs
- name: Check format
uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check
run: |
FMT_CHECK=1 make fmt

View File

@ -1,7 +0,0 @@
[workspace]
resolver = "2"
members = [
"kernel",
"user/libs/libc/",
]

View File

@ -36,6 +36,16 @@ export NM=$(DragonOS_GCC)/x86_64-elf-nm
export AR=$(DragonOS_GCC)/x86_64-elf-ar
export OBJCOPY=$(DragonOS_GCC)/x86_64-elf-objcopy
# 检查是否需要进行fmt --check
# 解析命令行参数
FMT_CHECK?=0
ifeq ($(FMT_CHECK), 1)
FMT_CHECK=--check
else
FMT_CHECK=
endif
.PHONY: all
all: kernel user
@ -142,6 +152,11 @@ run-docker:
$(MAKE) write_diskimage || exit 1
$(MAKE) qemu
fmt:
@echo "格式化代码"
FMT_CHECK=$(FMT_CHECK) $(MAKE) fmt -C kernel
FMT_CHECK=$(FMT_CHECK) $(MAKE) fmt -C user
help:
@echo "编译:"
@echo " make all -j <n> - 本地编译,不运行,n为要用于编译的CPU核心数"

View File

@ -238,6 +238,7 @@ make run-docker
- 清理编译产生的文件: `make clean`
- 编译文档: `make docs` 需要手动安装sphinx以及docs下的`requirements.txt`中的依赖)
- 清理文档: `make clean-docs`
- 格式化代码: `make fmt`
:::{note}
如果您需要在vnc中运行DragonOS请在上述命令后加上`-vnc`后缀。如:`make run-vnc`

View File

@ -6,4 +6,8 @@ all:
clean:
rm -f Cargo.lock
$(MAKE) -C src clean
$(MAKE) -C src clean
.PHONY: fmt
fmt:
cargo fmt --all $(FMT_CHECK)

View File

@ -38,7 +38,7 @@ kernel_rust:
all: kernel
@echo "Linking kernel..."
$(LD) -b elf64-x86-64 -z muldefs -o kernel head.o main.o $(shell find . -name "*.o") $(ROOT_PATH)/target/x86_64-unknown-none/release/libdragonos_kernel.a -T link.lds
$(LD) -b elf64-x86-64 -z muldefs -o kernel head.o main.o $(shell find . -name "*.o") ../target/x86_64-unknown-none/release/libdragonos_kernel.a -T link.lds
# 生成kallsyms
current_dir=$(pwd)
@ -55,7 +55,7 @@ all: kernel
# 重新链接
@echo "Re-Linking kernel..."
@echo $(shell find . -name "*.o")
$(LD) -b elf64-x86-64 -z muldefs -o kernel head.o main.o $(shell find . -name "*.o") $(ROOT_PATH)/target/x86_64-unknown-none/release/libdragonos_kernel.a ./debug/kallsyms.o -T link.lds
$(LD) -b elf64-x86-64 -z muldefs -o kernel head.o main.o $(shell find . -name "*.o") ../target/x86_64-unknown-none/release/libdragonos_kernel.a ./debug/kallsyms.o -T link.lds
@echo "Generating kernel ELF file..."
# 生成内核文件
$(OBJCOPY) -I elf64-x86-64 -O elf64-x86-64 kernel ../../bin/kernel/kernel.elf

View File

@ -1,3 +0,0 @@
[toolchain]
channel = "nightly-2023-01-21"
components = ["rust-src"]

View File

@ -95,7 +95,7 @@ sys_api_lib: sys_api_lib_stage_1
mkdir -p $(ROOT_PATH)/bin/tmp/user/sys_api_lib_build_tmp
mkdir -p $(OLD_LIBC_INSTALL_PATH)/include
mkdir -p $(OLD_LIBC_INSTALL_PATH)/lib
$(AR) x $(ROOT_PATH)/target/x86_64-unknown-none/release/liblibc.a --output=$(ROOT_PATH)/bin/tmp/user/sys_api_lib_build_tmp
$(AR) x libs/libc/target/x86_64-unknown-none/release/liblibc.a --output=$(ROOT_PATH)/bin/tmp/user/sys_api_lib_build_tmp
$(AR) crvs $(OLD_LIBC_INSTALL_PATH)/lib/libc.a $(shell find ./libs/* -name "*.o") $(shell find $(ROOT_PATH)/bin/tmp/user/sys_api_lib_build_tmp/* -name "*.o")
rm -rf $(ROOT_PATH)/bin/tmp/user/sys_api_lib_build_tmp
# $(shell find ./libs/* -name "*.o" | xargs -I {} cp {} $(ROOT_PATH)/bin/sysroot/usr/lib/)
@ -112,4 +112,8 @@ clean:
cd $$subdir && $(MAKE) clean;\
cd .. ;\
done
.PHONY: fmt
fmt:
FMT_CHECK=$(FMT_CHECK) $(MAKE) -C libs
FMT_CHECK=$(FMT_CHECK) $(MAKE) -C apps

View File

@ -9,4 +9,7 @@ $(user_apps_sub_dirs): ECHO
$(MAKE) -C $@ all CFLAGS="$(CFLAGS)" tmp_output_dir="$(tmp_output_dir)" output_dir="$(output_dir)" sys_libs_dir="$(sys_libs_dir)"
all: $(user_apps_sub_dirs)
.PHONY: clean
fmt:
@echo "格式化代码: user/apps"

View File

@ -16,4 +16,9 @@ clean:
echo "Clean in dir: $$subdir";\
cd $$subdir && $(MAKE) clean;\
cd .. ;\
done
done
.PHONY: clean
fmt:
@echo "格式化代码: user/libs"
FMT_CHECK=$(FMT_CHECK) $(MAKE) -C libc fmt

View File

@ -4,4 +4,8 @@ all:
clean:
rm -f Cargo.lock
$(MAKE) -C src clean
$(MAKE) -C src clean
.PHONY: fmt
fmt:
cargo fmt --all $(FMT_CHECK)