Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

no such module 'ArgumentParser' #499

Open
windowshome opened this issue Oct 21, 2020 · 9 comments
Open

no such module 'ArgumentParser' #499

windowshome opened this issue Oct 21, 2020 · 9 comments

Comments

@windowshome
Copy link

/Users/xuwei/Desktop/xi-mac/Sources/XiCLICore/Xi.swift:15:8: error: no such module 'ArgumentParser'
import ArgumentParser
^

** BUILD FAILED **

The following build commands failed:
CompileSwift normal x86_64
CompileSwiftSources normal x86_64 com.apple.xcode.tools.swift.compiler
(2 failures)

@zeroly
Copy link

zeroly commented Oct 26, 2020

#494 (comment)

@Lyrillind
Copy link

#494 (comment)

It's not working.

@afterhill
Copy link

confirmed not working under latest "Big Sur" + xcode 12.3

@Lyrillind
Copy link

I finally find a way to build successfully on macOS 11.2.2 with Xcode 12.4.

STEP 1

Run commands as follows in xi-editor/rust directory:

cargo build --release --target "x86_64-apple-darwin"

xcrun --sdk macosx lipo -create "target/x86_64-apple-darwin/release/xi-core" -output "xi-core"

cargo build --release -p xi-syntect-plugin --target "x86_64-apple-darwin"

xcrun --sdk macosx lipo -create "target/x86_64-apple-darwin/release/xi-syntect-plugin" -output "xi-syntect-plugin"

now we have xi-core and xi-syntect-plugin file.

STEP 2

Modify build-rust-xcode.sh file.

comment following lines at 74 and 75

build_target xi-core ""
build_target xi-syntect-plugin "-p xi-syntect-plugin"

add line after mkdir -p at line 78

cp "xi-core" "${BUILT_PRODUCTS_DIR}/xi-core"

change line 80 as follows

mv "xi-syntect-plugin" "${BUILT_PRODUCTS_DIR}/plugins/syntect/bin/"

save file.

STEP 3

run command

xcodebuild -scheme XiEditor -configuration Release build

Now we got the build app in derived data folder.


The root cause of failure while building is because the build-rust-xcode.sh is always error.

So instead running it, I run the command mannually in terminal and leave a little command in it to run so will not break the xcode build phases.

@wongjiahau
Copy link

wongjiahau commented Mar 30, 2021

@Lyrillind I failed at Step 3 with the following error:

mv: xi-syntect-plugin: No such file or directory
Command ExternalBuildToolExecution failed with a nonzero exit code

** BUILD FAILED **

I'm using macOS 11.2.3 with Xcode 12.4.

This is my build-rust-xcode.sh after following Step 2:

#!/bin/bash

# When building from Xcode we want to ensure that `cargo` is in PATH.
# as a convenience, add the default cargo install location
export PATH="$PATH:${HOME}/.cargo/bin"

# Users can optionally set cargo path in xi-mac/.env
if [[ -f "${SRCROOT}/.env" ]]; then
    source "${SRCROOT}/.env"
    if ! [[ -z "$CARGO_PATH" ]]; then
        export PATH="$CARGO_PATH:$PATH"
    else
        echo "warning: ${SRCROOT}/.env file found, but CARGO_PATH not set."
    fi
fi

if ! [[ -x "$(command -v cargo)" ]]; then
    echo 'error: Unable to find cargo command. If cargo is not installed visit rustup.rs, otherwise set CARGO_PATH in xi-mac/.env' >&2
    exit 127
fi

set -e

function build_target () {
    TARGET_NAME="$1"
    CARGO_PROJECT_FLAG="$2"
    cd "${SRCROOT}/xi-editor/rust"
    if [[ ${ACTION:-build} = "build" ]]; then
        if [[ $PLATFORM_NAME = "" ]]; then
            # default for building with xcodebuild
            PLATFORM_NAME="macosx"
        fi

        if [[ $PLATFORM_NAME = "macosx" ]]; then
            RUST_TARGET_OS="darwin"
        else
            RUST_TARGET_OS="ios"
        fi

        for ARCH in $ARCHS
        do
            if [[ $(lipo -info "${BUILT_PRODUCTS_DIR}/${TARGET_NAME}" 2>&1) != *"${ARCH}"* ]]; then
                rm -f "${BUILT_PRODUCTS_DIR}/${TARGET_NAME}"
            fi
        done

        if [[ $CONFIGURATION = "Debug" ]]; then
            RUST_CONFIGURATION="debug"
            RUST_CONFIGURATION_FLAG=""
        else
            RUST_CONFIGURATION="release"
            RUST_CONFIGURATION_FLAG="--release"
        fi

        EXECUTABLES=()
        for ARCH in $ARCHS
        do
            RUST_ARCH=$ARCH
            if [[ $RUST_ARCH = "arm64" ]]; then
                RUST_ARCH="aarch64"
            fi
            cargo build $RUST_CONFIGURATION_FLAG $CARGO_PROJECT_FLAG --target "${RUST_ARCH}-apple-${RUST_TARGET_OS}"
            EXECUTABLES+=("target/${RUST_ARCH}-apple-${RUST_TARGET_OS}/${RUST_CONFIGURATION}/${TARGET_NAME}")
        done

        mkdir -p "${BUILT_PRODUCTS_DIR}"
        xcrun --sdk $PLATFORM_NAME lipo -create "${EXECUTABLES[@]}" -output "${BUILT_PRODUCTS_DIR}/${TARGET_NAME}"
    elif [[ $ACTION = "clean" ]]; then
        cargo clean
        rm -f "${BUILT_PRODUCTS_DIR}/${TARGET_NAME}"
    fi
}

# build_target xi-core ""
# build_target xi-syntect-plugin "-p xi-syntect-plugin"

# move syntect plugin into plugins dir
mkdir -p "${BUILT_PRODUCTS_DIR}/plugins/syntect/bin"

mv "xi-syntect-plugin" "${BUILT_PRODUCTS_DIR}/plugins/syntect/bin/"
cp "${SRCROOT}/xi-editor/rust/syntect-plugin/manifest.toml" "${BUILT_PRODUCTS_DIR}/plugins/syntect/"

# workaround for https://github.com/travis-ci/travis-ci/issues/6522
set +e

@Lyrillind
Copy link

@wongjiahau

  1. check the xi-core and xi-syntect-plugin file after STEP 1.
  2. missing cp "xi-core" "${BUILT_PRODUCTS_DIR}/xi-core" in sh file described in STEP 2

@xaocon
Copy link

xaocon commented May 17, 2021

Now we got the build app in derived data folder.

In case anyone else is unfamiliar with what this means it's in (at least for me) ~/Library/Developer/Xcode/DerivedData/.

@Yiniau
Copy link

Yiniau commented Jul 8, 2021

run open XiEditor.xcodeproj, and use the Product > Build option on the top menu or just command + B

this work for me, macOS 11.2.3; Xcode 12.5.1

@jido
Copy link

jido commented Apr 6, 2022

run open XiEditor.xcodeproj, and use the Product > Build option on the top menu or just command + B

this work for me, macOS 11.2.3; Xcode 12.5.1

Thanks, that worked for me (had to reinstall arm64 Rust on M1).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants