cocoapod openssl-ios-bitcode больше не устанавливается - PullRequest
0 голосов
/ 12 июня 2018

У меня есть проект, в котором я использую openssl-ios-bitcode.Делал некоторые изменения в моем файле pod, и удалил запись случайно.После повторного добавления записи я обнаружил, что модуль не будет переустанавливаться.

Существует команда prepare_

 s.prepare_command = <<-CMD
    VERSION="1.0.2l"
    SDKVERSION=`xcrun --sdk iphoneos --show-sdk-version 2> /dev/null`
    MIN_SDKVERSION="7.0"
    BASEPATH="${PWD}"
    CURRENTPATH="${TMPDIR}/openssl"
    ARCHS="i386 x86_64 armv7 arm64"
    DEVELOPER=`xcode-select -print-path`
    mkdir -p "${CURRENTPATH}"
    mkdir -p "${CURRENTPATH}/bin"
    cp "file.tgz" "${CURRENTPATH}/file.tgz"
    cd "${CURRENTPATH}"
    tar -xzf file.tgz
    cd "openssl-${VERSION}"
    for ARCH in ${ARCHS}
    do
      CONFIGURE_FOR="iphoneos-cross"
      if [ "${ARCH}" == "i386" ] || [ "${ARCH}" == "x86_64" ] ;
      then
        PLATFORM="iPhoneSimulator"
        if [ "${ARCH}" == "x86_64" ] ;
        then
          CONFIGURE_FOR="darwin64-x86_64-cc"
        fi
      else
        sed -ie "s!static volatile sig_atomic_t intr_signal;!static volatile intr_signal;!" "crypto/ui/ui_openssl.c"
        PLATFORM="iPhoneOS"
      fi
      export CROSS_TOP="${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer"
      export CROSS_SDK="${PLATFORM}${SDKVERSION}.sdk"
      echo "Building openssl-${VERSION} for ${PLATFORM} ${SDKVERSION} ${ARCH}"
      echo "Please stand by..."
      export CC="${DEVELOPER}/usr/bin/gcc -arch ${ARCH} -miphoneos-version-min=${MIN_SDKVERSION} -fembed-bitcode"
      mkdir -p "${CURRENTPATH}/bin/${PLATFORM}${SDKVERSION}-${ARCH}.sdk"
      LOG="${CURRENTPATH}/bin/${PLATFORM}${SDKVERSION}-${ARCH}.sdk/build-openssl-${VERSION}.log"
      LIPO_LIBSSL="${LIPO_LIBSSL} ${CURRENTPATH}/bin/${PLATFORM}${SDKVERSION}-${ARCH}.sdk/lib/libssl.a"
      LIPO_LIBCRYPTO="${LIPO_LIBCRYPTO} ${CURRENTPATH}/bin/${PLATFORM}${SDKVERSION}-${ARCH}.sdk/lib/libcrypto.a"
      ./Configure ${CONFIGURE_FOR} --openssldir="${CURRENTPATH}/bin/${PLATFORM}${SDKVERSION}-${ARCH}.sdk" > "${LOG}" 2>&1
      sed -ie "s!^CFLAG=!CFLAG=-isysroot ${CROSS_TOP}/SDKs/${CROSS_SDK} !" "Makefile"
      make >> "${LOG}" 2>&1
      make all install_sw >> "${LOG}" 2>&1
      make clean >> "${LOG}" 2>&1
    done
    echo "Build library..."
    rm -rf "${BASEPATH}/lib/"
    mkdir -p "${BASEPATH}/lib/"
    lipo -create ${LIPO_LIBSSL}    -output "${BASEPATH}/lib/libssl.a"
    lipo -create ${LIPO_LIBCRYPTO} -output "${BASEPATH}/lib/libcrypto.a"
    echo "Copying headers..."
    rm -rf "${BASEPATH}/opensslIncludes/"
    mkdir -p "${BASEPATH}/opensslIncludes/"
    cp -RL "${CURRENTPATH}/openssl-${VERSION}/include/openssl" "${BASEPATH}/opensslIncludes/"
    cd "${BASEPATH}"
    echo "Building done."
    echo "Cleaning up..."
    rm -rf "${CURRENTPATH}"
    echo "Done."
  CMD

. Он генерирует следующее сообщение об ошибке: cp:file.tgz: Нет такого файла или каталога

Думая о следующей строке, где он терпит неудачу: cp "file.tgz" "$ {CURRENTPATH} /file.tgz"

Я запустил с включенным параметром --verbose, и я вижу, что файл загружается, не знаю, где, но появляется команда curl, показывающая успешную загрузку.

Любые идеи покак отладить мою проблему?

Thx

1 Ответ

0 голосов
/ 20 июня 2018

Разобрался, как двигаться вперед.Модуль openssl-ios-bitcode, который я использовал, имеет оператор prepare_command, который предполагает, что файл, загруженный с OpenSSL.org, будет оставаться файлом tar gz при загрузке.

Кажется, что где-то в дальнейшем поведение Cocoapodsизменен, и загруженный файл tar gz будет автоматически взорван.Чтобы подготовить это, нужно было обновить инструкцию prepare_command.

В процессе решения этой проблемы я создал свои собственные fork и pod .

Еще одна побочная проблема, с которой я столкнулся, заключается в том, что примеры для проверки квитанций в iOS полагаются на вспомогательные функции, чтобы получить объединение внутри структуры pkcs7_st.Я нашел несколько более свежих примеров того, как это исправить, в некоторых блогах и скопировал эти примеры в новый репозиторий на GitHub .Он пытался превратить эти вспомогательные функции в отдельный модуль, но не смог решить некоторые проблемы с модулем.

...