Skip to content

Commit

Permalink
Installer: build debian bundle from a local clone (Azure#28)
Browse files Browse the repository at this point in the history
  • Loading branch information
yugangw-msft authored Aug 14, 2017
1 parent cebafe6 commit 157ca06
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 18 deletions.
47 changes: 34 additions & 13 deletions packaged_releases/debian/debian_build.sh
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
set -ex

: "${CLI_VERSION:?CLI_VERSION environment variable not set.}"
: "${CLI_DOWNLOAD_SHA256:?CLI_DOWNLOAD_SHA256 environment variable not set.}"
: "${BUILD_ARTIFACT_DIR:?BUILD_ARTIFACT_DIR environment variable not set.}"

if [ -z "$1" ]
Expand All @@ -16,24 +15,47 @@ if [ -z "$1" ]
exit 1
fi

local_repo=$2
if [ -z "$local_repo" ]
then
: "${CLI_DOWNLOAD_SHA256:?CLI_DOWNLOAD_SHA256 environment variable not set.}"
fi

sudo apt-get update

debian_directory_creator=$1

# Install dependencies for the build
sudo apt-get install -y libssl-dev libffi-dev python3-dev debhelper
# Download, Extract, Patch, Build CLI
tmp_pkg_dir=$(mktemp -d)
working_dir=$(mktemp -d)
source_archive=$working_dir/azure-cli-${CLI_VERSION}.tar.gz
source_dir=$working_dir/azure-cli-${CLI_VERSION}
cd $working_dir
wget https://azurecliprod.blob.core.windows.net/releases/azure-cli_packaged_${CLI_VERSION}.tar.gz -qO $source_archive
echo "$CLI_DOWNLOAD_SHA256 $source_archive" | sha256sum -c -
mkdir $source_dir
# Extract archive
archive_extract_dir=$(mktemp -d)
tar -xvzf $source_archive -C $archive_extract_dir
cp -r $archive_extract_dir/azure-cli_packaged_${CLI_VERSION}/* $source_dir
if [ -z "$local_repo" ]
then
source_archive=$working_dir/azure-cli-${CLI_VERSION}.tar.gz
source_dir=$working_dir/azure-cli-${CLI_VERSION}
deb_file=$working_dir/azure-cli_${CLI_VERSION}-1_all.deb
az_completion_file=$source_dir/az.completion
wget https://azurecliprod.blob.core.windows.net/releases/azure-cli_packaged_${CLI_VERSION}.tar.gz -qO $source_archive
echo "$CLI_DOWNLOAD_SHA256 $source_archive" | sha256sum -c -
mkdir $source_dir
# Extract archive
archive_extract_dir=$(mktemp -d)
tar -xvzf $source_archive -C $archive_extract_dir
cp -r $archive_extract_dir/azure-cli_packaged_${CLI_VERSION}/* $source_dir
else
source_dir=$local_repo
deb_file=$local_repo/../azure-cli_${CLI_VERSION}-1_all.deb
az_completion_file=$source_dir/packaged_releases/az.completion
# clean up old build output
if [ -d "$source_dir/debian" ]
then
rm -rf $source_dir/debian
fi
cp $local_repo/privates/*.whl $tmp_pkg_dir
fi

# Build Python from source and include
python_dir=$(mktemp -d)
python_archive=$(mktemp)
Expand All @@ -47,7 +69,6 @@ make
# required to run the 'make install'
sudo apt-get install -y zlib1g-dev
make install
tmp_pkg_dir=$(mktemp -d)

# note: This installation step could happen in debian/rules but was unable to escape $ char.
# It does not affect the built .deb file though.
Expand All @@ -60,11 +81,11 @@ mkdir $source_dir/debian
# Create temp dir for the debian/ directory used for CLI build.
cli_debian_dir_tmp=$(mktemp -d)

$debian_directory_creator $cli_debian_dir_tmp $source_dir/az.completion $source_dir
$debian_directory_creator $cli_debian_dir_tmp $az_completion_file $source_dir
cp -r $cli_debian_dir_tmp/* $source_dir/debian
cd $source_dir
dpkg-buildpackage -us -uc
echo "The archive is available at $working_dir/azure-cli_${CLI_VERSION}-1_all.deb"
cp $working_dir/azure-cli_${CLI_VERSION}-1_all.deb ${BUILD_ARTIFACT_DIR}
cp $deb_file ${BUILD_ARTIFACT_DIR}
echo "The archive has also been copied to ${BUILD_ARTIFACT_DIR}"
echo "Done."
Empty file modified packaged_releases/debian/debian_dir_creator.sh
100644 → 100755
Empty file.
16 changes: 11 additions & 5 deletions packaged_releases/windows/scripts/build_local.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ if "%CLIVERSION%"=="" (
echo Please set the CLIVERSION environment variable, e.g. 2.0.13
goto ERROR
)
set PYTHON_VERSION=3.6.1

set WIX_DOWNLOAD_URL="https://azurecliprod.blob.core.windows.net/msi/wix310-binaries-mirror.zip"

Expand All @@ -24,6 +25,12 @@ set WIX_DIR=%HOMEDRIVE%%HOMEPATH%\zwix
set REPO_ROOT=%~dp0..\..\..

:: look for python 3.x so we can build into the installer
if not "%1"=="" (
set PYTHON_DIR=%1
set PYTHON_EXE=%1\python.exe
goto PYTHON_FOUND
)

FOR /f %%i IN ('where python') DO (
set PY_FILE_DRIVE=%%~di
set PY_FILE_PATH=%%~pi
Expand All @@ -32,13 +39,13 @@ FOR /f %%i IN ('where python') DO (
set PYTHON_DIR=!PY_FILE_DRIVE!!PY_FILE_PATH!
FOR /F "delims=" %%j IN ('!PYTHON_EXE! --version') DO (
set PYTHON_VER=%%j
echo.!PYTHON_VER!|findstr /C:"3." >nul 2>&1
echo.!PYTHON_VER!|findstr /C:"%PYTHON_VERSION%" >nul 2>&1
if not errorlevel 1 (
goto PYTHON_FOUND
)
)
)
echo python 3.x is needed to create installer.
echo python %PYTHON_VERSION% is needed to create installer.
exit /b 1
:PYTHON_FOUND
echo Python Executables: %PYTHON_DIR%, %PYTHON_EXE%
Expand Down Expand Up @@ -82,6 +89,7 @@ robocopy %PYTHON_DIR% %BUILDING_DIR% /s /NFL /NDL

:: Build & install all the packages with bdist_wheel
%BUILDING_DIR%\python %~dp0build-packages.py %TEMP_SCRATCH_FOLDER% %REPO_ROOT%
if %errorlevel% neq 0 goto ERROR
:: Install them to the temp folder so to be packaged
%BUILDING_DIR%\python.exe -m pip install -f %TEMP_SCRATCH_FOLDER% --no-cache-dir azure-cli
%BUILDING_DIR%\python.exe -m pip install --force-reinstall --upgrade azure-nspkg azure-mgmt-nspkg
Expand All @@ -100,9 +108,7 @@ if %errorlevel% neq 0 goto ERROR
echo Building MSI...
msbuild /t:rebuild /p:Configuration=Release %REPO_ROOT%\packaged_releases\windows\azure-cli.wixproj

if not "%1"=="-noprompt" (
start %OUTPUT_DIR%
)
start %OUTPUT_DIR%

goto END

Expand Down
1 change: 1 addition & 0 deletions packaged_releases/windows/scripts/prepareBuild.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ if "%CLIVERSION%"=="" (
goto ERROR
)

::when change to a later version, please update ones in build_local.cmd
set PYTHON_VERSION=3.6.1

pushd %~dp0..\
Expand Down

0 comments on commit 157ca06

Please sign in to comment.