1. About packaging/package.sh
1.1. I personally dislike the use of bashism, e.g. like reserved keywords,
double '[[', double '((', but that's ok
for targeted distro (RHEL/Centos). The only requirement is please add more
comments in tough places
to improve code readability and maintanbility.
1.2. few code style comments:
>> name=$(cat /etc/*release | grep ^NAME | sed -r 's|.*"(.*)".*|\1|')
add
| head -n 1
or else it will fail in case more than one file with *release mask in /etc
1.3. rework prepEnv
>> if [ ! -z installCmd ]; then
this will fail miserably, replace with
if [ ! -z $installCmd ]; then
1.3.1. however running package.sh under Ubuntu still would fail due to
$installCmd is unpacked to 'apt --no-install-recommends'
and -z 'apt --no-install-recommends' would always return false.
1.3.2. and still, when apt/yum is installed and rpm/rpm-build is not, the
whole prepEnv would fail to ensure all
build-time requirements are installed, because it only checks for apt/yum.
1.3.3. installing requires root privileges. However, no checks for $EUID nor
running apt/yum with 'sudo' present.
Please, add this check, otherwise running package.sh under unprivileged user
with no installed build-time dependencies
will fail with very undescriptive errors.
1.4. getBin
1.4.1. I don't like detecting target apache ignite package version by
parsing embedded changelog. This might fail
when any package text description would contain '*' in the first char of the
string. Either move changelog to separate
Changelog file and %include it in .spec or parse for, e.g. '^Version:
[0-9\.]+'
>> igniteVersion=$(cat rpm/SPECS/apache-ignite.spec | grep '^*' | head -1 |
>> sed -r 's|.*\ -\ (.*)-.*|\1|')
1.4.2.
>> ls ${binName} && binPreparedFlag=true || true
why not use
if [ ! -f $binName ];
1.4.3. 'curl' is used, but not checked as build-time dependency.
1.4.4. we try to find and download 'apache-ignite-fabric-$igniteVersion',
that's ok for <2.4 releases, but in future
we would need to find and download 'apache-ignite-$igniteVersion' too.
Better add this check as a fallback option, e.g.
try to use curl with both urls in correct order.
if curl --output /dev/null --silent --head --fail "$url"; then
echo "URL exists: $url"
else
echo "URL does not exist: $url"
fi
1.4.5. also strange, but may be ok that we download
apache-ignite-fabric-2.4.0
2. about apache-ignite.spec
2.1. fix typo
>> Apache Ignite's optinal libs and integrations
2.2. fix description
>> C++ files necessary for using Apache Ignite
platform files are not necessary for Ignite, only for integration with .NET,
afaik?
2.3. Tough place with 'Obsoletes: apache-ignite < 2.5.0'
I understand the current logic behind splitting apache-ignite to several
.rpm's and setting obsolete for the old
apache-ignite.
However, for future releases, e.g. if/when we handover this task to another
engineer, it is not quite obvious that one
must (or must not?) update version in 5 different places, including
changelog. Please add a few lines about
'How to package next (new) version of Apache Ignite RPMs' to Confluence.
2.4. firewalld / firewall-cmd is optionally used if installed, but not set
in the dependency. It is OK, but may be we
add this as a post-install note, like we do recommendation messages in node
logs.
3. service scripts : we'll should add a test suite for it, overall looks
pretty solid.
--
Sent from: http://apache-ignite-developers.2346864.n4.nabble.com/