summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAllen George <allen.george@gmail.com>2018-11-30 15:06:44 -0500
committerJames E. King III <jking@apache.org>2018-12-05 16:09:10 -0500
commit54e9587117595d3ecbde1bf8065dc09197808bdb (patch)
tree08134965f6570bc79a3a5777ca88d5420084c0a8
parent30d3125cc277b6e42034d5ac72fd3e5f248f353a (diff)
downloadthrift-54e9587117595d3ecbde1bf8065dc09197808bdb.tar.gz
THRIFT-4676: Fix intermittent CL build failures
-rw-r--r--.gitignore9
-rwxr-xr-xtutorial/cl/Makefile.am36
l---------tutorial/cl/ensure-externals.sh1
-rw-r--r--tutorial/cl/load-locally.lisp22
-rw-r--r--tutorial/cl/make-tutorial-client.lisp2
-rw-r--r--tutorial/cl/make-tutorial-server.lisp2
6 files changed, 61 insertions, 11 deletions
diff --git a/.gitignore b/.gitignore
index 0e7eedcd8..b7f7b454b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -339,8 +339,17 @@ project.lock.json
/test/rs/target/
/test/rs/*.iml
/test/rs/**/*.iml
+/lib/cl/backport-update.zip
+/lib/cl/lib
+/tutorial/cl/quicklisp.lisp
+/tutorial/cl/externals/
+/tutorial/cl/quicklisp/
/tutorial/cl/TutorialClient
/tutorial/cl/TutorialServer
+/tutorial/cl/backport-update.zip
+/tutorial/cl/lib/
+/tutorial/cl/shared-implementation.fasl
+/tutorial/cl/tutorial-implementation.fasl
/tutorial/cpp/TutorialClient
/tutorial/cpp/TutorialServer
/tutorial/c_glib/tutorial_client
diff --git a/tutorial/cl/Makefile.am b/tutorial/cl/Makefile.am
index fb6e83a42..2b2013a3c 100755
--- a/tutorial/cl/Makefile.am
+++ b/tutorial/cl/Makefile.am
@@ -15,19 +15,30 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-#
+
+setup-local-lisp-env: ensure-externals.sh
+ bash ensure-externals.sh
gen-cl: $(top_srcdir)/tutorial/tutorial.thrift
$(THRIFT) --gen cl -r $<
-TutorialServer: make-tutorial-server.lisp
- $(SBCL) --script make-tutorial-server.lisp
+ALL_FILE_PREREQS = \
+ load-locally.lisp \
+ make-tutorial-server.lisp \
+ make-tutorial-client.lisp \
+ shared-implementation.lisp \
+ thrift-tutorial.asd \
+ tutorial-implementation.lisp
-TutorialClient: make-tutorial-client.lisp
+# NOTE: the server and client cannot be built in parallel
+# because on loading the make-tutorial-* scripts SBCL will
+# attempt to compile their dependencies. Unfortunately,
+# because their dependencies are shared, parallel jobs can
+# end up overwriting or corrupting the compiled files
+all-local: gen-cl setup-local-lisp-env $(ALL_FILE_PREREQS)
+ $(SBCL) --script make-tutorial-server.lisp
$(SBCL) --script make-tutorial-client.lisp
-all-local: gen-cl TutorialClient TutorialServer
-
tutorialserver: all
./TutorialServer
@@ -35,9 +46,16 @@ tutorialclient: all
./TutorialClient
clean-local:
- $(RM) -r gen-*
- $(RM) TutorialServer
- $(RM) TutorialClient
+ -$(RM) -r gen-*
+ -$(RM) -r externals
+ -$(RM) -r quicklisp
+ -$(RM) -r lib
+ -$(RM) quicklisp.lisp
+ -$(RM) backport-update.zip
+ -$(RM) shared-implementation.fasl
+ -$(RM) tutorial-implementation.fasl
+ -$(RM) TutorialServer
+ -$(RM) TutorialClient
EXTRA_DIST = \
tutorial-implementation.lisp \
diff --git a/tutorial/cl/ensure-externals.sh b/tutorial/cl/ensure-externals.sh
new file mode 120000
index 000000000..5ae8c5657
--- /dev/null
+++ b/tutorial/cl/ensure-externals.sh
@@ -0,0 +1 @@
+../../lib/cl/ensure-externals.sh \ No newline at end of file
diff --git a/tutorial/cl/load-locally.lisp b/tutorial/cl/load-locally.lisp
new file mode 100644
index 000000000..b52a0a269
--- /dev/null
+++ b/tutorial/cl/load-locally.lisp
@@ -0,0 +1,22 @@
+(in-package #:cl-user)
+
+;;;; Licensed under the Apache License, Version 2.0 (the "License");
+;;;; you may not use this file except in compliance with the License.
+;;;; You may obtain a copy of the License at
+;;;;
+;;;; http://www.apache.org/licenses/LICENSE-2.0
+;;;;
+;;;; Unless required by applicable law or agreed to in writing, software
+;;;; distributed under the License is distributed on an "AS IS" BASIS,
+;;;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+;;;; See the License for the specific language governing permissions and
+;;;; limitations under the License.
+
+;;;; Just a script for loading the library itself, using bundled dependencies.
+;;;; This is an identical copy of the file in lib/cl.
+
+(require "asdf")
+
+(load (merge-pathnames "externals/bundle.lisp" *load-truename*))
+(asdf:load-asd (merge-pathnames "lib/de.setf.thrift-backport-update/thrift.asd" *load-truename*))
+(asdf:load-system :thrift)
diff --git a/tutorial/cl/make-tutorial-client.lisp b/tutorial/cl/make-tutorial-client.lisp
index 59450a2ea..3a6d86134 100644
--- a/tutorial/cl/make-tutorial-client.lisp
+++ b/tutorial/cl/make-tutorial-client.lisp
@@ -13,7 +13,7 @@
;;;; limitations under the License.
(require "asdf")
-(load (merge-pathnames "../../lib/cl/load-locally.lisp" *load-truename*))
+(load (merge-pathnames "load-locally.lisp" *load-truename*))
(asdf:load-system :net.didierverna.clon)
(asdf:load-asd (merge-pathnames "gen-cl/shared/thrift-gen-shared.asd" *load-truename*))
(asdf:load-asd (merge-pathnames "gen-cl/tutorial/thrift-gen-tutorial.asd" *load-truename*))
diff --git a/tutorial/cl/make-tutorial-server.lisp b/tutorial/cl/make-tutorial-server.lisp
index 5621ff366..4cf1a9026 100644
--- a/tutorial/cl/make-tutorial-server.lisp
+++ b/tutorial/cl/make-tutorial-server.lisp
@@ -13,7 +13,7 @@
;;;; limitations under the License.
(require "asdf")
-(load (merge-pathnames "../../lib/cl/load-locally.lisp" *load-truename*))
+(load (merge-pathnames "load-locally.lisp" *load-truename*))
(asdf:load-system :net.didierverna.clon)
(asdf:load-asd (merge-pathnames "gen-cl/shared/thrift-gen-shared.asd" *load-truename*))
(asdf:load-asd (merge-pathnames "gen-cl/tutorial/thrift-gen-tutorial.asd" *load-truename*))