1*0e209d39SAndroid Build Coastguard Worker#!/usr/bin/env bash 2*0e209d39SAndroid Build Coastguard Worker# Copyright (C) 2023 and later: Unicode, Inc. and others. 3*0e209d39SAndroid Build Coastguard Worker# License & terms of use: http://www.unicode.org/copyright.html 4*0e209d39SAndroid Build Coastguard Worker 5*0e209d39SAndroid Build Coastguard Worker# Move the sources from main/classes and main/tests into a maven structure 6*0e209d39SAndroid Build Coastguard Worker# - `main/classes/foo/src/java` go to `foo/src/main`, then split into `java` and `resources` 7*0e209d39SAndroid Build Coastguard Worker# - `main/tests/foo/src/java` go to `foo/src/test`, then split into `java` and `resources` 8*0e209d39SAndroid Build Coastguard Worker# - `main/tests/foo/src/META-INF` goes to ... `resources` 9*0e209d39SAndroid Build Coastguard Worker# 10*0e209d39SAndroid Build Coastguard Worker# From this: 11*0e209d39SAndroid Build Coastguard Worker# classes/ 12*0e209d39SAndroid Build Coastguard Worker# <module>/ 13*0e209d39SAndroid Build Coastguard Worker# src/ 14*0e209d39SAndroid Build Coastguard Worker# test/ 15*0e209d39SAndroid Build Coastguard Worker# <module>/ 16*0e209d39SAndroid Build Coastguard Worker# src/ 17*0e209d39SAndroid Build Coastguard Worker# 18*0e209d39SAndroid Build Coastguard Worker# To this (standard maven structure): 19*0e209d39SAndroid Build Coastguard Worker# <module>/ 20*0e209d39SAndroid Build Coastguard Worker# main/ 21*0e209d39SAndroid Build Coastguard Worker# src/ 22*0e209d39SAndroid Build Coastguard Worker# java/ 23*0e209d39SAndroid Build Coastguard Worker# resources/ 24*0e209d39SAndroid Build Coastguard Worker# test/ 25*0e209d39SAndroid Build Coastguard Worker# src/ 26*0e209d39SAndroid Build Coastguard Worker# java/ 27*0e209d39SAndroid Build Coastguard Worker# resources/ 28*0e209d39SAndroid Build Coastguard Worker# 29*0e209d39SAndroid Build Coastguard Worker# Then we cleanup older Eclipse project & launcher files, ant scripts, manifest.stub 30*0e209d39SAndroid Build Coastguard Worker 31*0e209d39SAndroid Build Coastguard Workerfunction safeMkdir() { 32*0e209d39SAndroid Build Coastguard Worker mkdir -p "$1" 33*0e209d39SAndroid Build Coastguard Worker} 34*0e209d39SAndroid Build Coastguard Worker 35*0e209d39SAndroid Build Coastguard Workerfunction moveOrRename() { 36*0e209d39SAndroid Build Coastguard Worker local SRC=$1 37*0e209d39SAndroid Build Coastguard Worker local DEST=$2 38*0e209d39SAndroid Build Coastguard Worker 39*0e209d39SAndroid Build Coastguard Worker mv "$SRC" "$DEST" 40*0e209d39SAndroid Build Coastguard Worker} 41*0e209d39SAndroid Build Coastguard Worker 42*0e209d39SAndroid Build Coastguard Workerfunction rmDirIfExists() { 43*0e209d39SAndroid Build Coastguard Worker [ -d "$1" ] && rm -fr "$1" 44*0e209d39SAndroid Build Coastguard Worker} 45*0e209d39SAndroid Build Coastguard Worker 46*0e209d39SAndroid Build Coastguard Workerfunction rmFileIfExists() { 47*0e209d39SAndroid Build Coastguard Worker [ -f "$1" ] && rm "$1" 48*0e209d39SAndroid Build Coastguard Worker} 49*0e209d39SAndroid Build Coastguard Worker 50*0e209d39SAndroid Build Coastguard Workerfunction copyRecursive() { 51*0e209d39SAndroid Build Coastguard Worker local SRC=$1 52*0e209d39SAndroid Build Coastguard Worker local DEST=$2 53*0e209d39SAndroid Build Coastguard Worker 54*0e209d39SAndroid Build Coastguard Worker cp -R "$SRC" "$DEST" 55*0e209d39SAndroid Build Coastguard Worker} 56*0e209d39SAndroid Build Coastguard Worker 57*0e209d39SAndroid Build Coastguard Workerfunction safeMoveDir() { 58*0e209d39SAndroid Build Coastguard Worker local FOLDER_NAME=$1 59*0e209d39SAndroid Build Coastguard Worker local FROM_FOLDER=$2 60*0e209d39SAndroid Build Coastguard Worker local TO_FOLDER=$3 61*0e209d39SAndroid Build Coastguard Worker 62*0e209d39SAndroid Build Coastguard Worker if [ ! -d "$FROM_FOLDER/$FOLDER_NAME" ]; then 63*0e209d39SAndroid Build Coastguard Worker echo " No '$FROM_FOLDER/$FOLDER_NAME' to move." 64*0e209d39SAndroid Build Coastguard Worker return 65*0e209d39SAndroid Build Coastguard Worker fi 66*0e209d39SAndroid Build Coastguard Worker if [ -e "$TO_FOLDER/$FOLDER_NAME" ]; then 67*0e209d39SAndroid Build Coastguard Worker echo " Error: folder '$TO_FOLDER/$FOLDER_NAME' already exists!" 68*0e209d39SAndroid Build Coastguard Worker exit 69*0e209d39SAndroid Build Coastguard Worker else 70*0e209d39SAndroid Build Coastguard Worker safeMkdir $TO_FOLDER 71*0e209d39SAndroid Build Coastguard Worker moveOrRename $FROM_FOLDER/$FOLDER_NAME $TO_FOLDER/ 72*0e209d39SAndroid Build Coastguard Worker echo " Moving '$FOLDER_NAME' folder from '$FROM_FOLDER' to '$TO_FOLDER'" 73*0e209d39SAndroid Build Coastguard Worker fi 74*0e209d39SAndroid Build Coastguard Worker} 75*0e209d39SAndroid Build Coastguard Worker 76*0e209d39SAndroid Build Coastguard Workerfunction rmFileGlobInDir() { 77*0e209d39SAndroid Build Coastguard Worker local DIR=$1 78*0e209d39SAndroid Build Coastguard Worker local PATTERN=$2 79*0e209d39SAndroid Build Coastguard Worker 80*0e209d39SAndroid Build Coastguard Worker find "$DIR" -type f -name "$PATTERN" -exec rm {} \; 81*0e209d39SAndroid Build Coastguard Worker} 82*0e209d39SAndroid Build Coastguard Worker 83*0e209d39SAndroid Build Coastguard Workerfunction keepOnlyFileGlobInDir() { 84*0e209d39SAndroid Build Coastguard Worker local DIR=$1 85*0e209d39SAndroid Build Coastguard Worker local PATTERN=$2 86*0e209d39SAndroid Build Coastguard Worker 87*0e209d39SAndroid Build Coastguard Worker find "$DIR" -type f -not -name "$PATTERN" -exec rm {} \; 88*0e209d39SAndroid Build Coastguard Worker} 89*0e209d39SAndroid Build Coastguard Worker 90*0e209d39SAndroid Build Coastguard Worker# Split the content of the `java` foldert into `java` and `resources`, the way maven wants it 91*0e209d39SAndroid Build Coastguard Workerfunction splitJavaToResources() { 92*0e209d39SAndroid Build Coastguard Worker # Should point to the folder containing `java`, either main/ or test/ 93*0e209d39SAndroid Build Coastguard Worker local BASE_FOLDER=$1 94*0e209d39SAndroid Build Coastguard Worker 95*0e209d39SAndroid Build Coastguard Worker echo " Splitting '$BASE_FOLDER/java/' into '$BASE_FOLDER/java/' and '$BASE_FOLDER/resources/'" 96*0e209d39SAndroid Build Coastguard Worker # copy `java` to `resources` 97*0e209d39SAndroid Build Coastguard Worker copyRecursive $BASE_FOLDER/java/ $BASE_FOLDER/resources/ 98*0e209d39SAndroid Build Coastguard Worker # delete all not `.java` from `java` 99*0e209d39SAndroid Build Coastguard Worker keepOnlyFileGlobInDir $BASE_FOLDER/java/ *.java 100*0e209d39SAndroid Build Coastguard Worker # delete all `.java` from `resources` 101*0e209d39SAndroid Build Coastguard Worker rmFileGlobInDir $BASE_FOLDER/resources/ *.java 102*0e209d39SAndroid Build Coastguard Worker} 103*0e209d39SAndroid Build Coastguard Worker 104*0e209d39SAndroid Build Coastguard Workerfunction removeEclipseProjectFiles() { 105*0e209d39SAndroid Build Coastguard Worker # Should point to the old folder (to be moved), containing the eclipse / ant files 106*0e209d39SAndroid Build Coastguard Worker local BASE_FOLDER=$1 107*0e209d39SAndroid Build Coastguard Worker 108*0e209d39SAndroid Build Coastguard Worker # Cleanup Eclipse project & launcher files, ant projects, other stuff 109*0e209d39SAndroid Build Coastguard Worker # Eclipse 110*0e209d39SAndroid Build Coastguard Worker rmDirIfExists "$BASE_FOLDER/.externalToolBuilders/" 111*0e209d39SAndroid Build Coastguard Worker rmDirIfExists "$BASE_FOLDER/.settings/" 112*0e209d39SAndroid Build Coastguard Worker rmFileIfExists "$BASE_FOLDER/.project" 113*0e209d39SAndroid Build Coastguard Worker rmFileIfExists "$BASE_FOLDER/.classpath" 114*0e209d39SAndroid Build Coastguard Worker # Ant 115*0e209d39SAndroid Build Coastguard Worker rmFileIfExists "$BASE_FOLDER/build.properties" 116*0e209d39SAndroid Build Coastguard Worker rmFileIfExists "$BASE_FOLDER/build.xml" 117*0e209d39SAndroid Build Coastguard Worker rmFileIfExists "$BASE_FOLDER/manifest.stub" 118*0e209d39SAndroid Build Coastguard Worker rmFileIfExists "$BASE_FOLDER/findbugs-exclude.xml" 119*0e209d39SAndroid Build Coastguard Worker find $BASE_FOLDER/ -type f -name '*.launch' -exec rm {} \; 120*0e209d39SAndroid Build Coastguard Worker} 121*0e209d39SAndroid Build Coastguard Worker 122*0e209d39SAndroid Build Coastguard Worker# Takes a folder as parameter and removes the all the empty sub-folders. 123*0e209d39SAndroid Build Coastguard Workerfunction removeEmptyFolders() { 124*0e209d39SAndroid Build Coastguard Worker local BASE_FOLDER=$1 125*0e209d39SAndroid Build Coastguard Worker # `find -type d .` finds all subfolders, empty or not. 126*0e209d39SAndroid Build Coastguard Worker # We can't just force delete (-r), as that would also delete non-empty folders. 127*0e209d39SAndroid Build Coastguard Worker # And the find iteration is not children first, but parent first. 128*0e209d39SAndroid Build Coastguard Worker # If I call this with `main/classes/` then I need a loop: 129*0e209d39SAndroid Build Coastguard Worker # loop 1: 130*0e209d39SAndroid Build Coastguard Worker # rm `main/classes/` => FAILS, not empty 131*0e209d39SAndroid Build Coastguard Worker # rm `main/classes/core/` => FAILS, not empty 132*0e209d39SAndroid Build Coastguard Worker # rm `main/classes/core/src/` => OK 133*0e209d39SAndroid Build Coastguard Worker # loop 2: 134*0e209d39SAndroid Build Coastguard Worker # rm `main/classes/` => FAILS, not empty 135*0e209d39SAndroid Build Coastguard Worker # rm `main/classes/core/` => OK 136*0e209d39SAndroid Build Coastguard Worker # loop 3: 137*0e209d39SAndroid Build Coastguard Worker # rm `main/classes/` => OK 138*0e209d39SAndroid Build Coastguard Worker # If there is any file left in some folder, that (and the parent folders) are not deleted. 139*0e209d39SAndroid Build Coastguard Worker # That's why we loop here (although 15 might be a bit much :-) 140*0e209d39SAndroid Build Coastguard Worker for ((n = 0; n < 15; n++)) do 141*0e209d39SAndroid Build Coastguard Worker find $BASE_FOLDER -type d -exec rm -d {} \; 2> /dev/null 142*0e209d39SAndroid Build Coastguard Worker done 143*0e209d39SAndroid Build Coastguard Worker} 144*0e209d39SAndroid Build Coastguard Worker 145*0e209d39SAndroid Build Coastguard Workerfunction moveMainModuleToMaven() { 146*0e209d39SAndroid Build Coastguard Worker # 1. $1: component name (core, charset, etc) 147*0e209d39SAndroid Build Coastguard Worker local MODULE_NAME=$1 148*0e209d39SAndroid Build Coastguard Worker # 2. folder name in the pre-maven structure (`classes` or `tests`) 149*0e209d39SAndroid Build Coastguard Worker local SRC_TYPE=$2 150*0e209d39SAndroid Build Coastguard Worker # 3. folder name in the maven standard structure (`main` or `test`) 151*0e209d39SAndroid Build Coastguard Worker local TRG_TYPE=$3 152*0e209d39SAndroid Build Coastguard Worker 153*0e209d39SAndroid Build Coastguard Worker if [ ! -d main/$SRC_TYPE/$MODULE_NAME ]; then 154*0e209d39SAndroid Build Coastguard Worker echo " Module '$MODULE_NAME' does not have '$SRC_TYPE' to move to '$TRG_TYPE'" 155*0e209d39SAndroid Build Coastguard Worker return 156*0e209d39SAndroid Build Coastguard Worker fi 157*0e209d39SAndroid Build Coastguard Worker 158*0e209d39SAndroid Build Coastguard Worker safeMoveDir com main/$SRC_TYPE/$MODULE_NAME/src main/$MODULE_NAME/src/$TRG_TYPE/java 159*0e209d39SAndroid Build Coastguard Worker splitJavaToResources main/$MODULE_NAME/src/$TRG_TYPE 160*0e209d39SAndroid Build Coastguard Worker safeMoveDir META-INF main/$SRC_TYPE/$MODULE_NAME/src main/$MODULE_NAME/src/$TRG_TYPE/resources 161*0e209d39SAndroid Build Coastguard Worker 162*0e209d39SAndroid Build Coastguard Worker removeEclipseProjectFiles main/$SRC_TYPE/$MODULE_NAME 163*0e209d39SAndroid Build Coastguard Worker 164*0e209d39SAndroid Build Coastguard Worker # Remove the original (pre-maven) folders that were left empty after we moved stuff out 165*0e209d39SAndroid Build Coastguard Worker # For example if all we had was source code + Eclipse files the folder will be left empty. 166*0e209d39SAndroid Build Coastguard Worker # e.g. main/classes/collate 167*0e209d39SAndroid Build Coastguard Worker echo " Remove all empty pre-maven folders from 'main/$SRC_TYPE/$MODULE_NAME'" 168*0e209d39SAndroid Build Coastguard Worker removeEmptyFolders main/$SRC_TYPE/$MODULE_NAME 169*0e209d39SAndroid Build Coastguard Worker 170*0e209d39SAndroid Build Coastguard Worker # Remove folders that didn't receive any content in the new structure. 171*0e209d39SAndroid Build Coastguard Worker # For example when we copy the `java` folder to `resources`, then remove 172*0e209d39SAndroid Build Coastguard Worker # all the *.java files, we might end up with empty `resources` folder 173*0e209d39SAndroid Build Coastguard Worker # if there was no data file mixed-in with the code to begin with. 174*0e209d39SAndroid Build Coastguard Worker # e.g. main/collate/src/main 175*0e209d39SAndroid Build Coastguard Worker echo " Remove all empty post-maven folders from 'main/$MODULE_NAME/src/$TRG_TYPE'" 176*0e209d39SAndroid Build Coastguard Worker removeEmptyFolders main/$MODULE_NAME/src/$TRG_TYPE 177*0e209d39SAndroid Build Coastguard Worker} 178*0e209d39SAndroid Build Coastguard Worker 179*0e209d39SAndroid Build Coastguard Workerfunction mainModuleToMaven() { 180*0e209d39SAndroid Build Coastguard Worker echo "Migrating $1 to maven" 181*0e209d39SAndroid Build Coastguard Worker moveMainModuleToMaven $1 classes main 182*0e209d39SAndroid Build Coastguard Worker moveMainModuleToMaven $1 tests test 183*0e209d39SAndroid Build Coastguard Worker safeMkdir main/$MODULE_NAME/src/main/resources/ 184*0e209d39SAndroid Build Coastguard Worker ln -s ../../../../../../LICENSE main/$MODULE_NAME/src/main/resources/LICENSE 185*0e209d39SAndroid Build Coastguard Worker} 186*0e209d39SAndroid Build Coastguard Worker 187*0e209d39SAndroid Build Coastguard Workerfunction simpleModuleToMaven() { 188*0e209d39SAndroid Build Coastguard Worker # 1. $1: component name (core, charset, etc) 189*0e209d39SAndroid Build Coastguard Worker local MODULE_NAME=$1 190*0e209d39SAndroid Build Coastguard Worker local LICENSE_PATH=$2 191*0e209d39SAndroid Build Coastguard Worker echo "Migrating $MODULE_NAME to maven" 192*0e209d39SAndroid Build Coastguard Worker 193*0e209d39SAndroid Build Coastguard Worker safeMoveDir com $MODULE_NAME/src $MODULE_NAME/src/main/java 194*0e209d39SAndroid Build Coastguard Worker splitJavaToResources $MODULE_NAME/src/main 195*0e209d39SAndroid Build Coastguard Worker 196*0e209d39SAndroid Build Coastguard Worker removeEclipseProjectFiles $MODULE_NAME 197*0e209d39SAndroid Build Coastguard Worker 198*0e209d39SAndroid Build Coastguard Worker safeMkdir $MODULE_NAME/src/main/resources/ 199*0e209d39SAndroid Build Coastguard Worker ln -s $LICENSE_PATH $MODULE_NAME/src/main/resources/LICENSE 200*0e209d39SAndroid Build Coastguard Worker 201*0e209d39SAndroid Build Coastguard Worker echo " Remove empty folders from '$MODULE_NAME'" 202*0e209d39SAndroid Build Coastguard Worker removeEmptyFolders $MODULE_NAME 203*0e209d39SAndroid Build Coastguard Worker} 204*0e209d39SAndroid Build Coastguard Worker 205*0e209d39SAndroid Build Coastguard Workerfunction moveCoreTestFileToCommon() { 206*0e209d39SAndroid Build Coastguard Worker local FOLDER_NAME=$1 207*0e209d39SAndroid Build Coastguard Worker local FILE_NAME=$2 208*0e209d39SAndroid Build Coastguard Worker safeMkdir $COMMON_TEST_FOLDER/$FOLDER_NAME 209*0e209d39SAndroid Build Coastguard Worker moveOrRename $CORE_TEST_FOLDER/$FOLDER_NAME/$FILE_NAME $COMMON_TEST_FOLDER/$FOLDER_NAME/ 210*0e209d39SAndroid Build Coastguard Worker} 211*0e209d39SAndroid Build Coastguard Worker 212*0e209d39SAndroid Build Coastguard Workerfunction moveCircDepTestOutOfCore() { 213*0e209d39SAndroid Build Coastguard Worker export CORE_TEST_FOLDER=main/core/src/test/java/com/ibm/icu/dev/test 214*0e209d39SAndroid Build Coastguard Worker export COMMON_TEST_FOLDER=main/common_tests/src/test/java/com/ibm/icu/dev/test 215*0e209d39SAndroid Build Coastguard Worker 216*0e209d39SAndroid Build Coastguard Worker safeMkdir $CORE_TEST_FOLDER 217*0e209d39SAndroid Build Coastguard Worker 218*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon calendar DataDrivenCalendarTest.java 219*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon format CompactDecimalFormatTest.java 220*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon format DataDrivenFormatTest.java 221*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon format DateFormatTest.java 222*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon format IntlTestDecimalFormatSymbolsC.java 223*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon format IntlTestDecimalFormatAPIC.java 224*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon format MeasureUnitTest.java 225*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon format NumberFormatDataDrivenTest.java 226*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon format NumberFormatRegressionTest.java 227*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon format NumberFormatSpecificationTest.java 228*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon format NumberFormatTest.java 229*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon format NumberRegressionTests.java 230*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon format PluralRangesTest.java 231*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon format PluralRulesTest.java 232*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon format RbnfTest.java 233*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon format TestMessageFormat.java 234*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon format TimeZoneFormatTest.java 235*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon message2 Mf2FeaturesTest.java 236*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon normalizer BasicTest.java 237*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon number ModifierTest.java 238*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon number NumberFormatterApiTest.java 239*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon number NumberParserTest.java 240*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon number NumberPermutationTest.java 241*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon number NumberRangeFormatterTest.java 242*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon number PatternStringTest.java 243*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon number PropertiesTest.java 244*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon rbbi LSTMBreakEngineTest.java 245*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon serializable CalendarHandler.java 246*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon serializable CompatibilityTest.java 247*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon serializable CoverageTest.java 248*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon serializable ExceptionHandler.java 249*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon serializable FormatHandler.java 250*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon serializable SerializableChecker.java 251*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon serializable SerializableTestUtility.java 252*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon serializable SerializableWriter.java 253*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon stringprep TestIDNARef.java 254*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon stringprep TestStringPrep.java 255*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon util CurrencyTest.java 256*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon util ICUResourceBundleTest.java 257*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon util ICUServiceTest.java 258*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon util LocaleDataTest.java 259*0e209d39SAndroid Build Coastguard Worker moveCoreTestFileToCommon util ULocaleTest.java 260*0e209d39SAndroid Build Coastguard Worker 261*0e209d39SAndroid Build Coastguard Worker # Looks like the packaging project was already some kind of test for how things come together. 262*0e209d39SAndroid Build Coastguard Worker # Should we move all the files in this project instead of common_tests? 263*0e209d39SAndroid Build Coastguard Worker moveOrRename main/tests/packaging/src/com/ibm/icu/dev/test/* $COMMON_TEST_FOLDER/ 264*0e209d39SAndroid Build Coastguard Worker removeEclipseProjectFiles main/tests/packaging 265*0e209d39SAndroid Build Coastguard Worker 266*0e209d39SAndroid Build Coastguard Worker # At this point this folder should be empty 267*0e209d39SAndroid Build Coastguard Worker # So remove if empty (-d) should work 268*0e209d39SAndroid Build Coastguard Worker rm -d main/core/src/test/java/com/ibm/icu/dev/test/serializable 269*0e209d39SAndroid Build Coastguard Worker} 270*0e209d39SAndroid Build Coastguard Worker 271*0e209d39SAndroid Build Coastguard Workerfunction moveFilesInTools() { 272*0e209d39SAndroid Build Coastguard Worker local TOOLS_SRC_ROOT_FOLDER=tools/misc/src/main/java/com/ibm/icu/dev/tool 273*0e209d39SAndroid Build Coastguard Worker local TOOLS_SRC_SHARED_SUBFOLDER=tools/misc/src/main/java/com/ibm/icu/dev/tool/shared 274*0e209d39SAndroid Build Coastguard Worker 275*0e209d39SAndroid Build Coastguard Worker safeMkdir $TOOLS_SRC_SHARED_SUBFOLDER 276*0e209d39SAndroid Build Coastguard Worker moveOrRename $TOOLS_SRC_ROOT_FOLDER/UOption.java $TOOLS_SRC_SHARED_SUBFOLDER/ 277*0e209d39SAndroid Build Coastguard Worker} 278*0e209d39SAndroid Build Coastguard Worker 279*0e209d39SAndroid Build Coastguard Worker# =============================================================== 280*0e209d39SAndroid Build Coastguard Worker# Here starts the real script execution 281*0e209d39SAndroid Build Coastguard Worker 282*0e209d39SAndroid Build Coastguard Workerif [ -f "main/core/pom.xml" ]; then 283*0e209d39SAndroid Build Coastguard Worker echo "ERROR: looks like the structure was already migrated to maven?" 284*0e209d39SAndroid Build Coastguard Worker exit 285*0e209d39SAndroid Build Coastguard Workerfi 286*0e209d39SAndroid Build Coastguard Workerif [ ! -f "main/classes/core/build.xml" ]; then 287*0e209d39SAndroid Build Coastguard Worker echo "ERROR: the current folder when running this script should be <icu_root>/icu4j" 288*0e209d39SAndroid Build Coastguard Worker echo "It is currently $PWD." 289*0e209d39SAndroid Build Coastguard Worker exit 290*0e209d39SAndroid Build Coastguard Workerfi 291*0e209d39SAndroid Build Coastguard Worker 292*0e209d39SAndroid Build Coastguard Worker# Copy over most files from `maven-migration` dir needed for Maven build... 293*0e209d39SAndroid Build Coastguard WorkerMVN_MIG_DIR="$(dirname "${BASH_SOURCE[0]}")" 294*0e209d39SAndroid Build Coastguard WorkercopyRecursive ${MVN_MIG_DIR}/* . 295*0e209d39SAndroid Build Coastguard Worker# ...but don't copy files that are only used for migration 296*0e209d39SAndroid Build Coastguard WorkerrmFileIfExists README_MAVEN.md 297*0e209d39SAndroid Build Coastguard WorkerrmFileIfExists toMaven.sh 298*0e209d39SAndroid Build Coastguard WorkerrmFileIfExists unpack_jars.sh 299*0e209d39SAndroid Build Coastguard Worker 300*0e209d39SAndroid Build Coastguard Worker# Migrate the modules in icu4j/main, which have code (in main/classes) & unit tests (in main/test) 301*0e209d39SAndroid Build Coastguard Workerecho "====================================" 302*0e209d39SAndroid Build Coastguard Workerecho "==== Migrating the main modules ====" 303*0e209d39SAndroid Build Coastguard Workerecho "====================================" 304*0e209d39SAndroid Build Coastguard WorkermainModuleToMaven core 305*0e209d39SAndroid Build Coastguard WorkermainModuleToMaven langdata 306*0e209d39SAndroid Build Coastguard WorkermainModuleToMaven charset 307*0e209d39SAndroid Build Coastguard WorkermainModuleToMaven collate 308*0e209d39SAndroid Build Coastguard WorkermainModuleToMaven localespi 309*0e209d39SAndroid Build Coastguard WorkermainModuleToMaven translit 310*0e209d39SAndroid Build Coastguard Worker# main only 311*0e209d39SAndroid Build Coastguard WorkermainModuleToMaven currdata 312*0e209d39SAndroid Build Coastguard WorkermainModuleToMaven regiondata 313*0e209d39SAndroid Build Coastguard Worker# test only 314*0e209d39SAndroid Build Coastguard WorkermainModuleToMaven framework 315*0e209d39SAndroid Build Coastguard Worker 316*0e209d39SAndroid Build Coastguard Worker# Migrate the modules in icu4j, which have only code and no unit tests 317*0e209d39SAndroid Build Coastguard Workerecho "====================================" 318*0e209d39SAndroid Build Coastguard Workerecho "==== Migrating the root modules ====" 319*0e209d39SAndroid Build Coastguard Workerecho "====================================" 320*0e209d39SAndroid Build Coastguard WorkersimpleModuleToMaven demos ../../../../../LICENSE 321*0e209d39SAndroid Build Coastguard WorkersimpleModuleToMaven samples ../../../../../LICENSE 322*0e209d39SAndroid Build Coastguard WorkersimpleModuleToMaven tools/build ../../../../../../LICENSE 323*0e209d39SAndroid Build Coastguard WorkersimpleModuleToMaven tools/misc ../../../../../../LICENSE 324*0e209d39SAndroid Build Coastguard Worker 325*0e209d39SAndroid Build Coastguard Workerecho "=================================================================================" 326*0e209d39SAndroid Build Coastguard Workerecho "==== Moving core unit tests that depend on non-core (circular dependencies) =====" 327*0e209d39SAndroid Build Coastguard Workerecho "=================================================================================" 328*0e209d39SAndroid Build Coastguard Worker 329*0e209d39SAndroid Build Coastguard WorkermoveCircDepTestOutOfCore 330*0e209d39SAndroid Build Coastguard Worker 331*0e209d39SAndroid Build Coastguard Workerecho "=================================================================" 332*0e209d39SAndroid Build Coastguard Workerecho "==== Move files to resolve dependency cycles in tools, etc. =====" 333*0e209d39SAndroid Build Coastguard Workerecho "=================================================================" 334*0e209d39SAndroid Build Coastguard Worker 335*0e209d39SAndroid Build Coastguard WorkermoveFilesInTools 336*0e209d39SAndroid Build Coastguard Worker 337*0e209d39SAndroid Build Coastguard Worker# Cleanup of Ant-specific dirs & prototype Maven build dirs 338*0e209d39SAndroid Build Coastguard WorkerrmDirIfExists "$BASE_FOLDER/maven/" 339*0e209d39SAndroid Build Coastguard WorkerrmDirIfExists "$BASE_FOLDER/maven-build/" 340*0e209d39SAndroid Build Coastguard Worker 341*0e209d39SAndroid Build Coastguard Worker# Some final cleanup for any empty folders 342*0e209d39SAndroid Build Coastguard WorkerremoveEmptyFolders main/classes 343*0e209d39SAndroid Build Coastguard WorkerremoveEmptyFolders main/tests 344*0e209d39SAndroid Build Coastguard Worker 345*0e209d39SAndroid Build Coastguard Worker# Unpack the CLDR data from the shared .jar files 346*0e209d39SAndroid Build Coastguard Worker${MVN_MIG_DIR}/unpack_jars.sh 347*0e209d39SAndroid Build Coastguard Worker 348*0e209d39SAndroid Build Coastguard Workerecho DONE 349