conda-forge / tensorflow-feedstock

A conda-smithy repository for tensorflow.
BSD 3-Clause "New" or "Revised" License
91 stars 81 forks source link

instructions to build locally #291

Open ngam opened 1 year ago

ngam commented 1 year ago

Comment:

For OSX, from xhochy:

(Note this deletes ~/.condarc)

% cat nightly.sh build-logged.sh
#!/bin/bash

set -e

arch -x86_64 bash ./build-logged.sh osx_64_numpy1.18python3.7.____cpython
arch -x86_64 bash ./build-logged.sh osx_64_numpy1.18python3.8.____cpython
arch -x86_64 bash ./build-logged.sh osx_64_numpy1.19python3.9.____cpython
arch -x86_64 bash ./build-logged.sh osx_64_numpy1.21python3.10.____cpython
bash ./build-logged.sh osx_arm64_numpy1.19python3.8.____cpython
bash ./build-logged.sh osx_arm64_numpy1.19python3.9.____cpython
bash ./build-logged.sh osx_arm64_numpy1.21python3.10.____cpython
#!/bin/bash

set -exuo pipefail

VARIANT=$1

gh repo clone conda-forge/tensorflow-feedstock tensorflow-feedstock-${VARIANT}
pushd tensorflow-feedstock-${VARIANT}
gh pr checkout 189
rm -f ~/.condarc
OSX_SDK_DIR=/opt ./build-locally.py ${VARIANT} 2>&1 | tee ${VARIANT}.log
gh gist create ${VARIANT}.log

For Linux, from hmaarrfk:

#!/usr/env/bin bash

set -ex

docker system prune --force
configs=$(find .ci_support/ -type f -name 'linux_64_*' -printf "%p ")

# Assuming a powerful enough machine with many cores
# 10 seems to be a good point where things don't run out of RAM too much.
export CPU_COUNT=10

mkdir -p build_artifacts

for config_filename in $configs; do
    filename=$(basename ${config_filename})
    config=${filename%.*}
    if [ -f build_artifacts/conda-forge-build-done-${config} ]; then
        echo skipped $config
        continue
    fi

    python build-locally.py $config | tee build_artifacts/${config}-log.txt

    if [ ! -f build_artifacts/conda-forge-build-done-${config} ]; then
        echo "it seems there was a build failure. I'm going to stop now."
        echo The failure seems to have originated from
        echo ${config}
        exit 1
    fi
    # docker images get quite big clean them up after each build to save your disk....
    docker system prune --force
done

zip build_artifacts/log_files.zip build_artifacts/*-log.txt
hmaarrfk commented 1 year ago

Adapting the command below accordingly can be useful in uploading all the generated packages:

LABEL=cfep03
DELEGATE=channel_to_copy_from
PACKAGE_VERSION=VERSION
for package in tensorflow-base tensorflow tensorflow-estimator libtensorflow libtensorflow_cc tensorflow-cpu tensorflow-gpu; do
  anaconda copy --from-label ${LABEL} --to-label main --to-owner conda-forge ${DELEGATE}/${package}/${PACKAGE_VERSION}
done
Tobias-Fischer commented 1 year ago

The instructions to build linux-aarch64 on an osx-arm64 machine (nearly identical to linux-64 above, just replacing the non-posix printf with awk):

#!/usr/env/bin bash

set -ex

docker system prune --force
configs=$(find .ci_support/ -type f -name 'linux_aarch64_*' | awk '{printf "%s ", $0}')

# Assuming a powerful enough machine with many cores
# 10 seems to be a good point where things don't run out of RAM too much.
export CPU_COUNT=6

mkdir -p build_artifacts

for config_filename in $configs; do
    filename=$(basename ${config_filename})
    config=${filename%.*}
    if [ -f build_artifacts/conda-forge-build-done-${config} ]; then
        echo skipped $config
        continue
    fi

    python build-locally.py $config | tee build_artifacts/${config}-log.txt

    if [ ! -f build_artifacts/conda-forge-build-done-${config} ]; then
        echo "it seems there was a build failure. I'm going to stop now."
        echo The failure seems to have originated from
        echo ${config}
        exit 1
    fi
    # docker images get quite big clean them up after each build to save your disk....
    docker system prune --force
done

zip build_artifacts/log_files.zip build_artifacts/*-log.txt
hmaarrfk commented 1 year ago

Logs for #311

Editing the top comment is being buggy. all builds completed. copying over now.

for package in tensorflow-base tensorflow tensorflow-estimator libtensorflow libtensorflow_cc tensorflow-cpu tensorflow-gpu; do
  anaconda copy --from-label cfep03 --to-label main --to-owner conda-forge mark.harfouche/${package}/2.11.1
done
ngam commented 11 months ago

I recently used the following to build in #325

Setup

SETUP: `~$ cat nightly.sh build-logged.sh` ```bash #!/bin/bash set -e arch -x86_64 bash ./build-logged.sh osx_64_numpy1.21python3.10.____cpython arch -x86_64 bash ./build-logged.sh osx_64_numpy1.21python3.8.____cpython arch -x86_64 bash ./build-logged.sh osx_64_numpy1.21python3.9.____cpython arch -x86_64 bash ./build-logged.sh osx_64_numpy1.23python3.11.____cpython bash ./build-logged.sh osx_arm64_numpy1.21python3.10.____cpython bash ./build-logged.sh osx_arm64_numpy1.21python3.8.____cpython bash ./build-logged.sh osx_arm64_numpy1.21python3.9.____cpython bash ./build-logged.sh osx_arm64_numpy1.23python3.11.____cpython ``` ```bash set -exuo pipefail VARIANT=$1 gh repo clone conda-forge/tensorflow-feedstock tensorflow-feedstock-${VARIANT} pushd tensorflow-feedstock-${VARIANT} gh pr checkout 325 CPU_COUNT=10 OSX_SDK_DIR=/opt ./build-locally.py ${VARIANT} 2>&1 | tee ${VARIANT}.log gh gist create ${VARIANT}.log ```

hmaarrfk commented 5 months ago

xhochy specific instructions to copy


PACKAGE_VERSION=....
LABEL=main

# Typically linux
DELEGATE=uwe.korn-tf-gpu
for package in tensorflow-base tensorflow tensorflow-estimator libtensorflow libtensorflow_cc tensorflow-cpu tensorflow-gpu; do
  anaconda copy --from-label ${LABEL} --to-label main --to-owner conda-forge ${DELEGATE}/${package}/${PACKAGE_VERSION}
done

# OSX -- GPU builds expected to return error
DELEGATE=uwe.korn-tf-experimental
for package in tensorflow-base tensorflow tensorflow-estimator libtensorflow libtensorflow_cc tensorflow-cpu tensorflow-gpu; do
  anaconda copy --from-label ${LABEL} --to-label main --to-owner conda-forge ${DELEGATE}/${package}/${PACKAGE_VERSION}
done