Skip to content

Commit

Permalink
Add Scala package dev tools for deploy (apache#8498)
Browse files Browse the repository at this point in the history
* [scala] do not print op definition during compiling by default

* [scala] add dev tools for changing artifactId

* [scala] add scala make clean
  • Loading branch information
yzhliu authored Nov 1, 2017
1 parent c1846ce commit 8ac6ec9
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 3 deletions.
6 changes: 5 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -480,9 +480,13 @@ rpkg:
rpkgtest:
Rscript -e "require(testthat);res<-test_dir('R-package/tests/testthat');if(!testthat:::all_passed(res)){stop('Test failures', call. = FALSE)}"

scalaclean:
(cd $(ROOTDIR)/scala-package; \
mvn clean -P$(SCALA_PKG_PROFILE))

scalapkg:
(cd $(ROOTDIR)/scala-package; \
mvn clean package -P$(SCALA_PKG_PROFILE) -Dcxx="$(CXX)" \
mvn package -P$(SCALA_PKG_PROFILE) -Dcxx="$(CXX)" \
-Dcflags="$(CFLAGS)" -Dldflags="$(LDFLAGS)" \
-Dcurrent_libdir="$(ROOTDIR)/lib" \
-Dlddeps="$(LIB_DEP) $(ROOTDIR)/lib/libmxnet.a")
Expand Down
51 changes: 51 additions & 0 deletions scala-package/dev/change-artifact-id.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
#!/bin/bash

#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You 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.
#
# (Yizhi) This is mainly inspired by the script in apache/spark.
# I did some modificaiton to get it with our project.
#

set -e

if [[ ($# -ne 2) || ( $1 == "--help") || $1 == "-h" ]]; then
echo "Usage: $(basename $0) [-h|--help] <from_artifactId> <to_artifactId>" 1>&2
exit 1
fi

FROM_ARTIFACT_ID=$1
TO_ARTIFACT_ID=$2

sed_i() {
perl -p -000 -e "$1" "$2" > "$2.tmp" && mv "$2.tmp" "$2"
}

export -f sed_i

BASEDIR=$(dirname $0)/..

find "$BASEDIR" -name 'pom.xml' -not -path '*target*' -print \
-exec bash -c \
"sed_i 's/(<artifactId)>'$FROM_ARTIFACT_ID'(<\/artifactId>)/\1>'$TO_ARTIFACT_ID'\2/g' {}" \;

# Change assembly including settings
# <includes>
# <include>ml.dmlc.mxnet:libmxnet-scala-linux-x86_64-cpu:so</include>
# </includes>
find "$BASEDIR" -name 'assembly.xml' -not -path '*target*' -print \
-exec bash -c \
"sed_i 's/(<include>.*mxnet):'$FROM_ARTIFACT_ID'(:.*<\/include>)/\1:'$TO_ARTIFACT_ID'\2/g' {}" \;
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,10 @@ private[mxnet] object NDArrayMacro {
val realName = if (aliasName == name.value) "" else s"(a.k.a., ${name.value})"
val docStr = s"$aliasName $realName\n${desc.value}\n\n$paramStr\n$extraDoc\n"
// scalastyle:off println
println("NDArray function definition:\n" + docStr)
if (System.getenv("MXNET4J_PRINT_OP_DEF") != null
&& System.getenv("MXNET4J_PRINT_OP_DEF").toLowerCase == "true") {
println("NDArray function definition:\n" + docStr)
}
// scalastyle:on println
(aliasName, new NDArrayFunction(handle))
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,10 @@ private[mxnet] object SymbolImplMacros {
val realName = if (aliasName == name.value) "" else s"(a.k.a., ${name.value})"
val docStr = s"$aliasName $realName\n${desc.value}\n\n$paramStr\n$extraDoc\n"
// scalastyle:off println
println("Symbol function definition:\n" + docStr)
if (System.getenv("MXNET4J_PRINT_OP_DEF") != null
&& System.getenv("MXNET4J_PRINT_OP_DEF").toLowerCase == "true") {
println("Symbol function definition:\n" + docStr)
}
// scalastyle:on println
(aliasName, new SymbolFunction(handle, keyVarNumArgs.value))
}
Expand Down

0 comments on commit 8ac6ec9

Please sign in to comment.