#!/bin/bash # # Copyright (c) 2018 Wind River Systems, Inc. # # SPDX-License-Identifier: Apache-2.0 # # This utility builds a set of python wheels for upstream packages, # reading a source list from wheels.cfg # CFGFILE=/wheels.cfg OUTPUTDIR=/wheels FAILED_LOG=$OUTPUTDIR/failed.lst # # Function to log the start of a build # function startlog { cat <> $FAILED_LOG continue fi pushd $basedir if [ $? -ne 0 ]; then echo "Failure running: pushd $basedir" echo $wheelname >> $FAILED_LOG continue fi git checkout $branch if [ $? -ne 0 ]; then echo "Failure running: git checkout $branch" echo $wheelname >> $FAILED_LOG continue fi if [ "$fix" == "fix_setup" ]; then fix_setup fi # Build the wheel python setup.py bdist_wheel cp dist/$wheelname $OUTPUTDIR || echo $wheelname >> $FAILED_LOG popd done } # # Function to download a source tarball and build a wheel. # function from_tar { sed 's/#.*//' $CFGFILE | awk -F '|' '$2 == "tar" { print $0; }' | \ while IFS='|' read wheelname stype wgetsrc basedir fix; do startlog $wheelname if [ -f $OUTPUTDIR/$wheelname ]; then echo "$wheelname already exists" continue fi tarball=$(basename $wgetsrc) if [[ $tarball =~ gz$ ]]; then taropts="xzf" elif [[ $tarball =~ bz2$ ]]; then taropts="xjf" else taropts="xf" fi wget $wgetsrc if [ $? -ne 0 ]; then echo "Failure running: wget $wgetsrc" echo $wheelname >> $FAILED_LOG continue fi tar $taropts $(basename $wgetsrc) if [ $? -ne 0 ]; then echo "Failure running: tar $taropts $(basename $wgetsrc)" echo $wheelname >> $FAILED_LOG continue fi pushd $basedir if [ $? -ne 0 ]; then echo "Failure running: pushd $basedir" echo $wheelname >> $FAILED_LOG continue fi if [ "$fix" == "fix_setup" ]; then fix_setup fi # Build the wheel python setup.py bdist_wheel cp dist/$wheelname $OUTPUTDIR || echo $wheelname >> $FAILED_LOG popd done } # # Function to download a source zip file and build a wheel. # function from_zip { sed 's/#.*//' $CFGFILE | awk -F '|' '$2 == "zip" { print $0; }' | \ while IFS='|' read wheelname stype wgetsrc basedir fix; do startlog $wheelname if [ -f $OUTPUTDIR/$wheelname ]; then echo "$wheelname already exists" continue fi wget $wgetsrc if [ $? -ne 0 ]; then echo "Failure running: wget $wgetsrc" echo $wheelname >> $FAILED_LOG continue fi unzip $(basename $wgetsrc) if [ $? -ne 0 ]; then echo "Failure running: unzip $(basename $wgetsrc)" echo $wheelname >> $FAILED_LOG continue fi pushd $basedir if [ $? -ne 0 ]; then echo "Failure running: pushd $basedir" echo $wheelname >> $FAILED_LOG continue fi if [ "$fix" == "fix_setup" ]; then fix_setup fi # Build the wheel python setup.py bdist_wheel cp dist/$wheelname $OUTPUTDIR || echo $wheelname >> $FAILED_LOG popd done } # # Function to download an existing wheel from pypi. # function from_pypi { sed 's/#.*//' $CFGFILE | awk -F '|' '$2 == "pypi" { print $0; }' | \ while IFS='|' read wheelname stype wgetsrc; do startlog $wheelname if [ -f $OUTPUTDIR/$wheelname ]; then echo "$wheelname already exists" continue fi wget $wgetsrc if [ $? -ne 0 ]; then echo "Failure running: wget $wgetsrc" echo $wheelname >> $FAILED_LOG continue fi cp $wheelname $OUTPUTDIR || echo $wheelname >> $FAILED_LOG done } rm -f $FAILED_LOG mkdir -p /build-wheels cd /build-wheels from_git from_tar from_zip from_pypi if [ -f $FAILED_LOG ]; then let -i failures=$(cat $FAILED_LOG | wc -l) cat <