@@ -46,7 +46,6 @@ debug_topic() {
46
46
echo " [DEBUG] -----> $* "
47
47
fi
48
48
}
49
-
50
49
error () { echo " ! $* " ; >&2 exit 1 ; }
51
50
indent () {
52
51
local command ; command=' s/^/ /'
@@ -58,13 +57,13 @@ indent() {
58
57
59
58
BUILD_DIR=" $1 "
60
59
CACHE_DIR=" $2 "
60
+ mkdir -p " $BUILD_DIR " " $CACHE_DIR "
61
61
# shellcheck disable=SC2034
62
62
ENV_DIR=" ${3} "
63
63
# echo "$STACK"
64
64
# echo "$SOURCE_VERSION"
65
65
# See https://devcenter.heroku.com/articles/buildpack-api#bin-compile-summary
66
66
67
- mkdir -p " $BUILD_DIR " " $CACHE_DIR "
68
67
# Store which STACK we are running on in the cache to bust the cache if it changes
69
68
if [ -f " ${CACHE_DIR} /.freetds/STACK" ]; then
70
69
CACHED_STACK=$( cat " $CACHE_DIR /.freetds/STACK" )
@@ -79,54 +78,39 @@ BIN_DIR="$(cd "$(dirname "$0")"; pwd)" # absolute path
79
78
LP_DIR=" $( cd " $( dirname " $0 " ) " ; cd ..; pwd) "
80
79
ROOT_DIR=" $( dirname " $BIN_DIR " ) "
81
80
82
- info " BIN_DIR=${BIN_DIR} , ROOT_DIR=${ROOT_DIR} , BUILD_DIR=${BUILD_DIR} , CACHE_DIR=${CACHE_DIR} , CACHED_STACK=${CACHED_STACK} pwd=$( pwd) "
83
-
84
- debug_exported_env_vars () {
85
- debug " ENV VARS"
86
- debug " ENV VARS: PATH=${PATH:- } "
87
- debug " ENV VARS: FREETDS_DIR=${FREETDS_DIR:- } "
88
- debug " ENV VARS: LD_LIBRARY_PATH=${LD_LIBRARY_PATH:- } "
89
- debug " ENV VARS: LD_RUN_PATH=${LD_RUN_PATH:- } "
90
- debug " ENV VARS: LIBRARY_PATH=${LIBRARY_PATH:- } "
91
- debug " ENV VARS: SYBASE=${SYBASE:- } "
92
- }
93
-
94
- debug_topic " debug env vars before load_env_vars"
95
- debug_exported_env_vars
81
+ info " BIN_DIR=${BIN_DIR} , ROOT_DIR=${ROOT_DIR} , BUILD_DIR=${BUILD_DIR} , CACHE_DIR=${CACHE_DIR} , STACK=${STACK} CACHED_STACK=${CACHED_STACK} pwd=$( pwd) "
96
82
97
83
load_env_vars () {
98
84
local env_var; env_var=" ${1:- } "
99
85
until [ -z " $env_var " ]; do [ -f " $ENV_DIR /$env_var " ] && export " $env_var =$( cat " $ENV_DIR /$env_var " ) " ; shift ; env_var=" ${1:- } " ; done
100
86
}
101
87
load_env_vars " FREETDS_VERSION" " FREETDS_ARCHIVE_NAME" " TDS_VERSION" " FREETDS_REBUILD" " USE_GNUTLS"
102
88
103
- debug_topic " debug env vars after load_env_vars"
104
- debug_exported_env_vars
105
-
106
89
FREETDS_VERSION=" ${FREETDS_VERSION:- 1.00.109} "
107
90
FREETDS_ARCHIVE_NAME=" ${FREETDS_ARCHIVE_NAME:- freetds-${FREETDS_VERSION} } "
108
91
TDS_VERSION=" ${TDS_VERSION:- 7.3} " # or TDSVER
109
92
USE_GNUTLS=" ${USE_GNUTLS:- --with-gnutls} "
110
93
111
- FREETDS_CACHE_DIR=" $CACHE_DIR /freetds/cache "
94
+ FREETDS_CACHE_DIR=" $CACHE_DIR "
112
95
mkdir -p " ${FREETDS_CACHE_DIR} "
113
96
CACHED_TAR=" ${FREETDS_CACHE_DIR} /freetds-${FREETDS_VERSION} -heroku.tar.bz2"
114
- if [[ " $CACHED_STACK " != " $STACK " ] ] ; then
97
+ if [ " $CACHED_STACK " != " $STACK " ] ; then
115
98
topic " Stack has changed. Clearing cache"
116
99
rm -f " $CACHED_TAR "
117
100
elif [ " ${FREETDS_REBUILD:- } " = " true" ]; then
118
101
# Default rebuild to true since I'm having issues linking the library to tiny_tds gem with a cached build.
119
102
topic " FREETDS_REBUILD is true. Clearing cache"
120
103
rm -f " $CACHED_TAR "
121
104
fi
122
-
123
105
# This installation target is in the BUILD_DIR, which means that
124
106
# it'll end up in the slug at runtime.
125
- BUILD_TARGET_DIR=" ${BUILD_DIR} /.freetds"
107
+ # Assert $BUILD_TARGET_DIR = $HOME/freetds | $BUILD_DIR/freetds # /app/freetds
108
+ BUILD_TARGET_DIR=" ${BUILD_DIR} /freetds" # /app/freetds
126
109
mkdir -p " ${BUILD_TARGET_DIR} "
127
110
128
111
# This is the path that will be used at dyno runtime, and in which we build.
129
- APP_TARGET_DIR=" ${HOME:- app} /.freetds" # /app/freetds"
112
+ # Assert $APP_TARGET_DIR = $HOME/freetds # /app/freetds
113
+ APP_TARGET_DIR=" ${HOME:- app} /freetds"
130
114
mkdir -p " ${APP_TARGET_DIR} "
131
115
132
116
configure_app_env_vars () {
@@ -135,15 +119,16 @@ configure_app_env_vars() {
135
119
136
120
# These exports must point to /app, because the profile is
137
121
# executed in a running dyno, not the buildpack environment
122
+ # Assert $APP_TARGET_DIR = $HOME/freetds # /app/freetds
138
123
cat << EOF > "${BUILD_DIR} /.profile.d/freetds.sh"
139
- export PATH="\$ {HOME}/. freetds/bin:\$ PATH"
124
+ export PATH="\$ {HOME}/freetds/bin:\$ PATH"
140
125
# tiny_tds extconf.rb uses FREETDS_DIR
141
126
# https://github.com/rails-sqlserver/tiny_tds/blob/5046755ca91594003f8b3ca541d136f3ed859973/ext/tiny_tds/extconf.rb#L36-L38
142
- export FREETDS_DIR="\$ {HOME}/. freetds"
143
- export LD_LIBRARY_PATH="\$ {HOME}/. freetds/lib:\$ {LD_LIBRARY_PATH:-}"
144
- export LD_RUN_PATH="\$ {HOME}/. freetds/lib:\$ {LD_RUN_PATH:-}"
145
- export LIBRARY_PATH="\$ {HOME}/. freetds/lib:\$ {LIBRARY_PATH:-}"
146
- export SYBASE="\$ {HOME}/. freetds"
127
+ export FREETDS_DIR="\$ {HOME}/freetds"
128
+ export LD_LIBRARY_PATH="\$ {HOME}/freetds/lib:\$ {LD_LIBRARY_PATH:-/usr/local/lib }"
129
+ export LD_RUN_PATH="\$ {HOME}/freetds/lib:\$ {LD_RUN_PATH:-/usr/local/lib }"
130
+ export LIBRARY_PATH="\$ {HOME}/freetds/lib:\$ {LIBRARY_PATH:-/usr/local/lib }"
131
+ export SYBASE="\$ {HOME}/freetds"
147
132
EOF
148
133
chmod +x " ${BUILD_DIR} /.profile.d/freetds.sh"
149
134
echo " configured APP env vars:" | indent
@@ -155,33 +140,34 @@ EOF
155
140
configure_buildpack_env_vars () {
156
141
# These exports point to the build directory, not to /app, so that
157
142
# they work for later buildpacks.
158
- # Assert $BUILD_TARGET_DIR = $HOME/. freetds # /app/freetds
159
- # Assert $APP_TARGET_DIR = $HOME/.freetds # /app/freetds
160
- export PATH =" ${HOME} /.freetds/bin: $PATH "
161
- export FREETDS_DIR =" ${HOME} /.freetds "
162
- export LD_LIBRARY_PATH =" ${HOME} /.freetds/ lib:${LD_LIBRARY_PATH :- } "
163
- export LD_RUN_PATH =" ${HOME} /.freetds/ lib:${LD_RUN_PATH :- } "
164
- export LIBRARY_PATH= " ${ HOME} /. freetds/lib: ${LIBRARY_PATH :- } "
165
- export SYBASE=" ${HOME} /.freetds "
143
+ # Assert $BUILD_TARGET_DIR = $HOME/freetds | $BUILD_DIR/ freetds # /app/freetds
144
+ export PATH= " ${BUILD_TARGET_DIR} /bin: $PATH "
145
+ export FREETDS_DIR =" ${BUILD_TARGET_DIR} "
146
+ export LD_LIBRARY_PATH =" ${BUILD_TARGET_DIR} /lib: ${LD_LIBRARY_PATH :-/ usr / local / lib} "
147
+ export LD_RUN_PATH =" ${BUILD_TARGET_DIR} / lib:${LD_RUN_PATH :-/ usr / local / lib } "
148
+ export LIBRARY_PATH =" ${BUILD_TARGET_DIR} / lib:${LIBRARY_PATH :-/ usr / local / lib } "
149
+ # Assert $APP_TARGET_DIR = $ HOME/ freetds # /app/freetds
150
+ export SYBASE=" ${APP_TARGET_DIR} "
166
151
# give environment to later buildpacks
167
152
export | grep -E -e ' (PATH|LD_LIBRARY_PATH|LD_RUN_PATH|LIBRARY_PATH|FREETDS_DIR|SYBASE)=' > " ${LP_DIR} /export"
168
153
169
154
echo " configured BUILDPACK env vars:" | indent
170
155
indent < " ${LP_DIR} /export"
171
156
172
157
topic " Rewrite package-config files"
173
- find " $BUILD_DIR /.freetds" -type f -ipath ' */pkgconfig/*.pc' | xargs --no-run-if-empty -n 1 sed -i -e ' s!^prefix=\(.*\)$!prefix=' " $BUILD_DIR " ' /.freetds\1!g'
158
+ # shellcheck disable=SC2038
159
+ find " $BUILD_DIR /freetds" -type f -ipath ' */pkgconfig/*.pc' | xargs --no-run-if-empty -n 1 sed -i -e ' s!^prefix=\(.*\)$!prefix=' " $BUILD_DIR " ' /freetds\1!g'
174
160
}
175
161
176
162
download_and_extract_freetds_archive () {
177
163
FREETDS_FILE=" $FREETDS_ARCHIVE_NAME .tar.gz"
178
164
FREETDS_URL=" https://www.freetds.org/files/stable/${FREETDS_FILE} "
179
165
# TODO(BF): Consider calculating and verifying SHA256: openssl dgst -sha256 < "$FREETDS_FILE"
180
166
curl -s " $FREETDS_URL " | tar xzvf - -C " ${BUILD_DIR} " > " ${BUILD_DIR} /build_log-unpack.log" # Can't write to the archive dir until it exists
167
+ mv " ${BUILD_DIR} /build_log-unpack.log" " ${BUILD_DIR} /${FREETDS_ARCHIVE_NAME} /"
181
168
if [ " $HEROKU_FREETDS_BUILDPACK_DEBUG " = " true" ]; then
182
169
debug " $( cat " ${BUILD_DIR} /build_log-unpack.log" ) "
183
170
fi
184
- mv " ${BUILD_DIR} /build_log-unpack.log" " ${BUILD_DIR} /${FREETDS_ARCHIVE_NAME} /"
185
171
}
186
172
187
173
build_and_install_freetds () {
@@ -246,11 +232,7 @@ cache_build_artifacts_for_future_deploys() {
246
232
main () {
247
233
topic " FreeTDS ${FREETDS_VERSION} building in ${BUILD_DIR} "
248
234
249
- debug_topic " debug env vars before configure_app_env_vars"
250
- debug_exported_env_vars
251
235
configure_app_env_vars
252
- debug_topic " debug env vars after configure_app_env_vars"
253
- debug_exported_env_vars
254
236
255
237
if [ ! -f " $CACHED_TAR " ]; then
256
238
info " Cached files not found - downloading and unpacking..."
@@ -267,14 +249,8 @@ main() {
267
249
info " Unpacking cached files..."
268
250
tar xjf " ${CACHED_TAR} " -C " ${BUILD_TARGET_DIR} " | indent
269
251
270
- debug_topic " debug env vars before configure_buildpack_env_vars"
271
- debug_exported_env_vars
272
-
273
252
configure_buildpack_env_vars
274
253
275
- debug_topic " debug env vars after configure_buildpack_env_vars"
276
- debug_exported_env_vars
277
-
278
254
info " Install of FreeTDS ${FREETDS_VERSION} complete"
279
255
}
280
256
0 commit comments