Created
July 9, 2014 19:17
-
-
Save marcprux/181ec8251943dd57b0af to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash -e | |
GITBASE="[email protected]:mprudhom" # repository to clone | |
GITBRANCH="packagereorg" # branch name to place the rename in | |
test -d incubator-optiq || git clone ${GITBASE}/incubator-optiq.git | |
# clean out local repository to make sure we aren't referencing stale jars | |
# rmtrash ~/.m2/repository/net/hydromatic ~/.m2/repository/org/apache/optiq | |
cd incubator-optiq | |
BASEDIR=`pwd` | |
# clobber all outstanding changes | |
git stash save | |
git remote add apache https://git-wip-us.apache.org/repos/asf/incubator-optiq.git || echo "Remote already added" | |
# git fetch apache | |
# git pull origin | |
git checkout master | |
git branch -D ${GITBRANCH} || echo "No branch to delete" | |
git checkout -- . | |
git checkout -b ${GITBRANCH} | |
# clean up old builds | |
rm -rf */target | |
# add new remote modules | |
for module in linq4j csv | |
do | |
rm -rf ${module} | |
git subtree add --prefix=${module} ${GITBASE}/incubator-optiq-${module}.git master | |
done | |
# echo foo >> pom.xml | |
# remove the external linq4j dependency from the master pom | |
perl -0pi -e "s;<dependency>\s*<groupId>net.hydromatic</groupId>\s*<artifactId>linq4j</artifactId>\s*<version>0.4</version>\s*</dependency>\s*;;gs" pom.xml | |
# add the parent pom to the new linq4j and csv poms | |
for file in linq4j/pom.xml csv/pom.xml | |
do | |
perl -0pi -e "s;<modelVersion>4.0.0</modelVersion>;<modelVersion>4.0.0</modelVersion> | |
<parent> | |
<groupId>net.hydromatic</groupId> | |
<artifactId>optiq-parent</artifactId> | |
<version>0.9-SNAPSHOT</version> | |
</parent>;g" ${file} | |
done | |
# add linq4j as a submodule | |
perl -0pi -e "s;<module>avatica</module>\s*<module>core</module>;<module>avatica</module>\n <module>linq4j</module>\n <module>core</module>;gs" pom.xml | |
# update linq4j's junit to be in sync with the other modules | |
perl -0pi -e "s;<artifactId>junit</artifactId>\s*<version>(.*?)</version>;<artifactId>junit</artifactId>\n <version>4.11</version>;gs" linq4j/pom.xml | |
# fix linq4j's artifact name to be the same optiq- prefix | |
perl -0pi -e "s;<artifactId>linq4j</artifactId>;<artifactId>optiq-linq4j</artifactId>;gs" linq4j/pom.xml | |
perl -0pi -e "s;<name>linq4j</name>;<name>optiq-linq4j</name>;gs" linq4j/pom.xml | |
# update linq4j's version to be the same as the rest | |
perl -0pi -e "s;<version>0.5-SNAPSHOT</version>;<version>0.9-SNAPSHOT</version>;gs" linq4j/pom.xml | |
# add csv as a submodule | |
perl -0pi -e "s;<module>plus</module>\s*<module>spark</module>;<module>plus</module>\n <module>csv</module>\n <module>spark</module>;gs" pom.xml | |
# core relies on linq4j | |
perl -0pi -e "s;<dependencies> | |
<dependency> | |
<groupId>net.hydromatic</groupId> | |
<artifactId>optiq-avatica</artifactId> | |
<version>0.9-SNAPSHOT</version> | |
</dependency> | |
</dependencies> | |
;<dependencies> | |
<dependency> | |
<groupId>net.hydromatic</groupId> | |
<artifactId>optiq-avatica</artifactId> | |
<version>0.9-SNAPSHOT</version> | |
</dependency> | |
<dependency> | |
<groupId>net.hydromatic</groupId> | |
<artifactId>optiq-linq4j</artifactId> | |
<version>0.9-SNAPSHOT</version> | |
</dependency> | |
</dependencies> | |
;g" core/pom.xml | |
# fix generated resource name | |
perl -0pi -e "s;<packageName>org.eigenbase.resource</packageName>;<packageName>org.apache.optiq.runtime</packageName>;gs" core/pom.xml | |
# fix generated sql parser reference | |
perl -0pi -e "s;org.eigenbase.sql.parser.impl;org.apache.optiq.sql.parser.impl;gs" core/pom.xml core/src/main/codegen/config.fmpp pom.xml | |
# remove some package files that are going to be merged in to existing packages | |
git rm core/src/main/java/net/hydromatic/optiq/rules/java/package-info.java | |
git rm core/src/main/java/net/hydromatic/optiq/rules/package-info.java | |
git rm core/src/main/java/org/eigenbase/runtime/package-info.java | |
git rm core/src/main/java/org/eigenbase/resource/package-info.java | |
git rm core/src/main/java/org/eigenbase/util/package-info.java | |
git rm core/src/main/java/org/eigenbase/util14/package-info.java | |
git rm core/src/test/java/org/eigenbase/test/package-info.java | |
# source->dest folder renames; order is important for git mv! | |
for srcdst in \ | |
'net/hydromatic/optiq/impl/java|org/apache/optiq/impl/enumerable' \ | |
'net/hydromatic/optiq/rules|org/apache/optiq/impl/enumerable' \ | |
'net/hydromatic/optiq/impl|org/apache/optiq/impl' \ | |
'org/eigenbase/runtime|org/apache/optiq/runtime' \ | |
'net/hydromatic/optiq/runtime|org/apache/optiq/runtime' \ | |
'org/eigenbase/rel|org/apache/optiq/rel' \ | |
'org/eigenbase/reltype|org/apache/optiq/rel/type' \ | |
'org/eigenbase/resource|org/apache/optiq/runtime' \ | |
'org/eigenbase/util14|org/apache/optiq/util' \ | |
'org/eigenbase/util|org/apache/optiq/util' \ | |
'net/hydromatic/optiq/util|org/apache/optiq/util' \ | |
'net/hydromatic/avatica|org/apache/optiq/avatica' \ | |
'net/hydromatic/linq4j/expressions|org/apache/optiq/linq4j/tree' \ | |
'net/hydromatic/linq4j/function|org/apache/optiq/linq4j/function' \ | |
'net/hydromatic/linq4j|org/apache/optiq/linq4j' \ | |
'net/hydromatic/optiq/test|org/apache/optiq/test' \ | |
'org/eigenbase/test|org/apache/optiq/test' \ | |
'org/eigenbase|org/apache/optiq' \ | |
'net/hydromatic/optiq|org/apache/optiq' \ | |
'net/hydromatic|org/apache/optiq' | |
do | |
SRC=`echo "${srcdst}" | cut -f 1 -d '|'` | |
DST=`echo "${srcdst}" | cut -f 2 -d '|'` | |
# replace all package names | |
SRCPKG=`echo "${SRC}" | sed 's;/;\\\.;g'` | |
DSTPKG=`echo "${DST}" | sed 's;/;.;g'` | |
echo "Replacing package '${SRCPKG}' with '${DSTPKG}' in ${srcdir}..." | |
ALLFILES=`find . -type f -name '*.java' -o -name '*.jj' -o -name '*.json'` | |
perl -pi -e "s;${SRCPKG};${DSTPKG};gs" ${ALLFILES} | |
# replace direct path references in poms | |
perl -pi -e "s;${SRC};${DST};gs" pom.xml */pom.xml | |
for javadir in */src/*/java */src/*/resources | |
do | |
SRCDIR=${javadir}/${SRC} | |
DSTDIR=${javadir}/${DST} | |
# prune empty subdirs (so the git mv doesn't fail on folder overwrite) | |
for level in 1 2 3 4 | |
do | |
find ${SRCDIR} -type d -empty -exec rmdir {} \; &> /dev/null || true | |
find ${DSTDIR} -type d -empty -exec rmdir {} \; &> /dev/null || true | |
done | |
if [ -d ${SRCDIR} ] && [ -n "$(ls -A ${SRCDIR})" ] | |
then | |
echo "Moving source: ${SRCDIR} ${DSTDIR}" | |
# make sure parent dir exists | |
mkdir -p ${DSTDIR} | |
git mv -v ${SRCDIR}/* ${DSTDIR}/ | |
fi | |
done | |
done | |
echo "Finishing up..." | |
cd ${BASEDIR} | |
# undo some net.hydromatic.* name changes that are not actually in optiq | |
JAVAFILES=`find . -type f -name '*.java'` | |
perl -pi -e "s;org\.apache\.optiq\.util\.property;org.eigenbase.util.property;gs" ${JAVAFILES} | |
perl -pi -e "s;org\.apache\.optiq\.tpcds;net.hydromatic.tpcds;gs" ${JAVAFILES} | |
git mv core/src/main/resources/version/net-hydromatic-optiq-jdbc.properties core/src/main/resources/version/org-apache-optiq-jdbc.properties | |
# fix the driver name | |
perl -pi -e "s;net.hydromatic.optiq.jdbc.Driver;org.apache.optiq.jdbc.Driver;g" core/src/main/resources/META-INF/services/java.sql.Driver README.md | |
# fix group ids in the poms... | |
perl -pi -e "s;<groupId>net.hydromatic</groupId>;<groupId>org.apache.optiq</groupId>;gs" pom.xml */pom.xml | |
# fix the version properties file | |
perl -pi -e "s;net-hydromatic-optiq-jdbc.properties;org-apache-optiq-jdbc.properties;g" core/src/main/java/org/apache/optiq/jdbc/Driver.java | |
# ... and restore some external dependencies that should remain net.hydromatic | |
perl -0pi -e "s;<plugin> | |
<groupId>org.apache.optiq</groupId> | |
<artifactId>hydromatic-resource-maven-plugin</artifactId> | |
;<plugin> | |
<groupId>net.hydromatic</groupId> | |
<artifactId>hydromatic-resource-maven-plugin</artifactId> | |
;g" core/pom.xml | |
perl -0pi -e "s;<dependency> | |
<groupId>org.apache.optiq</groupId> | |
<artifactId>tpcds</artifactId> | |
<version>0.1</version> | |
<type>jar</type> | |
</dependency> | |
;<dependency> | |
<groupId>net.hydromatic</groupId> | |
<artifactId>tpcds</artifactId> | |
<version>0.1</version> | |
<type>jar</type> | |
</dependency> | |
;g" plus/pom.xml | |
perl -0pi -e "s; <groupId>org.apache.optiq</groupId> | |
<artifactId>optiq-csv</artifactId> | |
<version>0.4-SNAPSHOT</version> | |
<packaging>jar</packaging> | |
; <groupId>org.apache.optiq</groupId> | |
<artifactId>optiq-csv</artifactId> | |
<version>0.9-SNAPSHOT</version> | |
<packaging>jar</packaging> | |
;g" csv/pom.xml | |
perl -0pi -e "s;<dependency> | |
<groupId>org.apache.optiq</groupId> | |
<artifactId>optiq-core</artifactId> | |
<version>0.8</version> | |
</dependency> | |
<dependency> | |
<groupId>org.apache.optiq</groupId> | |
<artifactId>optiq-avatica</artifactId> | |
<version>0.8</version> | |
</dependency> | |
<dependency> | |
<groupId>org.apache.optiq</groupId> | |
<artifactId>linq4j</artifactId> | |
<version>0.4</version> | |
</dependency> | |
;<dependency> | |
<groupId>org.apache.optiq</groupId> | |
<artifactId>optiq-core</artifactId> | |
<version>0.9-SNAPSHOT</version> | |
</dependency> | |
<dependency> | |
<groupId>org.apache.optiq</groupId> | |
<artifactId>optiq-avatica</artifactId> | |
<version>0.9-SNAPSHOT</version> | |
</dependency> | |
<dependency> | |
<groupId>org.apache.optiq</groupId> | |
<artifactId>optiq-linq4j</artifactId> | |
<version>0.9-SNAPSHOT</version> | |
</dependency> | |
;g" csv/pom.xml | |
# fix some test case checks for old class names | |
perl -pi -e "s;net_hydromatic_optiq;org_apache_optiq;g" core/src/test/java/org/apache/optiq/test/JdbcTest.java | |
perl -pi -e "s;net_hydromatic;org_apache_optiq;g" linq4j/src/test/java/org/apache/optiq/linq4j/test/DeterministicTest.java | |
perl -pi -e "s;org_apache_optiq_linq4j_test_DeterministicTest_TestDeterministicCa1bc6d17;org_apache_optiq_linq4j_test_DeterministicTest_TestDeterministid6206190;g" linq4j/src/test/java/org/apache/optiq/linq4j/test/DeterministicTest.java | |
perl -pi -e "s;org_apache_optiq_linq4j_test_DeterministicTest_TestClass_determin1da033bf;org_apache_optiq_linq4j_test_DeterministicTest_TestClass_determ89eb6ea6;g" linq4j/src/test/java/org/apache/optiq/linq4j/test/DeterministicTest.java | |
# now clear out any obsolete subfolders | |
find . -type d -empty -exec rmdir {} \; &> /dev/null || true | |
echo "Building..." | |
# disable checkstyle failures for now until we can re-sort the package names | |
mvn clean install -Dcheckstyle.skip=true # -DskipTests | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment