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

[Engineering] Centralize special Mac paths in InitializeEnviroment.sh #421

Merged
merged 1 commit into from
Oct 24, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 23 additions & 32 deletions Scripts/Mac/BuildGVFSForMac.sh
Original file line number Diff line number Diff line change
@@ -1,57 +1,48 @@
#!/bin/bash

. "$(dirname ${BASH_SOURCE[0]})/InitializeEnvironment.sh"

CONFIGURATION=$1
if [ -z $CONFIGURATION ]; then
CONFIGURATION=Debug
fi

SCRIPTDIR="$(dirname ${BASH_SOURCE[0]})"

# convert to an absolute path because it is required by `dotnet publish`
pushd $SCRIPTDIR
SCRIPTDIR="$(pwd)"
popd

SRCDIR=$SCRIPTDIR/../..
ROOTDIR=$SRCDIR/..
BUILDOUTPUT=$ROOTDIR/BuildOutput
PUBLISHDIR=$ROOTDIR/Publish

if [ ! -d $BUILDOUTPUT ]; then
mkdir $BUILDOUTPUT
if [ ! -d $VFS_OUTPUTDIR ]; then
mkdir $VFS_OUTPUTDIR
fi

PACKAGES=$ROOTDIR/packages

# Build the ProjFS kext and libraries
$SRCDIR/ProjFS.Mac/Scripts/Build.sh $CONFIGURATION || exit 1
echo 'Building ProjFS kext and libraries...'
$VFS_SRCDIR/ProjFS.Mac/Scripts/Build.sh $CONFIGURATION || exit 1

# Create the directory where we'll do pre build tasks
BUILDDIR=$BUILDOUTPUT/GVFS.Build
BUILDDIR=$VFS_OUTPUTDIR/GVFS.Build
if [ ! -d $BUILDDIR ]; then
mkdir $BUILDDIR || exit 1
fi

$SCRIPTDIR/DownloadGVFSGit.sh || exit 1
GITVERSION="$($SCRIPTDIR/GetGitVersionNumber.sh)"
GITPATH="$(find $PACKAGES/gitformac.gvfs.installer/$GITVERSION -type f -name *.dmg)" || exit 1
echo 'Downloading a VFS-enabled version of Git...'
$VFS_SCRIPTDIR/DownloadGVFSGit.sh || exit 1
GITVERSION="$($VFS_SCRIPTDIR/GetGitVersionNumber.sh)"
GITPATH="$(find $VFS_PACKAGESDIR/gitformac.gvfs.installer/$GITVERSION -type f -name *.dmg)" || exit 1
echo "Downloaded Git $GITVERSION"
# Now that we have a path containing the version number, generate GVFSConstants.GitVersion.cs
$SCRIPTDIR/GenerateGitVersionConstants.sh "$GITPATH" $BUILDDIR || exit 1
$VFS_SCRIPTDIR/GenerateGitVersionConstants.sh "$GITPATH" $BUILDDIR || exit 1

# If we're building the Profiling(Release) configuration, remove Profiling() for building .NET code
if [ "$CONFIGURATION" == "Profiling(Release)" ]; then
CONFIGURATION=Release
fi

dotnet restore $SRCDIR/GVFS.sln /p:Configuration=$CONFIGURATION.Mac --packages $PACKAGES || exit 1
dotnet build $SRCDIR/GVFS.sln --runtime osx-x64 --framework netcoreapp2.1 --configuration $CONFIGURATION.Mac /maxcpucount:1 || exit 1
dotnet publish $SRCDIR/GVFS.sln /p:Configuration=$CONFIGURATION.Mac /p:Platform=x64 --runtime osx-x64 --framework netcoreapp2.1 --self-contained --output $PUBLISHDIR /maxcpucount:1 || exit 1
echo 'Restoring packages...'
dotnet restore $VFS_SRCDIR/GVFS.sln /p:Configuration=$CONFIGURATION.Mac --packages $VFS_PACKAGESDIR || exit 1
dotnet build $VFS_SRCDIR/GVFS.sln --runtime osx-x64 --framework netcoreapp2.1 --configuration $CONFIGURATION.Mac /maxcpucount:1 || exit 1
dotnet publish $VFS_SRCDIR/GVFS.sln /p:Configuration=$CONFIGURATION.Mac /p:Platform=x64 --runtime osx-x64 --framework netcoreapp2.1 --self-contained --output $VFS_PUBLISHDIR /maxcpucount:1 || exit 1

NATIVEDIR=$SRCDIR/GVFS/GVFS.Native.Mac
xcodebuild -configuration $CONFIGURATION -workspace $NATIVEDIR/GVFS.Native.Mac.xcworkspace build -scheme GVFS.Native.Mac -derivedDataPath $ROOTDIR/BuildOutput/GVFS.Native.Mac || exit 1
NATIVEDIR=$VFS_SRCDIR/GVFS/GVFS.Native.Mac
xcodebuild -configuration $CONFIGURATION -workspace $NATIVEDIR/GVFS.Native.Mac.xcworkspace build -scheme GVFS.Native.Mac -derivedDataPath $VFS_OUTPUTDIR/GVFS.Native.Mac || exit 1

echo 'Copying native binaries to Publish directory'
cp $BUILDOUTPUT/GVFS.Native.Mac/Build/Products/$CONFIGURATION/GVFS.ReadObjectHook $PUBLISHDIR || exit 1
cp $BUILDOUTPUT/GVFS.Native.Mac/Build/Products/$CONFIGURATION/GVFS.VirtualFileSystemHook $PUBLISHDIR || exit 1
echo 'Copying native binaries to Publish directory...'
cp $VFS_OUTPUTDIR/GVFS.Native.Mac/Build/Products/$CONFIGURATION/GVFS.ReadObjectHook $VFS_PUBLISHDIR || exit 1
cp $VFS_OUTPUTDIR/GVFS.Native.Mac/Build/Products/$CONFIGURATION/GVFS.VirtualFileSystemHook $VFS_PUBLISHDIR || exit 1

$PUBLISHDIR/GVFS.UnitTests || exit 1
$VFS_PUBLISHDIR/GVFS.UnitTests || exit 1
6 changes: 3 additions & 3 deletions Scripts/Mac/CleanupFunctionalTests.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
SCRIPTDIR=$(dirname ${BASH_SOURCE[0]})
SRCDIR=$SCRIPTDIR/../..
$SRCDIR/ProjFS.Mac/Scripts/UnloadPrjFSKext.sh
. "$(dirname ${BASH_SOURCE[0]})/InitializeEnvironment.sh"

$VFS_SRCDIR/ProjFS.Mac/Scripts/UnloadPrjFSKext.sh

sudo rm -r /GVFS.FT

Expand Down
13 changes: 6 additions & 7 deletions Scripts/Mac/DownloadGVFSGit.sh
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
SCRIPTDIR="$(dirname ${BASH_SOURCE[0]})"
SRCDIR=$SCRIPTDIR/../..
BUILDDIR=$SRCDIR/../BuildOutput/GVFS.Build
PACKAGESDIR=$SRCDIR/../packages
GITVERSION="$($SCRIPTDIR/GetGitVersionNumber.sh)"
cp $SRCDIR/nuget.config $BUILDDIR
. "$(dirname ${BASH_SOURCE[0]})/InitializeEnvironment.sh"

BUILDDIR=$VFS_OUTPUTDIR/GVFS.Build
GITVERSION="$($VFS_SCRIPTDIR/GetGitVersionNumber.sh)"
cp $VFS_SRCDIR/nuget.config $BUILDDIR
dotnet new classlib -n GVFS.Restore -o $BUILDDIR --force
dotnet add $BUILDDIR/GVFS.Restore.csproj package --package-directory $PACKAGESDIR GitForMac.GVFS.Installer --version $GITVERSION
dotnet add $BUILDDIR/GVFS.Restore.csproj package --package-directory $VFS_PACKAGESDIR GitForMac.GVFS.Installer --version $GITVERSION
8 changes: 2 additions & 6 deletions Scripts/Mac/GVFS_Clone.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#!/bin/bash
. "$(dirname ${BASH_SOURCE[0]})/InitializeEnvironment.sh"

REPOURL=$1

Expand All @@ -7,9 +8,4 @@ if [ -z $CONFIGURATION ]; then
CONFIGURATION=Debug
fi

SCRIPTDIR=$(dirname ${BASH_SOURCE[0]})

ROOTDIR=$SCRIPTDIR/../../..
PUBLISHDIR=$ROOTDIR/Publish

$PUBLISHDIR/gvfs clone $REPOURL ~/GVFSTest --local-cache-path ~/GVFSTest/.gvfsCache --no-mount --no-prefetch
$VFS_PUBLISHDIR/gvfs clone $REPOURL ~/GVFSTest --local-cache-path ~/GVFSTest/.gvfsCache --no-mount --no-prefetch
9 changes: 3 additions & 6 deletions Scripts/Mac/GVFS_Mount.sh
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
#!/bin/bash

. "$(dirname ${BASH_SOURCE[0]})/InitializeEnvironment.sh"

CONFIGURATION=$1
if [ -z $CONFIGURATION ]; then
CONFIGURATION=Debug
fi

SCRIPTDIR=$(dirname ${BASH_SOURCE[0]})

ROOTDIR=$SCRIPTDIR/../../..
PUBLISHDIR=$ROOTDIR/Publish

$PUBLISHDIR/gvfs mount ~/GVFSTest
$VFS_PUBLISHDIR/gvfs mount ~/GVFSTest
9 changes: 3 additions & 6 deletions Scripts/Mac/GVFS_Unmount.sh
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
#!/bin/bash

. "$(dirname ${BASH_SOURCE[0]})/InitializeEnvironment.sh"

CONFIGURATION=$1
if [ -z $CONFIGURATION ]; then
CONFIGURATION=Debug
fi

SCRIPTDIR=$(dirname ${BASH_SOURCE[0]})

ROOTDIR=$SCRIPTDIR/../../..
PUBLISHDIR=$ROOTDIR/Publish

$PUBLISHDIR/gvfs unmount ~/GVFSTest
$VFS_PUBLISHDIR/gvfs unmount ~/GVFSTest
5 changes: 3 additions & 2 deletions Scripts/Mac/GetGitVersionNumber.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
SCRIPTDIR="$(dirname ${BASH_SOURCE[0]})"
GVFSPROPS=$SCRIPTDIR/../../GVFS/GVFS.Build/GVFS.props
. "$(dirname ${BASH_SOURCE[0]})/InitializeEnvironment.sh"

GVFSPROPS=$VFS_SRCDIR/GVFS/GVFS.Build/GVFS.props
GITVERSION="$(cat $GVFSPROPS | grep GitPackageVersion | grep -Eo '[0-9.]+(-\w+)?')"
echo $GITVERSION
13 changes: 13 additions & 0 deletions Scripts/Mac/InitializeEnvironment.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
SCRIPTDIR="$(dirname ${BASH_SOURCE[0]})"

# convert to an absolute path because it is required by `dotnet publish`
pushd $SCRIPTDIR &>/dev/null
export VFS_SCRIPTDIR="$(pwd)"
popd &>/dev/null

export VFS_SRCDIR=$VFS_SCRIPTDIR/../..

VFS_ENLISTMENTDIR=$VFS_SRCDIR/..
export VFS_OUTPUTDIR=$VFS_ENLISTMENTDIR/BuildOutput
export VFS_PUBLISHDIR=$VFS_ENLISTMENTDIR/Publish
export VFS_PACKAGESDIR=$VFS_ENLISTMENTDIR/packages
15 changes: 6 additions & 9 deletions Scripts/Mac/NukeBuildOutputs.sh
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
#!/bin/bash

SCRIPTDIR=$(dirname ${BASH_SOURCE[0]})
. "$(dirname ${BASH_SOURCE[0]})/InitializeEnvironment.sh"

SRCDIR=$SCRIPTDIR/../..
ROOTDIR=$SRCDIR/..
sudo rm -Rf $VFS_OUTPUTDIR
rm -Rf $VFS_PACKAGESDIR
rm -Rf $VFS_PUBLISHDIR

sudo rm -Rf $ROOTDIR/BuildOutput
rm -Rf $ROOTDIR/packages
rm -Rf $ROOTDIR/Publish

echo git --work-tree=$SRCDIR clean -Xdf -n
git --work-tree=$SRCDIR clean -Xdf -n
echo git --work-tree=$VFS_SRCDIR clean -Xdf -n
git --work-tree=$VFS_SRCDIR clean -Xdf -n
7 changes: 3 additions & 4 deletions Scripts/Mac/PrepFunctionalTests.sh
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
#!/bin/bash

SCRIPTDIR=$(dirname ${BASH_SOURCE[0]})
. "$(dirname ${BASH_SOURCE[0]})/InitializeEnvironment.sh"

# Ensure the kext isn't loaded before installing Git
$SCRIPTDIR/../../ProjFS.Mac/Scripts/UnloadPrjFSKext.sh
$VFS_SRCDIR/ProjFS.Mac/Scripts/UnloadPrjFSKext.sh

# Install GVFS-aware Git (that was downloaded by the build script)
GITVERSION="$($SCRIPTDIR/GetGitVersionNumber.sh)"
ROOTDIR=$SCRIPTDIR/../../..
GITDIR=$ROOTDIR/packages/gitformac.gvfs.installer/$GITVERSION/tools
GITDIR=$VFS_PACKAGESDIR/gitformac.gvfs.installer/$GITVERSION/tools
if [[ ! -d $GITDIR ]]; then
echo "GVFS-aware Git package not found. Run BuildGVFSForMac.sh and try again"
exit 1
Expand Down
6 changes: 4 additions & 2 deletions Scripts/Mac/RunFunctionalTests.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
#!/bin/bash

. "$(dirname ${BASH_SOURCE[0]})/InitializeEnvironment.sh"

CONFIGURATION=$1
if [ -z $CONFIGURATION ]; then
CONFIGURATION=Debug
Expand All @@ -14,5 +16,5 @@ PUBLISHDIR=$ROOTDIR/Publish
sudo mkdir /GVFS.FT
sudo chown $USER /GVFS.FT

$SRCDIR/ProjFS.Mac/Scripts/LoadPrjFSKext.sh
$PUBLISHDIR/GVFS.FunctionalTests --full-suite $2
$VFS_SRCDIR/ProjFS.Mac/Scripts/LoadPrjFSKext.sh
$VFS_PUBLISHDIR/GVFS.FunctionalTests --full-suite $2