Showing preview only (1,077K chars total). Download the full file or copy to clipboard to get everything.
Repository: Zimbra/zm-build
Branch: develop
Commit: 8b669aab1a4d
Files: 148
Total size: 1.0 MB
Directory structure:
gitextract_jdedxgo8/
├── .circleci/
│ ├── ENVIRONMENT.txt
│ ├── config.yml
│ ├── jobs/
│ │ └── deploy_ec2/
│ │ ├── deploy.sh
│ │ ├── install.conf.in
│ │ └── upgrade.conf.in
│ └── misc/
│ ├── glean_version.pl
│ └── status_api.sh
├── .gitignore
├── .project
├── RE/
│ ├── MICRO_WIN
│ ├── README.txt
│ └── RELEASE
├── README.md
├── build.pl
├── config.build.in
├── instructions/
│ ├── .gitignore
│ ├── FOSS_package_list.pl
│ ├── FOSS_remote_list.pl
│ ├── FOSS_repo_list.pl
│ ├── FOSS_staging_list.pl
│ └── bundling-scripts/
│ ├── .gitignore
│ ├── utils.sh
│ ├── zcs-bundle.sh
│ ├── zimbra-apache.sh
│ ├── zimbra-core.sh
│ ├── zimbra-dnscache.sh
│ ├── zimbra-imapd.sh
│ ├── zimbra-ldap.sh
│ ├── zimbra-logger.sh
│ ├── zimbra-mta.sh
│ ├── zimbra-proxy.sh
│ ├── zimbra-snmp.sh
│ ├── zimbra-spell.sh
│ └── zimbra-store.sh
├── lib/
│ └── Zimbra/
│ ├── DB/
│ │ └── DB.pm
│ ├── LDAP.pm
│ ├── LocalConfig.pm
│ ├── Mon/
│ │ ├── Logger.pm
│ │ ├── LoggerSchema.pm
│ │ └── Zmstat.pm
│ ├── SMTP.pm
│ ├── SOAP/
│ │ ├── Soap.pm
│ │ ├── Soap11.pm
│ │ ├── Soap12.pm
│ │ ├── XmlDoc.pm
│ │ └── XmlElement.pm
│ ├── Util/
│ │ ├── Common.pm
│ │ ├── LDAP.pm
│ │ └── Timezone.pm
│ └── ZmClient.pm
├── rpmconf/
│ ├── Build/
│ │ ├── checkLicense.pl
│ │ ├── checkService.pl
│ │ ├── create_distribution.dist.sh
│ │ ├── get_plat_tag.sh
│ │ └── zmValidateLdap.pl
│ ├── Conf/
│ │ ├── auditswatchrc
│ │ ├── hotspot_compiler
│ │ ├── logswatchrc
│ │ ├── mibs/
│ │ │ ├── zimbra.mib
│ │ │ └── zimbra_traps.mib
│ │ ├── snmp.conf
│ │ ├── snmpd.conf.in
│ │ ├── swatchrc
│ │ └── zmssl.cnf.in
│ ├── Ctl/
│ │ ├── zimbra.cf.in
│ │ ├── zimbracore.cf
│ │ ├── zimbraldap.cf
│ │ ├── zimbralogger.cf
│ │ ├── zimbramail.cf
│ │ ├── zimbramta.cf
│ │ └── zimbrasnmp.cf
│ ├── Env/
│ │ ├── crontabs/
│ │ │ ├── crontab
│ │ │ ├── crontab.ldap
│ │ │ ├── crontab.logger
│ │ │ ├── crontab.mta
│ │ │ └── crontab.store
│ │ ├── sudoers.d/
│ │ │ ├── 01_zimbra
│ │ │ ├── 02_zimbra-core
│ │ │ ├── 02_zimbra-dnscache.deb
│ │ │ ├── 02_zimbra-dnscache.rpm
│ │ │ ├── 02_zimbra-mta
│ │ │ └── 02_zimbra-store
│ │ ├── zimbra.bash_profile
│ │ ├── zimbra.bashrc
│ │ ├── zimbra.exrc
│ │ ├── zimbra.ldaprc
│ │ ├── zimbra.platform
│ │ └── zimbra.viminfo
│ ├── Install/
│ │ ├── Util/
│ │ │ ├── addUser.sh
│ │ │ ├── globals.sh
│ │ │ ├── modules/
│ │ │ │ ├── getconfig.sh
│ │ │ │ ├── packages.sh
│ │ │ │ └── postinstall.sh
│ │ │ └── utilfunc.sh
│ │ ├── install.sh
│ │ ├── postinstall.pm
│ │ ├── preinstall.pm
│ │ ├── test.pl
│ │ └── zmsetup.pl
│ ├── LicenseTool/
│ │ ├── Zimbra/
│ │ │ ├── Customer.pm
│ │ │ ├── License.pm
│ │ │ ├── LicenseKey.pm
│ │ │ └── LicensingDB.pm
│ │ ├── db/
│ │ │ └── create_license_db.sql
│ │ └── zmlicensetool.pl
│ ├── Patch/
│ │ ├── bin/
│ │ │ └── zmpatch.pl
│ │ ├── conf/
│ │ │ └── zmpatch.xml
│ │ ├── installPatch.sh
│ │ └── libexec/
│ │ ├── zmcurl807-updater.sh
│ │ └── zmopenssl-updater.sh
│ ├── Spec/
│ │ ├── Scripts/
│ │ │ ├── zimbra-core.post
│ │ │ ├── zimbra-core.pre
│ │ │ ├── zimbra-dnscache.post
│ │ │ ├── zimbra-ldap.post
│ │ │ ├── zimbra-logger.post
│ │ │ ├── zimbra-mta.post
│ │ │ ├── zimbra-proxy.post
│ │ │ ├── zimbra-qa.post
│ │ │ ├── zimbra-snmp.post
│ │ │ ├── zimbra-spell.post
│ │ │ ├── zimbra-store.post
│ │ │ └── zimbra-store.pre
│ │ ├── zimbra-apache.deb
│ │ ├── zimbra-apache.spec
│ │ ├── zimbra-core.deb
│ │ ├── zimbra-core.spec
│ │ ├── zimbra-dnscache.deb
│ │ ├── zimbra-dnscache.spec
│ │ ├── zimbra-imapd.deb
│ │ ├── zimbra-imapd.spec
│ │ ├── zimbra-ldap.deb
│ │ ├── zimbra-ldap.spec
│ │ ├── zimbra-logger.deb
│ │ ├── zimbra-logger.spec
│ │ ├── zimbra-mta.deb
│ │ ├── zimbra-mta.spec
│ │ ├── zimbra-proxy.deb
│ │ ├── zimbra-proxy.spec
│ │ ├── zimbra-qa.deb
│ │ ├── zimbra-qa.spec
│ │ ├── zimbra-snmp.deb
│ │ ├── zimbra-snmp.spec
│ │ ├── zimbra-spell.deb
│ │ ├── zimbra-spell.spec
│ │ ├── zimbra-store.deb
│ │ └── zimbra-store.spec
│ └── Upgrade/
│ └── zmupgrade.pm
└── show_git_overrides.sh
================================================
FILE CONTENTS
================================================
================================================
FILE: .circleci/ENVIRONMENT.txt
================================================
ENV VARIABLES:
(used by deploy_ec2@app1_install, deploy_ec2@app1_upgrade):
APP1_ADMIN_PASS = password to set admin user to.
APP1_SSH_HOST = ec2 machine
APP1_SSH_USER = ec2 username (with sudo)
(used by deploy_ec2@app2_install, deploy_ec2@app2_upgrade):
APP2_ADMIN_PASS = password to set admin user to.
APP2_SSH_HOST = ec2 machine
APP2_SSH_USER = ec2 username (with sudo)
SSH PERMISSIONS: (used by deploy_ec2)
(private key for ec2 machine named in $APP1_SSH_HOST above)
(private key for ec2 machine named in $APP2_SSH_HOST above)
AWS PERMISSIONS: (used by deploy_s3)
Access Key ID
Secret Access Key
================================================
FILE: .circleci/config.yml
================================================
# vim:expandtab:ts=3
version: 2
############################################################################
references:
checkout_job_steps: &checkout_job_steps
steps:
- checkout
- run:
name: Checking out dependencies
command: |
mkdir -p ../BUILDS
./build.pl \
--build-type=FOSS \
--build-hostname=build.zimbra.org \
--build-release="$CIRCLE_PROJECT_USERNAME" \
--build-release-no=$(.circleci/misc/glean_version.pl) \
--build-release-candidate=beta \
--build-thirdparty-server=zdev-vm008.eng.zimbra.com \
--deploy-url-prefix="https://files.zimbra.com/dev-releases/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/$CIRCLE_BRANCH-$CIRCLE_BUILD_NUM" \
--git-default-branch="$CIRCLE_BRANCH,develop" \
--build-os="UBUNTU16_64" \
--pkg-os-tag="u16" \
--build-no="$CIRCLE_BUILD_NUM" \
--build-ts="$(date "+%Y%m%d%M%H%S")" \
--ant-options="-DskipTests=1" \
--no-interactive \
--disable-bundle \
--dump-config-to="$PWD/config.build" \
--stop-after-checkout \
--exclude-git-repos=zm-timezones \
2>&1 \
| tee ../BUILDS/checkout.log;
# FIXME: remove this hack, and fix --dump-config-to
sed -i \
-e '/^DUMP_CONFIG_TO/d' \
-e '/^STOP_AFTER_CHECKOUT/d' \
-e '/^INTERACTIVE/d' \
-e '/^BUILD_OS/d' \
-e '/^PKG_OS_TAG/d' \
-e '/^BUILD_ARCH/d' \
-e '/\<UBUNTU16_64\>/d' \
-e '/\<BUILDS\>/d' \
config.build;
- persist_to_workspace:
root: ../..
paths:
- checkout
- .zcs-deps
build_job_steps: &build_job_steps
steps:
- attach_workspace:
at: ../..
- run:
name: Creating build
command: |
rm ../BUILDS/checkout.log
ENV_GIT_UPDATE_INCLUDE=@ \
./build.pl 2>&1 \
--build-os="$ZIMBRA_BUILD_OS" \
--pkg-os-tag="$ZIMBRA_OS_TAG" \
--no-interactive \
| tee -a ../BUILDS/build-${ZIMBRA_OS_TAG}.log
- store_artifacts:
path: ../BUILDS
- persist_to_workspace:
root: ../..
paths: checkout/BUILDS
deploy_s3_job_steps: &deploy_s3_job_steps
steps:
- attach_workspace:
at: ../..
- deploy:
name: Deploying to S3
command: |
for i in ../BUILDS/*
do
if [ -d "$i" ]
then
# NOTE: We are not using $CIRCLE_BUILD_NUM as its different for each job of the workflow
# Instead, we need $CIRCLE_BUILD_NUM allocated for 'checkout' job, (stored in config.build)
BUILD_NO=$(cat config.build | sed -ne '/^BUILD_NO\>/ { s/.*=\s*//p }'); [ ! -z "$BUILD_NO" ] || exit 2;
aws s3 sync "$i" "s3://files.zimbra.com/dev-releases/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/$CIRCLE_BRANCH-$BUILD_NO/" \
--acl public-read \
--region us-east-1
fi
done
deploy_ec2_job_steps: &deploy_ec2_job_steps
steps:
- attach_workspace:
at: ../..
- deploy:
name: Deploying to EC2
command: |
MY_SSH_HOST_var="${EC2_TARGET}_SSH_HOST";
MY_SSH_USER_var="${EC2_TARGET}_SSH_USER";
MY_ADMIN_PASS_var="${EC2_TARGET}_ADMIN_PASS";
.circleci/jobs/deploy_ec2/deploy.sh \
-o ${OPERATION} \
-t ${PKG_OS_TAG} \
-h ${!MY_SSH_HOST_var} \
-u ${!MY_SSH_USER_var} \
-a ${!MY_ADMIN_PASS_var}
std_filters: &std_filters
filters:
branches:
only:
- master
- develop
############################################################################
jobs:
checkout:
working_directory: ~/checkout/zm-build
shell: /bin/bash -euo pipefail
docker:
- image: zimbra/zm-base-os:devcore-ubuntu-16.04
<<: *checkout_job_steps
build_u16:
working_directory: ~/checkout/zm-build
shell: /bin/bash -euo pipefail
environment:
- ZIMBRA_OS_TAG: u16
- ZIMBRA_BUILD_OS: UBUNTU16_64
docker:
- image: zimbra/zm-base-os:devcore-ubuntu-16.04
<<: *build_job_steps
build_u14:
working_directory: ~/checkout/zm-build
shell: /bin/bash -euo pipefail
environment:
- ZIMBRA_OS_TAG: u14
- ZIMBRA_BUILD_OS: UBUNTU14_64
docker:
- image: zimbra/zm-base-os:devcore-ubuntu-14.04
<<: *build_job_steps
build_u12:
working_directory: ~/checkout/zm-build
shell: /bin/bash -euo pipefail
environment:
- ZIMBRA_OS_TAG: u12
- ZIMBRA_BUILD_OS: UBUNTU12_64
docker:
- image: zimbra/zm-base-os:devcore-ubuntu-12.04
<<: *build_job_steps
build_r7:
working_directory: ~/checkout/zm-build
shell: /bin/bash -euo pipefail
environment:
- ZIMBRA_OS_TAG: r7
- ZIMBRA_BUILD_OS: RHEL7_64
docker:
- image: zimbra/zm-base-os:devcore-centos-7
<<: *build_job_steps
build_r6:
working_directory: ~/checkout/zm-build
shell: /bin/bash -euo pipefail
environment:
- ZIMBRA_OS_TAG: r6
- ZIMBRA_BUILD_OS: RHEL6_64
docker:
- image: zimbra/zm-base-os:devcore-centos-6
<<: *build_job_steps
deploy_s3:
working_directory: ~/checkout/zm-build
shell: /bin/bash -euo pipefail
docker:
- image: zimbra/zm-base-os:core-ubuntu
<<: *deploy_s3_job_steps
deploy_ec2@app1_install:
working_directory: ~/checkout/zm-build
shell: /bin/bash -euo pipefail
environment:
- EC2_TARGET: APP1
- OPERATION: install
- PKG_OS_TAG: u16
docker:
- image: zimbra/zm-base-os:core-ubuntu
<<: *deploy_ec2_job_steps
deploy_ec2@app1_upgrade:
working_directory: ~/checkout/zm-build
shell: /bin/bash -euo pipefail
environment:
- EC2_TARGET: APP1
- OPERATION: upgrade
- PKG_OS_TAG: u16
docker:
- image: zimbra/zm-base-os:core-ubuntu
<<: *deploy_ec2_job_steps
deploy_ec2@app2_install:
working_directory: ~/checkout/zm-build
shell: /bin/bash -euo pipefail
environment:
- EC2_TARGET: APP2
- OPERATION: install
- PKG_OS_TAG: r6
docker:
- image: zimbra/zm-base-os:core-ubuntu
<<: *deploy_ec2_job_steps
deploy_ec2@app2_upgrade:
working_directory: ~/checkout/zm-build
shell: /bin/bash -euo pipefail
environment:
- EC2_TARGET: APP2
- OPERATION: upgrade
- PKG_OS_TAG: r6
docker:
- image: zimbra/zm-base-os:core-ubuntu
<<: *deploy_ec2_job_steps
############################################################################
workflows:
version: 2
main:
jobs:
- checkout
#########################
- build_u16:
requires:
- checkout
- build_u14:
requires:
- checkout
- build_u12:
requires:
- checkout
# - build_r7:
# requires:
# - checkout
- build_r6:
requires:
- checkout
#########################
- deploy_s3_hold:
type: approval
requires:
- build_u16
- build_u14
- build_u12
# - build_r7 (core dump issue while running ant)
- build_r6
<<: *std_filters
- deploy_s3:
requires:
- deploy_s3_hold
<<: *std_filters
#########################
- app1_ec2_install:
type: approval
requires:
- build_u16
<<: *std_filters
- app1_ec2_upgrade:
type: approval
requires:
- build_u16
<<: *std_filters
- deploy_ec2@app1_install:
requires:
- app1_ec2_install
<<: *std_filters
- deploy_ec2@app1_upgrade:
requires:
- app1_ec2_upgrade
<<: *std_filters
#########################
- app2_ec2_install:
type: approval
requires:
- build_r6
<<: *std_filters
- app2_ec2_upgrade:
type: approval
requires:
- build_r6
<<: *std_filters
- deploy_ec2@app2_install:
requires:
- app2_ec2_install
<<: *std_filters
- deploy_ec2@app2_upgrade:
requires:
- app2_ec2_upgrade
<<: *std_filters
================================================
FILE: .circleci/jobs/deploy_ec2/deploy.sh
================================================
#!/bin/bash
set -euo pipefail
SCRIPT_DIR=$(CDPATH= cd "$(dirname "$0")" && pwd);
CIRCLE_DIR=$(dirname "$(dirname "$SCRIPT_DIR")")
usage()
{
echo "Usage: $0 -o <upgrade|install> -t <u16|u14|u12|r7|r6> -h <ssh-ec2-host> -u <ssh-ec2-user> -a <admin-pass-to-set>" 1>&2;
echo 1>&2;
echo "Example:" 1>&2;
echo " $0 -o upgrade -t u16 -h ec2-xx-xx-xx-xx.us-east-2.compute.amazonaws.com -u ubuntu -a admin123" 1>&2;
exit 1
}
#######################################################################
##### PARSE ARGS, SANITIZE #####
#######################################################################
set +u
while getopts "o:t:h:u:a:" cur_opt; do
case "${cur_opt}" in
o)
OPERATION="${OPTARG}"
if [ "$OPERATION" != "upgrade" ] && [ "$OPERATION" != "install" ]
then
usage
fi
;;
t)
PKG_OS_TAG=${OPTARG}
case "$PKG_OS_TAG" in
u16) DIR=$(echo $CIRCLE_DIR/../../BUILDS/UBUNTU16_64* | head -1); ;;
u14) DIR=$(echo $CIRCLE_DIR/../../BUILDS/UBUNTU14_64* | head -1); ;;
u12) DIR=$(echo $CIRCLE_DIR/../../BUILDS/UBUNTU12_64* | head -1); ;;
r7) DIR=$(echo $CIRCLE_DIR/../../BUILDS/RHEL7_64* | head -1); ;;
r6) DIR=$(echo $CIRCLE_DIR/../../BUILDS/RHEL6_64* | head -1); ;;
*) usage; ;;
esac
;;
h)
MY_SSH_HOST=${OPTARG}
;;
u)
MY_SSH_USER=${OPTARG}
;;
a)
MY_ADMIN_PASS=${OPTARG}
;;
*)
usage
;;
esac
done
shift $((OPTIND-1))
if [ -z "$MY_SSH_USER" ] || [ -z "$MY_SSH_HOST" ] || [ -z "$MY_ADMIN_PASS" ] || [ -z "$PKG_OS_TAG" ]
then
usage;
fi
if [ ! -f "$CIRCLE_DIR/config.yml" ]
then
echo "Rerun from within .circleci directory";
exit 1
fi
if [ ! -d "$DIR" ]
then
echo "Could not find the BUILD";
exit 1;
fi
set -u
##### END GETOPT #####
#######################################################################
#######################################################################
##### RSYNC #####
#######################################################################
SSH_OPTS=(
"-o" "UserKnownHostsFile=/dev/null"
"-o" "StrictHostKeyChecking=no"
"-o" "CheckHostIP=no"
"-o" "ServerAliveInterval=100"
)
Rsync()
{
rsync -e "ssh ${SSH_OPTS[*]}" "$@"
}
Ssh()
{
ssh "${SSH_OPTS[@]}" "$@"
}
#Rsync --delete -avz $CIRCLE_DIR/../zm-build "$MY_SSH_USER@$MY_SSH_HOST:"
Rsync --delete -avz "$DIR/" "$MY_SSH_USER@$MY_SSH_HOST:BUILD/"
Rsync $CIRCLE_DIR/jobs/deploy_ec2/install.conf.in "$MY_SSH_USER@$MY_SSH_HOST:BUILD/install.conf.in"
Rsync $CIRCLE_DIR/jobs/deploy_ec2/upgrade.conf.in "$MY_SSH_USER@$MY_SSH_HOST:BUILD/upgrade.conf.in"
##### END RSYNC #####
#######################################################################
#######################################################################
##### FORWARD SCRIPT TO EXECUTE #####
#######################################################################
Ssh "$MY_SSH_USER@$MY_SSH_HOST" -- tee /tmp/injected_bash_script.sh <<"SCRIPT_EOM"
#!/bin/bash
[ -z "$DOMAIN_NAME" ] && echo "DOMAIN_NAME is not defined" && exit 1;
[ -z "$ADMIN_PASS" ] && echo "ADMIN_PASS is not defined" && exit 1;
[ -z "$OPERATION" ] && echo "OPERATION is not defined" && exit 1;
[ -z "$PKG_OS_TAG" ] && echo "PKG_OS_TAG is not defined" && exit 1;
set -euxo pipefail
setUp()
{
echo -----------------------------------
echo System Setup specific to EC2
echo -----------------------------------
[ -f /etc/hosts.orig ] || sudo cp /etc/hosts /etc/hosts.orig
[ -f /etc/resolv.conf.orig ] || sudo cp /etc/resolv.conf /etc/resolv.conf.orig
EC2_IP=$(hostname | sed -e 's/[.\s].*$//' -e 's/^ip-//' -e 's/[-]/./g')
EC2_RESOLVE=$(hostname | sed -e 's/[.\s].*$//' -e 's/^ip-//' -e 's/[-]/./g' -e 's/[.][0-9]*[.][0-9]*$/.0.2/')
sudo sed -i -e "\$a$EC2_IP $(hostname -f) $(hostname)" -e "/ip-/ { /$(hostname)/d; }" /etc/hosts
sudo sed -i -e "/^search/i\\nameserver $EC2_RESOLVE\nnameserver 8.8.8.8" -e "/nameserver 8.8.8.8/d" -e "/nameserver $EC2_RESOLVE/d" /etc/resolv.conf
echo -----------------------------------
echo System Cleanup
echo -----------------------------------
set +e;
sudo killall master zmstat-fd
sudo killall -u zimbra
sudo killall -u postfix
sudo pkill -f 'amavi[s]'
sleep 10
sudo killall -9 master zmstat-fd
sudo killall -9 -u zimbra
sudo killall -9 -u postfix
sudo pkill -9 -f 'amavi[s]'
sleep 10
[[ "$PKG_OS_TAG" =~ u* ]] && sudo apt-get remove --purge -y zimbra-*
[[ "$PKG_OS_TAG" =~ r* ]] && sudo yum erase -y zimbra-*
sudo rm -rf /opt/zimbra
[[ "$PKG_OS_TAG" =~ u* ]] && sudo apt-get install -y perl
[[ "$PKG_OS_TAG" =~ r* ]] && sudo yum install -y perl
if [[ "$PKG_OS_TAG" =~ r6 ]]
then
if [ ! -f /usr/lib/python2.6/site-packages/yum/__init__.py.patched ]
then
#We are running into a curious yum bug - See https://bugzilla.redhat.com/show_bug.cgi?id=993567
sudo yum -y install wget patch
sudo wget http://s3.amazonaws.com/files.zimbra.com/dev-releases/hold/r6-yum-patch/yum.patch -O ~/yum.patch
sudo cp /usr/lib/python2.6/site-packages/yum/__init__.py{,.orig}
sudo patch -p0 < ~/yum.patch
sudo cp /usr/lib/python2.6/site-packages/yum/__init__.py{,.patched}
fi
fi
echo
}
buildCleanUp()
{
echo -----------------------------------
echo Build Cleanup, Uncompress new tarball
echo -----------------------------------
sudo rm -rf ~/WDIR
mkdir ~/WDIR
tar -C ~/WDIR -xzf BUILD/zcs-*.tgz
}
prepareConfig()
{
echo -----------------------------------
echo Create install configuration
echo -----------------------------------
HOSTNAME="$(hostname --fqdn)"
RESOLVE="$(cat /etc/resolv.conf | awk '/^\s*nameserver/ { print $2; }' | grep -v ^127 | head -1)"
sed -e "s/template_resolv/$RESOLVE/" \
-e "s/template_hostname/$HOSTNAME/" \
-e "s/template_domainname/$DOMAIN_NAME/" \
-e "s/template_admin_pass/$ADMIN_PASS/g" \
~/BUILD/install.conf.in > ~/WDIR/install.conf
cat ~/BUILD/upgrade.conf.in > ~/WDIR/upgrade.conf
}
updatePackages()
{
echo -----------------------------------
echo Setup local archives
echo -----------------------------------
if [[ "$PKG_OS_TAG" =~ u ]]
then
sudo rm -f /etc/apt/sources.list.d/zimbra-*.list
echo "deb [trusted=yes] file://$(echo $HOME/BUILD/archives/*/$PKG_OS_TAG) ./" | sudo tee -a /etc/apt/sources.list.d/zimbra-local.list
echo "deb [trusted=yes] https://files.zimbra.com/dev-releases/hold/Zimbra/zm-zextras/develop-52/archives/zimbra-zextras/$PKG_OS_TAG ./" | sudo tee -a /etc/apt/sources.list.d/zimbra-zextras.list
echo "deb [trusted=yes] https://files.zimbra.com/dev-releases/hold/Zimbra/zm-timezones/develop-35/archives/zimbra-foss/$PKG_OS_TAG ./" | sudo tee -a /etc/apt/sources.list.d/zimbra-foss.list
#echo "deb [arch=amd64] https://repo.zimbra.com/apt/zimbra-zextras xenial zimbra" | sudo tee -a /etc/apt/sources.list.d/zimbra-zextras.list
#echo "deb [arch=amd64] https://repo.zimbra.com/apt/zimbra-foss xenial zimbra" | sudo tee -a /etc/apt/sources.list.d/zimbra-foss.list
sudo apt-get update -qq
fi
if [[ "$PKG_OS_TAG" =~ r ]]
then
sudo rm -f /etc/yum.repos.d/zimbra-*.repo
sudo tee -a /etc/yum.repos.d/zimbra-local.repo <<EOM
[zimbra-local-zm-build]
name=zimbra-local
baseurl=file://$(echo $HOME/BUILD/archives/*/$PKG_OS_TAG)
enabled=1
gpgcheck=0
protect=0
EOM
sudo tee -a /etc/yum.repos.d/zimbra-zextras.repo <<EOM
[zimbra-zextras-zm-zextras]
name=zimbra-zextras
baseurl=https://files.zimbra.com/dev-releases/hold/Zimbra/zm-zextras/develop-52/archives/zimbra-zextras/$PKG_OS_TAG
enabled=1
gpgcheck=0
protect=0
EOM
sudo tee -a /etc/yum.repos.d/zimbra-foss.repo <<EOM
[zimbra-foss-zm-timezones]
name=zimbra-foss
baseurl=https://files.zimbra.com/dev-releases/hold/Zimbra/zm-timezones/develop-35/archives/zimbra-foss/$PKG_OS_TAG
enabled=1
gpgcheck=0
protect=0
EOM
sudo yum clean all
fi
}
deploy()
{
echo -----------------------------------
echo Upgrade/Install
echo -----------------------------------
cd ~/WDIR/zcs-*/;
sudo ./install.sh $1
}
postInstallConfiguration()
{
echo -----------------------------------
echo Additional Settings
echo -----------------------------------
sudo su - zimbra -c "zmprov -l md $DOMAIN_NAME zimbraVirtualHostname $DOMAIN_NAME"
sudo su - zimbra -c "zmprov -l mcf zimbraReverseProxyAdminEnabled TRUE"
sudo su - zimbra -c "zmproxyctl restart"
sudo su - zimbra -c "zmprov -l mcf zimbraPublicServiceHostname $DOMAIN_NAME"
sudo su - zimbra -c "zmprov -l mcf zimbraPublicServicePort 443"
sudo su - zimbra -c "zmprov -l mcf zimbraPublicServiceProtocol https"
sudo su - zimbra -c "zmprov mc default zimbraFeatureNotebookEnabled TRUE"
sudo su - zimbra -c "zmmailboxdctl restart"
}
Main() {
echo $OPERATION
if [ "$OPERATION" == "upgrade" ]; then
buildCleanUp
prepareConfig
updatePackages
deploy ~/WDIR/upgrade.conf
else
setUp
buildCleanUp
prepareConfig
updatePackages
deploy ~/WDIR/install.conf
postInstallConfiguration
fi
}
Main
echo -----------------------------------
echo INSTALL FINISHED
echo -----------------------------------
SCRIPT_EOM
#######################################################################
##### EXECUTE SCRIPT IN EC2 #####
#######################################################################
# XXX: All variables have to be explicitly forwarded to the script below, and it runs inside the remote machines's context
Ssh "$MY_SSH_USER@$MY_SSH_HOST" -- "DOMAIN_NAME=$MY_SSH_HOST" "ADMIN_PASS=$MY_ADMIN_PASS" "OPERATION=$OPERATION" "PKG_OS_TAG=$PKG_OS_TAG" bash /tmp/injected_bash_script.sh
echo DEPLOY FINISHED - https://$MY_SSH_HOST/
================================================
FILE: .circleci/jobs/deploy_ec2/install.conf.in
================================================
AVDOMAIN="template_domainname"
AVUSER="admin@template_domainname"
CREATEADMIN="admin@template_domainname"
CREATEADMINPASS="template_admin_pass"
CREATEDOMAIN="template_domainname"
DOCREATEADMIN="yes"
DOCREATEDOMAIN="yes"
DOTRAINSA="yes"
ENABLEDEFAULTBACKUP="yes"
EXPANDMENU="no"
HOSTNAME="template_hostname"
HTTPPORT="8080"
HTTPPROXYPORT="80"
HTTPPROXY="TRUE"
HTTPSPORT="8443"
HTTPSPROXYPORT="443"
IMAPPORT="7143"
IMAPPROXYPORT="143"
IMAPSSLPORT="7993"
IMAPSSLPROXYPORT="993"
INSTALL_PACKAGES="zimbra-core zimbra-ldap zimbra-logger zimbra-mta zimbra-dnscache zimbra-snmp zimbra-store zimbra-apache zimbra-spell zimbra-proxy"
INSTALL_WEBAPPS="service zimlet zimbra zimbraAdmin"
LDAPADMINPASS="zpass-ldap-admin"
LDAPAMAVISPASS="zpass-ldap-amavis"
ldap_bes_searcher_password="zpass-bes"
LDAPBESSEARCHSET="set"
ldap_dit_base_dn_config="cn=zimbra"
LDAPHOST="template_hostname"
ldap_nginx_password="zpass-nginx"
LDAPPORT="389"
LDAPPOSTPASS="zpass-ldap-post"
LDAPREPLICATIONTYPE="master"
LDAPREPPASS="zpass-ldap-rep"
LDAPROOTPASS="zpass-ldap-root"
mailboxd_directory="/opt/zimbra/mailboxd"
mailboxd_keystore="/opt/zimbra/mailboxd/etc/keystore"
mailboxd_keystore_password="zpass-mailboxd"
MAILBOXDMEMORY="1484"
mailboxd_server="jetty"
mailboxd_truststore_password="changeit"
MAILPROXY="TRUE"
MODE="https"
MYSQLMEMORYPERCENT="30"
PACKAGE_SERVER="repo.zimbra.com"
POPPORT="7110"
POPPROXYPORT="110"
POPSSLPORT="7995"
POPSSLPROXYPORT="995"
postfix_mail_owner="postfix"
postfix_setgid_group="postdrop"
PROXYMODE="https"
REMOVE="no"
RUNARCHIVING="no"
RUNAV="yes"
RUNCBPOLICYD="no"
RUNDKIM="yes"
RUNSA="yes"
RUNVMHA="no"
SERVICEWEBAPP="yes"
SMTPDEST="admin@template_domainname"
SMTPHOST="template_hostname"
SMTPNOTIFY="yes"
SMTPSOURCE="admin@template_domainname"
SNMPNOTIFY="yes"
SNMPTRAPHOST="template_hostname"
SPELLURL="http://template_hostname:7780/aspell.php"
ssl_default_digest="sha256"
STARTSERVERS="yes"
SYSTEMMEMORY="5.8"
TRAINSAHAM="ham@template_domainname"
TRAINSASPAM="spam@template_domainname"
UIWEBAPPS="yes"
UPGRADE="no"
USESPELL="yes"
USE_ZIMBRA_PACKAGE_SERVER="yes"
VERSIONUPDATECHECKS="TRUE"
VIRUSQUARANTINE="virus-quarantine@template_domainname"
zimbraBackupReportEmailRecipients="admin@template_domainname"
zimbraBackupReportEmailSender="admin@template_domainname"
zimbraDNSMasterIP="template_resolve"
zimbraDNSTCPUpstream="no"
zimbraDNSUseTCP="yes"
zimbraDNSUseUDP="yes"
zimbraFeatureBriefcasesEnabled="Enabled"
zimbraFeatureTasksEnabled="Enabled"
zimbraIPMode="ipv4"
zimbra_ldap_userdn="uid=zimbra,cn=admins,cn=zimbra"
zimbraMailProxy="TRUE"
zimbraPrefTimeZoneId="America/Chicago"
ZIMBRA_REQ_SECURITY="yes"
zimbra_require_interprocess_security="1"
zimbraReverseProxyLookupTarget="TRUE"
zimbraVersionCheckNotificationEmail="admin@template_domainname"
zimbraVersionCheckNotificationEmailFrom="admin@template_domainname"
zimbraVersionCheckSendNotifications="TRUE"
zimbraWebProxy="TRUE"
================================================
FILE: .circleci/jobs/deploy_ec2/upgrade.conf.in
================================================
PACKAGE_SERVER="repo.zimbra.com"
REMOVE="no"
UPGRADE="yes"
USE_ZIMBRA_PACKAGE_SERVER="yes"
VERSIONUPDATECHECKS="TRUE"
INSTALL_PACKAGES="zimbra-core zimbra-ldap zimbra-logger zimbra-mta zimbra-dnscache zimbra-snmp zimbra-store zimbra-apache zimbra-spell zimbra-memcached zimbra-proxy "
================================================
FILE: .circleci/misc/glean_version.pl
================================================
#!/usr/bin/perl
use version;
if($ENV{CIRCLE_BRANCH} =~ "^release/([0-9]+[.][0-9]+[.][0-9]+)")
{
print $1 . "\n";
}
else
{
my $V = "1.0.0";
close(STDERR);
open(FD, "-|", "git", "ls-remote");
while (<FD>)
{
if ( $_ =~ /refs.*\/release\/([0-9]+[.][0-9]+[.])([0-9]+)/ )
{
my $nV = $1 . ( $2 + 1 );
if( ( version->parse($nV) <=> version->parse($V) ) gt 0 )
{
$V = $nV;
}
}
}
close(FD);
print $V . "\n"
}
================================================
FILE: .circleci/misc/status_api.sh
================================================
#!/bin/bash
set -e -o pipefail
curl -Ls "https://circleci.com/api/v1.1/project/github/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/$CIRCLE_BUILD_NUM?circle-token=$CIRCLE_API_TOKEN"
================================================
FILE: .gitignore
================================================
.build.last_no_ts
.build.number
.idea
config.build
RE/BUILD
RE/MAJOR
RE/MICRO
RE/MINOR
================================================
FILE: .project
================================================
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>ZimbraBuild</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
</buildSpec>
<natures>
</natures>
</projectDescription>
================================================
FILE: RE/MICRO_WIN
================================================
1_M1
================================================
FILE: RE/README.txt
================================================
Included:
Binary release:
README.txt - this file
install.sh - install script
bin/ - binaries used during install
data/ - contains installation data
packages/ - contains ZCS rpms
docs/ - more documentation
Source release:
README.txt - this file
src/ - source files
docs/ - more documentation
Installing from binary:
tar xzf zcs.tgz
cd zcs
./install.sh
Installing from source:
Consult the file readme_source.txt
================================================
FILE: RE/RELEASE
================================================
1
================================================
FILE: README.md
================================================
# zm-build
## Introduction
This repository contains the build script and supporting files required to create a [FOSS](https://en.wikipedia.org/wiki/Free_and_open-source_software) build of the [Zimbra Collaboration Suite](https://www.zimbra.com/).
## Overview
* `build.pl` - Invoke this script to produce a build. See the *Building* section
below for an example.
* `instructions/`
* `FOSS_remote_list.pl` - Maps between remote label and URL
* `FOSS_repo_list.pl` - Specifies which branches (or tags) are checked out to
build each component repository.
* `FOSS_staging_list.pl` - defines the staging order and details.
## Setup with Zimbra Development Images (used for building)
* Set up docker on your box
* You can then pull and run using development images (built from Zimbra/zm-base-os.git)
* In case you need to customize the images for your purposes, you could maintain your own Dockerfile such as this:
$ cat Dockerfile
FROM zimbra/zm-base-os:devcore-ubuntu-16.04
RUN sudo apt-get install emacs my-special-tool etc..
RUN ...
$ docker build -t myuser/my-devcore-ubuntu-16 .
$ docker run -it myuser/my-devcore-ubuntu-16 bash
### Ubuntu 16.04
docker run -it zimbra/zm-base-os:devcore-ubuntu-16.04 bash
### CentOS 7
docker run -it zimbra/zm-base-os:devcore-centos-7 bash
### CentOS 6
docker run -it zimbra/zm-base-os:devcore-centos-6 bash
# some tools are installed inside /home/build/.zm-dev-tools/, zm-build automatically sources this path.
## Setup (traditional)
### Ubuntu 16.04
The following steps assume that your are starting with a clean VM and are
logged in as a non-root user with `sudo` privileges.
sudo apt-get update
sudo apt-get install software-properties-common openjdk-8-jdk ant ant-optional ant-contrib ruby git maven build-essential debhelper
### CentOS 7
sudo yum groupinstall 'Development Tools'
sudo yum install java-1.8.0-openjdk ant ant-junit ruby git maven cpan wget perl-IPC-Cmd
### CentOS 6
sudo yum groupinstall 'Development Tools'
sudo yum remove java-1.7.0-openjdk java-1.6.0-openjdk ant
sudo yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel ruby git cpan wget
# install specific perl modules
sudo cpan IPC::Cmd
cd /tmp
# install maven
wget http://mirror.metrocast.net/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
sudo tar -xf apache-maven-3.3.9-bin.tar.gz
sudo mv apache-maven-3.3.9 /opt
echo 'export PATH="/opt/apache-maven-3.3.9/bin:$PATH"' | sudo tee -a /etc/profile.d/maven.sh
# install current version of ant
wget https://www.apache.org/dist/ant/binaries/apache-ant-1.9.9-bin.zip
sudo unzip apache-ant-1.9.9-bin.zip
sudo mv apache-ant-1.9.9 /opt
echo 'export PATH="/opt/apache-ant-1.9.9/bin:$PATH"' | sudo tee -a /etc/profile.d/ant.sh
## Building
Create a directory for your build and check-out the `zm-build` repository:
Build from develop branch
mkdir installer-build
cd installer-build
git clone https://github.com/Zimbra/zm-build.git
cd zm-build
git checkout origin/develop
ENV_CACHE_CLEAR_FLAG=true ./build.pl --ant-options -DskipTests=true --ant-options -DskipCoverage=true --ant-options -DskipSonarScan=true --git-default-branch=develop --build-release-no=10.1.0 --build-type=FOSS --build-release=LIBERTY --build-release-candidate=GA --build-thirdparty-server=files.zimbra.com --no-interactive
Build 10.1.0
```
mkdir installer-build
cd installer-build
git clone --depth 1 --branch 10.1.0 git@github.com:Zimbra/zm-build.git
cd zm-build
ENV_CACHE_CLEAR_FLAG=true ./build.pl --ant-options -DskipTests=true --git-default-tag=10.1.0 --build-release-no=10.1.0 --build-type=FOSS --build-release=LIBERTY --build-release-candidate=GA --build-thirdparty-server=files.zimbra.com --no-interactive
```
To build a specific patch example 10.0.8 run the following:
```
mkdir installer-build
cd installer-build
git clone --depth 1 --branch 10.0.6 git@github.com:Zimbra/zm-build.git
cd zm-build
ENV_CACHE_CLEAR_FLAG=true ./build.pl --ant-options -DskipTests=true --git-default-tag=10.0.8,10.0.7,10.0.6,10.0.5,10.0.4,10.0.3,10.0.2,10.0.1,10.0.0-GA --build-release-no=10.0.8 --build-type=FOSS --build-release=LIBERTY --build-release-candidate=GA --build-thirdparty-server=files.zimbra.com --no-interactive
```
Or for example 9.0.0.p40 run the following:
```
mkdir installer-build
cd installer-build
git clone --depth 1 --branch 9.0.0.p38 git@github.com:Zimbra/zm-build.git
cd zm-build
ENV_CACHE_CLEAR_FLAG=true ./build.pl --ant-options -DskipTests=true --git-default-tag=9.0.0.p40,9.0.0.p39,9.0.0.p38,9.0.0.p37,9.0.0.p36,9.0.0.p35,9.0.0.p34,9.0.0.p33,9.0.0.p32.1,9.0.0.p32,9.0.0.p31,9.0.0.p30,9.0.0.p29,9.0.0.p28,9.0.0.p27,9.0.0.p26,9.0.0.p25,9.0.0.p24.1,9.0.0.p24,9.0.0.p23,9.0.0.p22,9.0.0.p21,9.0.0.p20,9.0.0.p19,9.0.0.p18,9.0.0.p17,9.0.0.p16,9.0.0.p15,9.0.0.p14,9.0.0.p13,9.0.0.p12,9.0.0.p11,9.0.0.p10,9.0.0.p9,9.0.0.p8,9.0.0.p7,9.0.0.p6.1,9.0.0.p6,9.0.0.p5,9.0.0.p4,9.0.0.p3,9.0.0.p2,9.0.0.p1,9.0.0 --build-release-no=9.0.0 --build-type=FOSS --build-release=KEPLER --build-release-candidate=GA --build-thirdparty-server=files.zimbra.com --no-interactive
```
The `build.pl` command is used to build the product. Run it with the `-h` option for help:
Usage: ./build.pl <options>
Supported options:
--build-no=i
--build-ts=i
--build-artifacts-base-dir=s
--build-sources-base-dir=s
--build-release=s
--build-release-no=s
--build-release-candidate=s
--build-type=s
--build-thirdparty-server=s
--build-prod-flag!
--build-debug-flag!
--build-dev-tool-base-dir=s
--interactive!
--git-overrides=s%
--git-default-tag=s
--git-default-remote=s
--git-default-branch=s
--stop-after-checkout!
You _can_ specify all the options on the command-line, as follows:
./build.pl --build-no=1713 --build-ts=`date +'%Y%m%d%H%M%S'` \
--build-release=JUDASPRIEST --build-release-no=8.7.6 \
--build-release-candidate=GA --build-type=FOSS \
--build-thirdparty-server=files.zimbra.com --no-interactive
The completed build will be archived into a `*.tgz` file that is stored in the appropriate platform and release-specific
subdirectory of the `BUILDS` directory. The above command, run on an Ubuntu 16.04 machine, created the following:
$HOME/installer_build/BUILDS/UBUNTU16_64/JUDASPRIEST-876/20170322153033_FOSS/zm-build/zcs-8.7.6_1713.UBUNTU16_64.20170322153033.tgz
You can also specify any or all of the required options by placing them in a file
called `config.build`. This file should be at the top level of the `zm-build`
directory. For example:
BUILD_NO = 1713
BUILD_RELEASE = JUDASPRIEST
BUILD_RELEASE_NO = 8.7.6
BUILD_RELEASE_CANDIDATE = GA
BUILD_TYPE = FOSS
BUILD_THIRDPARTY_SERVER = files.zimbra.com
INTERACTIVE = 0
Then just run `./build.pl`.
The above command, run on a CentOS 7 machine with the options as shown in `config.build`, created the following:
$HOME/installer-build/BUILDS/RHEL7_64/JUDASPRIEST-876/20170323061131_FOSS/zm-build/zcs-8.7.6_GA_1713.RHEL7_64.20170323061131.tgz
# Development
## Setup
The following is a walk-through of the basic steps required to do ZCS development. The first step is to simply install a current FOSS build on the machine that you wish to use. The instructions that follow assume that this has been done.
1. Create `/home/zimbra` and make `zimbra` the owner.
sudo mkdir /home/zimbra
sudo chown zimbra:zimbra /home/zimbra
2. Install `git`, `ant`, and `ant-contrib` by whichever method is appropriate for your distro:
sudo apt-get install git ant ant-contrib
or
sudo yum install git ant ant-contrib
3. Configure `/opt/zimbra/.ssh/config` to use your ssh key for the git remotes that you need to access.
4. Perform the following edits on `/opt/zimbra/.bash_profile`
* Comment-out `export LANG=C` and `export LC_ALL=C`.
* Add export `LANG=en_US.UTF-8`
* Add export `ANT_OPTS=-Ddev.home=/home/zimbra`
5. Change permissions on files and folders that you will be updating; e.g.,
sudo chmod -R o+w /opt/zimbra/lib/
sudo chmod -R o+w /opt/zimbra/jetty/
sudo chown zimbra:zimbra /opt/zimbra
**Note:** If you run `zmfixperms`, some of these permissions will be overwritten.
6. Add file `/opt/zimbra/.gitconfig` and update as needed. At a minimum:
[user]
email = YOUR-EMAIL-ADDRESS
name = YOUR-FIRST-AND-LAST-NAME
7. As the `zimbra` user, create a base directory under `/home/zimbra` from which to work.
cd /home/zimbra
mkdir zcs
cd zcs
8. Now you can clone any repositories that you require and get to work.
## Email Delivery
If you want email delivery to work, set up a DNS server on your host
machine or another VM and configure `zimbraDNSMasterIP` to point to it.
To configure `zimbraDNSMasterIP`, do the following as the `zimbra` user:
zmprov ms `zmhostname` zimbraDNSMasterIP DNS-SERVER-IP-ADDRESS
You may receive the following error when trying to send email:
No SMTP hosts available for domain
If this occurs, you need to manually configure `zimbraSmtpHostname` for your domain(s).
To configure `zimbraSmtpHostname`, do the following as the `zimbra` user:
zmprov md DOMAIN-NAME zimbraSmtpHostname `zmhostname`
## zm-mailbox example
As the `zimbra` user, `cd /home/zimbra/zcs`. Then clone the `zm-mailbox` repository from github
git clone git@github.com:Zimbra/zm-mailbox.git
The following sub-directories `zm-mailbox` build and deploy separately:
client
common
milter-conf
native
soap
store
store-conf
The top-level `build.xml` is used by the `zm-build` scripts to create
an installer package. You will not use that for normal development. There are build-order
dependencies between the above-listed deployment targets. These can be determined by
inspection of the `ivy.xml` files within each subdirectory.
For example:
grep 'org="zimbra"' store/ivy.xml
<dependency org="zimbra" name="zm-common" rev="latest.integration"/>
<dependency org="zimbra" name="zm-soap" rev="latest.integration"/>
<dependency org="zimbra" name="zm-client" rev="latest.integration"/>
<dependency org="zimbra" name="zm-native" rev="latest.integration"/>
Here you can see that the deployment target, `zm-store` (the `store`
subdirectory), depends upon `common`, `soap`, `client`, and `native`. Here is the current
ordering dependencies among all of the `zm-mailbox` deployment targets. The higher-numbered
deployment targets depend upon the lower-numbered ones. Note that `milter-conf` and
`store-conf` have no cross-dependencies.
1. `native`
2. `common`
3. `soap`
4. `client`
5. `store`
So, from the `native` sub-directory:
ant -Dzimbra.buildinfo.version=8.7.6_GA clean compile publish-local deploy
Comments:
- The requirement to include `-Dzimbra.buildinfo.version=8.7.6_GA` to ant is due to a change
that was made when the FOSS code was moved to GitHub. You can also just add that option
to your `ANT_OPTS` enviroment variable that you defined in `$HOME/.bash_profile` as follows:
export ANT_OPTS="-Ddev.home=/home/zimbra -Dzimbra.buildinfo.version=8.7.6_GA"
If you do that, then you can omit that `-D...` argument to the `ant` command and future
examples will reflect that.
- The `publish-local` target adds the artifact to `/home/zimbra/.zcs-deps`, which is
included in the Ivy resolution path.
- The `deploy` target installs the artifact to its run-time location and restarts the appropriate
service(s). This will allow you to test your changes.
Then, from the `common`, `soap`, `client`, and `store` sub-directories (in that order):
ant clean compile publish-local deploy
## Adding a new LDAP Attribute
**WARNING:It is absolutely imperative to avoid duplicate IDs for attributes.
Unfortunately, that currently isn't a trivial thing to do. Need to check
Zimbra 8 and Zimbra X along with all development branches.
If customers get different setups using different IDs, this makes future upgrade
scenarios a complete nightmare**
Start by cloning _both_ the `zm-ldap-utilites` and the `zm-mailbox` repositories from GitHub.
Check out the appropriate branch of each. Then proceed as follows:
* Add your new attribute to `zm-mailbox/store/conf/attrs/zimbra-attrs.xml`
* From `zm-common/store` invoke the following command:
ant generate-getters
* Do the following as `root`:
chmod -R o+w /opt/zimbra/common/etc/openldap/schema
chmod o+w /opt/zimbra/conf/zimbra.ldif
chmod +w /opt/zimbra/conf/attrs/zimbra-attrs.xml
chmod -R o+w /opt/zimbra/common/etc/openldap/zimbra
* Back as the `zimbra` user, invoke the following command from `zm-mailbox/common`:
ant deploy publish-local
* Then from the `zm-mailbox/store` directory:
ant deploy update-ldap-schema
Your ZCS development server should now be running with the new attribute(s). You can test that
by querying them and modifying them with `zmprov`. You can `git add ...` and `git commit`
your changes now.
================================================
FILE: build.pl
================================================
#!/usr/bin/perl
use strict;
use warnings;
use Config;
use Cwd;
use Data::Dumper;
use File::Basename;
use File::Copy;
use Getopt::Long;
use IPC::Cmd qw/run/;
use Net::Domain;
use Term::ANSIColor;
my $GLOBAL_PATH_TO_SCRIPT_FILE;
my $GLOBAL_PATH_TO_SCRIPT_DIR;
my $GLOBAL_PATH_TO_TOP;
my $CWD;
my %CFG = ();
BEGIN
{
$ENV{ANSI_COLORS_DISABLED} = 1 if ( !-t STDOUT );
$GLOBAL_PATH_TO_SCRIPT_FILE = Cwd::abs_path(__FILE__);
$GLOBAL_PATH_TO_SCRIPT_DIR = dirname($GLOBAL_PATH_TO_SCRIPT_FILE);
$GLOBAL_PATH_TO_TOP = dirname($GLOBAL_PATH_TO_SCRIPT_DIR);
$CWD = getcwd();
}
chdir($GLOBAL_PATH_TO_TOP);
##############################################################################################
sub LoadConfiguration($)
{
my $args = shift;
my $cfg_name = $args->{name};
my $cmd_hash = $args->{hash_src};
my $default_sub = $args->{default_sub};
my @cfg_list = ();
push( @cfg_list, "config.build" );
push( @cfg_list, ".build.last_no_ts" ) if ( $ENV{ENV_RESUME_FLAG} );
my $val;
my $src;
if ( !defined $val )
{
y/A-Z_/a-z-/ foreach ( my $cmd_name = $cfg_name );
if ( $cmd_hash && exists $cmd_hash->{$cmd_name} )
{
$val = $cmd_hash->{$cmd_name};
$src = "cmdline";
}
}
if ( !defined $val )
{
foreach my $file_basename (@cfg_list)
{
my $file = "$GLOBAL_PATH_TO_SCRIPT_DIR/$file_basename";
my $hash = LoadProperties($file)
if ( -f $file );
if ( $hash && exists $hash->{$cfg_name} )
{
$val = $hash->{$cfg_name};
$src = $file_basename;
last;
}
}
}
if ( !defined $val )
{
if ($default_sub)
{
$val = &$default_sub($cfg_name);
$src = "default";
}
}
if ( defined $val )
{
if ( ref($val) eq "HASH" )
{
foreach my $k ( keys %{$val} )
{
$CFG{$cfg_name}{$k} = ${$val}{$k};
printf( " %-35s: %-17s : %s\n", $cfg_name, $cmd_hash ? $src : "detected", $k . " => " . ${$val}{$k} );
}
}
else
{
$CFG{$cfg_name} = $val;
if (ref($val) eq 'ARRAY')
{
printf( " %-35s: %-17s : %s\n", $cfg_name, $cmd_hash ? $src : "detected", join(' ', @$val) );
}
else
{
printf( " %-35s: %-17s : %s\n", $cfg_name, $cmd_hash ? $src : "detected", $val );
}
}
}
}
sub InitGlobalBuildVars()
{
{
my $destination_name_func = sub {
return "$CFG{BUILD_OS}-$CFG{BUILD_RELEASE}-$CFG{BUILD_RELEASE_NO_SHORT}-$CFG{BUILD_TS}-$CFG{BUILD_TYPE}-$CFG{BUILD_NO}";
};
my $build_dir_func = sub {
return "$CFG{BUILD_SOURCES_BASE_DIR}/.staging/$CFG{DESTINATION_NAME}";
};
my %cmd_hash = ();
my @cmd_args = (
{ name => "BUILD_NO", type => "=i", hash_src => \%cmd_hash, default_sub => sub { return GetNewBuildNo(); }, },
{ name => "BUILD_TS", type => "=i", hash_src => \%cmd_hash, default_sub => sub { return GetNewBuildTs(); }, },
{ name => "BUILD_OS", type => "=s", hash_src => \%cmd_hash, default_sub => sub { return GetBuildOS(); }, },
{ name => "BUILD_DESTINATION_BASE_DIR", type => "=s", hash_src => \%cmd_hash, default_sub => sub { return "$GLOBAL_PATH_TO_TOP/BUILDS"; }, },
{ name => "BUILD_SOURCES_BASE_DIR", type => "=s", hash_src => \%cmd_hash, default_sub => sub { return $GLOBAL_PATH_TO_TOP; }, },
{ name => "BUILD_RELEASE", type => "=s", hash_src => \%cmd_hash, default_sub => sub { Die("@_ not specified"); }, },
{ name => "BUILD_RELEASE_NO", type => "=s", hash_src => \%cmd_hash, default_sub => sub { Die("@_ not specified"); }, },
{ name => "BUILD_RELEASE_CANDIDATE", type => "=s", hash_src => \%cmd_hash, default_sub => sub { Die("@_ not specified"); }, },
{ name => "BUILD_REVISION", type => "=s", hash_src => \%cmd_hash, default_sub => sub { "1"; }, },
{ name => "BUILD_TYPE", type => "=s", hash_src => \%cmd_hash, default_sub => sub { Die("@_ not specified"); }, },
{ name => "BUILD_THIRDPARTY_SERVER", type => "=s", hash_src => \%cmd_hash, default_sub => sub { Die("@_ not specified"); }, },
{ name => "BUILD_PROD_FLAG", type => "!", hash_src => \%cmd_hash, default_sub => sub { return 1; }, },
{ name => "BUILD_DEBUG_FLAG", type => "!", hash_src => \%cmd_hash, default_sub => sub { return 0; }, },
{ name => "BUILD_DEV_TOOL_BASE_DIR", type => "=s", hash_src => \%cmd_hash, default_sub => sub { return "$ENV{HOME}/.zm-dev-tools"; }, },
{ name => "INTERACTIVE", type => "!", hash_src => \%cmd_hash, default_sub => sub { return 1; }, },
{ name => "DISABLE_TAR", type => "!", hash_src => \%cmd_hash, default_sub => sub { return 0; }, },
{ name => "DISABLE_BUNDLE", type => "!", hash_src => \%cmd_hash, default_sub => sub { return 0; }, },
{ name => "EXCLUDE_GIT_REPOS", type => "=s", hash_src => \%cmd_hash, default_sub => sub { return ""; }, },
{ name => "GIT_OVERRIDES", type => "=s%", hash_src => \%cmd_hash, default_sub => sub { return {}; }, },
{ name => "GIT_DEFAULT_TAG", type => "=s", hash_src => \%cmd_hash, default_sub => sub { return undef; }, },
{ name => "GIT_DEFAULT_REMOTE", type => "=s", hash_src => \%cmd_hash, default_sub => sub { return undef; }, },
{ name => "GIT_DEFAULT_BRANCH", type => "=s", hash_src => \%cmd_hash, default_sub => sub { return undef; }, },
{ name => "GIT_DEFAULT_REPO_NAME_SUFFIX", type => "=s", hash_src => \%cmd_hash, default_sub => sub { return undef; }, },
{ name => "STOP_AFTER_CHECKOUT", type => "!", hash_src => \%cmd_hash, default_sub => sub { return 0; }, },
{ name => "ANT_OPTIONS", type => "=s@", hash_src => \%cmd_hash, default_sub => sub { return undef; }, },
{ name => "MVN_OPTIONS", type => "=s", hash_src => \%cmd_hash, default_sub => sub { return undef; }, },
{ name => "BUILD_HOSTNAME", type => "=s", hash_src => \%cmd_hash, default_sub => sub { return Net::Domain::hostfqdn; }, },
{ name => "BUILD_ARCH", type => "=s", hash_src => \%cmd_hash, default_sub => sub { return GetBuildArch(); }, },
{ name => "PKG_OS_TAG", type => "=s", hash_src => \%cmd_hash, default_sub => sub { return GetPkgOsTag(); }, },
{ name => "BUILD_REVISION_NORMALIZED", type => "=s", hash_src => \%cmd_hash, default_sub => sub { NormalizeBuildRevision($CFG{BUILD_REVISION}) }, },
{ name => "BUILD_RELEASE_NO_SHORT", type => "=s", hash_src => \%cmd_hash, default_sub => sub { my $x = $CFG{BUILD_RELEASE_NO}; $x =~ s/[.]//g; return $x; }, },
{ name => "DESTINATION_NAME", type => "=s", hash_src => \%cmd_hash, default_sub => sub { return &$destination_name_func; }, },
{ name => "BUILD_DIR", type => "=s", hash_src => \%cmd_hash, default_sub => sub { return &$build_dir_func; }, },
{ name => "DEPLOY_URL_PREFIX", type => "=s", hash_src => \%cmd_hash, default_sub => sub { $CFG{LOCAL_DEPLOY} = 1; return "http://" . Net::Domain::hostfqdn . ":8008/$CFG{DESTINATION_NAME}"; }, },
{ name => "DUMP_CONFIG_TO", type => "=s", hash_src => \%cmd_hash, default_sub => sub { return undef; }, },
);
{
my @cmd_opts =
map { $_->{opt} =~ y/A-Z_/a-z-/; $_; } # convert the opt named to lowercase to make command line options
map { { opt => $_->{name}, opt_s => $_->{type} } } # create a new hash with keys opt, opt_s
grep { $_->{type} } # get only names which have a valid type
@cmd_args;
my $help_func = sub {
print "Usage: $0 <options>\n";
print "Supported options: \n";
print " --" . "$_->{opt}$_->{opt_s}\n" foreach (@cmd_opts);
exit(0);
};
if ( !GetOptions( \%cmd_hash, ( map { $_->{opt} . $_->{opt_s} } @cmd_opts ), help => $help_func ) )
{
print Die("wrong commandline options, use --help");
}
}
print "=========================================================================================================\n";
LoadConfiguration($_) foreach (@cmd_args);
print "=========================================================================================================\n";
Die( "Bad version '$CFG{BUILD_RELEASE_NO}'", "$@" )
if ( $CFG{BUILD_RELEASE_NO} !~ m/^\d+[.]\d+[.]\d+$/ );
}
foreach my $x (`grep -o '\\<[E][N][V]_[A-Z_]*\\>' '$GLOBAL_PATH_TO_SCRIPT_FILE' | sort | uniq`)
{
chomp($x);
my $fmt2v = " %-35s: %s\n";
printf( $fmt2v, $x, defined $ENV{$x} ? $ENV{$x} : "(undef)" );
}
print "=========================================================================================================\n";
{
$ENV{PATH} = join(
":",
"$CFG{BUILD_DEV_TOOL_BASE_DIR}/bin/Sencha/Cmd/4.0.2.67", #remove nw specific requirements
reverse sort glob("$CFG{BUILD_DEV_TOOL_BASE_DIR}/*/bin"),
"$CFG{BUILD_DEV_TOOL_BASE_DIR}/bin",
"$ENV{PATH}"
);
my $cc = DetectPrerequisite("cc");
my $cpp = DetectPrerequisite("c++");
my $java = DetectPrerequisite( "java", $ENV{JAVA_HOME} ? "$ENV{JAVA_HOME}/bin" : "" );
my $javac = DetectPrerequisite( "javac", $ENV{JAVA_HOME} ? "$ENV{JAVA_HOME}/bin" : "" );
my $mvn = DetectPrerequisite("mvn");
my $ant = DetectPrerequisite("ant");
my $ruby = DetectPrerequisite("ruby");
my $make = DetectPrerequisite("make");
$ENV{JAVA_HOME} ||= dirname( dirname( Cwd::realpath($javac) ) );
$ENV{PATH} = "$ENV{JAVA_HOME}/bin:$ENV{PATH}";
my $fmt2v = " %-35s: %s\n";
printf( $fmt2v, "USING javac", "$javac (JAVA_HOME=$ENV{JAVA_HOME})" );
printf( $fmt2v, "USING java", $java );
printf( $fmt2v, "USING maven", $mvn );
printf( $fmt2v, "USING ant", $ant );
printf( $fmt2v, "USING cc", $cc );
printf( $fmt2v, "USING c++", $cpp );
printf( $fmt2v, "USING ruby", $ruby );
printf( $fmt2v, "USING make", $make );
}
print "=========================================================================================================\n";
if ( $CFG{DUMP_CONFIG_TO} )
{
open( my $fh, ">", $CFG{DUMP_CONFIG_TO} ) or Die("Could not open '$CFG{DUMP_CONFIG_TO}'");
print $fh "# Dumping config to file...\n\n";
foreach my $k ( sort keys %CFG )
{
my $v = $CFG{$k};
if ( ref($v) eq "HASH" )
{
foreach my $sk ( sort keys %$v )
{
printf $fh "%-30s = %s\n", '%' . $k, "$sk=$v->{$sk}";
}
}
else
{
printf $fh "%-30s = %s\n", $k, $v;
}
}
print "NOTE: DUMPED CONFIG TO FILE - $CFG{DUMP_CONFIG_TO}\n";
}
print "NOTE: THIS WILL STOP AFTER CHECKOUTS\n"
if ( $CFG{STOP_AFTER_CHECKOUT} );
if ( $CFG{INTERACTIVE} )
{
print "Press enter to proceed";
read STDIN, $_, 1;
}
}
sub TranslateToPackagePath
{
my $deploy_pkg_into = shift;
if ( my $pkg_dir = $deploy_pkg_into )
{
$pkg_dir = "zimbra-" . lc( $CFG{BUILD_TYPE} )
if ( $pkg_dir eq "bundle" && $CFG{DISABLE_BUNDLE} );
$pkg_dir .= "-$ENV{ENV_ARCHIVE_SUFFIX_STR}"
if ( $pkg_dir ne "bundle" && $ENV{ENV_ARCHIVE_SUFFIX_STR} );
return "$CFG{BUILD_DIR}/zm-packages/$pkg_dir/$CFG{PKG_OS_TAG}";
}
else
{
return undef;
}
}
sub Prepare()
{
RemoveTargetInDir( ".zcs-deps", $ENV{HOME} ) if ( $ENV{ENV_CACHE_CLEAR_FLAG} );
RemoveTargetInDir( ".ivy2/cache", $ENV{HOME} ) if ( $ENV{ENV_CACHE_CLEAR_FLAG} );
open( FD, ">", "$GLOBAL_PATH_TO_SCRIPT_DIR/.build.last_no_ts" );
print FD "BUILD_NO=$CFG{BUILD_NO}\n";
print FD "BUILD_TS=$CFG{BUILD_TS}\n";
close(FD);
SysExec( "mkdir", "-p", "$CFG{BUILD_DIR}" );
SysExec( "mkdir", "-p", "$CFG{BUILD_DIR}/logs" );
SysExec( "mkdir", "-p", "$ENV{HOME}/.zcs-deps" );
SysExec( "mkdir", "-p", "$ENV{HOME}/.ivy2/cache" );
SysExec( "find", $CFG{BUILD_DIR}, "-type", "f", "-name", ".built.*", "-delete" ) if ( $ENV{ENV_CACHE_CLEAR_FLAG} );
my @TP_JARS = (
"https://files.zimbra.com/repository/ant-1.7.0-ziputil-patched/ant-1.7.0-ziputil-patched-1.0.jar",
"https://files.zimbra.com/repository/ant-contrib/ant-contrib-1.0b1.jar",
"https://files.zimbra.com/repository/jruby/jruby-complete-1.6.3.jar",
"https://files.zimbra.com/repository/applet/plugin.jar",
"https://files.zimbra.com/repository/servlet-api/servlet-api-3.1.jar",
"https://files.zimbra.com/repository/unbound-ldapsdk/unboundid-ldapsdk-2.3.5-se.jar",
);
for my $j_url (@TP_JARS)
{
if ( my $f = "$ENV{HOME}/.zcs-deps/" . basename($j_url) )
{
if ( !-f $f )
{
SysExec( "wget", $j_url, "-O", "$f.tmp" );
SysExec( "mv", "$f.tmp", $f );
}
}
}
my ( $MAJOR, $MINOR, $MICRO ) = split( /[.]/, $CFG{BUILD_RELEASE_NO} );
EchoToFile( "$GLOBAL_PATH_TO_SCRIPT_DIR/RE/BUILD", $CFG{BUILD_NO} );
EchoToFile( "$GLOBAL_PATH_TO_SCRIPT_DIR/RE/MAJOR", $MAJOR );
EchoToFile( "$GLOBAL_PATH_TO_SCRIPT_DIR/RE/MINOR", $MINOR );
EchoToFile( "$GLOBAL_PATH_TO_SCRIPT_DIR/RE/MICRO", "${MICRO}_$CFG{BUILD_RELEASE_CANDIDATE}" );
close(FD);
}
sub EvalFile($;$)
{
my $fname = shift;
my $file = "$GLOBAL_PATH_TO_SCRIPT_DIR/$fname";
Die( "Error in '$file'", "$@" )
if ( !-f $file );
my @ENTRIES;
eval `cat '$file'`;
Die( "Error in '$file'", "$@" )
if ($@);
return \@ENTRIES;
}
sub LoadRepos()
{
my @agg_repos = ();
my %exclusions = ();
map { $exclusions{$_} = 1; } split(/,/, $CFG{EXCLUDE_GIT_REPOS});
push( @agg_repos, grep { !exists $exclusions{$_->{name}} } @{ EvalFile("instructions/$CFG{BUILD_TYPE}_repo_list.pl") } );
return \@agg_repos;
}
sub LoadRemotes()
{
my %details = @{ EvalFile("instructions/$CFG{BUILD_TYPE}_remote_list.pl") };
return \%details;
}
sub LoadBuilds($)
{
my $repo_list = shift;
my @agg_builds = ();
push( @agg_builds, @{ EvalFile("instructions/$CFG{BUILD_TYPE}_staging_list.pl") } );
my %repo_hash = map { $_->{name} => 1 } @$repo_list;
my @filtered_builds =
grep { my $d = $_->{dir}; $d =~ s/\/.*//; $repo_hash{$d} } # extract the repository from the 'dir' entry, filter out entries which do not exist in repo_list
@agg_builds;
return \@filtered_builds;
}
sub Checkout($)
{
my $repo_list = shift;
print "\n";
print "=========================================================================================================\n";
print " Processing " . scalar(@$repo_list) . " repositories\n";
print "=========================================================================================================\n";
print "\n";
my $repo_remote_details = LoadRemotes();
for my $repo_details (@$repo_list)
{
Clone( $repo_details, $repo_remote_details );
}
}
sub RemoveTargetInDir($$)
{
my $target = shift;
my $chdir = shift;
s/\/\/*/\//g, s/\/*$// for ( my $sane_target = $target ); #remove multiple slashes, and ending slashes, dots
if ( $sane_target && $chdir && -d $chdir )
{
eval
{
RunInDir( cd => $chdir, child => sub { SysExec( "rm", "-rf", $sane_target ); } );
};
}
}
sub EmitArchiveAccessInstructions($)
{
my $archive_names = shift;
if ( -f "/etc/redhat-release" )
{
return <<EOM_DUMP;
#########################################
# INSTRUCTIONS TO ACCESS FROM CLIENT BOX
#########################################
sudo bash -s <<"EOM_SCRIPT"
cat > /etc/yum.repos.d/zimbra-packages.repo <<EOM
@{[
join("\n",
map {
"[$_]
name=Zimbra Package Archive ($_)
baseurl=$CFG{DEPLOY_URL_PREFIX}/archives/$_/$CFG{PKG_OS_TAG}/
enabled=1
gpgcheck=0
protect=0"
}
@$archive_names
)]}
EOM
yum clean all
EOM_SCRIPT
EOM_DUMP
}
else
{
return <<EOM_DUMP;
#########################################
# INSTRUCTIONS TO ACCESS FROM CLIENT BOX
#########################################
sudo bash -s <<"EOM_SCRIPT"
cat > /etc/apt/sources.list.d/zimbra-packages.list << EOM
@{[
join("\n",
map {
"deb [trusted=yes] $CFG{DEPLOY_URL_PREFIX}/archives/$_/$CFG{PKG_OS_TAG} ./ # Zimbra Package Archive ($_)"
}
@$archive_names
)]}
EOM
apt-get update
EOM_SCRIPT
EOM_DUMP
}
}
sub Build($)
{
my $repo_list = shift;
my @ALL_BUILDS = @{ LoadBuilds($repo_list) };
my $tool_attributes = {
ant => [
"-Ddebug=$CFG{BUILD_DEBUG_FLAG}",
"-Dis-production=$CFG{BUILD_PROD_FLAG}",
"-Dzimbra.buildinfo.platform=$CFG{BUILD_OS}",
"-Dzimbra.buildinfo.pkg_os_tag=$CFG{PKG_OS_TAG}",
"-Dzimbra.buildinfo.version=$CFG{BUILD_RELEASE_NO}_$CFG{BUILD_RELEASE_CANDIDATE}_$CFG{BUILD_NO}",
"-Dzimbra.buildinfo.revision=$CFG{BUILD_REVISION_NORMALIZED}",
"-Dzimbra.buildinfo.type=$CFG{BUILD_TYPE}",
"-Dzimbra.buildinfo.release=$CFG{BUILD_TS}",
"-Dzimbra.buildinfo.date=$CFG{BUILD_TS}",
"-Dzimbra.buildinfo.host=$CFG{BUILD_HOSTNAME}",
"-Dzimbra.buildinfo.buildnum=$CFG{BUILD_NO}",
],
make => [
"debug=$CFG{BUILD_DEBUG_FLAG}",
"is-production=$CFG{BUILD_PROD_FLAG}",
"zimbra.buildinfo.platform=$CFG{BUILD_OS}",
"zimbra.buildinfo.pkg_os_tag=$CFG{PKG_OS_TAG}",
"zimbra.buildinfo.version=$CFG{BUILD_RELEASE_NO}_$CFG{BUILD_RELEASE_CANDIDATE}_$CFG{BUILD_NO}",
"zimbra.buildinfo.revision=$CFG{BUILD_REVISION_NORMALIZED}",
"zimbra.buildinfo.type=$CFG{BUILD_TYPE}",
"zimbra.buildinfo.release=$CFG{BUILD_TS}",
"zimbra.buildinfo.date=$CFG{BUILD_TS}",
"zimbra.buildinfo.host=$CFG{BUILD_HOSTNAME}",
"zimbra.buildinfo.buildnum=$CFG{BUILD_NO}",
],
mvn => [
],
};
push @{ $tool_attributes->{ant} },
ref $CFG{ANT_OPTIONS} eq 'ARRAY' ? @{ $CFG{ANT_OPTIONS} } : ($CFG{ANT_OPTIONS})
if defined $CFG{ANT_OPTIONS};
push( @{ $tool_attributes->{mvn} }, $CFG{MVN_OPTIONS} )
if ( $CFG{MVN_OPTIONS} );
my $cnt = 0;
for my $build_info (@ALL_BUILDS)
{
++$cnt;
if ( my $dir = $build_info->{dir} )
{
my $target_dir = "$CFG{BUILD_DIR}/$dir";
next
unless ( !defined $ENV{ENV_BUILD_INCLUDE} || grep { $dir =~ /$_/ } split( ",", $ENV{ENV_BUILD_INCLUDE} ) );
RemoveTargetInDir( $dir, $CFG{BUILD_DIR} )
if ( ( $ENV{ENV_FORCE_REBUILD} && grep { $dir =~ /$_/ } split( ",", $ENV{ENV_FORCE_REBUILD} ) ) );
print "=========================================================================================================\n";
print color('blue') . "BUILDING: $dir ($cnt of " . scalar(@ALL_BUILDS) . ")" . color('reset') . "\n";
print "\n";
if ( $ENV{ENV_RESUME_FLAG} && -f "$target_dir/.built.$CFG{BUILD_TS}" )
{
print color('yellow') . "SKIPPING... [TO REBUILD REMOVE '$target_dir']" . color('reset') . "\n";
print "=========================================================================================================\n";
print "\n";
}
else
{
unlink glob "$target_dir/.built.*";
RunInDir(
cd => $dir,
child => sub {
my $abs_dir = Cwd::abs_path();
if ( my $tool_seq = $build_info->{tool_seq} || [ "ant", "mvn", "make" ] )
{
for my $tool (@$tool_seq)
{
if ( my $targets = $build_info->{ $tool . "_targets" } ) #Known values are: ant_targets, mvn_targets, make_targets
{
eval { SysExec( $tool, "clean" ) if ( !$ENV{ENV_SKIP_CLEAN_FLAG} ); };
SysExec( $tool, @{ $tool_attributes->{$tool} || [] }, @$targets );
}
}
}
if ( my $stage_cmd = $build_info->{stage_cmd} )
{
&$stage_cmd
}
if ( my $packages_path = TranslateToPackagePath( $build_info->{deploy_pkg_into} ) )
{
SysExec( "mkdir", "-p", $packages_path );
SysExec( "rsync", "-av", "build/dist/$CFG{PKG_OS_TAG}/", "$packages_path/" );
}
if ( !exists $build_info->{partial} )
{
SysExec( "mkdir", "-p", "$target_dir" );
SysExec( "touch", "$target_dir/.built.$CFG{BUILD_TS}" );
}
},
);
print "\n";
print "=========================================================================================================\n";
print "\n";
}
}
}
RunInDir(
cd => "$GLOBAL_PATH_TO_SCRIPT_DIR",
child => sub {
SysExec( "rsync", "-az", "--delete", ".", "$CFG{BUILD_DIR}/zm-build" );
SysExec( "mkdir", "-p", "$CFG{BUILD_DIR}/zm-build/$CFG{BUILD_ARCH}" );
my @ALL_PACKAGES = ();
push( @ALL_PACKAGES, @{ EvalFile("instructions/$CFG{BUILD_TYPE}_package_list.pl") } );
push( @ALL_PACKAGES, "zcs-bundle" )
if ( !$CFG{DISABLE_TAR} );
for my $package_script (@ALL_PACKAGES)
{
if ( !defined $ENV{ENV_PACKAGE_INCLUDE} || grep { $package_script =~ /$_/ } split( ",", $ENV{ENV_PACKAGE_INCLUDE} ) )
{
SysExec(
" releaseNo='$CFG{BUILD_RELEASE_NO}' \\
releaseCandidate='$CFG{BUILD_RELEASE_CANDIDATE}' \\
branch='$CFG{BUILD_RELEASE}-$CFG{BUILD_RELEASE_NO_SHORT}' \\
buildNo='$CFG{BUILD_NO}' \\
os='$CFG{BUILD_OS}' \\
PKG_OS_TAG='$CFG{PKG_OS_TAG}' \\
buildType='$CFG{BUILD_TYPE}' \\
repoDir='$CFG{BUILD_DIR}' \\
arch='$CFG{BUILD_ARCH}' \\
buildTimeStamp='$CFG{BUILD_TS}' \\
buildLogFile='$CFG{BUILD_DIR}/logs/build.log' \\
zimbraThirdPartyServer='$CFG{BUILD_THIRDPARTY_SERVER}' \\
bash $GLOBAL_PATH_TO_SCRIPT_DIR/instructions/bundling-scripts/$package_script.sh
"
);
if ( $CFG{DISABLE_BUNDLE} ) # move created packages out of the tar for independent deployment in archive.
{
my $alt_dest_pkg_dir = TranslateToPackagePath("bundle");
SysExec( "mkdir", "-p", $alt_dest_pkg_dir );
SysExec( "rsync", "-av", "--remove-source-files", "$CFG{BUILD_DIR}/zm-build/$CFG{BUILD_ARCH}/", "$alt_dest_pkg_dir/" );
}
}
}
},
);
}
sub Deploy()
{
print "\n";
print "=========================================================================================================\n";
print color('blue') . "DEPLOYING ARTIFACTS" . color('reset') . "\n";
print "\n";
print "\n";
my $destination_dir = "$CFG{BUILD_DESTINATION_BASE_DIR}/$CFG{DESTINATION_NAME}";
SysExec( "mkdir", "-p", "$destination_dir/archives" );
my @archive_names = map { basename($_) } grep { -d $_ && $_ !~ m/\/bundle$/ } glob("$CFG{BUILD_DIR}/zm-packages/*");
foreach my $archive_name (@archive_names)
{
SysExec( "rsync", "-av", "--delete", "$CFG{BUILD_DIR}/zm-packages/$archive_name/", "$destination_dir/archives/$archive_name" );
if ( -f "/etc/redhat-release" )
{
if ( !$CFG{LOCAL_DEPLOY} || DetectPrerequisite( "createrepo", "", 1 ) )
{
SysExec("cd '$destination_dir/archives/$archive_name/$CFG{PKG_OS_TAG}' && createrepo '.'");
}
}
else
{
if ( !$CFG{LOCAL_DEPLOY} || DetectPrerequisite( "dpkg-scanpackages", "", 1 ) )
{
SysExec("cd '$destination_dir/archives/$archive_name/$CFG{PKG_OS_TAG}' && dpkg-scanpackages '.' /dev/null > Packages");
}
}
}
EchoToFile( "$destination_dir/archive-access-$CFG{PKG_OS_TAG}.txt", EmitArchiveAccessInstructions( \@archive_names ) );
SysExec("cp $CFG{BUILD_DIR}/zm-build/zcs-*.$CFG{BUILD_TS}.tgz $destination_dir/")
if ( !$CFG{DISABLE_TAR} );
if ( $CFG{LOCAL_DEPLOY} )
{
if ( !-f "/etc/nginx/conf.d/zimbra-pkg-archives-host.conf" || !`pgrep -f -P1 '[n]ginx'` )
{
print "\n";
print "=========================================================================================================\n";
print <<EOM_DUMP;
@{[color('bold white')]}
############################################
# INSTRUCTIONS TO SETUP NGINX PACKAGES HOST
############################################
@{[color('reset')]}
# You might need to resolve network, firewall, selinux, permissions issues appropriately before proceeding:
# sudo sed -i -e s/^SELINUX=enforcing/SELINUX=permissive/ /etc/selinux/config
# sudo setenforce permissive
# sudo systemctl stop firewalld
# sudo ufw disable
@{[color('yellow')]}
sudo bash -s <<"EOM_SCRIPT"
[ -f /etc/redhat-release ] && ( yum install -y epel-release && yum install -y nginx && service nginx start )
[ -f /etc/redhat-release ] || ( apt-get -y install nginx && service nginx start )
tee /etc/nginx/conf.d/zimbra-pkg-archives-host.conf <<EOM
server {
listen 8008;
location / {
root $CFG{BUILD_DESTINATION_BASE_DIR};
autoindex on;
}
}
EOM
service httpd stop 2>/dev/null
service nginx restart
service nginx status
EOM_SCRIPT
@{[color('reset')]}
EOM_DUMP
}
}
print "\n";
print "=========================================================================================================\n";
print "\n";
}
sub GetNewBuildNo()
{
my $line = 1000;
my $file = "$GLOBAL_PATH_TO_SCRIPT_DIR/.build.number";
if ( -f $file )
{
open( FD1, "<", $file );
$line = <FD1>;
close(FD1);
$line += 1;
}
open( FD2, ">", $file );
printf( FD2 "%s\n", $line );
close(FD2);
return $line;
}
sub GetNewBuildTs()
{
chomp( my $x = `date +'%Y%m%d%H%M%S'` );
return $x;
}
sub GetBuildOS() # FIXME - use standard mechanism
{
our $detected_os = undef;
sub detect_os
{
chomp( $detected_os = `$GLOBAL_PATH_TO_SCRIPT_DIR/rpmconf/Build/get_plat_tag.sh` )
if ( !$detected_os );
return $detected_os
if ($detected_os);
Die("Unknown OS");
}
return detect_os();
}
sub GetBuildArch()
{
my $b_os = $CFG{BUILD_OS};
return "amd64"
if ( $b_os =~ /UBUNTU[0-9]+_64/ );
return "x86_64"
if ( $b_os =~ /RHEL[0-9]+_64/ || $b_os =~ /CENTOS[0-9]+_64/ );
Die("Could not determine BUILD_ARCH");
}
sub GetPkgOsTag()
{
my $b_os = $CFG{BUILD_OS};
return "u$1"
if ( $b_os =~ /UBUNTU([0-9]+)_/ );
return "r$1"
if ( $b_os =~ /RHEL([0-9]+)_/ || $b_os =~ /CENTOS([0-9]+)_/ );
Die("Could not determine PKG_OS_TAG");
}
##############################################################################################
sub Clone($$)
{
my $repo_details = shift;
my $repo_remote_details = shift;
my $repo_name = $repo_details->{name};
my $repo_branch_csv = $CFG{GIT_OVERRIDES}->{"$repo_name.branch"} || $repo_details->{branch} || $CFG{GIT_DEFAULT_BRANCH} || "develop";
my $repo_tag_csv = $CFG{GIT_OVERRIDES}->{"$repo_name.tag"} || $repo_details->{tag} || $CFG{GIT_DEFAULT_TAG} if ( $CFG{GIT_OVERRIDES}->{"$repo_name.tag"} || !$CFG{GIT_OVERRIDES}->{"$repo_name.branch"} );
my $repo_remote = $CFG{GIT_OVERRIDES}->{"$repo_name.remote"} || $repo_details->{remote} || $CFG{GIT_DEFAULT_REMOTE} || "gh-zm";
my $repo_url_prefix = $CFG{GIT_OVERRIDES}->{"$repo_remote.url-prefix"} || $repo_remote_details->{$repo_remote}->{'url-prefix'} || Die( "unresolved url-prefix for remote='$repo_remote'", "" );
my $repo_name_suffix = $CFG{GIT_OVERRIDES}->{"$repo_name.repo_name_suffix"} || $repo_details->{repo_name_suffix} || $CFG{GIT_DEFAULT_REPO_NAME_SUFFIX};
$repo_url_prefix =~ s,/*$,,;
my $repo_dir = "$CFG{BUILD_SOURCES_BASE_DIR}/$repo_name";
my $repo_source = $repo_url_prefix . "/" .
($repo_name_suffix ? "$repo_name$repo_name_suffix.git" : "$repo_name.git");
if ( !-d $repo_dir )
{
my $s = 0;
foreach my $minus_b_arg ( split( /,/, $repo_tag_csv ? $repo_tag_csv : $repo_branch_csv ) )
{
my $r = SysExec("git", "ls-remote",
$repo_tag_csv ? "--tags" : "--heads",
$repo_source,
"$minus_b_arg");
if ( $r->{success} && "@{$r->{out}}" =~ /$minus_b_arg$/ )
{
my @clone_cmd_args = ( "git", "clone" );
push( @clone_cmd_args, "--depth=1" ) if ( not $ENV{ENV_GIT_FULL_CLONE} and $repo_name ne "zm-mailbox");
push( @clone_cmd_args, "-b", $minus_b_arg );
push( @clone_cmd_args, $repo_source, "$repo_dir");
print "\n";
my $r = SysExec(@clone_cmd_args);
if ( $r->{success} )
{
$s++;
last;
}
}
}
Die("Clone Attempts Failed")
if ( !$s );
RemoveTargetInDir( $repo_name, $CFG{BUILD_DIR} );
}
else
{
if ( !defined $ENV{ENV_GIT_UPDATE_INCLUDE} || grep { $repo_name =~ /$_/ } split( ",", $ENV{ENV_GIT_UPDATE_INCLUDE} ) )
{
if ($repo_tag_csv)
{
RunInDir(
cd => $repo_dir,
child => sub {
my $s = 0;
foreach my $minus_b_arg ( split( /,/, $repo_tag_csv ) )
{
print "\n";
my $r = SysExec( "git", "checkout", $minus_b_arg );
if ( $r->{success} )
{
$s++;
last;
}
}
Die("Clone Attempts Failed")
if ( !$s );
},
);
RemoveTargetInDir( $repo_name, $CFG{BUILD_DIR} );
}
else
{
print "\n";
RunInDir(
cd => $repo_dir,
child => sub {
my $z = SysExec( "git", "pull", "--ff-only" );
if ( "@{$z->{out}}" !~ /Already up-to-date/ )
{
RemoveTargetInDir( $repo_name, $CFG{BUILD_DIR} );
}
},
);
}
}
}
}
sub SysExec(@)
{
my $options = shift
if ( @_ && ref( $_[0] ) eq "HASH" );
$options->{continue_on_error} ||= 0;
$options->{verbose} ||= 1;
my $cmd_str = "@_";
if ( $options->{verbose} )
{
print color('green') . "#: pwd=@{[Cwd::getcwd()]}" . color('reset') . "\n";
print color('green') . "#: $cmd_str" . color('reset') . "\n";
}
$! = 0;
my ( $success, $error_message, $full_buf, $stdout_buf, $stderr_buf ) = run( command => \@_, verbose => 1 );
Die( "cmd='$cmd_str'", $error_message )
if ( !$success && !$options->{continue_on_error} );
return { msg => $error_message, out => $stdout_buf, err => $stderr_buf, success => $success };
}
sub LoadProperties($)
{
my $f = shift;
my $x = SlurpFile($f);
my @cfg_kvs =
map { $_ =~ s/^\s+|\s+$//g; $_ } # trim
map { split( /=/, $_, 2 ) } # split around =
map { $_ =~ s/#.*$//g; $_ } # strip comments
grep { $_ !~ /^\s*#/ } # ignore comments
grep { $_ !~ /^\s*$/ } # ignore empty lines
@$x;
my %ret_hash = ();
for ( my $e = 0 ; $e < scalar @cfg_kvs ; $e += 2 )
{
my $probe_key = $cfg_kvs[$e];
my $probe_val = $cfg_kvs[ $e + 1 ];
if ( $probe_key =~ /^%(.*)/ )
{
my @val_kv_pair = split( /=/, $probe_val, 2 );
$ret_hash{$1}{ $val_kv_pair[0] } = $val_kv_pair[1];
}
else
{
$ret_hash{$probe_key} = $probe_val;
}
}
return \%ret_hash;
}
sub SlurpFile($)
{
my $f = shift;
open( FD, "<", "$f" ) || Die( "In open for read", "file='$f'" );
chomp( my @x = <FD> );
close(FD);
return \@x;
}
sub EchoToFile($$)
{
my $f = shift;
my $w = shift;
open( FD, ">", "$f" ) || Die( "In open for write", "file='$f'" );
print FD $w . "\n";
close(FD);
}
sub DetectPrerequisite($;$$)
{
my $util_name = shift;
my $additional_path = shift || "";
my $warn_only = shift || 0;
chomp( my $detected_util = `PATH="$additional_path:\$PATH" \\which "$util_name" 2>/dev/null | sed -e 's,//*,/,g'` );
return $detected_util
if ($detected_util);
Die(
"Prerequisite '$util_name' missing in PATH"
. "\nTry: "
. "\n [ -f /etc/redhat-release ] && sudo yum install perl-Data-Dumper perl-IPC-Cmd gcc-c++ java-1.8.0-openjdk ant ant-junit ruby maven wget rpm-build createrepo"
. "\n [ -f /etc/redhat-release ] || sudo apt-get install software-properties-common openjdk-8-jdk ant ant-optional ruby git maven build-essential",
"",
$warn_only
);
}
sub RunInDir(%)
{
my %args = (@_);
my $chdir = $args{cd};
my $child = $args{child};
my $child_pid = fork();
Die("FAILURE while forking")
if ( !defined $child_pid );
if ( $child_pid != 0 ) # parent
{
while ( waitpid( $child_pid, 0 ) == -1 ) { }
Die( "child $child_pid died", einfo($?) )
if ( $? != 0 );
}
else
{
Die( "chdir to '$chdir' failed", einfo($?) )
if ( $chdir && !chdir($chdir) );
$! = 0;
&$child;
exit(0);
}
}
sub einfo()
{
my @SIG_NAME = split( / /, $Config{sig_name} );
return "ret=" . ( $? >> 8 ) . ( ( $? & 127 ) ? ", sig=SIG" . $SIG_NAME[ $? & 127 ] : "" );
}
sub Die($;$$)
{
my $msg = shift;
my $info = shift || "";
my $warn_only = shift || 0;
my $err = "$!";
print "\n" if ( !$warn_only );
print "\n";
print "=========================================================================================================\n";
print color('red') . "FAILURE MSG" . color('reset') . " : $msg\n" if ( !$warn_only );
print color('red') . "WARNING MSG" . color('reset') . " : $msg\n" if ($warn_only);
print color('red') . "SYSTEM ERR " . color('reset') . " : $err\n" if ($err);
print color('red') . "EXTRA INFO " . color('reset') . " : $info\n" if ($info);
print "\n";
print "=========================================================================================================\n";
if ( !$warn_only )
{
print color('red');
print "--Stack Trace-- ($$)\n";
my $i = 1;
while ( ( my @call_details = ( caller( $i++ ) ) ) )
{
print $call_details[1] . ":" . $call_details[2] . " called from " . $call_details[3] . "\n";
}
print color('reset');
print "\n";
print "=========================================================================================================\n";
die "END"
}
}
sub NormalizeBuildRevision {
my ($val) = @_;
return $val unless defined $val;
if ($CFG{PKG_OS_TAG} =~ /^r/) {
return $val if $val =~ /^[\w]+$/;
$val =~ s/[~-]/_/g;
$val =~ s/_+/_/g;
$val =~ s/^_//;
$val =~ s/_$//;
}
return $val;
}
##############################################################################################
sub main()
{
InitGlobalBuildVars();
my $all_repos = LoadRepos();
Prepare();
Checkout($all_repos);
if ( !$CFG{STOP_AFTER_CHECKOUT} )
{
Build($all_repos);
Deploy();
}
}
main();
##############################################################################################
================================================
FILE: config.build.in
================================================
# Example config:
# - please change as appropriate.
# - command line overrides the config.
BUILD_RELEASE = JUDASPRIEST
BUILD_RELEASE_NO = 8.8.0
BUILD_RELEASE_CANDIDATE = GA
BUILD_TYPE = FOSS
BUILD_THIRDPARTY_SERVER = zdev-vm008.eng.zimbra.com
# Example of GIT_OVERRIDES (hash)
# %GIT_OVERRIDES = myremote.url-prefix=ssh://git@stash.corp.synacor.com:7999/~user/zm-mailbox.git
# %GIT_OVERRIDES = zm-mailbox.branch=dev
# %GIT_OVERRIDES = zm-mailbox.remote=myremote
# %GIT_OVERRIDES = zm-mailbox.tag=judaspriest-872 # .tag always overrides .branch
================================================
FILE: instructions/.gitignore
================================================
NETWORK_*.pl
================================================
FILE: instructions/FOSS_package_list.pl
================================================
@ENTRIES = (
"zimbra-core",
"zimbra-ldap",
"zimbra-logger",
"zimbra-mta",
"zimbra-dnscache",
"zimbra-snmp",
"zimbra-store",
"zimbra-apache",
"zimbra-spell",
"zimbra-proxy",
"zimbra-imapd",
);
================================================
FILE: instructions/FOSS_remote_list.pl
================================================
@ENTRIES = (
"gh-zm" => { 'url-prefix' => "https://github.com/Zimbra", },
"gh-ks" => { 'url-prefix' => "https://github.com/kohlschutter", },
);
================================================
FILE: instructions/FOSS_repo_list.pl
================================================
@ENTRIES = (
{ name => "ant-1.7.0-ziputil-patched", },
{ name => "ant-tar-patched", },
{ name => "ical4j-0.9.16-patched", },
{ name => "junixsocket", tag => "junixsocket-parent-2.0.4", remote => "gh-ks",},
{ name => "nekohtml-1.9.13", },
{ name => "java-html-sanitizer-release-20190610.1",},
{ name => "antisamy", },
{ name => "zm-admin-console", },
{ name => "zm-admin-help-common", },
{ name => "zm-ajax", },
{ name => "zm-admin-ajax", },
{ name => "zm-amavis", },
{ name => "zm-aspell", },
{ name => "zm-bulkprovision-admin-zimlet", },
{ name => "zm-bulkprovision-store", },
{ name => "zm-certificate-manager-admin-zimlet", },
{ name => "zm-certificate-manager-store", },
{ name => "zm-charset", },
{ name => "zm-clam-scanner-store", },
{ name => "zm-core-utils", },
{ name => "zm-db-conf", },
{ name => "zm-dnscache", },
{ name => "zm-downloads", },
{ name => "zm-freshclam", },
{ name => "zm-helptooltip-zimlet", },
{ name => "zm-jetty-conf", },
{ name => "zm-jython", },
{ name => "zm-launcher", },
{ name => "zm-ldap-utilities", },
{ name => "zm-ldap-utils-store", },
{ name => "zm-licenses", },
{ name => "zm-mailbox", },
{ name => "zm-migration-tools", },
{ name => "zm-mta", },
{ name => "zm-nginx-conf", },
{ name => "zm-nginx-lookup-store", },
{ name => "zm-openid-consumer-store", },
{ name => "zm-pkg-tool", },
{ name => "zm-postfix", },
{ name => "zm-proxy-config-admin-zimlet", },
{ name => "zm-ssdb-ephemeral-store", },
{ name => "zm-taglib", },
# zm-timezones repo can be removed and made independent of zm-zextras
# zm-timezones cannot be done unless the packages from it are pushed to public repo
# zm-timezones is already excluded in CircleCI builds via --exclude-git-repo=...
{ name => "zm-timezones", },
{ name => "zm-versioncheck-admin-zimlet", },
{ name => "zm-versioncheck-store", },
{ name => "zm-versioncheck-utilities", },
{ name => "zm-viewmail-admin-zimlet", },
{ name => "zm-web-client", },
{ name => "zm-webclient-portal-example", },
{ name => "zm-zcs", },
{ name => "zm-zcs-lib", },
{ name => "zm-zimlets", },
{ name => "zm-oauth-social", },
{ name => "zm-gql", },
);
================================================
FILE: instructions/FOSS_staging_list.pl
================================================
@ENTRIES = (
{
"dir" => "zm-mailbox",
"ant_targets" => ["pkg-after-plough-through-tests"],
"deploy_pkg_into" => "bundle",
"stage_cmd" => sub {
SysExec("mkdir -p $CFG{BUILD_DIR}/zm-mailbox/store-conf/");
SysExec("rsync -az store-conf/conf $CFG{BUILD_DIR}/zm-mailbox/store-conf/");
SysExec("install -T -D store/build/dist/versions-init.sql $CFG{BUILD_DIR}/zm-mailbox/store/build/dist/versions-init.sql");
},
},
{
"dir" => "zm-mailbox/store",
"ant_targets" => ["publish-store-test", "test", "coverage", "sonar-scan"],
"stage_cmd" => undef,
},
{
# This repo can be removed and made independent of zm-zextras
# This cannot be done unless the packages from zm-timezones are pushed to public repo
# This is already excluded in CircleCI builds
"dir" => "zm-timezones",
"ant_targets" => ["pkg", "sonar-scan"],
"deploy_pkg_into" => "bundle",
},
{
"dir" => "junixsocket/junixsocket-native",
"mvn_targets" => ["package"],
"stage_cmd" => sub {
SysExec("mkdir -p $CFG{BUILD_DIR}/junixsocket/junixsocket-native/build");
SysExec("cp -f target/nar/junixsocket-native-*/lib/*/jni/libjunixsocket-native-*.so $CFG{BUILD_DIR}/junixsocket/junixsocket-native/build/");
SysExec("cp -f target/junixsocket-native-*.nar $CFG{BUILD_DIR}/junixsocket/junixsocket-native/build/");
},
},
{
"dir" => "zm-taglib",
"ant_targets" => ["publish-local", "sonar-scan"],
"stage_cmd" => sub {
SysExec("mkdir -p $CFG{BUILD_DIR}/zm-taglib/build");
SysExec("cp -f build/zm-taglib*.jar $CFG{BUILD_DIR}/zm-taglib/build/");
},
},
{
"dir" => "zm-charset",
"ant_targets" => ["publish-local", "sonar-scan"],
"stage_cmd" => undef,
},
{
"dir" => "zm-ldap-utilities",
"ant_targets" => ["build-dist"],
"stage_cmd" => sub {
SysExec("(cd .. && rsync -az --relative zm-ldap-utilities/build/dist $CFG{BUILD_DIR}/)");
SysExec("(cd .. && rsync -az --relative zm-ldap-utilities/src/ldap/migration $CFG{BUILD_DIR}/)");
SysExec("(cd .. && rsync -az --relative zm-ldap-utilities/conf $CFG{BUILD_DIR}/)");
SysExec("(cd .. && rsync -az --relative zm-ldap-utilities/src/libexec $CFG{BUILD_DIR}/)");
},
},
{
"dir" => "zm-ajax",
"ant_targets" => ["publish-local", "sonar-scan"],
"stage_cmd" => undef,
},
{
"dir" => "zm-admin-ajax",
"ant_targets" => ["publish-local", "sonar-scan"],
"stage_cmd" => undef,
},
{
"dir" => "zm-ssdb-ephemeral-store",
"ant_targets" => ["publish-local", "test", "coverage", "sonar-scan"],
"stage_cmd" => sub {
SysExec("mkdir -p $CFG{BUILD_DIR}/zm-ssdb-ephemeral-store/build/dist");
SysExec("cp -f build/zm-ssdb-ephemeral-store*.jar $CFG{BUILD_DIR}/zm-ssdb-ephemeral-store/build/dist");
},
},
{
"dir" => "zm-openid-consumer-store",
"ant_targets" => ["dist-package", "test", "coverage", "sonar-scan"],
"stage_cmd" => sub {
SysExec("mkdir -p $CFG{BUILD_DIR}/zm-openid-consumer-store/build/dist");
SysExec("cp -f -r build/dist $CFG{BUILD_DIR}/zm-openid-consumer-store/build/");
},
},
{
"dir" => "zm-clam-scanner-store",
"ant_targets" => ["publish-local", "test", "coverage", "sonar-scan"],
"stage_cmd" => sub {
SysExec("mkdir -p $CFG{BUILD_DIR}/zm-clam-scanner-store/build/dist");
SysExec("cp -f -rp build/zm-clam-scanner-store-*.jar $CFG{BUILD_DIR}/zm-clam-scanner-store/build/dist");
},
},
{
"dir" => "zm-licenses",
"ant_targets" => undef,
"stage_cmd" => sub {
SysExec("mkdir -p $CFG{BUILD_DIR}/zm-licenses");
SysExec("(cd .. && rsync -az --relative zm-licenses/ $CFG{BUILD_DIR}/)");
},
},
{
"dir" => "zm-nginx-lookup-store",
"ant_targets" => ["publish-local", "test", "coverage", "sonar-scan"],
"stage_cmd" => sub {
SysExec("mkdir -p $CFG{BUILD_DIR}/zm-nginx-lookup-store/build/dist");
SysExec("cp -f -rp build/zm-nginx-lookup-store-*.jar $CFG{BUILD_DIR}/zm-nginx-lookup-store/build/dist");
},
},
{
"dir" => "zm-versioncheck-admin-zimlet",
"ant_targets" => ["package-zimlet"],
"stage_cmd" => sub {
SysExec("mkdir -p $CFG{BUILD_DIR}/zm-versioncheck-admin-zimlet/build/zimlet");
SysExec("cp -f build/zimlet/*.zip $CFG{BUILD_DIR}/zm-versioncheck-admin-zimlet/build/zimlet");
},
},
{
"dir" => "zm-bulkprovision-admin-zimlet",
"ant_targets" => ["package-zimlet"],
"stage_cmd" => sub {
SysExec("mkdir -p $CFG{BUILD_DIR}/zm-bulkprovision-admin-zimlet/build/zimlet");
SysExec("cp -f build/zimlet/*.zip $CFG{BUILD_DIR}/zm-bulkprovision-admin-zimlet/build/zimlet");
},
},
{
"dir" => "zm-certificate-manager-admin-zimlet",
"ant_targets" => ["package-zimlet"],
"stage_cmd" => sub {
SysExec("mkdir -p $CFG{BUILD_DIR}/zm-certificate-manager-admin-zimlet/build/zimlet");
SysExec("cp -f build/zimlet/*.zip $CFG{BUILD_DIR}/zm-certificate-manager-admin-zimlet/build/zimlet");
},
},
{
"dir" => "zm-proxy-config-admin-zimlet",
"ant_targets" => ["package-zimlet"],
"stage_cmd" => sub {
SysExec("mkdir -p $CFG{BUILD_DIR}/zm-proxy-config-admin-zimlet/build/zimlet");
SysExec("cp -f build/zimlet/*.zip $CFG{BUILD_DIR}/zm-proxy-config-admin-zimlet/build/zimlet");
},
},
{
"dir" => "zm-helptooltip-zimlet",
"ant_targets" => ["package-zimlet"],
"stage_cmd" => sub {
SysExec("mkdir -p $CFG{BUILD_DIR}/zm-helptooltip-zimlet/build/zimlet");
SysExec("cp -f build/zimlet/*.zip $CFG{BUILD_DIR}/zm-helptooltip-zimlet/build/zimlet");
},
},
{
"dir" => "zm-viewmail-admin-zimlet",
"ant_targets" => ["package-zimlet"],
"stage_cmd" => sub {
SysExec("mkdir -p $CFG{BUILD_DIR}/zm-viewmail-admin-zimlet/build/zimlet");
SysExec("cp -f build/zimlet/*.zip $CFG{BUILD_DIR}/zm-viewmail-admin-zimlet/build/zimlet");
},
},
{
"dir" => "zm-zimlets",
"ant_targets" => [ "package-zimlets", "jar", "sonar-scan" ],
"stage_cmd" => sub {
SysExec("mkdir -p $CFG{BUILD_DIR}/zm-zimlets/conf");
SysExec("cp -f conf/zimbra.tld $CFG{BUILD_DIR}/zm-zimlets/conf");
SysExec("cp -f conf/web.xml.production $CFG{BUILD_DIR}/zm-zimlets/conf");
SysExec("mkdir -p $CFG{BUILD_DIR}/zm-zimlets/build/dist/zimlets");
SysExec("cp -f build/dist/zimlets/*.zip $CFG{BUILD_DIR}/zm-zimlets/build/dist/zimlets");
SysExec("mkdir -p $CFG{BUILD_DIR}/zm-zimlets/build/dist");
SysExec("cp -f build/dist/lib/zimlettaglib.jar $CFG{BUILD_DIR}/zm-zimlets/build/dist/zimlettaglib.jar");
},
},
{
"dir" => "zm-web-client",
"ant_targets" => ["pkg"],
"deploy_pkg_into" => "bundle",
},
{
"dir" => "zm-admin-help-common",
"ant_targets" => undef,
"stage_cmd" => sub {
SysExec("cp -f -r ../zm-admin-help-common $CFG{BUILD_DIR}");
},
},
{
"dir" => "zm-versioncheck-utilities",
"ant_targets" => undef,
"stage_cmd" => sub {
SysExec("(cd .. && rsync -az --relative zm-versioncheck-utilities/src/libexec/zmcheckversion $CFG{BUILD_DIR}/)");
},
},
{
"dir" => "zm-webclient-portal-example",
"ant_targets" => undef,
"stage_cmd" => sub {
SysExec("cp -f -r ../zm-webclient-portal-example $CFG{BUILD_DIR}");
},
},
{
"dir" => "zm-downloads",
"ant_targets" => undef,
"stage_cmd" => sub {
SysExec("(cd .. && rsync -az --relative --exclude '.git' zm-downloads $CFG{BUILD_DIR}/)");
},
},
{
"dir" => "zm-db-conf",
"ant_targets" => undef,
"stage_cmd" => sub {
SysExec("(cd .. && rsync -az --relative zm-db-conf/src/db/migration $CFG{BUILD_DIR}/)");
SysExec("(cd .. && rsync -az --relative zm-db-conf/src/db/mysql $CFG{BUILD_DIR}/)");
},
},
{
"dir" => "zm-admin-console",
"ant_targets" => ["pkg"],
"deploy_pkg_into" => "bundle",
},
{
"dir" => "zm-aspell",
"ant_targets" => undef,
"stage_cmd" => sub {
SysExec("cp -f -r ../zm-aspell $CFG{BUILD_DIR}");
},
},
{
"dir" => "zm-dnscache",
"ant_targets" => undef,
"stage_cmd" => sub {
SysExec("cp -f -r ../zm-dnscache $CFG{BUILD_DIR}");
},
},
{
"dir" => "zm-amavis",
"ant_targets" => undef,
"stage_cmd" => sub {
SysExec("cp -f -r ../zm-amavis $CFG{BUILD_DIR}");
},
},
{
"dir" => "zm-nginx-conf",
"ant_targets" => undef,
"stage_cmd" => sub {
SysExec("cp -f -r ../zm-nginx-conf $CFG{BUILD_DIR}");
},
},
{
"dir" => "zm-postfix",
"ant_targets" => undef,
"stage_cmd" => sub {
SysExec("cp -f -r ../zm-postfix $CFG{BUILD_DIR}");
},
},
{
"dir" => "zm-core-utils",
"ant_targets" => undef,
"stage_cmd" => sub {
SysExec("cp -f -r ../zm-core-utils $CFG{BUILD_DIR}");
},
},
{
"dir" => "zm-migration-tools",
"ant_targets" => undef,
"stage_cmd" => sub {
SysExec("cp -f -r ../zm-migration-tools $CFG{BUILD_DIR}");
},
},
{
"dir" => "zm-bulkprovision-store",
"ant_targets" => ["jar", "sonar-scan"],
"stage_cmd" => sub {
SysExec("mkdir -p $CFG{BUILD_DIR}/zm-bulkprovision-store");
SysExec("cp -f -r ../zm-bulkprovision-store/build $CFG{BUILD_DIR}/zm-bulkprovision-store");
},
},
{
"dir" => "zm-certificate-manager-store",
"ant_targets" => ["jar", "sonar-scan"],
"stage_cmd" => sub {
SysExec("mkdir -p $CFG{BUILD_DIR}/zm-certificate-manager-store");
SysExec("cp -f -r ../zm-certificate-manager-store/build $CFG{BUILD_DIR}/zm-certificate-manager-store");
},
},
{
"dir" => "zm-versioncheck-store",
"ant_targets" => ["jar", "sonar-scan"],
"stage_cmd" => sub {
SysExec("mkdir -p $CFG{BUILD_DIR}/zm-versioncheck-store");
SysExec("cp -f -r ../zm-versioncheck-store/build $CFG{BUILD_DIR}/zm-versioncheck-store");
},
},
{
"dir" => "zm-ldap-utils-store",
"ant_targets" => ["jar", "sonar-scan"],
"stage_cmd" => sub {
SysExec("mkdir -p $CFG{BUILD_DIR}/zm-ldap-utils-store");
SysExec("cp -f -r ../zm-ldap-utils-store/build $CFG{BUILD_DIR}/zm-ldap-utils-store");
},
},
{
"dir" => "ant-1.7.0-ziputil-patched",
"ant_targets" => ["jar", "sonar-scan"],
"stage_cmd" => undef,
},
{
"dir" => "ant-tar-patched",
"ant_targets" => ["jar", "sonar-scan"],
"stage_cmd" => undef,
},
{
"dir" => "nekohtml-1.9.13",
"ant_targets" => ["jar", "sonar-scan"],
"stage_cmd" => undef,
},
{
"dir" => "java-html-sanitizer-release-20190610.1",
"ant_targets" => ["jar", "sonar-scan"],
"stage_cmd" => undef,
},
{
"dir" => "antisamy",
"ant_targets" => ["jar", "sonar-scan"],
"stage_cmd" => undef,
},
{
"dir" => "ical4j-0.9.16-patched",
"ant_targets" => [ "clean-compile", "package", "sonar-scan" ],
"stage_cmd" => undef,
},
{
"dir" => "zm-zcs-lib",
"ant_targets" => ["dist", "pkg"],
"stage_cmd" => sub {
SysExec("(cd .. && rsync -az --relative zm-zcs-lib $CFG{BUILD_DIR}/)");
},
"deploy_pkg_into" => "bundle",
},
{
"dir" => "zm-jython",
"ant_targets" => undef,
"stage_cmd" => sub {
SysExec("(cd .. && rsync -az --relative zm-jython $CFG{BUILD_DIR}/)");
},
},
{
"dir" => "zm-mta",
"ant_targets" => undef,
"stage_cmd" => sub {
SysExec("(cd .. && rsync -az --relative zm-mta $CFG{BUILD_DIR}/)");
},
},
{
"dir" => "zm-freshclam",
"ant_targets" => undef,
"stage_cmd" => sub {
SysExec("(cd .. && rsync -az --relative zm-freshclam $CFG{BUILD_DIR}/)");
},
},
{
"dir" => "zm-launcher",
"make_targets" => ["JAVA_BINARY=/opt/zimbra/common/bin/java"],
"stage_cmd" => sub {
SysExec("mkdir -p $CFG{BUILD_DIR}/zm-launcher/build/dist");
SysExec("cp -f build/zmmailboxd* $CFG{BUILD_DIR}/zm-launcher/build/dist");
},
},
{
"dir" => "zm-jetty-conf",
"ant_targets" => undef,
"stage_cmd" => sub {
SysExec("cp -f -r ../zm-jetty-conf $CFG{BUILD_DIR}");
},
},
{
"dir" => "zm-oauth-social",
"ant_targets" => ["publish-local", "oauth-social-common-jar", "oauth-social-jar", "test", "coverage", "sonar-scan"],
"stage_cmd" => sub {
SysExec("mkdir -p $CFG{BUILD_DIR}/zm-oauth-social/build/dist");
SysExec("cp -f -rp build/zm-oauth-social*.jar $CFG{BUILD_DIR}/zm-oauth-social/build/dist");
},
},
{
"dir" => "zm-gql",
"ant_targets" => ["publish-local", "test", "coverage", "sonar-scan"],
"stage_cmd" => sub {
SysExec("mkdir -p $CFG{BUILD_DIR}/zm-gql/build/dist");
SysExec("cp -f -rp build/zm-gql-*.jar $CFG{BUILD_DIR}/zm-gql/build/dist");
},
},
);
================================================
FILE: instructions/bundling-scripts/.gitignore
================================================
zimbra-archiving.sh
zimbra-convertd.sh
================================================
FILE: instructions/bundling-scripts/utils.sh
================================================
#!/bin/bash
Copy()
{
if [ $# -ne 2 ]
then
echo "Usage: Copy <file1> <file2>" 1>&2
exit 1;
fi
local src_file="$1"; shift;
local dest_file="$1"; shift;
mkdir -p "$(dirname "$dest_file")"
cp -f "$src_file" "$dest_file"
}
Cpy2()
{
if [ $# -ne 2 ]
then
echo "Usage: Cpy2 <file1> <dir>" 1>&2
exit 1;
fi
local src_file="$1"; shift;
local dest_dir="$1"; shift;
mkdir -p "$dest_dir"
cp -f "$src_file" "$dest_dir"
}
CreatePackage()
{
if [ $# -ne 1 ]
then
echo "Usage: CreatePackage <os-name>" 1>&2
exit 1
fi
if [[ $1 == UBUNTU* ]]
then
CreateDebianPackage
elif [[ $1 == RHEL* ]]
then
CreateRhelPackage
else
echo "OS not supported. Run using UBUNTU or RHEL system. "
exit 1
fi
if [ $? -ne 0 ]; then
echo -e "\t### ${currentPackage} package building failed ###" >> ${buildLogFile}
else
echo -e "\t*** ${currentPackage} package successfully created ***" >> ${buildLogFile}
fi
}
================================================
FILE: instructions/bundling-scripts/zcs-bundle.sh
================================================
#!/bin/bash
#
# ***** BEGIN LICENSE BLOCK *****
# Zimbra Collaboration Suite Server
# Copyright (C) 2009, 2010, 2011, 2013, 2014, 2015, 2016 Synacor, Inc.
#
# This program is free software: you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software Foundation,
# version 2 of the License.
#
# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
# without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU General Public License for more details.
# You should have received a copy of the GNU General Public License along with this program.
# If not, see <https://www.gnu.org/licenses/>.
# ***** END LICENSE BLOCK *****
cd ${repoDir}/zm-build
if [ "${buildType}" = "NETWORK" ]
then
ZCS_REL=zcs-${buildType}-${releaseNo}_${releaseCandidate}_${buildNo}.${os}.${buildTimeStamp}
else
ZCS_REL=zcs-${releaseNo}_${releaseCandidate}_${buildNo}.${os}.${buildTimeStamp}
fi
mkdir -p $ZCS_REL/bin
mkdir -p $ZCS_REL/data
mkdir -p $ZCS_REL/docs/en_US
mkdir -p $ZCS_REL/lib/jars
mkdir -p $ZCS_REL/packages
mkdir -p $ZCS_REL/util/modules
cp -f ${repoDir}/zm-build/RE/README.txt ${ZCS_REL}/
cp -f ${repoDir}/zm-build/rpmconf/Build/checkLicense.pl ${ZCS_REL}/bin
cp -f ${repoDir}/zm-build/rpmconf/Build/checkService.pl ${ZCS_REL}/bin
cp -f ${repoDir}/zm-build/rpmconf/Build/get_plat_tag.sh ${ZCS_REL}/bin
cp -f ${repoDir}/zm-build/rpmconf/Build/zmValidateLdap.pl ${ZCS_REL}/bin
cp -f ${repoDir}/zm-build/rpmconf/Install/Util/addUser.sh ${ZCS_REL}/util
cp -f ${repoDir}/zm-build/rpmconf/Install/Util/globals.sh ${ZCS_REL}/util
cp -f ${repoDir}/zm-build/rpmconf/Install/Util/modules/getconfig.sh ${ZCS_REL}/util/modules
cp -f ${repoDir}/zm-build/rpmconf/Install/Util/modules/packages.sh ${ZCS_REL}/util/modules
cp -f ${repoDir}/zm-build/rpmconf/Install/Util/modules/postinstall.sh ${ZCS_REL}/util/modules
cp -f ${repoDir}/zm-build/rpmconf/Install/Util/utilfunc.sh ${ZCS_REL}/util
cp -f ${repoDir}/zm-build/rpmconf/Install/install.sh ${ZCS_REL}/
cp -f ${repoDir}/zm-core-utils/src/libexec/zmdbintegrityreport ${ZCS_REL}/bin
cp -f ${repoDir}/zm-mailbox/store/build/dist/versions-init.sql ${ZCS_REL}/data
# all local packages to bundle
cp -f ${repoDir}/zm-build/${arch}/*.* ${ZCS_REL}/packages
for pkgf in ${repoDir}/zm-packages/bundle/*/*.{rpm,deb,changes}
do
if ! [[ "$pkgf" =~ src.rpm$ ]]
then
[ -f "$pkgf" ] && cp -f "$pkgf" ${ZCS_REL}/packages
fi
done
if [ -f "/etc/redhat-release" ]
then
if \which createrepo 2>&-
then
( cd ${ZCS_REL}/packages && createrepo . ) # Create index of packages
fi
else
if \which dpkg-scanpackages 2>&-
then
( cd ${ZCS_REL}/packages && dpkg-scanpackages . /dev/null > Packages ) # Create index of packages
fi
fi
chmod 755 ${ZCS_REL}/bin/checkService.pl
chmod 755 ${ZCS_REL}/bin/checkLicense.pl
chmod 755 ${ZCS_REL}/bin/zmValidateLdap.pl
chmod 755 ${ZCS_REL}/bin/zmdbintegrityreport
chmod 755 ${ZCS_REL}/install.sh
cp -f ${repoDir}/zm-admin-help-common/WebRoot/help/en_US/admin/pdf/*.pdf ${ZCS_REL}/docs/en_US
cp -f ${repoDir}/zm-admin-help-common/WebRoot/help/en_US/admin/txt/readme_binary.txt ${ZCS_REL}/readme_binary_en_US.txt
if [ "${buildType}" = "NETWORK" ]
then
cp -f ${repoDir}/zm-admin-help-network/WebRoot/help/en_US/admin/pdf/*.pdf ${ZCS_REL}/docs/en_US
cp -f ${repoDir}/zm-admin-help-network/WebRoot/help/en_US/admin/txt/readme_binary.txt ${ZCS_REL}/readme_binary_en_US.txt
cp -f ${repoDir}/zm-backup-store/build/dist/backup-version-init.sql ${ZCS_REL}/data
cp -f ${repoDir}/zm-license-tools/build/zm-license-tools-*.jar ${ZCS_REL}/lib/jars/zimbra-license-tools.jar
cp -f ${repoDir}/zm-network-licenses/thirdparty/oracle_jdk_eula.txt ${ZCS_REL}/docs/oracle_jdk_eula.txt
cp -f ${repoDir}/zm-network-licenses/zimbra/zimbra_network_eula.txt ${ZCS_REL}/docs/zimbra_network_eula.txt
cp -f ${repoDir}/zm-network-build/rpmconf/Install/Util/modules/postinstall.sh ${ZCS_REL}/util/modules
cp -f ${repoDir}/zm-network-build/rpmconf/Util/checkValidBackup ${ZCS_REL}/bin/checkValidBackup
chmod 755 ${ZCS_REL}/bin/checkValidBackup
else
cp -f ${repoDir}/zm-licenses/zimbra/zcl.txt ${ZCS_REL}/docs
fi
##########################################
if [ "${buildType}" == "NETWORK" ]
then
echo "NETWORK" > ${ZCS_REL}/.BUILD_TYPE
else
echo "FOSS" > ${ZCS_REL}/.BUILD_TYPE
fi
echo "${buildNo}" > ${ZCS_REL}/.BUILD_NUM
echo "${os}" > ${ZCS_REL}/.BUILD_PLATFORM
echo "${releaseNo}" > ${ZCS_REL}/.BUILD_RELEASE_NO
echo "${releaseCandidate}" > ${ZCS_REL}/.BUILD_RELEASE_CANDIDATE
echo "${buildTimeStamp}" > ${ZCS_REL}/.BUILD_TIME_STAMP
##########################################
tar czf ${ZCS_REL}.tgz ${ZCS_REL}
echo "ZCS build completed: ${repoDir}/zm-build/${ZCS_REL}.tgz"
================================================
FILE: instructions/bundling-scripts/zimbra-apache.sh
================================================
#!/bin/bash
#
# ***** BEGIN LICENSE BLOCK *****
# Zimbra Collaboration Suite Server
# Copyright (C) 2009, 2010, 2011, 2013, 2014, 2015, 2016 Synacor, Inc.
#
# This program is free software: you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software Foundation,
# version 2 of the License.
#
# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
# without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU General Public License for more details.
# You should have received a copy of the GNU General Public License along with this program.
# If not, see <https://www.gnu.org/licenses/>.
# ***** END LICENSE BLOCK *****
# Shell script to create zimbra apache package
#-------------------- Configuration ---------------------------
currentScript=`basename $0 | cut -d "." -f 1` # zimbra-apache
currentPackage=`echo ${currentScript}build | cut -d "-" -f 2` # apachebuild
#-------------------- Build Package ---------------------------
main()
{
echo -e "\tCreate package directories" >> ${buildLogFile}
mkdir -p ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf
echo -e "\tCopy package files" >> ${buildLogFile}
cp ${repoDir}/zm-aspell/conf/httpd.conf ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/httpd.conf
cp ${repoDir}/zm-aspell/conf/php.ini ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/php.ini
CreatePackage "${os}"
}
#-------------------- Util Functions ---------------------------
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
source "$SCRIPT_DIR/utils.sh"
CreateDebianPackage()
{
mkdir -p ${repoDir}/zm-build/${currentPackage}/DEBIAN
echo -e "\tCreate debian package" >> ${buildLogFile}
(cd ${repoDir}/zm-build/${currentPackage}; find . -type f ! -regex '.*?debian-binary.*' ! -regex '.*?DEBIAN.*' -print0 | xargs -0 md5sum | sed -e 's| \./| |' \
> ${repoDir}/zm-build/${currentPackage}/DEBIAN/md5sums)
cat ${repoDir}/zm-build/rpmconf/Spec/${currentScript}.deb | sed -e "s/@@VERSION@@/${releaseNo}.${releaseCandidate}.${buildNo}.${os/_/.}/" -e "s/@@branch@@/${buildTimeStamp}/" -e "s/@@ARCH@@/${arch}/" \
> ${repoDir}/zm-build/${currentPackage}/DEBIAN/control
(cd ${repoDir}/zm-build/${currentPackage}; dpkg -b ${repoDir}/zm-build/${currentPackage} ${repoDir}/zm-build/${arch})
}
CreateRhelPackage()
{
cat ${repoDir}/zm-build/rpmconf/Spec/${currentScript}.spec | \
sed -e "s/@@VERSION@@/${releaseNo}_${releaseCandidate}_${buildNo}.${os} /" \
-e "s/@@RELEASE@@/${buildTimeStamp}/" \
-e "s/^Copyright:/Copyright:/" > ${repoDir}/zm-build/${currentScript}.spec
echo "%attr(755, zimbra, zimbra) /opt/zimbra/conf" >> ${repoDir}/zm-build/${currentScript}.spec
echo "%attr(644, zimbra, zimbra) /opt/zimbra/conf/*" >> ${repoDir}/zm-build/${currentScript}.spec
echo "" >> ${repoDir}/zm-build/${currentScript}.spec
echo "%clean" >> ${repoDir}/zm-build/${currentScript}.spec
(cd ${repoDir}/zm-build/${currentPackage}; \
rpmbuild --target ${arch} --define '_rpmdir ../' --buildroot=${repoDir}/zm-build/${currentPackage} -bb ${repoDir}/zm-build/${currentScript}.spec )
}
############################################################################
main "$@"
================================================
FILE: instructions/bundling-scripts/zimbra-core.sh
================================================
#!/bin/bash
#
# ***** BEGIN LICENSE BLOCK *****
# Zimbra Collaboration Suite Server
# Copyright (C) 2009, 2010, 2011, 2013, 2014, 2015, 2016 Synacor, Inc.
#
# This program is free software: you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software Foundation,
# version 2 of the License.
#
# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
# without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU General Public License for more details.
# You should have received a copy of the GNU General Public License along with this program.
# If not, see <https://www.gnu.org/licenses/>.
# ***** END LICENSE BLOCK *****
# Shell script to create zimbra core package
#-------------------- Configuration ---------------------------
currentScript="$(basename "$0" | cut -d "." -f 1)" # zimbra-core
currentPackage="$(echo ${currentScript}build | cut -d "-" -f 2)" # corebuild
#-------------------- Util Functions ---------------------------
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
source "$SCRIPT_DIR/utils.sh"
CreateDebianPackage()
{
echo -e "\tCreate debian package" >> ${buildLogFile}
mkdir -p "${repoDir}/zm-build/${currentPackage}/DEBIAN";
cat ${repoDir}/zm-build/rpmconf/Spec/Scripts/${currentScript}.post > ${repoDir}/zm-build/${currentPackage}/DEBIAN/postinst
cat ${repoDir}/zm-build/rpmconf/Spec/Scripts/${currentScript}.pre > ${repoDir}/zm-build/${currentPackage}/DEBIAN/preinst
chmod 555 ${repoDir}/zm-build/${currentPackage}/DEBIAN/preinst
chmod 555 ${repoDir}/zm-build/${currentPackage}/DEBIAN/postinst
(
set -e;
cd ${repoDir}/zm-build/${currentPackage}
find . -type f -print0 \
| xargs -0 md5sum \
| grep -v -w "DEBIAN/.*" \
| sed -e "s@ [.][/]@ @" \
| sort \
) > ${repoDir}/zm-build/${currentPackage}/DEBIAN/md5sums
(
set -e;
MORE_DEPENDS=", zimbra-timezone-data (>= 1.0.1+1510156506-1.$PKG_OS_TAG) $(find ${repoDir}/zm-packages/ -name \*.deb \
| xargs -n1 basename \
| sed -e 's/_[0-9].*//' \
| grep -e zimbra-common- \
| sed '1s/^/, /; :a; {N;s/\n/, /;ba}')";
cat ${repoDir}/zm-build/rpmconf/Spec/${currentScript}.deb \
| sed -e "s/@@VERSION@@/${releaseNo}.${releaseCandidate}.${buildNo}.${os/_/.}/" \
-e "s/@@branch@@/${buildTimeStamp}/" \
-e "s/@@ARCH@@/${arch}/" \
-e "s/@@MORE_DEPENDS@@/${MORE_DEPENDS}/" \
-e "/^%post$/ r ${currentScript}.post"
) > ${repoDir}/zm-build/${currentPackage}/DEBIAN/control
(
set -e;
cd ${repoDir}/zm-build/${currentPackage}
dpkg -b ${repoDir}/zm-build/${currentPackage} ${repoDir}/zm-build/${arch}
)
}
CreateRhelPackage()
{
MORE_DEPENDS=", zimbra-timezone-data >= 1.0.1+1510156506-1.$PKG_OS_TAG $(find ${repoDir}/zm-packages/ -name \*.rpm \
| xargs -n1 basename \
| sed -e 's/-[0-9].*//' \
| grep -e zimbra-common- \
| sed '1s/^/, /; :a; {N;s/\n/, /;ba}')";
cat ${repoDir}/zm-build/rpmconf/Spec/${currentScript}.spec | \
sed -e "s/@@VERSION@@/${releaseNo}_${releaseCandidate}_${buildNo}.${os}/" \
-e "s/@@RELEASE@@/${buildTimeStamp}/" \
-e "s/@@MORE_DEPENDS@@/${MORE_DEPENDS}/" \
-e "/^%pre$/ r ${repoDir}/zm-build/rpmconf/Spec/Scripts/${currentScript}.pre" \
-e "/Best email money can buy/ a Network edition" \
-e "/^%post$/ r ${repoDir}/zm-build/rpmconf/Spec/Scripts/${currentScript}.post" > ${repoDir}/zm-build/${currentScript}.spec
(cd ${repoDir}/zm-build/corebuild; find opt -maxdepth 2 -type f -o -type l \
| sed -e 's|^|%attr(-, zimbra, zimbra) /|' >> \
${repoDir}/zm-build/${currentScript}.spec )
echo "%attr(440, root, root) /etc/sudoers.d/01_zimbra" >> \
${repoDir}/zm-build/${currentScript}.spec
echo "%attr(440, root, root) /etc/sudoers.d/02_zimbra-core" >> \
${repoDir}/zm-build/${currentScript}.spec
echo "%attr(755, root, root) /opt/zimbra/bin" >> \
${repoDir}/zm-build/${currentScript}.spec
echo "%attr(755, zimbra, zimbra) /opt/zimbra/docs" >> \
${repoDir}/zm-build/${currentScript}.spec
echo "%attr(444, zimbra, zimbra) /opt/zimbra/docs/*" >> \
${repoDir}/zm-build/${currentScript}.spec
if [ "${buildType}" == "NETWORK" ]
then
echo "%attr(755, zimbra, zimbra) /opt/zimbra/docs/rebranding" >> \
${repoDir}/zm-build/${currentScript}.spec
echo "%attr(444, zimbra, zimbra) /opt/zimbra/docs/rebranding/*" >> \
${repoDir}/zm-build/${currentScript}.spec
fi
echo "%attr(755, root, root) /opt/zimbra/contrib" >> \
${repoDir}/zm-build/${currentScript}.spec
echo "%attr(755, root, root) /opt/zimbra/libexec" >> \
${repoDir}/zm-build/${currentScript}.spec
echo "%attr(755, zimbra, zimbra) /opt/zimbra/logger" >> \
${repoDir}/zm-build/${currentScript}.spec
echo "%attr(755, zimbra, zimbra) /opt/zimbra/conf" >> \
${repoDir}/zm-build/${currentScript}.spec
echo "%attr(644, zimbra, zimbra) /opt/zimbra/conf/*" >> \
${repoDir}/zm-build/${currentScript}.spec
echo "%attr(755, zimbra, zimbra) /opt/zimbra/conf/externaldirsync" >> \
${repoDir}/zm-build/${currentScript}.spec
echo "%attr(644, zimbra, zimbra) /opt/zimbra/conf/externaldirsync/*" >> \
${repoDir}/zm-build/${currentScript}.spec
echo "%attr(755, zimbra, zimbra) /opt/zimbra/conf/sasl2" >> \
${repoDir}/zm-build/${currentScript}.spec
echo "%attr(644, zimbra, zimbra) /opt/zimbra/conf/sasl2/*" >> \
${repoDir}/zm-build/${currentScript}.spec
echo "%attr(755, zimbra, zimbra) /opt/zimbra/conf/zmconfigd" >> \
${repoDir}/zm-build/${currentScript}.spec
echo "%attr(644, zimbra, zimbra) /opt/zimbra/conf/zmconfigd/*" >> \
${repoDir}/zm-build/${currentScript}.spec
echo "%attr(-, zimbra, zimbra) /opt/zimbra/db" >> \
${repoDir}/zm-build/${currentScript}.spec
echo "%attr(-, root, root) /opt/zimbra/lib" >> \
${repoDir}/zm-build/${currentScript}.spec
echo "%attr(-, zimbra, zimbra) /opt/zimbra/conf/crontabs" >> \
${repoDir}/zm-build/${currentScript}.spec
echo "%attr(-, root, root) /opt/zimbra/common/lib/jylibs" >> \
${repoDir}/zm-build/${currentScript}.spec
echo "%attr(-, root, root) /opt/zimbra/common/lib/perl5/Zimbra" >> \
${repoDir}/zm-build/${currentScript}.spec
echo "%attr(755, zimbra, zimbra) /opt/zimbra/logger/db/work" >> \
${repoDir}/zm-build/${currentScript}.spec
echo "" >> ${repoDir}/zm-build/${currentScript}.spec
echo "%clean" >> ${repoDir}/zm-build/${currentScript}.spec
(cd ${repoDir}/zm-build/${currentPackage}; \
rpmbuild --target ${arch} --define '_rpmdir ../' --buildroot=${repoDir}/zm-build/${currentPackage} -bb ${repoDir}/zm-build/${currentScript}.spec )
}
#-------------------- main packaging ---------------------------
main()
{
set -e
Copy ${repoDir}/zm-build/rpmconf/Env/sudoers.d/01_zimbra ${repoDir}/zm-build/${currentPackage}/etc/sudoers.d/01_zimbra
Copy ${repoDir}/zm-build/rpmconf/Env/sudoers.d/02_zimbra-core ${repoDir}/zm-build/${currentPackage}/etc/sudoers.d/02_zimbra-core
Copy ${repoDir}/zm-amavis/conf/amavisd.conf.in ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/amavisd.conf.in
Copy ${repoDir}/zm-amavis/conf/amavisd/amavisd-custom.conf ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/amavisd-custom.conf
Copy ${repoDir}/zm-amavis/conf/dspam.conf.in ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/dspam.conf.in
Copy ${repoDir}/zm-build/lib/Zimbra/DB/DB.pm ${repoDir}/zm-build/${currentPackage}/opt/zimbra/common/lib/perl5/Zimbra/DB/DB.pm
Copy ${repoDir}/zm-build/lib/Zimbra/LDAP.pm ${repoDir}/zm-build/${currentPackage}/opt/zimbra/common/lib/perl5/Zimbra/LDAP.pm
Copy ${repoDir}/zm-build/lib/Zimbra/LocalConfig.pm ${repoDir}/zm-build/${currentPackage}/opt/zimbra/common/lib/perl5/Zimbra/LocalConfig.pm
Copy ${repoDir}/zm-build/lib/Zimbra/Mon/Logger.pm ${repoDir}/zm-build/${currentPackage}/opt/zimbra/common/lib/perl5/Zimbra/Mon/Logger.pm
Copy ${repoDir}/zm-build/lib/Zimbra/Mon/LoggerSchema.pm ${repoDir}/zm-build/${currentPackage}/opt/zimbra/common/lib/perl5/Zimbra/Mon/LoggerSchema.pm
Copy ${repoDir}/zm-build/lib/Zimbra/Mon/Zmstat.pm ${repoDir}/zm-build/${currentPackage}/opt/zimbra/common/lib/perl5/Zimbra/Mon/Zmstat.pm
Copy ${repoDir}/zm-build/lib/Zimbra/SMTP.pm ${repoDir}/zm-build/${currentPackage}/opt/zimbra/common/lib/perl5/Zimbra/SMTP.pm
Copy ${repoDir}/zm-build/lib/Zimbra/SOAP/Soap.pm ${repoDir}/zm-build/${currentPackage}/opt/zimbra/common/lib/perl5/Zimbra/SOAP/Soap.pm
Copy ${repoDir}/zm-build/lib/Zimbra/SOAP/Soap11.pm ${repoDir}/zm-build/${currentPackage}/opt/zimbra/common/lib/perl5/Zimbra/SOAP/Soap11.pm
Copy ${repoDir}/zm-build/lib/Zimbra/SOAP/Soap12.pm ${repoDir}/zm-build/${currentPackage}/opt/zimbra/common/lib/perl5/Zimbra/SOAP/Soap12.pm
Copy ${repoDir}/zm-build/lib/Zimbra/SOAP/XmlDoc.pm ${repoDir}/zm-build/${currentPackage}/opt/zimbra/common/lib/perl5/Zimbra/SOAP/XmlDoc.pm
Copy ${repoDir}/zm-build/lib/Zimbra/SOAP/XmlElement.pm ${repoDir}/zm-build/${currentPackage}/opt/zimbra/common/lib/perl5/Zimbra/SOAP/XmlElement.pm
Copy ${repoDir}/zm-build/lib/Zimbra/Util/Common.pm ${repoDir}/zm-build/${currentPackage}/opt/zimbra/common/lib/perl5/Zimbra/Util/Common.pm
Copy ${repoDir}/zm-build/lib/Zimbra/Util/LDAP.pm ${repoDir}/zm-build/${currentPackage}/opt/zimbra/common/lib/perl5/Zimbra/Util/LDAP.pm
Copy ${repoDir}/zm-build/lib/Zimbra/Util/Timezone.pm ${repoDir}/zm-build/${currentPackage}/opt/zimbra/common/lib/perl5/Zimbra/Util/Timezone.pm
Copy ${repoDir}/zm-build/lib/Zimbra/ZmClient.pm ${repoDir}/zm-build/${currentPackage}/opt/zimbra/common/lib/perl5/Zimbra/ZmClient.pm
Copy ${repoDir}/zm-build/rpmconf/Build/get_plat_tag.sh ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/get_plat_tag.sh
Copy ${repoDir}/zm-build/rpmconf/Build/get_plat_tag.sh ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/installer/bin/get_plat_tag.sh
Copy ${repoDir}/zm-build/rpmconf/Conf/auditswatchrc ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/auditswatchrc.in
Copy ${repoDir}/zm-build/rpmconf/Conf/logswatchrc ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/logswatchrc
Copy ${repoDir}/zm-build/rpmconf/Conf/swatchrc ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/swatchrc.in
Copy ${repoDir}/zm-build/rpmconf/Conf/zmssl.cnf.in ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/zmssl.cnf.in
Copy ${repoDir}/zm-build/rpmconf/Env/crontabs/crontab ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/crontabs/crontab
Copy ${repoDir}/zm-build/rpmconf/Env/crontabs/crontab.ldap ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/crontabs/crontab.ldap
Copy ${repoDir}/zm-build/rpmconf/Env/crontabs/crontab.logger ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/crontabs/crontab.logger
Copy ${repoDir}/zm-build/rpmconf/Env/crontabs/crontab.mta ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/crontabs/crontab.mta
Copy ${repoDir}/zm-build/rpmconf/Env/crontabs/crontab.store ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/crontabs/crontab.store
Copy ${repoDir}/zm-build/rpmconf/Env/zimbra.bash_profile ${repoDir}/zm-build/${currentPackage}/opt/zimbra/.bash_profile
Copy ${repoDir}/zm-build/rpmconf/Env/zimbra.bashrc ${repoDir}/zm-build/${currentPackage}/opt/zimbra/.bashrc
Copy ${repoDir}/zm-build/rpmconf/Env/zimbra.exrc ${repoDir}/zm-build/${currentPackage}/opt/zimbra/.exrc
Copy ${repoDir}/zm-build/rpmconf/Env/zimbra.ldaprc ${repoDir}/zm-build/${currentPackage}/opt/zimbra/.ldaprc
Copy ${repoDir}/zm-build/rpmconf/Env/zimbra.platform ${repoDir}/zm-build/${currentPackage}/opt/zimbra/.platform
Copy ${repoDir}/zm-build/rpmconf/Env/zimbra.viminfo ${repoDir}/zm-build/${currentPackage}/opt/zimbra/.viminfo
Copy ${repoDir}/zm-build/rpmconf/Img/connection_failed.gif ${repoDir}/zm-build/${currentPackage}/opt/zimbra/logger/db/work/connection_failed.gif
Copy ${repoDir}/zm-build/rpmconf/Img/data_not_available.gif ${repoDir}/zm-build/${currentPackage}/opt/zimbra/logger/db/work/data_not_available.gif
Copy ${repoDir}/zm-build/rpmconf/Install/Util/addUser.sh ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/addUser.sh
Copy ${repoDir}/zm-build/rpmconf/Install/Util/addUser.sh ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/installer/util/addUser.sh
Copy ${repoDir}/zm-build/rpmconf/Install/Util/globals.sh ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/installer/util/globals.sh
Copy ${repoDir}/zm-build/rpmconf/Install/Util/modules/getconfig.sh ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/installer/util/modules/getconfig.sh
Copy ${repoDir}/zm-build/rpmconf/Install/Util/modules/packages.sh ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/installer/util/modules/packages.sh
Copy ${repoDir}/zm-build/rpmconf/Install/Util/modules/postinstall.sh ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/installer/util/modules/postinstall.sh
Copy ${repoDir}/zm-build/rpmconf/Install/Util/utilfunc.sh ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/installer/util/utilfunc.sh
Copy ${repoDir}/zm-build/rpmconf/Install/install.sh ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/installer/install.sh
Copy ${repoDir}/zm-build/rpmconf/Install/postinstall.pm ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/postinstall.pm
Copy ${repoDir}/zm-build/rpmconf/Install/preinstall.pm ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/preinstall.pm
Copy ${repoDir}/zm-build/rpmconf/Install/zmsetup.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmsetup.pl
Copy ${repoDir}/zm-build/rpmconf/Upgrade/zmupgrade.pm ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmupgrade.pm
Copy ${repoDir}/zm-core-utils/conf/dhparam.pem.zcs ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/dhparam.pem.zcs
Copy ${repoDir}/zm-core-utils/conf/zmlogrotate ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/zmlogrotate
Copy ${repoDir}/zm-core-utils/src/bin/antispam-mysql ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/antispam-mysql
Copy ${repoDir}/zm-core-utils/src/bin/antispam-mysql.server ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/antispam-mysql.server
Copy ${repoDir}/zm-core-utils/src/bin/antispam-mysqladmin ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/antispam-mysqladmin
Copy ${repoDir}/zm-core-utils/src/bin/ldap.production ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/ldap
Copy ${repoDir}/zm-core-utils/src/bin/mysql ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/mysql
Copy ${repoDir}/zm-core-utils/src/bin/mysql.server ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/mysql.server
Copy ${repoDir}/zm-core-utils/src/bin/mysqladmin ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/mysqladmin
Copy ${repoDir}/zm-core-utils/src/bin/postconf ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/postconf
Copy ${repoDir}/zm-core-utils/src/bin/postfix ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/postfix
Copy ${repoDir}/zm-core-utils/src/bin/qshape ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/qshape
Copy ${repoDir}/zm-core-utils/src/bin/zmaccts ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmaccts
Copy ${repoDir}/zm-core-utils/src/bin/zmamavisdctl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmamavisdctl
Copy ${repoDir}/zm-core-utils/src/bin/zmantispamctl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmantispamctl
Copy ${repoDir}/zm-core-utils/src/bin/zmantispamdbpasswd ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmantispamdbpasswd
Copy ${repoDir}/zm-core-utils/src/bin/zmantivirusctl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmantivirusctl
Copy ${repoDir}/zm-core-utils/src/bin/zmapachectl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmapachectl
Copy ${repoDir}/zm-core-utils/src/bin/zmarchivectl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmarchivectl
Copy ${repoDir}/zm-core-utils/src/bin/zmauditswatchctl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmauditswatchctl
Copy ${repoDir}/zm-core-utils/src/bin/zmblobchk ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmblobchk
Copy ${repoDir}/zm-core-utils/src/bin/zmcaldebug ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmcaldebug
Copy ${repoDir}/zm-core-utils/src/bin/zmcbpadmin ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmcbpadmin
Copy ${repoDir}/zm-core-utils/src/bin/zmcbpolicydctl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmcbpolicydctl
Copy ${repoDir}/zm-core-utils/src/bin/zmcertmgr ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmcertmgr
Copy ${repoDir}/zm-core-utils/src/bin/zmclamdctl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmclamdctl
Copy ${repoDir}/zm-core-utils/src/bin/zmconfigdctl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmconfigdctl
Copy ${repoDir}/zm-core-utils/src/bin/zmcontactbackup ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmcontactbackup
Copy ${repoDir}/zm-core-utils/src/bin/zmcontrol ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmcontrol
Copy ${repoDir}/zm-core-utils/src/bin/zmdedupe ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmdedupe
Copy ${repoDir}/zm-core-utils/src/bin/zmdhparam ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmdhparam
Copy ${repoDir}/zm-core-utils/src/bin/zmdnscachectl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmdnscachectl
Copy ${repoDir}/zm-core-utils/src/bin/zmdumpenv ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmdumpenv
Copy ${repoDir}/zm-core-utils/src/bin/zmfixcalendtime ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmfixcalendtime
Copy ${repoDir}/zm-core-utils/src/bin/zmfixcalprio ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmfixcalprio
Copy ${repoDir}/zm-core-utils/src/bin/zmfreshclamctl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmfreshclamctl
Copy ${repoDir}/zm-core-utils/src/bin/zmgsautil ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmgsautil
Copy ${repoDir}/zm-core-utils/src/bin/zmhostname ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmhostname
Copy ${repoDir}/zm-core-utils/src/bin/zminnotop ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zminnotop
Copy ${repoDir}/zm-core-utils/src/bin/zmitemdatafile ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmitemdatafile
Copy ${repoDir}/zm-core-utils/src/bin/zmjava ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmjava
Copy ${repoDir}/zm-core-utils/src/bin/zmjavaext ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmjavaext
Copy ${repoDir}/zm-core-utils/src/bin/zmldappasswd ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmldappasswd
Copy ${repoDir}/zm-core-utils/src/bin/zmldapupgrade ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmldapupgrade
Copy ${repoDir}/zm-core-utils/src/bin/zmlmtpinject ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmlmtpinject
Copy ${repoDir}/zm-core-utils/src/bin/zmlocalconfig ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmlocalconfig
Copy ${repoDir}/zm-core-utils/src/bin/zmloggerctl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmloggerctl
Copy ${repoDir}/zm-core-utils/src/bin/zmloggerhostmap ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmloggerhostmap
Copy ${repoDir}/zm-core-utils/src/bin/zmlogswatchctl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmlogswatchctl
Copy ${repoDir}/zm-core-utils/src/bin/zmmailbox ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmmailbox
Copy ${repoDir}/zm-core-utils/src/bin/zmmailboxdctl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmmailboxdctl
Copy ${repoDir}/zm-core-utils/src/bin/zmmemcachedctl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmmemcachedctl
Copy ${repoDir}/zm-core-utils/src/bin/zmmetadump ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmmetadump
Copy ${repoDir}/zm-core-utils/src/bin/zmmigrateattrs ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmmigrateattrs
Copy ${repoDir}/zm-core-utils/src/bin/zmmilterctl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmmilterctl
Copy ${repoDir}/zm-core-utils/src/bin/zmmtactl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmmtactl
Copy ${repoDir}/zm-core-utils/src/bin/zmmypasswd ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmmypasswd
Copy ${repoDir}/zm-core-utils/src/bin/zmmysqlstatus ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmmysqlstatus
Copy ${repoDir}/zm-core-utils/src/bin/zmmytop ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmmytop
Copy ${repoDir}/zm-core-utils/src/bin/zmopendkimctl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmopendkimctl
Copy ${repoDir}/zm-core-utils/src/bin/zmplayredo ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmplayredo
Copy ${repoDir}/zm-core-utils/src/bin/zmprov ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmprov
Copy ${repoDir}/zm-core-utils/src/bin/zmproxyconf ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmproxyconf
Copy ${repoDir}/zm-core-utils/src/bin/zmproxyctl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmproxyctl
Copy ${repoDir}/zm-core-utils/src/bin/zmpython ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmpython
Copy ${repoDir}/zm-core-utils/src/bin/zmredodump ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmredodump
Copy ${repoDir}/zm-core-utils/src/bin/zmsaslauthdctl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmsaslauthdctl
Copy ${repoDir}/zm-core-utils/src/bin/zmshutil ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmshutil
Copy ${repoDir}/zm-core-utils/src/bin/zmskindeploy ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmskindeploy
Copy ${repoDir}/zm-core-utils/src/bin/zmsoap ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmsoap
Copy ${repoDir}/zm-core-utils/src/bin/zmspellctl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmspellctl
Copy ${repoDir}/zm-core-utils/src/bin/zmsshkeygen ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmsshkeygen
Copy ${repoDir}/zm-core-utils/src/bin/zmstat-chart ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmstat-chart
Copy ${repoDir}/zm-core-utils/src/bin/zmstat-chart-config ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmstat-chart-config
Copy ${repoDir}/zm-core-utils/src/bin/zmstatctl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmstatctl
Copy ${repoDir}/zm-core-utils/src/bin/zmstorectl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmstorectl
Copy ${repoDir}/zm-core-utils/src/bin/zmswatchctl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmswatchctl
Copy ${repoDir}/zm-core-utils/src/bin/zms3config ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zms3config
Copy ${repoDir}/zm-core-utils/src/bin/zmthrdump ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmthrdump
Copy ${repoDir}/zm-core-utils/src/bin/zmtlsctl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmtlsctl
Copy ${repoDir}/zm-core-utils/src/bin/zmtotp ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmtotp
Copy ${repoDir}/zm-core-utils/src/bin/zmtrainsa ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmtrainsa
Copy ${repoDir}/zm-core-utils/src/bin/zmtzupdate ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmtzupdate
Copy ${repoDir}/zm-core-utils/src/bin/zmupdateauthkeys ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmupdateauthkeys
Copy ${repoDir}/zm-core-utils/src/bin/zmvolume ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmvolume
Copy ${repoDir}/zm-core-utils/src/bin/zmzimletctl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmzimletctl
Copy ${repoDir}/zm-core-utils/src/bin/zmonlyofficectl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmonlyofficectl
Copy ${repoDir}/zm-core-utils/src/bin/zmrabbitmqctl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmrabbitmqctl
Copy ${repoDir}/zm-core-utils/src/bin/zmonlyofficeinstall ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmonlyofficeinstall
Copy ${repoDir}/zm-core-utils/src/bin/zmlicensectl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmlicensectl
Copy ${repoDir}/zm-core-utils/src/bin/zmacl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmacl
Copy ${repoDir}/zm-core-utils/src/contrib/zmfetchercfg ${repoDir}/zm-build/${currentPackage}/opt/zimbra/contrib/zmfetchercfg
Copy ${repoDir}/zm-core-utils/src/libexec/600.zimbra ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/600.zimbra
Copy ${repoDir}/zm-core-utils/src/libexec/client_usage_report.py ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/client_usage_report.py
Copy ${repoDir}/zm-core-utils/src/libexec/configrewrite ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/configrewrite
Copy ${repoDir}/zm-core-utils/src/libexec/icalmig ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/icalmig
Copy ${repoDir}/zm-core-utils/src/libexec/libreoffice-installer.sh ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/libreoffice-installer.sh
Copy ${repoDir}/zm-core-utils/src/libexec/zcs ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zcs
Copy ${repoDir}/zm-core-utils/src/libexec/zimbra ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zimbra
Copy ${repoDir}/zm-core-utils/src/libexec/zmaltermimeconfig ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmaltermimeconfig
Copy ${repoDir}/zm-core-utils/src/libexec/zmantispamdbinit ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmantispamdbinit
Copy ${repoDir}/zm-core-utils/src/libexec/zmantispammycnf ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmantispammycnf
Copy ${repoDir}/zm-core-utils/src/libexec/zmcbpolicydinit ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmcbpolicydinit
Copy ${repoDir}/zm-core-utils/src/libexec/zmcheckduplicatemysqld ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmcheckduplicatemysqld
Copy ${repoDir}/zm-core-utils/src/libexec/zmcheckexpiredcerts ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmcheckexpiredcerts
Copy ${repoDir}/zm-core-utils/src/libexec/zmcleantmp ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmcleantmp
Copy ${repoDir}/zm-core-utils/src/libexec/zmclientcertmgr ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmclientcertmgr
Copy ${repoDir}/zm-core-utils/src/libexec/zmcompresslogs ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmcompresslogs
Copy ${repoDir}/zm-core-utils/src/libexec/zmcomputequotausage ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmcomputequotausage
Copy ${repoDir}/zm-core-utils/src/libexec/zmconfigd ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmconfigd
Copy ${repoDir}/zm-core-utils/src/libexec/zmcpustat ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmcpustat
Copy ${repoDir}/zm-core-utils/src/libexec/zmdailyreport ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmdailyreport
Copy ${repoDir}/zm-core-utils/src/bin/zmpasswordexpiryreminder ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmpasswordexpiryreminder
Copy ${repoDir}/zm-core-utils/src/libexec/zmdbintegrityreport ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmdbintegrityreport
Copy ${repoDir}/zm-core-utils/src/libexec/zmdiaglog ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmdiaglog
Copy ${repoDir}/zm-core-utils/src/libexec/zmdkimkeyutil ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmdkimkeyutil
Copy ${repoDir}/zm-core-utils/src/libexec/zmdnscachealign ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmdnscachealign
Copy ${repoDir}/zm-core-utils/src/libexec/zmdomaincertmgr ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmdomaincertmgr
Copy ${repoDir}/zm-core-utils/src/libexec/zmexplainslow ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmexplainslow
Copy ${repoDir}/zm-core-utils/src/libexec/zmexplainsql ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmexplainsql
Copy ${repoDir}/zm-core-utils/src/libexec/zmextractsql ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmextractsql
Copy ${repoDir}/zm-core-utils/src/libexec/zmfixperms ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmfixperms
Copy ${repoDir}/zm-core-utils/src/libexec/zmfixreminder ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmfixreminder
Copy ${repoDir}/zm-core-utils/src/libexec/zmgenentitlement ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmgenentitlement
Copy ${repoDir}/zm-core-utils/src/libexec/zmgsaupdate ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmgsaupdate
Copy ${repoDir}/zm-core-utils/src/libexec/zmhspreport ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmhspreport
Copy ${repoDir}/zm-core-utils/src/libexec/zminiutil ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zminiutil
Copy ${repoDir}/zm-core-utils/src/libexec/zmiostat ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmiostat
Copy ${repoDir}/zm-core-utils/src/libexec/zmiptool ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmiptool
Copy ${repoDir}/zm-core-utils/src/libexec/zmjavawatch ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmjavawatch
Copy ${repoDir}/zm-core-utils/src/libexec/zmjettyenablelogging ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmjettyenablelogging
Copy ${repoDir}/zm-core-utils/src/libexec/zmjsprecompile ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmjsprecompile
Copy ${repoDir}/zm-core-utils/src/libexec/zmlogger ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmlogger
Copy ${repoDir}/zm-core-utils/src/libexec/zmloggerinit ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmloggerinit
Copy ${repoDir}/zm-core-utils/src/libexec/zmlogprocess ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmlogprocess
Copy ${repoDir}/zm-core-utils/src/libexec/zmmsgtrace ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmmsgtrace
Copy ${repoDir}/zm-core-utils/src/libexec/zmmtainit ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmmtainit
Copy ${repoDir}/zm-core-utils/src/libexec/zmmtastatus ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmmtastatus
Copy ${repoDir}/zm-core-utils/src/libexec/zmmycnf ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmmycnf
Copy ${repoDir}/zm-core-utils/src/libexec/zmmyinit ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmmyinit
Copy ${repoDir}/zm-core-utils/src/libexec/zmnotifyinstall ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmnotifyinstall
Copy ${repoDir}/zm-core-utils/src/libexec/zmpostfixpolicyd ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmpostfixpolicyd
Copy ${repoDir}/zm-core-utils/src/libexec/zmproxyconfgen ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmproxyconfgen
Copy ${repoDir}/zm-core-utils/src/libexec/zmproxyconfig ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmproxyconfig
Copy ${repoDir}/zm-core-utils/src/libexec/zmproxypurge ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmproxypurge
Copy ${repoDir}/zm-core-utils/src/libexec/zmqaction ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmqaction
Copy ${repoDir}/zm-core-utils/src/libexec/zmqstat ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmqstat
Copy ${repoDir}/zm-core-utils/src/libexec/zmqueuelog ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmqueuelog
Copy ${repoDir}/zm-core-utils/src/libexec/zmrc ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmrc
Copy ${repoDir}/zm-core-utils/src/libexec/zmrcd ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmrcd
Copy ${repoDir}/zm-core-utils/src/libexec/zmresetmysqlpassword ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmresetmysqlpassword
Copy ${repoDir}/zm-core-utils/src/libexec/zmrrdfetch ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmrrdfetch
Copy ${repoDir}/zm-core-utils/src/libexec/zmsacompile ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmsacompile
Copy ${repoDir}/zm-core-utils/src/libexec/zmsaupdate ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmsaupdate
Copy ${repoDir}/zm-core-utils/src/libexec/zmserverips ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmserverips
Copy ${repoDir}/zm-core-utils/src/libexec/zmsetservername ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmsetservername
Copy ${repoDir}/zm-core-utils/src/libexec/zmsnmpinit ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmsnmpinit
Copy ${repoDir}/zm-core-utils/src/libexec/zmspamextract ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmspamextract
Copy ${repoDir}/zm-core-utils/src/libexec/zmstat-allprocs ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmstat-allprocs
Copy ${repoDir}/zm-core-utils/src/libexec/zmstat-cleanup ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmstat-cleanup
Copy ${repoDir}/zm-core-utils/src/libexec/zmstat-convertd ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmstat-convertd
Copy ${repoDir}/zm-core-utils/src/libexec/zmstat-cpu ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmstat-cpu
Copy ${repoDir}/zm-core-utils/src/libexec/zmstat-df ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmstat-df
Copy ${repoDir}/zm-core-utils/src/libexec/zmstat-fd ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmstat-fd
Copy ${repoDir}/zm-core-utils/src/libexec/zmstat-io ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmstat-io
Copy ${repoDir}/zm-core-utils/src/libexec/zmstat-mtaqueue ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmstat-mtaqueue
Copy ${repoDir}/zm-core-utils/src/libexec/zmstat-mysql ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmstat-mysql
Copy ${repoDir}/zm-core-utils/src/libexec/zmstat-nginx ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmstat-nginx
Copy ${repoDir}/zm-core-utils/src/libexec/zmstat-proc ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmstat-proc
Copy ${repoDir}/zm-core-utils/src/libexec/zmstat-vm ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmstat-vm
Copy ${repoDir}/zm-core-utils/src/libexec/zmstatuslog ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmstatuslog
Copy ${repoDir}/zm-core-utils/src/libexec/zmsyslogsetup ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmsyslogsetup
Copy ${repoDir}/zm-core-utils/src/libexec/zmthreadcpu ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmthreadcpu
Copy ${repoDir}/zm-core-utils/src/libexec/zmunbound ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmunbound
Copy ${repoDir}/zm-core-utils/src/libexec/zmupdatedownload ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmupdatedownload
Copy ${repoDir}/zm-core-utils/src/libexec/zmupdatezco ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmupdatezco
Copy ${repoDir}/zm-core-utils/src/perl/migrate20131014-removezca.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20131014-removezca.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/Migrate.pm ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/Migrate.pm
Copy ${repoDir}/zm-db-conf/src/db/migration/clearArchivedFlag.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/clearArchivedFlag.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/fixConversationCounts.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/fixConversationCounts.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/fixZeroChangeIdItems.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/fixZeroChangeIdItems.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/fixup20080410-SetRsvpTrue.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/fixup20080410-SetRsvpTrue.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate-ComboUpdater.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate-ComboUpdater.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20050517-AddUnreadColumn.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20050517-AddUnreadColumn.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20050531-RemoveCascadingDeletes.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20050531-RemoveCascadingDeletes.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20050609-AddDateIndex.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20050609-AddDateIndex.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20050628-ShrinkSyncColumns.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20050628-ShrinkSyncColumns.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20050701-SchemaCleanup.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20050701-SchemaCleanup.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20050721-MailItemIndexes.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20050721-MailItemIndexes.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20050727-RemoveTypeInvite.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20050727-RemoveTypeInvite.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20050727a-Volume.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20050727a-Volume.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20050804-SpamToJunk.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20050804-SpamToJunk.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20050809-AddConfig.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20050809-AddConfig.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20050811-WipeAppointments.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20050811-WipeAppointments.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20050818-TagsFlagsIndexes.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20050818-TagsFlagsIndexes.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20050822-TrackChangeDate.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20050822-TrackChangeDate.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20050824-AddMailTransport.sh ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20050824-AddMailTransport.sh
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20050824a-Volume.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20050824a-Volume.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20050831-SecondaryMsgVolume.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20050831-SecondaryMsgVolume.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20050916-Volume.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20050916-Volume.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20050920-CompressionThreshold.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20050920-CompressionThreshold.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20050927-DropRedologSequence.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20050927-DropRedologSequence.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20051021-UniqueVolume.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20051021-UniqueVolume.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20060120-Appointment.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20060120-Appointment.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20060412-NotebookFolder.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20060412-NotebookFolder.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20060515-AddImapId.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20060515-AddImapId.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20060518-EmailedContactsFolder.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20060518-EmailedContactsFolder.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20060708-FlagCalendarFolder.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20060708-FlagCalendarFolder.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20060803-CreateMailboxMetadata.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20060803-CreateMailboxMetadata.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20060807-WikiDigestFixup.sh ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20060807-WikiDigestFixup.sh
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20060810-PersistFolderCounts.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20060810-PersistFolderCounts.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20060911-MailboxGroup.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20060911-MailboxGroup.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20060929-TypedTombstones.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20060929-TypedTombstones.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20061101-IMFolder.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20061101-IMFolder.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20061117-TasksFolder.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20061117-TasksFolder.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20061120-AddNameColumn.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20061120-AddNameColumn.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20061204-CreatePop3MessageTable.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20061204-CreatePop3MessageTable.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20061205-UniqueAppointmentIndex.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20061205-UniqueAppointmentIndex.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20061212-RepairMutableIndexIds.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20061212-RepairMutableIndexIds.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20061221-RecalculateFolderSizes.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20061221-RecalculateFolderSizes.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20070302-NullContactVolumeId.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20070302-NullContactVolumeId.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20070306-Pop3MessageUid.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20070306-Pop3MessageUid.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20070606-WidenMetadata.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20070606-WidenMetadata.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20070614-BriefcaseFolder.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20070614-BriefcaseFolder.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20070627-BackupTime.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20070627-BackupTime.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20070629-IMTables.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20070629-IMTables.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20070630-LastSoapAccess.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20070630-LastSoapAccess.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20070703-ScheduledTask.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20070703-ScheduledTask.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20070706-DeletedAccount.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20070706-DeletedAccount.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20070713-NullContactBlobDigest.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20070713-NullContactBlobDigest.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20070725-CreateRevisionTable.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20070725-CreateRevisionTable.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20070726-ImapDataSource.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20070726-ImapDataSource.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20070809-Signatures.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20070809-Signatures.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20070921-ImapDataSourceUidValidity.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20070921-ImapDataSourceUidValidity.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20070928-ScheduledTaskIndex.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20070928-ScheduledTaskIndex.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20071128-AccountId.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20071128-AccountId.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20071202-DeleteSignatures.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20071202-DeleteSignatures.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20071204-deleteOldLDAPUsers.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20071204-deleteOldLDAPUsers.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20071206-WidenSizeColumns.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20071206-WidenSizeColumns.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20080130-ImapFlags.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20080130-ImapFlags.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20080213-IndexDeferredColumn.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20080213-IndexDeferredColumn.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20080909-DataSourceItemTable.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20080909-DataSourceItemTable.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20080930-MucService.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20080930-MucService.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20090315-MobileDevices.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20090315-MobileDevices.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20090406-DataSourceItemTable.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20090406-DataSourceItemTable.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20090430-highestindexed.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20090430-highestindexed.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20100106-MobileDevices.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20100106-MobileDevices.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20100913-Mysql51.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20100913-Mysql51.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20100926-Dumpster.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20100926-Dumpster.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20101123-MobileDevices.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20101123-MobileDevices.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20110314-MobileDevices.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20110314-MobileDevices.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20110330-RecipientsColumn.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20110330-RecipientsColumn.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20110705-PendingAclPush.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20110705-PendingAclPush.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20110810-TagTable.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20110810-TagTable.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20110928-MobileDevices.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20110928-MobileDevices.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20110929-VersionColumn.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20110929-VersionColumn.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20111005-ItemIdCheckpoint.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20111005-ItemIdCheckpoint.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20120125-uuidAndDigest.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20120125-uuidAndDigest.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20120222-LastPurgeAtColumn.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20120222-LastPurgeAtColumn.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20120229-DropIMTables.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20120229-DropIMTables.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20120319-Name255Chars.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20120319-Name255Chars.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20120410-BlobLocator.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20120410-BlobLocator.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20120611_7to8_bundle.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20120611_7to8_bundle.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20121009-VolumeBlobs.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20121009-VolumeBlobs.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20130226_alwayson.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20130226_alwayson.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20130227-UpgradeCBPolicyDSchema.sql ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20130227-UpgradeCBPolicyDSchema.sql
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20130606-UpdateCBPolicydSchema.sql ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20130606-UpdateCBPolicydSchema.sql
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20130819-UpgradeQuotasTable.sql ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20130819-UpgradeQuotasTable.sql
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20140319-MailItemPrevFolders.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20140319-MailItemPrevFolders.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20140328-EnforceTableCharset.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20140328-EnforceTableCharset.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20140624-DropMysqlIndexes.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20140624-DropMysqlIndexes.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20150401-ZmgDevices.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20150401-ZmgDevices.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20150515-DataSourcePurgeTables.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20150515-DataSourcePurgeTables.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20150623-ZmgDevices.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20150623-ZmgDevices.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20150702-ZmgDevices.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20150702-ZmgDevices.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20170301-ZimbraChat.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20170301-ZimbraChat.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20180301-ZimbraChat.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20180301-ZimbraChat.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20190401-ZimbraChat.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20190401-ZimbraChat.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20190611-ZimbraChat.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20190611-ZimbraChat.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20210506-BriefcaseApi.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20210506-BriefcaseApi.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20200625-MobileDevices.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20200625-MobileDevices.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20210319-MobileDevices.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20210319-MobileDevices.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20210809-UnsubscribeFolder.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20210809-UnsubscribeFolder.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20220525-Volume.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20220525-Volume.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20220721-AddMdmUpdateTimestamp.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20220721-AddMdmUpdateTimestamp.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20220729-FilesShareWithMeFolder.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20220729-FilesShareWithMeFolder.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrate20230224-UpdateOnlyOffice-7.2.1.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20230224-UpdateOnlyOffice-7.2.1.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrateAmavisLdap20050810.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrateAmavisLdap20050810.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrateClearSpamFlag.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrateClearSpamFlag.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrateLargeMetadata.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrateLargeMetadata.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrateLogger1-index.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrateLogger1-index.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrateLogger2-config.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrateLogger2-config.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrateLogger3-diskindex.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrateLogger3-diskindex.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrateLogger4-loghostname.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrateLogger4-loghostname.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrateLogger5-qid.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrateLogger5-qid.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrateLogger6-qid.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrateLogger6-qid.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrateMailItemTimestamps.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrateMailItemTimestamps.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migratePreWidenSizeColumns.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migratePreWidenSizeColumns.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrateRemoveMailboxId.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrateRemoveMailboxId.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrateRemoveTagIndexes.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrateRemoveTagIndexes.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrateRenameIdentifiers.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrateRenameIdentifiers.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrateSyncSequence.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrateSyncSequence.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrateToSplitTables.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrateToSplitTables.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/migrateUpdateAppointment.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrateUpdateAppointment.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/optimizeMboxgroups.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/optimizeMboxgroups.pl
Copy ${repoDir}/zm-db-conf/src/db/migration/zmdbupgrade.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/zmdbupgrade.pl
Copy ${repoDir}/zm-db-conf/src/db/mysql/create_database.sql ${repoDir}/zm-build/${currentPackage}/opt/zimbra/db/create_database.sql
Copy ${repoDir}/zm-db-conf/src/db/mysql/db.sql ${repoDir}/zm-build/${currentPackage}/opt/zimbra/db/db.sql
Copy ${repoDir}/zm-freshclam/freshclam.conf.in ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/freshclam.conf.in
Copy ${repoDir}/zm-jython/jylibs/commands.py ${repoDir}/zm-build/${currentPackage}/opt/zimbra/common/lib/jylibs/commands.py
Copy ${repoDir}/zm-jython/jylibs/conf.py ${repoDir}/zm-build/${currentPackage}/opt/zimbra/common/lib/jylibs/conf.py
Copy ${repoDir}/zm-jython/jylibs/config.py ${repoDir}/zm-build/${currentPackage}/opt/zimbra/common/lib/jylibs/config.py
Copy ${repoDir}/zm-jython/jylibs/globalconfig.py ${repoDir}/zm-build/${currentPackage}/opt/zimbra/common/lib/jylibs/globalconfig.py
Copy ${repoDir}/zm-jython/jylibs/ldap.py ${repoDir}/zm-build/${currentPackage}/opt/zimbra/common/lib/jylibs/ldap.py
Copy ${repoDir}/zm-jython/jylibs/listener.py ${repoDir}/zm-build/${currentPackage}/opt/zimbra/common/lib/jylibs/listener.py
Copy ${repoDir}/zm-jython/jylibs/localconfig.py ${repoDir}/zm-build/${currentPackage}/opt/zimbra/common/lib/jylibs/localconfig.py
Copy ${repoDir}/zm-jython/jylibs/logmsg.py ${repoDir}/zm-build/${currentPackage}/opt/zimbra/common/lib/jylibs/logmsg.py
Copy ${repoDir}/zm-jython/jylibs/miscconfig.py ${repoDir}/zm-build/${currentPackage}/opt/zimbra/common/lib/jylibs/miscconfig.py
Copy ${repoDir}/zm-jython/jylibs/mtaconfig.py ${repoDir}/zm-build/${currentPackage}/opt/zimbra/common/lib/jylibs/mtaconfig.py
Copy ${repoDir}/zm-jython/jylibs/serverconfig.py ${repoDir}/zm-build/${currentPackage}/opt/zimbra/common/lib/jylibs/serverconfig.py
Copy ${repoDir}/zm-jython/jylibs/state.py ${repoDir}/zm-build/${currentPackage}/opt/zimbra/common/lib/jylibs/state.py
Copy ${repoDir}/zm-launcher/build/dist/zmmailboxdmgr ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmmailboxdmgr
Copy ${repoDir}/zm-launcher/build/dist/zmmailboxdmgr.unrestricted ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmmailboxdmgr.unrestricted
Copy ${repoDir}/zm-ldap-utilities/conf/externaldirsync/Exchange2000.xml ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/externaldirsync/Exchange2000.xml
Copy ${repoDir}/zm-ldap-utilities/conf/externaldirsync/Exchange2003.xml ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/externaldirsync/Exchange2003.xml
Copy ${repoDir}/zm-ldap-utilities/conf/externaldirsync/Exchange5.5.xml ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/externaldirsync/Exchange5.5.xml
Copy ${repoDir}/zm-ldap-utilities/conf/externaldirsync/domino.xml ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/externaldirsync/domino.xml
Copy ${repoDir}/zm-ldap-utilities/conf/externaldirsync/novellGroupWise.xml ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/externaldirsync/novellGroupWise.xml
Copy ${repoDir}/zm-ldap-utilities/conf/externaldirsync/openldap.xml ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/externaldirsync/openldap.xml
Copy ${repoDir}/zm-ldap-utilities/conf/freshclam.conf.in ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/freshclam.conf.in
Copy ${repoDir}/zm-ldap-utilities/conf/zmconfigd.cf ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/zmconfigd.cf
Copy ${repoDir}/zm-ldap-utilities/conf/zmconfigd.log4j.properties ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/zmconfigd.log4j.properties
Copy ${repoDir}/zm-ldap-utilities/src/ldap/migration/migrate20110615-AddDynlist.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20110615-AddDynlist.pl
Copy ${repoDir}/zm-ldap-utilities/src/ldap/migration/migrate20110721-AddUnique.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20110721-AddUnique.pl
Copy ${repoDir}/zm-ldap-utilities/src/ldap/migration/migrate20111019-UniqueZimbraId.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20111019-UniqueZimbraId.pl
Copy ${repoDir}/zm-ldap-utilities/src/ldap/migration/migrate20120210-AddSearchNoOp.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20120210-AddSearchNoOp.pl
Copy ${repoDir}/zm-ldap-utilities/src/ldap/migration/migrate20120507-UniqueDKIMSelector.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20120507-UniqueDKIMSelector.pl
Copy ${repoDir}/zm-ldap-utilities/src/ldap/migration/migrate20140728-AddSSHA512.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20140728-AddSSHA512.pl
Copy ${repoDir}/zm-ldap-utilities/src/ldap/migration/migrate20141022-AddTLSBits.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20141022-AddTLSBits.pl
Copy ${repoDir}/zm-ldap-utilities/src/ldap/migration/migrate20150930-AddSyncpovSessionlog.pl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/scripts/migrate20150930-AddSyncpovSessionlog.pl
Copy ${repoDir}/zm-ldap-utilities/src/libexec/zmldapanon ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmldapanon
Copy ${repoDir}/zm-ldap-utilities/src/libexec/zmldapapplyldif ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmldapapplyldif
Copy ${repoDir}/zm-ldap-utilities/src/libexec/zmldapenable-mmr ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmldapenable-mmr
Copy ${repoDir}/zm-ldap-utilities/src/libexec/zmldapenablereplica ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmldapenablereplica
Copy ${repoDir}/zm-ldap-utilities/src/libexec/zmldapinit ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmldapinit
Copy ${repoDir}/zm-ldap-utilities/src/libexec/zmldapmmrtool ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmldapmmrtool
Copy ${repoDir}/zm-ldap-utilities/src/libexec/zmldapmonitordb ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmldapmonitordb
Copy ${repoDir}/zm-ldap-utilities/src/libexec/zmldappromote-replica-mmr ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmldappromote-replica-mmr
Copy ${repoDir}/zm-ldap-utilities/src/libexec/zmldapreplicatool ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmldapreplicatool
Copy ${repoDir}/zm-ldap-utilities/src/libexec/zmldapschema ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmldapschema
Copy ${repoDir}/zm-ldap-utilities/src/libexec/zmldapupdateldif ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmldapupdateldif
Copy ${repoDir}/zm-ldap-utilities/src/libexec/zmreplchk ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmreplchk
Copy ${repoDir}/zm-ldap-utilities/src/libexec/zmslapadd ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmslapadd
Copy ${repoDir}/zm-ldap-utilities/src/libexec/zmslapcat ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmslapcat
Copy ${repoDir}/zm-ldap-utilities/src/libexec/zmslapd ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmslapd
Copy ${repoDir}/zm-ldap-utilities/src/libexec/zmslapindex ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmslapindex
Copy ${repoDir}/zm-ldap-utilities/src/libexec/zmstat-ldap ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmstat-ldap
Copy ${repoDir}/zm-licenses/zimbra/ypl-full.txt ${repoDir}/zm-build/${currentPackage}/opt/zimbra/docs/YPL.txt
Copy ${repoDir}/zm-licenses/zimbra/zpl-full.txt ${repoDir}/zm-build/${currentPackage}/opt/zimbra/docs/ZPL.txt
Copy ${repoDir}/zm-migration-tools/ReadMe.txt ${repoDir}/zm-build/${currentPackage}/opt/zimbra/docs/zmztozmig.txt
Copy ${repoDir}/zm-mta/cbpolicyd.conf.in ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/cbpolicyd.conf.in
Copy ${repoDir}/zm-mta/clamd.conf.in ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/clamd.conf.in
Copy ${repoDir}/zm-mta/opendkim-localnets.conf.in ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/opendkim-localnets.conf.in
Copy ${repoDir}/zm-mta/opendkim.conf.in ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/opendkim.conf.in
Copy ${repoDir}/zm-mta/postfix_header_checks.in ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/postfix_header_checks.in
Copy ${repoDir}/zm-mta/postfix_sasl_smtpd.conf ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/sasl2/smtpd.conf.in
Copy ${repoDir}/zm-mta/salocal.cf.in ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/salocal.cf.in
Copy ${repoDir}/zm-mta/saslauthd.conf.in ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/saslauthd.conf.in
Copy ${repoDir}/zm-mta/zmconfigd/postfix_content_filter.cf ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/zmconfigd/postfix_content_filter.cf
Copy ${repoDir}/zm-mta/zmconfigd/smtpd_end_of_data_restrictions.cf ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/zmconfigd/smtpd_end_of_data_restrictions.cf
Copy ${repoDir}/zm-mta/zmconfigd/smtpd_recipient_restrictions.cf ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/zmconfigd/smtpd_recipient_restrictions.cf
Copy ${repoDir}/zm-mta/zmconfigd/smtpd_relay_restrictions.cf ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/zmconfigd/smtpd_relay_restrictions.cf
Copy ${repoDir}/zm-mta/zmconfigd/smtpd_sender_login_maps.cf ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/zmconfigd/smtpd_sender_login_maps.cf
Copy ${repoDir}/zm-mta/zmconfigd/smtpd_sender_restrictions.cf ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/zmconfigd/smtpd_sender_restrictions.cf
Cpy2 ${repoDir}/junixsocket/junixsocket-native/build/junixsocket-native-*.nar ${repoDir}/zm-build/${currentPackage}/opt/zimbra/lib/
Cpy2 ${repoDir}/junixsocket/junixsocket-native/build/libjunixsocket-native-*.so ${repoDir}/zm-build/${currentPackage}/opt/zimbra/lib/
Copy ${repoDir}/zm-bulkprovision-store/build/dist/commons-csv-1.2.jar ${repoDir}/zm-build/${currentPackage}/opt/zimbra/lib/ext/com_zimbra_bulkprovision/commons-csv-1.2.jar
Copy ${repoDir}/zm-bulkprovision-store/build/dist/zm-bulkprovision-store*.jar ${repoDir}/zm-build/${currentPackage}/opt/zimbra/lib/ext/com_zimbra_bulkprovision/com_zimbra_bulkprovision.jar
Copy ${repoDir}/zm-certificate-manager-store/build/zm-certificate-manager-store*.jar ${repoDir}/zm-build/${currentPackage}/opt/zimbra/lib/ext/com_zimbra_cert_manager/com_zimbra_cert_manager.jar
# Copy SSDB Ephemeral storage extension + dependencies
Cpy2 ${repoDir}/zm-ssdb-ephemeral-store/build/dist/zm-ssdb-ephemeral-store*.jar ${repoDir}/zm-build/${currentPackage}/opt/zimbra/lib/ext/com_zimbra_ssdb_ephemeral_store/
Cpy2 ${repoDir}/zm-zcs-lib/build/dist/jedis-2.9.0.jar ${repoDir}/zm-build/${currentPackage}/opt/zimbra/lib/ext/com_zimbra_ssdb_ephemeral_store/
Cpy2 ${repoDir}/zm-zcs-lib/build/dist/commons-pool2-2.4.2.jar ${repoDir}/zm-build/${currentPackage}/opt/zimbra/lib/ext/com_zimbra_ssdb_ephemeral_store/
if [ "${buildType}" == "NETWORK" ]
then
Copy ${repoDir}/zm-backup-store/docs/backup.txt ${repoDir}/zm-build/${currentPackage}/opt/zimbra/docs/backup.txt
Copy ${repoDir}/zm-backup-store/docs/mailboxMove.txt ${repoDir}/zm-build/${currentPackage}/opt/zimbra/docs/mailboxMove.txt
Copy ${repoDir}/zm-backup-store/docs/soapbackup.txt ${repoDir}/zm-build/${currentPackage}/opt/zimbra/docs/soapbackup.txt
Copy ${repoDir}/zm-backup-store/docs/xml-meta.txt ${repoDir}/zm-build/${currentPackage}/opt/zimbra/docs/xml-meta.txt
Copy ${repoDir}/zm-backup-store/build/dist/backup-version-init.sql ${repoDir}/zm-build/${currentPackage}/opt/zimbra/db/backup-version-init.sql
Copy ${repoDir}/zm-backup-utilities/src/bin/zmbackup ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmbackup
Copy ${repoDir}/zm-backup-utilities/src/bin/zmbackupabort ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmbackupabort
Copy ${repoDir}/zm-backup-utilities/src/bin/zmbackupquery ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmbackupquery
Copy ${repoDir}/zm-backup-utilities/src/bin/zmmboxmove ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmmboxmove
Copy ${repoDir}/zm-backup-utilities/src/bin/zmmboxmovequery ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmmboxmovequery
Copy ${repoDir}/zm-backup-utilities/src/bin/zmpurgeoldmbox ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmpurgeoldmbox
Copy ${repoDir}/zm-backup-utilities/src/bin/zmrestore ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmrestore
Copy ${repoDir}/zm-backup-utilities/src/bin/zmrestoreldap ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmrestoreldap
Copy ${repoDir}/zm-backup-utilities/src/bin/zmrestoreoffline ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmrestoreoffline
Copy ${repoDir}/zm-backup-utilities/src/bin/zmschedulebackup ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmschedulebackup
Copy ${repoDir}/zm-backup-utilities/src/db/backup_schema.sql ${repoDir}/zm-build/${currentPackage}/opt/zimbra/db/backup_schema.sql
Copy ${repoDir}/zm-backup-utilities/src/libexec/zmbackupldap ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmbackupldap
Copy ${repoDir}/zm-backup-utilities/src/libexec/zmbackupqueryldap ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmbackupqueryldap
Copy ${repoDir}/zm-convertd-native/conf/convertd.log4j.properties ${repoDir}/zm-build/${currentPackage}/opt/zimbra/conf/convertd.log4j.properties
Copy ${repoDir}/zm-convertd-native/src/bin/zmconvertctl ${repoDir}/zm-build/${currentPackage}/opt/zimbra/bin/zmconvertctl
Copy ${repoDir}/zm-convertd-native/src/libexec/zmconvertdmod ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/zmconvertdmod
Copy ${repoDir}/zm-hsm/docs/soap-admin.txt ${repoDir}/zm-build/${currentPackage}/opt/zimbra/docs/hsm-soap-admin.txt
Copy ${repoDir}/zm-network-build/rpmconf/Install/Util/modules/postinstall.sh ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/installer/util/modules/postinstall.sh
Copy ${repoDir}/zm-network-build/rpmconf/Install/postinstall.pm ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/postinstall.pm
Copy ${repoDir}/zm-network-build/rpmconf/Install/preinstall.pm ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/preinstall.pm
Copy ${repoDir}/zm-network-licenses/thirdparty/oracle_jdk_eula.txt ${repoDir}/zm-build/${currentPackage}/opt/zimbra/docs/oracle_jdk_eula.txt
Copy ${repoDir}/zm-postfixjournal/build/dist/postjournal ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/postjournal
Copy ${repoDir}/zm-rebranding-docs/docs/rebranding/DE_Rebranding_directions.txt ${repoDir}/zm-build/${currentPackage}/opt/zimbra/docs/rebranding/DE_Rebranding_directions.txt
Copy ${repoDir}/zm-rebranding-docs/docs/rebranding/ES_Rebranding_directions.txt ${repoDir}/zm-build/${currentPackage}/opt/zimbra/docs/rebranding/ES_Rebranding_directions.txt
Copy ${repoDir}/zm-rebranding-docs/docs/rebranding/FR_Rebranding_directions.txt ${repoDir}/zm-build/${currentPackage}/opt/zimbra/docs/rebranding/FR_Rebranding_directions.txt
Copy ${repoDir}/zm-rebranding-docs/docs/rebranding/IT_Rebranding_directions.txt ${repoDir}/zm-build/${currentPackage}/opt/zimbra/docs/rebranding/IT_Rebranding_directions.txt
Copy ${repoDir}/zm-rebranding-docs/docs/rebranding/JA_Rebranding_directions.txt ${repoDir}/zm-build/${currentPackage}/opt/zimbra/docs/rebranding/JA_Rebranding_directions.txt
Copy ${repoDir}/zm-rebranding-docs/docs/rebranding/NL_Rebranding_directions.txt ${repoDir}/zm-build/${currentPackage}/opt/zimbra/docs/rebranding/NL_Rebranding_directions.txt
Copy ${repoDir}/zm-rebranding-docs/docs/rebranding/RU_Rebranding_directions.txt ${repoDir}/zm-build/${currentPackage}/opt/zimbra/docs/rebranding/RU_Rebranding_directions.txt
Copy ${repoDir}/zm-rebranding-docs/docs/rebranding/en_US_Rebranding_directions.txt ${repoDir}/zm-build/${currentPackage}/opt/zimbra/docs/rebranding/en_US_Rebranding_directions.txt
Copy ${repoDir}/zm-rebranding-docs/docs/rebranding/pt_BR_Rebranding_directions.txt ${repoDir}/zm-build/${currentPackage}/opt/zimbra/docs/rebranding/pt_BR_Rebranding_directions.txt
Copy ${repoDir}/zm-rebranding-docs/docs/rebranding/zh_CN_Rebranding_directions.txt ${repoDir}/zm-build/${currentPackage}/opt/zimbra/docs/rebranding/zh_CN_Rebranding_directions.txt
Copy ${repoDir}/zm-rebranding-docs/docs/rebranding/zh_HK_Rebranding_directions.txt ${repoDir}/zm-build/${currentPackage}/opt/zimbra/docs/rebranding/zh_HK_Rebranding_directions.txt
Copy ${repoDir}/zm-twofactorauth-store/docs/twofactorauth.md ${repoDir}/zm-build/${currentPackage}/opt/zimbra/docs/twofactorauth.md
Copy ${repoDir}/zm-vmware-appmonitor/build/dist/libexec/vmware-appmonitor ${repoDir}/zm-build/${currentPackage}/opt/zimbra/libexec/vmware-appmonitor
Copy ${repoDir}/zm-vmware-appmonitor/build/dist/lib/libappmonitorlib.so ${repoDir}/zm-build/${currentPackage}/opt/zimbra/lib/libappmonitorlib.so
Copy ${repoDir}/zm-voice-store/docs/ZimbraVoice-Extension.txt ${repoDir}/zm-build/${currentPackage}/opt/zimbra/docs/ZimbraVoice-Extension.txt
Copy ${repoDir}/zm-voice-store/docs/soap-voice-admin.txt ${repoDir}/zm-build/${currentPackage}/opt/zimbra/docs/soap-voice-admin.txt
Copy ${repoDir}/zm-voice-store/docs/soap-voice.txt ${repoDir}/zm-build/${currentPackage}/opt/zimbra/docs/soap-voice.txt
fi
CreatePackage "${os}"
}
############################################################################
main "$@"
================================================
FILE: instructions/bundling-scripts/zimbra-dnscache.sh
==============================
gitextract_jdedxgo8/ ├── .circleci/ │ ├── ENVIRONMENT.txt │ ├── config.yml │ ├── jobs/ │ │ └── deploy_ec2/ │ │ ├── deploy.sh │ │ ├── install.conf.in │ │ └── upgrade.conf.in │ └── misc/ │ ├── glean_version.pl │ └── status_api.sh ├── .gitignore ├── .project ├── RE/ │ ├── MICRO_WIN │ ├── README.txt │ └── RELEASE ├── README.md ├── build.pl ├── config.build.in ├── instructions/ │ ├── .gitignore │ ├── FOSS_package_list.pl │ ├── FOSS_remote_list.pl │ ├── FOSS_repo_list.pl │ ├── FOSS_staging_list.pl │ └── bundling-scripts/ │ ├── .gitignore │ ├── utils.sh │ ├── zcs-bundle.sh │ ├── zimbra-apache.sh │ ├── zimbra-core.sh │ ├── zimbra-dnscache.sh │ ├── zimbra-imapd.sh │ ├── zimbra-ldap.sh │ ├── zimbra-logger.sh │ ├── zimbra-mta.sh │ ├── zimbra-proxy.sh │ ├── zimbra-snmp.sh │ ├── zimbra-spell.sh │ └── zimbra-store.sh ├── lib/ │ └── Zimbra/ │ ├── DB/ │ │ └── DB.pm │ ├── LDAP.pm │ ├── LocalConfig.pm │ ├── Mon/ │ │ ├── Logger.pm │ │ ├── LoggerSchema.pm │ │ └── Zmstat.pm │ ├── SMTP.pm │ ├── SOAP/ │ │ ├── Soap.pm │ │ ├── Soap11.pm │ │ ├── Soap12.pm │ │ ├── XmlDoc.pm │ │ └── XmlElement.pm │ ├── Util/ │ │ ├── Common.pm │ │ ├── LDAP.pm │ │ └── Timezone.pm │ └── ZmClient.pm ├── rpmconf/ │ ├── Build/ │ │ ├── checkLicense.pl │ │ ├── checkService.pl │ │ ├── create_distribution.dist.sh │ │ ├── get_plat_tag.sh │ │ └── zmValidateLdap.pl │ ├── Conf/ │ │ ├── auditswatchrc │ │ ├── hotspot_compiler │ │ ├── logswatchrc │ │ ├── mibs/ │ │ │ ├── zimbra.mib │ │ │ └── zimbra_traps.mib │ │ ├── snmp.conf │ │ ├── snmpd.conf.in │ │ ├── swatchrc │ │ └── zmssl.cnf.in │ ├── Ctl/ │ │ ├── zimbra.cf.in │ │ ├── zimbracore.cf │ │ ├── zimbraldap.cf │ │ ├── zimbralogger.cf │ │ ├── zimbramail.cf │ │ ├── zimbramta.cf │ │ └── zimbrasnmp.cf │ ├── Env/ │ │ ├── crontabs/ │ │ │ ├── crontab │ │ │ ├── crontab.ldap │ │ │ ├── crontab.logger │ │ │ ├── crontab.mta │ │ │ └── crontab.store │ │ ├── sudoers.d/ │ │ │ ├── 01_zimbra │ │ │ ├── 02_zimbra-core │ │ │ ├── 02_zimbra-dnscache.deb │ │ │ ├── 02_zimbra-dnscache.rpm │ │ │ ├── 02_zimbra-mta │ │ │ └── 02_zimbra-store │ │ ├── zimbra.bash_profile │ │ ├── zimbra.bashrc │ │ ├── zimbra.exrc │ │ ├── zimbra.ldaprc │ │ ├── zimbra.platform │ │ └── zimbra.viminfo │ ├── Install/ │ │ ├── Util/ │ │ │ ├── addUser.sh │ │ │ ├── globals.sh │ │ │ ├── modules/ │ │ │ │ ├── getconfig.sh │ │ │ │ ├── packages.sh │ │ │ │ └── postinstall.sh │ │ │ └── utilfunc.sh │ │ ├── install.sh │ │ ├── postinstall.pm │ │ ├── preinstall.pm │ │ ├── test.pl │ │ └── zmsetup.pl │ ├── LicenseTool/ │ │ ├── Zimbra/ │ │ │ ├── Customer.pm │ │ │ ├── License.pm │ │ │ ├── LicenseKey.pm │ │ │ └── LicensingDB.pm │ │ ├── db/ │ │ │ └── create_license_db.sql │ │ └── zmlicensetool.pl │ ├── Patch/ │ │ ├── bin/ │ │ │ └── zmpatch.pl │ │ ├── conf/ │ │ │ └── zmpatch.xml │ │ ├── installPatch.sh │ │ └── libexec/ │ │ ├── zmcurl807-updater.sh │ │ └── zmopenssl-updater.sh │ ├── Spec/ │ │ ├── Scripts/ │ │ │ ├── zimbra-core.post │ │ │ ├── zimbra-core.pre │ │ │ ├── zimbra-dnscache.post │ │ │ ├── zimbra-ldap.post │ │ │ ├── zimbra-logger.post │ │ │ ├── zimbra-mta.post │ │ │ ├── zimbra-proxy.post │ │ │ ├── zimbra-qa.post │ │ │ ├── zimbra-snmp.post │ │ │ ├── zimbra-spell.post │ │ │ ├── zimbra-store.post │ │ │ └── zimbra-store.pre │ │ ├── zimbra-apache.deb │ │ ├── zimbra-apache.spec │ │ ├── zimbra-core.deb │ │ ├── zimbra-core.spec │ │ ├── zimbra-dnscache.deb │ │ ├── zimbra-dnscache.spec │ │ ├── zimbra-imapd.deb │ │ ├── zimbra-imapd.spec │ │ ├── zimbra-ldap.deb │ │ ├── zimbra-ldap.spec │ │ ├── zimbra-logger.deb │ │ ├── zimbra-logger.spec │ │ ├── zimbra-mta.deb │ │ ├── zimbra-mta.spec │ │ ├── zimbra-proxy.deb │ │ ├── zimbra-proxy.spec │ │ ├── zimbra-qa.deb │ │ ├── zimbra-qa.spec │ │ ├── zimbra-snmp.deb │ │ ├── zimbra-snmp.spec │ │ ├── zimbra-spell.deb │ │ ├── zimbra-spell.spec │ │ ├── zimbra-store.deb │ │ └── zimbra-store.spec │ └── Upgrade/ │ └── zmupgrade.pm └── show_git_overrides.sh
SYMBOL INDEX (5 symbols across 1 files) FILE: rpmconf/LicenseTool/db/create_license_db.sql type customer (line 11) | CREATE TABLE customer ( type fk (line 20) | CREATE TABLE fk ( type sign_keys (line 30) | CREATE TABLE sign_keys ( type customer_license (line 41) | CREATE TABLE customer_license ( type license_details (line 52) | CREATE TABLE license_details (
Condensed preview — 148 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,115K chars).
[
{
"path": ".circleci/ENVIRONMENT.txt",
"chars": 668,
"preview": "ENV VARIABLES:\n (used by deploy_ec2@app1_install, deploy_ec2@app1_upgrade):\n APP1_ADMIN_PASS = password to set a"
},
{
"path": ".circleci/config.yml",
"chars": 9543,
"preview": "\n# vim:expandtab:ts=3\n\nversion: 2\n\n############################################################################\n\nreferen"
},
{
"path": ".circleci/jobs/deploy_ec2/deploy.sh",
"chars": 10115,
"preview": "#!/bin/bash\n\nset -euo pipefail\n\nSCRIPT_DIR=$(CDPATH= cd \"$(dirname \"$0\")\" && pwd);\nCIRCLE_DIR=$(dirname \"$(dirname \"$SCR"
},
{
"path": ".circleci/jobs/deploy_ec2/install.conf.in",
"chars": 2889,
"preview": "AVDOMAIN=\"template_domainname\"\nAVUSER=\"admin@template_domainname\"\nCREATEADMIN=\"admin@template_domainname\"\nCREATEADMINPAS"
},
{
"path": ".circleci/jobs/deploy_ec2/upgrade.conf.in",
"chars": 285,
"preview": "PACKAGE_SERVER=\"repo.zimbra.com\"\nREMOVE=\"no\"\nUPGRADE=\"yes\"\nUSE_ZIMBRA_PACKAGE_SERVER=\"yes\"\nVERSIONUPDATECHECKS=\"TRUE\"\nIN"
},
{
"path": ".circleci/misc/glean_version.pl",
"chars": 498,
"preview": "#!/usr/bin/perl\n\nuse version;\n\nif($ENV{CIRCLE_BRANCH} =~ \"^release/([0-9]+[.][0-9]+[.][0-9]+)\")\n{\n print $1 . \"\\n\";\n}\n"
},
{
"path": ".circleci/misc/status_api.sh",
"chars": 188,
"preview": "#!/bin/bash\n\nset -e -o pipefail\n\ncurl -Ls \"https://circleci.com/api/v1.1/project/github/$CIRCLE_PROJECT_USERNAME/$CIRCLE"
},
{
"path": ".gitignore",
"chars": 87,
"preview": ".build.last_no_ts\n.build.number\n.idea\nconfig.build\nRE/BUILD\nRE/MAJOR\nRE/MICRO\nRE/MINOR\n"
},
{
"path": ".project",
"chars": 204,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<projectDescription>\n\t<name>ZimbraBuild</name>\n\t<comment></comment>\n\t<projects>\n\t"
},
{
"path": "RE/MICRO_WIN",
"chars": 5,
"preview": "1_M1\n"
},
{
"path": "RE/README.txt",
"chars": 428,
"preview": "Included:\n\nBinary release:\n\tREADME.txt - this file\n\tinstall.sh - install script\n\tbin/ - binaries used during install\n\tda"
},
{
"path": "RE/RELEASE",
"chars": 2,
"preview": "1\n"
},
{
"path": "README.md",
"chars": 13189,
"preview": "# zm-build\n\n## Introduction\n\nThis repository contains the build script and supporting files required to create a [FOSS]("
},
{
"path": "build.pl",
"chars": 36574,
"preview": "#!/usr/bin/perl\n\nuse strict;\nuse warnings;\n\nuse Config;\nuse Cwd;\nuse Data::Dumper;\nuse File::Basename;\nuse File::Copy;\nu"
},
{
"path": "config.build.in",
"chars": 615,
"preview": "# Example config:\n# - please change as appropriate.\n# - command line overrides the config.\n\nBUILD_RELEASE = JU"
},
{
"path": "instructions/.gitignore",
"chars": 13,
"preview": "NETWORK_*.pl\n"
},
{
"path": "instructions/FOSS_package_list.pl",
"chars": 225,
"preview": "@ENTRIES = (\n \"zimbra-core\",\n \"zimbra-ldap\",\n \"zimbra-logger\",\n \"zimbra-mta\",\n \"zimbra-dnscache\",\n \"zimbra-s"
},
{
"path": "instructions/FOSS_remote_list.pl",
"chars": 150,
"preview": "@ENTRIES = (\n \"gh-zm\" => { 'url-prefix' => \"https://github.com/Zimbra\", },\n \"gh-ks\" => { 'url-prefix' => \"https://gi"
},
{
"path": "instructions/FOSS_repo_list.pl",
"chars": 3341,
"preview": "@ENTRIES = (\n { name => \"ant-1.7.0-ziputil-patched\", },\n { name => \"ant-tar-patched\", "
},
{
"path": "instructions/FOSS_staging_list.pl",
"chars": 14040,
"preview": "@ENTRIES = (\n {\n \"dir\" => \"zm-mailbox\",\n \"ant_targets\" => [\"pkg-after-plough-through-tests\"]"
},
{
"path": "instructions/bundling-scripts/.gitignore",
"chars": 39,
"preview": "zimbra-archiving.sh\nzimbra-convertd.sh\n"
},
{
"path": "instructions/bundling-scripts/utils.sh",
"chars": 1053,
"preview": "#!/bin/bash\n\nCopy()\n{\n if [ $# -ne 2 ]\n then\n echo \"Usage: Copy <file1> <file2>\" 1>&2\n exit 1;\n fi\n\n l"
},
{
"path": "instructions/bundling-scripts/zcs-bundle.sh",
"chars": 5576,
"preview": "#!/bin/bash\n#\n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2009, 2010, 2011, 20"
},
{
"path": "instructions/bundling-scripts/zimbra-apache.sh",
"chars": 3355,
"preview": "#!/bin/bash\n#\n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2009, 2010, 2011, 20"
},
{
"path": "instructions/bundling-scripts/zimbra-core.sh",
"chars": 93441,
"preview": "#!/bin/bash\n#\n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2009, 2010, 2011, 20"
},
{
"path": "instructions/bundling-scripts/zimbra-dnscache.sh",
"chars": 4056,
"preview": "#!/bin/bash\n#\n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2009, 2010, 2011, 20"
},
{
"path": "instructions/bundling-scripts/zimbra-imapd.sh",
"chars": 4029,
"preview": "#!/bin/bash\n#\n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2017 Synacor, Inc.\n#"
},
{
"path": "instructions/bundling-scripts/zimbra-ldap.sh",
"chars": 4917,
"preview": "#!/bin/bash\n#\n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2009, 2010, 2011, 20"
},
{
"path": "instructions/bundling-scripts/zimbra-logger.sh",
"chars": 3383,
"preview": "#!/bin/bash\n#\n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2009, 2010, 2011, 20"
},
{
"path": "instructions/bundling-scripts/zimbra-mta.sh",
"chars": 5770,
"preview": "#!/bin/bash\n#\n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2009, 2010, 2011, 20"
},
{
"path": "instructions/bundling-scripts/zimbra-proxy.sh",
"chars": 4089,
"preview": "#!/bin/bash\n#\n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2009, 2010, 2011, 20"
},
{
"path": "instructions/bundling-scripts/zimbra-snmp.sh",
"chars": 5170,
"preview": "#!/bin/bash\n#\n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2009, 2010, 2011, 20"
},
{
"path": "instructions/bundling-scripts/zimbra-spell.sh",
"chars": 3412,
"preview": "#!/bin/bash\n#\n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2009, 2010, 2011, 20"
},
{
"path": "instructions/bundling-scripts/zimbra-store.sh",
"chars": 24718,
"preview": "#!/bin/bash\n#\n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2009, 2010, 2011, 20"
},
{
"path": "lib/Zimbra/DB/DB.pm",
"chars": 2447,
"preview": "# \n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2005, 2007, 2009, 2010, 2013, 2"
},
{
"path": "lib/Zimbra/LDAP.pm",
"chars": 6996,
"preview": "package Zimbra::LDAP;\n\nuse strict;\nuse warnings;\n\nuse Zimbra::LocalConfig;\nuse Net::LDAP;\n\nmy $ERROR;\nmy $TLSVERIFY = \"r"
},
{
"path": "lib/Zimbra/LocalConfig.pm",
"chars": 2188,
"preview": "package Zimbra::LocalConfig;\n\nuse strict;\nuse warnings;\n\nuse XML::Simple;\n\nmy $ERROR;\n\n=head1 NAME\n\nZimbra::LocalConfig "
},
{
"path": "lib/Zimbra/Mon/Logger.pm",
"chars": 2834,
"preview": "# \n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2004, 2005, 2006, 2007, 2009, 2"
},
{
"path": "lib/Zimbra/Mon/LoggerSchema.pm",
"chars": 7558,
"preview": "# \n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2009, 2010, 2013, 2014, 2016 Sy"
},
{
"path": "lib/Zimbra/Mon/Zmstat.pm",
"chars": 7606,
"preview": "# \n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2007, 2008, 2009, 2010, 2013, 2"
},
{
"path": "lib/Zimbra/SMTP.pm",
"chars": 4095,
"preview": "package Zimbra::SMTP;\n\nuse strict;\nuse warnings;\n\nuse Zimbra::LDAP;\nuse Net::SMTP;\nuse Net::DNS;\n\nmy $ERROR;\n\n=head1 NAM"
},
{
"path": "lib/Zimbra/SOAP/Soap.pm",
"chars": 5869,
"preview": "# \n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2004, 2005, 2007, 2009, 2010, 2"
},
{
"path": "lib/Zimbra/SOAP/Soap11.pm",
"chars": 2864,
"preview": "# \n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2004, 2005, 2007, 2009, 2010, 2"
},
{
"path": "lib/Zimbra/SOAP/Soap12.pm",
"chars": 2871,
"preview": "# \n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2004, 2005, 2007, 2009, 2010, 2"
},
{
"path": "lib/Zimbra/SOAP/XmlDoc.pm",
"chars": 2658,
"preview": "# \n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2004, 2005, 2007, 2009, 2010, 2"
},
{
"path": "lib/Zimbra/SOAP/XmlElement.pm",
"chars": 8457,
"preview": "# \n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2004, 2005, 2007, 2009, 2010, 2"
},
{
"path": "lib/Zimbra/Util/Common.pm",
"chars": 1348,
"preview": "#!/usr/bin/perl\n# \n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2006, 2007, 200"
},
{
"path": "lib/Zimbra/Util/LDAP.pm",
"chars": 5480,
"preview": "#!/usr/bin/perl\n# \n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2009, 2010, 201"
},
{
"path": "lib/Zimbra/Util/Timezone.pm",
"chars": 1723,
"preview": "package Zimbra::Util::Timezone;\nuse strict;\nour %TIMEZONES;\nour $_PARSED=0;\n\nsub new {\n my $class = shift;\n my $tzname"
},
{
"path": "lib/Zimbra/ZmClient.pm",
"chars": 3985,
"preview": "#!/usr/bin/perl\n# \n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2010, 2012, 201"
},
{
"path": "rpmconf/Build/checkLicense.pl",
"chars": 5450,
"preview": "#!/usr/bin/perl\n#\n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2014, 2015, 2016"
},
{
"path": "rpmconf/Build/checkService.pl",
"chars": 5109,
"preview": "#!/usr/bin/perl\n#\n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2016 Synacor, In"
},
{
"path": "rpmconf/Build/create_distribution.dist.sh",
"chars": 2043,
"preview": "#!/bin/bash\n# \n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2005, 2006, 2007, 2"
},
{
"path": "rpmconf/Build/get_plat_tag.sh",
"chars": 6449,
"preview": "#!/bin/bash\n#\n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2005, 2006, 2007, 20"
},
{
"path": "rpmconf/Build/zmValidateLdap.pl",
"chars": 6429,
"preview": "#!/usr/bin/perl\n#\n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2014, 2015, 2016"
},
{
"path": "rpmconf/Conf/auditswatchrc",
"chars": 1799,
"preview": "\n# Failures for an ip:account pair\nwatchfor /\\[.*\\w+=(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3});.*\\]\\s+.*cmd=.*Auth; account=("
},
{
"path": "rpmconf/Conf/hotspot_compiler",
"chars": 196,
"preview": "exclude com/zimbra/cs/session/SessionMap.putAndPrune\nexclude com/zimbra/cs/mailbox/MailItem.delete\nexclude org/apache/xe"
},
{
"path": "rpmconf/Conf/logswatchrc",
"chars": 89,
"preview": "ignore /DEBUG/\nwatchfor /.*/\n\tpipe /opt/zimbra/libexec/zmlogger,MESSAGE=$_\\n,KEEP_OPEN=1\n"
},
{
"path": "rpmconf/Conf/mibs/zimbra.mib",
"chars": 535,
"preview": "ZIMBRA-MIB DEFINITIONS ::= BEGIN\n\tIMPORTS\n\t\tenterprises\n\t\tFROM SNMPv2-SMI;\n\nzimbra OBJECT IDENTIFIER ::= { enterprises 6"
},
{
"path": "rpmconf/Conf/mibs/zimbra_traps.mib",
"chars": 274,
"preview": "ZIMBRA-TRAP-MIB DEFINITIONS ::= BEGIN\n IMPORTS zimbra FROM ZIMBRA-MIB;\n\nzmtraps OBJECT IDENTIFIER ::= { zimbra 0 "
},
{
"path": "rpmconf/Conf/snmp.conf",
"chars": 2241,
"preview": "###########################################################################\n#\n# snmp.conf\n#\n# - created by the snmpcon"
},
{
"path": "rpmconf/Conf/snmpd.conf.in",
"chars": 793,
"preview": "###########################################################################\n#\n# snmpd.conf\n#\n# - created by the snmpco"
},
{
"path": "rpmconf/Conf/swatchrc",
"chars": 2278,
"preview": "perlcode 0 my %notifications=();\nperlcode 0 $notifications{smtp}=\"@@DOSMTPNOTIFICATIONS@@\";\nperlcode 0 $notifications{sn"
},
{
"path": "rpmconf/Conf/zmssl.cnf.in",
"chars": 7843,
"preview": "#\n# OpenSSL example configuration file.\n# This is mostly being used for generation of certificate requests.\n#\n\n# This de"
},
{
"path": "rpmconf/Ctl/zimbra.cf.in",
"chars": 1125,
"preview": "# Order is important.\n#\n# APPLICATION name executable \"args\" mode \"label\"\n#\n# mode = \"normal\"\n#\n# SERVICE name \"label\" a"
},
{
"path": "rpmconf/Ctl/zimbracore.cf",
"chars": 289,
"preview": "APPLICATION mysql test_server \"9999\" normal \"mysql server\"\n\nCONTROL_SYNTAX zimbrasyntax mysql_start \"/opt/zimbra/bin/mys"
},
{
"path": "rpmconf/Ctl/zimbraldap.cf",
"chars": 301,
"preview": "APPLICATION ldap test_server \"9999\" normal \"ldap server\"\n\nSERVICE ldap \"Zimbra Directory\" ldap \n\nCONTROL_SYNTAX zimbrasy"
},
{
"path": "rpmconf/Ctl/zimbralogger.cf",
"chars": 689,
"preview": "SERVICE logger \"Zimbra Mail Console\" logmysql,logswatch\n\nAPPLICATION logmysql test_server \"9999\" normal \"mysql server\"\n\n"
},
{
"path": "rpmconf/Ctl/zimbramail.cf",
"chars": 690,
"preview": "SERVICE mailbox \"Zimbra Mail Console\" tomcat,mysql\n\nAPPLICATION tomcat test_server \"9999\" normal \"tomcat server\"\n\nCONTRO"
},
{
"path": "rpmconf/Ctl/zimbramta.cf",
"chars": 1638,
"preview": "SERVICE mta \"Zimbra MTA\" postfix,saslauthd,mtaconfig\n\nAPPLICATION postfix test_server \"9999\" normal \"Postfix mta\"\nCONTRO"
},
{
"path": "rpmconf/Ctl/zimbrasnmp.cf",
"chars": 348,
"preview": "# SNMP COMMANDS HERE\nAPPLICATION swatch test_server \"9999\" normal \"SNMP monitor\"\nSERVICE snmp \"Zimbra MTA\" swatch \n\nCONT"
},
{
"path": "rpmconf/Env/crontabs/crontab",
"chars": 930,
"preview": "# ZIMBRASTART -- DO NOT EDIT ANYTHING BETWEEN THIS LINE AND ZIMBRAEND\nSHELL=/bin/bash\n#\n# Log pruning\n#\n30 2 * * * find "
},
{
"path": "rpmconf/Env/crontabs/crontab.ldap",
"chars": 115,
"preview": "#\n# crontab.ldap\n#\n# Monitor MDB database size\n*/30 * * * * /opt/zimbra/libexec/zmldapmonitordb > /dev/null 2>&1\n#\n"
},
{
"path": "rpmconf/Env/crontabs/crontab.logger",
"chars": 287,
"preview": "#\n# crontab.logger\n#\n# process logs\n#\n00,10,20,30,40,50 * * * * /opt/zimbra/libexec/zmlogprocess > /tmp/logprocess.out 2"
},
{
"path": "rpmconf/Env/crontabs/crontab.mta",
"chars": 921,
"preview": "#\n# crontab.mta\n#\n#\n# Queue logging\n#\n0,10,20,30,40,50 * * * * /opt/zimbra/libexec/zmqueuelog\n#\n# Spam training\n#\n0 22 *"
},
{
"path": "rpmconf/Env/crontabs/crontab.store",
"chars": 1219,
"preview": "#\n# crontab.store\n#\n# Log pruning\n#\n30 2 * * * find /opt/zimbra/mailboxd/logs/ -type f -name \\*log\\* -mtime +8 -exec rm "
},
{
"path": "rpmconf/Env/sudoers.d/01_zimbra",
"chars": 28,
"preview": "Defaults:zimbra !requiretty\n"
},
{
"path": "rpmconf/Env/sudoers.d/02_zimbra-core",
"chars": 53,
"preview": "%zimbra ALL=NOPASSWD:/opt/zimbra/libexec/zmstat-fd *\n"
},
{
"path": "rpmconf/Env/sudoers.d/02_zimbra-dnscache.deb",
"chars": 91,
"preview": "%zimbra ALL=NOPASSWD:/opt/zimbra/libexec/zmunbound\n%zimbra ALL=NOPASSWD:/sbin/resolvconf *\n"
},
{
"path": "rpmconf/Env/sudoers.d/02_zimbra-dnscache.rpm",
"chars": 150,
"preview": "%zimbra ALL=NOPASSWD:/opt/zimbra/libexec/zmunbound\n%zimbra ALL=NOPASSWD:/opt/zimbra/libexec/zmdnscachealign *\n%zimbra AL"
},
{
"path": "rpmconf/Env/sudoers.d/02_zimbra-mta",
"chars": 482,
"preview": "%zimbra ALL=NOPASSWD:/opt/zimbra/common/sbin/postfix\n%zimbra ALL=NOPASSWD:/opt/zimbra/common/sbin/postalias\n%zimbra ALL="
},
{
"path": "rpmconf/Env/sudoers.d/02_zimbra-store",
"chars": 55,
"preview": "%zimbra ALL=NOPASSWD:/opt/zimbra/libexec/zmmailboxdmgr\n"
},
{
"path": "rpmconf/Env/zimbra.bash_profile",
"chars": 350,
"preview": "# .bash_profile\numask 0027\n\n# Get the aliases and functions\nif [ -f ~/.bashrc ]; then\n . ~/.bashrc\nfi\n\n# User spe"
},
{
"path": "rpmconf/Env/zimbra.bashrc",
"chars": 2961,
"preview": "# .bashrc\n\n# User specific aliases and functions\n\nalias rm='rm -i'\nalias cp='cp -i'\nalias mv='mv -i'\nalias h='history 40"
},
{
"path": "rpmconf/Env/zimbra.exrc",
"chars": 62,
"preview": "set tabstop=4\nset shiftwidth=4\nset ai\nset nohlsearch\nset exrc\n"
},
{
"path": "rpmconf/Env/zimbra.ldaprc",
"chars": 52,
"preview": "TLS_CACERTDIR /opt/zimbra/conf/ca\nTLS_REQCERT never\n"
},
{
"path": "rpmconf/Env/zimbra.platform",
"chars": 19,
"preview": "@@BUILD_PLATFORM@@\n"
},
{
"path": "rpmconf/Env/zimbra.viminfo",
"chars": 0,
"preview": ""
},
{
"path": "rpmconf/Install/Util/addUser.sh",
"chars": 2662,
"preview": "#!/bin/bash\n# \n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2005, 2007, 2009, 2"
},
{
"path": "rpmconf/Install/Util/globals.sh",
"chars": 3330,
"preview": "#!/bin/bash\n# \n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2005, 2006, 2007, 2"
},
{
"path": "rpmconf/Install/Util/modules/getconfig.sh",
"chars": 4758,
"preview": "#!/bin/bash\n# \n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2005, 2007, 2010, 2"
},
{
"path": "rpmconf/Install/Util/modules/packages.sh",
"chars": 9245,
"preview": "#!/bin/bash\n#\n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2005, 2006, 2007, 20"
},
{
"path": "rpmconf/Install/Util/modules/postinstall.sh",
"chars": 6016,
"preview": "#!/bin/bash\n# \n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2005, 2007, 2008, 2"
},
{
"path": "rpmconf/Install/Util/utilfunc.sh",
"chars": 100768,
"preview": "#!/bin/bash\n#\n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2005, 2006, 2007, 20"
},
{
"path": "rpmconf/Install/install.sh",
"chars": 9033,
"preview": "#!/bin/bash\n#\n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2005, 2006, 2007, 20"
},
{
"path": "rpmconf/Install/postinstall.pm",
"chars": 2362,
"preview": "#!/usr/bin/perl\n# \n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2005, 2006, 200"
},
{
"path": "rpmconf/Install/preinstall.pm",
"chars": 864,
"preview": "#!/usr/bin/perl\n# \n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2006, 2007, 200"
},
{
"path": "rpmconf/Install/test.pl",
"chars": 0,
"preview": ""
},
{
"path": "rpmconf/Install/zmsetup.pl",
"chars": 261948,
"preview": "#!/usr/bin/perl\n#\n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2005, 2006, 2007"
},
{
"path": "rpmconf/LicenseTool/Zimbra/Customer.pm",
"chars": 453,
"preview": "package Zimbra::Customer;\n\nsub new {\n\tmy $class = shift;\n\tmy $attrs = shift;\n\tmy $self = {};\n\tbless $self, $class;\n\tif ("
},
{
"path": "rpmconf/LicenseTool/Zimbra/License.pm",
"chars": 1975,
"preview": "package Zimbra::License;\n\nuse strict;\n\nsub new {\n\tmy $class = shift;\n\tmy $attrs = shift;\n\tmy $self = {};\n\tbless $self, $"
},
{
"path": "rpmconf/LicenseTool/Zimbra/LicenseKey.pm",
"chars": 5165,
"preview": "package Zimbra::LicenseKey;\n\n# id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,\n# pubkey "
},
{
"path": "rpmconf/LicenseTool/Zimbra/LicensingDB.pm",
"chars": 5274,
"preview": "package Zimbra::LicensingDB;\n\nuse strict;\nuse DBI;\nuse Time::Local;\n\n#my $data_source=\"dbi:mysql:database=license;mysql_"
},
{
"path": "rpmconf/LicenseTool/db/create_license_db.sql",
"chars": 1352,
"preview": "DROP DATABASE IF EXISTS license;\nCREATE DATABASE license;\n\nUSE license;\n\nGRANT ALL ON license.* to 'license' IDENTIFIED "
},
{
"path": "rpmconf/LicenseTool/zmlicensetool.pl",
"chars": 9395,
"preview": "#!/usr/bin/perl\n\nuse strict;\nuse Zimbra::LicensingDB;\nuse Zimbra::License;\nuse Zimbra::LicenseKey;\nuse Zimbra::Customer;"
},
{
"path": "rpmconf/Patch/bin/zmpatch.pl",
"chars": 19041,
"preview": "#!/usr/bin/perl -w\n# \n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2010, 2011, "
},
{
"path": "rpmconf/Patch/conf/zmpatch.xml",
"chars": 53717,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n * ***** BEGIN LICENSE BLOCK *****\n * Zimbra Collaboration Suite Server\n * C"
},
{
"path": "rpmconf/Patch/installPatch.sh",
"chars": 1078,
"preview": "#!/bin/bash\n# \n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2010, 2012, 2013, 2"
},
{
"path": "rpmconf/Patch/libexec/zmcurl807-updater.sh",
"chars": 2640,
"preview": "#!/bin/bash\n\nif [ x`whoami` != xroot ]; then\n echo Error: must be run as root user\n exit 1\nfi\n\nVERSION=`su - zimbra -c"
},
{
"path": "rpmconf/Patch/libexec/zmopenssl-updater.sh",
"chars": 3040,
"preview": "#!/bin/bash\n\nif [ x`whoami` != xroot ]; then\n echo Error: must be run as root user\n exit 1\nfi\n\nSSL[0]='1.0.1d'\nSSL[1]="
},
{
"path": "rpmconf/Spec/Scripts/zimbra-core.post",
"chars": 4669,
"preview": "#!/bin/bash\n# \n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2005, 2006, 2007, 2"
},
{
"path": "rpmconf/Spec/Scripts/zimbra-core.pre",
"chars": 2246,
"preview": "#!/bin/bash\n#\n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2005, 2006, 2007, 20"
},
{
"path": "rpmconf/Spec/Scripts/zimbra-dnscache.post",
"chars": 1388,
"preview": "#!/bin/bash\n# \n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2013, 2014, 2015, 2"
},
{
"path": "rpmconf/Spec/Scripts/zimbra-ldap.post",
"chars": 1362,
"preview": "#!/bin/bash\n#\n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2005, 2006, 2007, 20"
},
{
"path": "rpmconf/Spec/Scripts/zimbra-logger.post",
"chars": 877,
"preview": "#!/bin/bash\n# \n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2005, 2006, 2007, 2"
},
{
"path": "rpmconf/Spec/Scripts/zimbra-mta.post",
"chars": 3446,
"preview": "#!/bin/bash\n# \n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2005, 2006, 2007, 2"
},
{
"path": "rpmconf/Spec/Scripts/zimbra-proxy.post",
"chars": 1400,
"preview": "#!/bin/bash\n# \n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2007, 2008, 2009, 2"
},
{
"path": "rpmconf/Spec/Scripts/zimbra-qa.post",
"chars": 860,
"preview": "#!/bin/bash\n# \n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2005, 2006, 2007, 2"
},
{
"path": "rpmconf/Spec/Scripts/zimbra-snmp.post",
"chars": 1126,
"preview": "#!/bin/bash\n# \n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2005, 2006, 2007, 2"
},
{
"path": "rpmconf/Spec/Scripts/zimbra-spell.post",
"chars": 856,
"preview": "#!/bin/bash\n# \n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2005, 2006, 2007, 2"
},
{
"path": "rpmconf/Spec/Scripts/zimbra-store.post",
"chars": 2204,
"preview": "#!/bin/bash\n# \n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2005, 2006, 2007, 2"
},
{
"path": "rpmconf/Spec/Scripts/zimbra-store.pre",
"chars": 1536,
"preview": "#!/bin/bash\n#\n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2005, 2006, 2007, 20"
},
{
"path": "rpmconf/Spec/zimbra-apache.deb",
"chars": 214,
"preview": "Package: zimbra-apache\nVersion: @@VERSION@@\nDescription: Best email money can buy\nMaintainer: build@zimbra.com\nSection: "
},
{
"path": "rpmconf/Spec/zimbra-apache.spec",
"chars": 572,
"preview": "#\n# spec file for zimbra.rpm\n#\nSummary: Zimbra Apache HTTPD server\nName: zimbra-apache\nVersion: @@VERSION@@\nRelease: @@R"
},
{
"path": "rpmconf/Spec/zimbra-core.deb",
"chars": 213,
"preview": "Package: zimbra-core\nVersion: @@VERSION@@\nDescription: Best email money can buy\nMaintainer: build@zimbra.com\nSection: ma"
},
{
"path": "rpmconf/Spec/zimbra-core.spec",
"chars": 556,
"preview": "#\n# spec file for zimbra.rpm\n#\nSummary: Zimbra Core\nName: zimbra-core\nVersion: @@VERSION@@\nRelease: @@RELEASE@@\nLicense:"
},
{
"path": "rpmconf/Spec/zimbra-dnscache.deb",
"chars": 256,
"preview": "Package: zimbra-dnscache\nVersion: @@VERSION@@\nDescription: Best email money can buy\nMaintainer: Zimbra Packaging Service"
},
{
"path": "rpmconf/Spec/zimbra-dnscache.spec",
"chars": 572,
"preview": "#\n# spec file for zimbra.rpm\n#\nSummary: Zimbra DNS cache\nName: zimbra-dnscache\nVersion: @@VERSION@@\nRelease: @@RELEASE@@"
},
{
"path": "rpmconf/Spec/zimbra-imapd.deb",
"chars": 187,
"preview": "Package: zimbra-imapd\nVersion: @@VERSION@@\nDescription: Best email money can buy\nMaintainer: build@zimbra.com\nSection: M"
},
{
"path": "rpmconf/Spec/zimbra-imapd.spec",
"chars": 627,
"preview": "#\n# spec file for zimbra-imapd.rpm\n#\nSummary: Zimbra IMAP\nName: zimbra-imapd\nVersion: @@VERSION@@\nRelease: @@RELEASE@@\nL"
},
{
"path": "rpmconf/Spec/zimbra-ldap.deb",
"chars": 210,
"preview": "Package: zimbra-ldap\nVersion: @@VERSION@@\nDescription: Best email money can buy\nMaintainer: build@zimbra.com\nSection: Ma"
},
{
"path": "rpmconf/Spec/zimbra-ldap.spec",
"chars": 554,
"preview": "#\n# spec file for zimbra.rpm\n#\nSummary: Zimbra LDAP\nName: zimbra-ldap\nVersion: @@VERSION@@\nRelease: @@RELEASE@@\nLicense:"
},
{
"path": "rpmconf/Spec/zimbra-logger.deb",
"chars": 188,
"preview": "Package: zimbra-logger\nVersion: @@VERSION@@\nDescription: Best email money can buy\nMaintainer: build@zimbra.com\nSection: "
},
{
"path": "rpmconf/Spec/zimbra-logger.spec",
"chars": 537,
"preview": "#\n# spec file for zimbra.rpm\n#\nSummary: Zimbra Mail\nName: zimbra-logger\nVersion: @@VERSION@@\nRelease: @@RELEASE@@\nLicens"
},
{
"path": "rpmconf/Spec/zimbra-mta.deb",
"chars": 302,
"preview": "Package: zimbra-mta\nVersion: @@VERSION@@\nDescription: Best email money can buy\nMaintainer: build@zimbra.com\nSection: Mai"
},
{
"path": "rpmconf/Spec/zimbra-mta.spec",
"chars": 577,
"preview": "#\n# spec file for zimbra.rpm\n#\nSummary: Zimbra MTA\nName: zimbra-mta\nVersion: @@VERSION@@\nRelease: @@RELEASE@@\nLicense: V"
},
{
"path": "rpmconf/Spec/zimbra-proxy.deb",
"chars": 230,
"preview": "Package: zimbra-proxy\nVersion: @@VERSION@@\nDescription: Best email money can buy\nMaintainer: build@zimbra.com\nSection: M"
},
{
"path": "rpmconf/Spec/zimbra-proxy.spec",
"chars": 580,
"preview": "#\n# spec file for zimbra.rpm\n#\nSummary: Zimbra Proxy\nName: zimbra-proxy\nVersion: @@VERSION@@\nRelease: @@RELEASE@@\nLicens"
},
{
"path": "rpmconf/Spec/zimbra-qa.deb",
"chars": 184,
"preview": "Package: zimbra-qa\nVersion: @@VERSION@@\nDescription: Best email money can buy\nMaintainer: build@zimbra.com\nSection: Mail"
},
{
"path": "rpmconf/Spec/zimbra-qa.spec",
"chars": 433,
"preview": "#\n# spec file for zimbra.rpm\n#\nSummary: Zimbra QA Tests\nName: zimbra-qatest\nVersion: @@VERSION@@\nRelease: @@RELEASE@@\nLi"
},
{
"path": "rpmconf/Spec/zimbra-snmp.deb",
"chars": 210,
"preview": "Package: zimbra-snmp\nVersion: @@VERSION@@\nDescription: Best email money can buy\nMaintainer: build@zimbra.com\nSection: Ma"
},
{
"path": "rpmconf/Spec/zimbra-snmp.spec",
"chars": 553,
"preview": "#\n# spec file for zimbra.rpm\n#\nSummary: Zimbra SNMP\nName: zimbra-snmp\nVersion: @@VERSION@@\nRelease: @@RELEASE@@\nLicense:"
},
{
"path": "rpmconf/Spec/zimbra-spell.deb",
"chars": 212,
"preview": "Package: zimbra-spell\nVersion: @@VERSION@@\nDescription: Best email money can buy\nMaintainer: build@zimbra.com\nSection: M"
},
{
"path": "rpmconf/Spec/zimbra-spell.spec",
"chars": 647,
"preview": "#\n# spec file for zimbra.rpm\n#\nSummary: Zimbra Spell\nName: zimbra-spell\nVersion: @@VERSION@@\nRelease: @@RELEASE@@\nLicens"
},
{
"path": "rpmconf/Spec/zimbra-store.deb",
"chars": 294,
"preview": "Package: zimbra-store\nVersion: @@VERSION@@\nDescription: Best email money can buy\nMaintainer: build@zimbra.com\nSection: M"
},
{
"path": "rpmconf/Spec/zimbra-store.spec",
"chars": 732,
"preview": "#\n# spec file for zimbra.rpm\n#\nSummary: Zimbra Mail\nName: zimbra-store\nVersion: @@VERSION@@\nRelease: @@RELEASE@@\nLicense"
},
{
"path": "rpmconf/Upgrade/zmupgrade.pm",
"chars": 131838,
"preview": "#!/usr/bin/perl\n# vim: ts=2\n#\n# ***** BEGIN LICENSE BLOCK *****\n# Zimbra Collaboration Suite Server\n# Copyright (C) 2005"
},
{
"path": "show_git_overrides.sh",
"chars": 2902,
"preview": "#!/bin/bash\n\nif [ $# -lt 1 ]\nthen\n echo \"Usage: $0 <cfg|cmd> [remote-branch]\"\n exit 1\nfi\n\nCDPATH=\nSCRIPT_DIR=\"$(cd \""
}
]
About this extraction
This page contains the full source code of the Zimbra/zm-build GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 148 files (1.0 MB), approximately 313.8k tokens, and a symbol index with 5 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.