-+ if ! defined(Package['automake']) {
-+ package { 'automake':
-+ ensure => 'present',
-+ }
-+ }
-+ if ! defined(Package['make']) {
-+ package { 'make':
-+ ensure => 'present',
-+ }
-+ }
-+ if ! defined(Package['libsnappy-dev']) {
-+ package { 'libsnappy-dev':
-+ ensure => 'present',
-+ }
-+ }
-+ if ! defined(Package['patch']) {
-+ package { 'patch':
-+ ensure => 'present',
-+ }
-+ }
-+ if ! defined(Package['maven']) {
-+ package { 'maven':
-+ ensure => 'present',
-+ }
-+ }
-+ if ! defined(Package['openjdk-8-jdk']) {
-+ package { 'openjdk-8-jdk':
-+ ensure => 'present',
-+ }
-+ }
-+
-+ exec { 'leveldb-fetch':
-+ path => ['/usr/bin'],
-+ command => "git clone git://github.com/chirino/leveldb.git ${leveldb_dir}",
-+ creates => "${leveldb_dir}/.git",
-+ user => $user,
-+ require => [Package['git']],
-+ } ->
-+ exec { 'leveldbjni-fetch':
-+ path => ['/usr/bin'],
-+ command => "git clone https://github.com/fusesource/leveldbjni.git -b ${branch} ${leveldbjni_dir}",
-+ creates => "${leveldbjni_dir}/.git",
-+ user => $user,
-+ require => [Package['git']],
-+ } ->
-+ exec { 'leveldb-merge-google':
-+ path => ['/usr/bin', '/bin'],
-+ command => "git config user.name odl && git config user.email 'o@d.l' && git remote add google https://github.com/google/leveldb.git && git fetch google master && git fetch --tags google && git merge --no-edit v1.18",
-+ unless => "git remote | grep google",
-+ cwd => $leveldb_dir,
-+ user => $user,
-+ require => [Package['git']],
-+ } ->
-+ exec { 'leveldb-patch':
-+ path => ['/usr/bin'],
-+ command => "patch -p1 < ${leveldbjni_dir}/leveldb.patch",
-+ unless => "patch -p1 -R -N --dry-run < ${leveldbjni_dir}/leveldb.patch",
-+ cwd => $leveldb_dir,
-+ user => $user,
-+ require => [Package['patch']],
-+ } ->
-+ file { "${leveldb_dir}/leveldb-arm64.patch":
-+ ensure => "file",
-+ source => "puppet:///modules/opendaylight/leveldb-arm64.patch",
-+ owner => $user,
-+ } ->
-+ exec { 'leveldb-patch-for-arm64':
-+ path => ['/usr/bin'],
-+ command => "patch -p1 < ${leveldb_dir}/leveldb-arm64.patch",
-+ unless => "patch -p1 -R -N --dry-run < ${leveldb_dir}/leveldb-arm64.patch",
-+ cwd => $leveldb_dir,
-+ user => $user,
-+ require => [Package['patch']],
-+ } ->
-+ exec { 'leveldb-build':
-+ command => "/usr/bin/make libleveldb.a -j${parallel_jobs}",
-+ creates => "${leveldb_dir}/libleveldb.a",
-+ environment => $environment,
-+ cwd => $leveldb_dir,
-+ user => $user,
-+ require => [Package['git'], Package['make'], Package['build-essential']],
-+ } ->
-+ file { "${leveldbjni_dir}/leveldbjni.patch":
-+ ensure => "file",
-+ source => "puppet:///modules/opendaylight/leveldbjni-native.patch",
-+ owner => $user,
-+ } ->
-+ exec { 'leveldbjni-patch':
-+ path => ['/usr/bin'],
-+ command => "patch -p1 < ${leveldbjni_dir}/leveldbjni.patch",
-+ unless => "patch -p1 -R -N --dry-run < ${leveldbjni_dir}/leveldbjni.patch",
-+ cwd => $leveldbjni_dir,
-+ user => $user,
-+ require => [Package['patch']],
-+ } ->
-+ exec { 'leveldbjni-build':
-+ command => "/usr/bin/mvn clean install -P download -P linux64 -P all",
-+ # Creates requires a fully qualified path which we don't have
-+ unless => "/usr/bin/test -d ~${user}/.m2/repository/org/fusesource/leveldbjni/leveldbjni-all",
-+ environment => $environment,
-+ cwd => $leveldbjni_dir,
-+ user => $user,
-+ timeout => 1200,
-+ require => [Package['maven']],
-+ } ->
-+ # Can't do this with 'file' type because we need to purge existing package
-+ # and at the same time don't perform the copy if we've already copied our
-+ # package.
-+ exec { 'leveldbjni-copy':
-+ path => ['/bin'],
-+ command => "rm -rf ${target}/system/org/fusesource/leveldbjni && cp -r ~${user}/.m2/repository/org/fusesource/leveldbjni $target/system/org/fusesource/",
-+ creates => "${target}/system/org/fusesource/leveldbjni/leveldbjni-linux64",
-+ user => $user,
-+ }