meta-rust-bin, fakeroot

markyang92·2022년 8월 27일
0

yocto

목록 보기
43/53
post-thumbnail

about rust

rust symbol control


meta-rust-bin


  • 적용환경
    • poky
    • meta-raspberrypi

  • Hierarchy
meta-rust-bin
├── build-new-version.sh
├── classes
│   ├── cargo.bbclass
│   └── rust-common.bbclass
├── conf
│   └── layer.conf
├── files
│   └── common-licenses
├── README.md
└── recipes-devtools
    └── rust
		├── cargo-bin-cross_1.60.0.bb
		├── cargo-bin-cross_1.61.0.bb
		├── cargo-bin-cross.inc
		├── rust-bin-cross_1.60.0.bb
		├── rust-bin-cross_1.61.0.bb
		└── rust-bin-cross.inc


sample-recipe

  1. inherit cargo

classes

classes/cargo.bbclass


classes/rust-common.bbclass

  • def rust_target (python) -> target = "arch-vendor-os-callconvention"

classes/cross.bbclass

  • recipes-devtools/rust/cargo-bin-cross.inc inherits this class
  • recipes-devtools/rust/rust-bin-cross.inc inherits this class


recipes-devtools/rust

cargo-bin-cross.inc + cargo-bin-cross_1.61.0.bb


rust-bin-cross.inc + rust-bin-cross_1.61.0.bb


fakeroot

  • 패키지에서 root권한이 필요할 때가 있다.
    • 예를들어, user, group의 소유권을 변경하던가, device node를 생성하던가.
  • OpenEmbedded는 user, group 정보를 유지하지 않으므로, 일반적으로 user, group 정보를 Makefile에서 제거하는 것이 좋다.
    • device node의 경우 초기 device node 목록이나 udev configureation을 통해 생성하는 것이 바람직하다.
  • root권한 access 할 수 없는 경우, fakeroot 를 통해, root 환경 simulate가 가능하다.
fakeroot do_install() {
}
DEPENDS = "fakeroot-native"
  • fakeroot-nativeDEPENDS를 걸어야한다.

https://unix.stackexchange.com/questions/9714/what-is-the-need-for-fakeroot-command-in-linux

  • fakeroot: fake로 root 권한 file manipulation을 하게한다.
    • package build에서, remove를 위해서 root권한이 필요할 때가 있다.
    • LD_PRELOAD -> libfakeroot.so로 셋팅되어, 이를 제공해준다.
      • 이는 getuid, chown, chmod, mknod, stat, ..., 등을 제공
profile
pllpokko@alumni.kaist.ac.kr

0개의 댓글