#!/bin/bash # Copyright 2012 The Go Authors. All rights reserved. # Use of this source code is governed by a BSD-style # license that can be found in the LICENSE file. # Run this script in your app root directory, the one containing # the app.yaml file. Then point appcfg.py or dev_appserver.py # at './tmp' instead of '.'. # # It creates a symlink forest in a subdirectory named 'tmp' that # includes all the files from packages under your app root as # well as any packages from your $GOPATH that are needed by # the app packages. This makes deployment to App Engine # bring in just the packages you need, without manual chasing # of dependencies. Perhaps some day appcfg.py and dev_appserver.py # will work this way by default. set -e rm -rf tmp dirs=$(find . -type d) mkdir tmp for i in * do case "$i" in tmp | *.go) ;; *) ln -s ../$i tmp/$i esac done # Like App Engine export GOOS=linux export GOARCH=amd64 mkdir tmp/_go_top cp $(go list -f '{{range .GoFiles}}{{.}} {{end}}') tmp/_go_top dirs=$(go list -e -f '{{if not .Standard}}{{.ImportPath}} {{end}}' $(go list -f '{{range .Deps}}{{.}} {{end}}' $dirs)) for import in $dirs do case "$import" in appengine | appengine/*) ;; *) mkdir -p tmp/$import files=$(go list -f '{{range .GoFiles}}{{$.Dir}}/{{.}} {{end}}' $import) ln -s $files tmp/$import 2>&1 | grep -v 'is a directory' || true # ignore subdirectory warnings esac done