diff --git a/mk/ci.mk b/mk/ci.mk index 16270a6e7..a8ae10f82 100644 --- a/mk/ci.mk +++ b/mk/ci.mk @@ -24,7 +24,7 @@ minimal minimal-net server desktop demo: FORCE # CI packaging target ci-pkg: prefix $(FSTOOLS_TAG) $(CONTAINER_TAG) FORCE ifeq ($(PODMAN_BUILD),1) - $(PODMAN_RUN) $(MAKE) $@ + $(PODMAN_RUN) make $@ else $(HOST_CARGO) build --manifest-path cookbook/Cargo.toml --release $(HOST_CARGO) build --manifest-path cookbook/pkgar/Cargo.toml --release @@ -40,7 +40,7 @@ endif # CI toolchain ci-toolchain: $(CONTAINER_TAG) FORCE ifeq ($(PODMAN_BUILD),1) - $(PODMAN_RUN) $(MAKE) $@ + $(PODMAN_RUN) make $@ else $(MAKE) PREFIX_BINARY=0 \ "prefix/$(TARGET)/gcc-install.tar.gz" \ diff --git a/mk/fstools.mk b/mk/fstools.mk index 61a850664..125b8cbf7 100644 --- a/mk/fstools.mk +++ b/mk/fstools.mk @@ -5,7 +5,7 @@ fstools: $(FSTOOLS_TAG) # These tools run inside Podman if it is used, or on the host if Podman is not used $(FSTOOLS_TAG): cookbook installer $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) - $(PODMAN_RUN) $(MAKE) $@ + $(PODMAN_RUN) make $@ else $(HOST_CARGO) build --manifest-path cookbook/Cargo.toml --release $(HOST_CARGO) build --manifest-path cookbook/pkgar/Cargo.toml --release @@ -25,7 +25,7 @@ $(HOST_FSTOOLS): installer redoxfs fstools_clean: FORCE $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) - $(PODMAN_RUN) $(MAKE) $@ + $(PODMAN_RUN) make $@ else $(HOST_CARGO) clean --manifest-path cookbook/Cargo.toml $(HOST_CARGO) clean --manifest-path cookbook/pkgar/Cargo.toml diff --git a/mk/podman.mk b/mk/podman.mk index abd2b1e12..2b90894a8 100644 --- a/mk/podman.mk +++ b/mk/podman.mk @@ -17,10 +17,10 @@ endif ## Podman Home Directory PODMAN_HOME?=$(ROOT)/build/podman ## Podman command with its many arguments -PODMAN_VOLUMES?=--volume $(ROOT):$(CONTAINER_WORKDIR)$(PODMAN_VOLUME_FLAG) --volume $(PODMAN_HOME):/home$(PODMAN_VOLUME_FLAG) -PODMAN_ENV?=--env PATH=/home/poduser/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin --env PODMAN_BUILD=0 +PODMAN_VOLUMES?=--volume $(ROOT):$(CONTAINER_WORKDIR)$(PODMAN_VOLUME_FLAG) --volume $(PODMAN_HOME):/root$(PODMAN_VOLUME_FLAG) +PODMAN_ENV?=--env PATH=/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin --env PODMAN_BUILD=0 PODMAN_CONFIG?=--env ARCH=$(ARCH) --env BOARD=$(BOARD) --env CONFIG_NAME=$(CONFIG_NAME) --env FILESYSTEM_CONFIG=$(FILESYSTEM_CONFIG) -PODMAN_OPTIONS?=--rm --workdir $(CONTAINER_WORKDIR) --userns keep-id --user `id -u` --interactive --tty --env TERM=$(TERM) +PODMAN_OPTIONS?=--rm --workdir $(CONTAINER_WORKDIR) --interactive --tty --env TERM=$(TERM) PODMAN_RUN?=podman run $(PODMAN_OPTIONS) $(PODMAN_VOLUMES) $(PODMAN_ENV) $(PODMAN_CONFIG) $(IMAGE_TAG) container_shell: build/container.tag @@ -31,7 +31,7 @@ else endif container_su: FORCE - podman exec --user=0 --latest --interactive --tty bash + podman run $(PODMAN_VOLUMES) --interactive --tty $(IMAGE_TAG) bash container_clean: FORCE rm -f build/container.tag @@ -56,12 +56,12 @@ container_kill: FORCE build/container.tag: $(CONTAINERFILE) ifeq ($(PODMAN_BUILD),1) rm -f build/container.tag - @echo "If podman_home dir cannot be removed, remove with \"sudo rm\"." + -chmod -R 0700 $(PODMAN_HOME) || true -rm -rf $(PODMAN_HOME) || true -podman image rm --force $(IMAGE_TAG) || true mkdir -p $(PODMAN_HOME) @echo "Building Podman image. This may take some time." - sed s/_UID_/`id -u`/ $(CONTAINERFILE) | podman build --file - $(PODMAN_VOLUMES) --tag $(IMAGE_TAG) + cat $(CONTAINERFILE) | podman build --file - $(PODMAN_VOLUMES) --arch=amd64 --tag $(IMAGE_TAG) @echo "Mapping Podman user space. Please wait." $(PODMAN_RUN) bash -e podman/rustinstall.sh mkdir -p build diff --git a/mk/prefix.mk b/mk/prefix.mk index 09692c736..4019d669f 100644 --- a/mk/prefix.mk +++ b/mk/prefix.mk @@ -44,7 +44,7 @@ $(PREFIX)/relibc: $(ROOT)/relibc $(PREFIX)/relibc-install: $(PREFIX)/relibc | $(PREFIX)/rust-install $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) - $(PODMAN_RUN) $(MAKE) $@ + $(PODMAN_RUN) make $@ else rm -rf "$@.partial" "$@" cp -r "$(PREFIX)/rust-install" "$@.partial" @@ -70,24 +70,22 @@ $(PREFIX)/relibc-install.tar.gz: $(PREFIX)/relibc-install --directory="$<" \ . -$(PREFIX)/libtool: +$(PREFIX)/libtool: $(PREFIX)/libtool.tar.gz rm -rf "$@.partial" "$@" mkdir -p "$@.partial" - - git clone \ - --recurse-submodules \ - "https://gitlab.redox-os.org/redox-os/libtool/" \ - --branch "v$(LIBTOOL_VERSION)-redox" \ - --depth 2 \ - "$@.partial" - + tar --extract --file "$<" --directory "$@.partial" --strip-components=1 touch "$@.partial" echo $(LIBTOOL_VERSION) > $@.partial/.tarball-version mv "$@.partial" "$@" +$(PREFIX)/libtool.tar.gz: + mkdir -p "$(@D)" + wget -O $@.partial "https://gitlab.redox-os.org/redox-os/libtool/-/archive/v$(LIBTOOL_VERSION)-redox/libtool-v$(LIBTOOL_VERSION)-redox.tar.gz" + mv $@.partial $@ + $(PREFIX)/libtool-build: $(PREFIX)/libtool $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) - $(PODMAN_RUN) $(MAKE) $@ + $(PODMAN_RUN) make $@ else mkdir -p "$@.partial" PATH="$(ROOT)/$(PREFIX)/rust-install/bin:$$PATH" && \ @@ -98,7 +96,7 @@ else --gnulib-srcdir=./gnulib PATH="$(ROOT)/$(PREFIX)/rust-install/bin:$$PATH" && \ cd "$@.partial" && \ - cp -rp $(abspath $<)/. ./ && \ + cp -r $(abspath $<)/. ./ && \ "$(ROOT)/$> $HOME/.bashrc +source $HOME/.cargo/env + cargo +stable install --force --version 0.1.1 cargo-config cargo +stable install --force --version 1.16.0 just cargo +stable install --force --version 0.27.0 cbindgen