References #743
Signed-off-by: Waldemar Kozaczuk <[email protected]>
---
scripts/setup.py | 40 +++++++++++++++++++++++++++++++++++++++-
1 file changed, 39 insertions(+), 1 deletion(-)
diff --git a/scripts/setup.py b/scripts/setup.py
index db831f0f..946d1e4e 100755
--- a/scripts/setup.py
+++ b/scripts/setup.py
@@ -3,7 +3,7 @@
# set up a development environment for OSv. Run as root.
import sys, argparse
-import subprocess
+import subprocess, os
standard_ec2_packages = ['python-pip', 'wget']
standard_ec2_post_install = ['pip install awscli &&'
@@ -64,6 +64,40 @@ class Fedora(object):
test_packages = ['openssl-devel']
ec2_post_install = standard_ec2_post_install
+ def aarch64_download(self, version):
+ gcc_packages = ['gcc',
+ 'glibc',
+ 'glibc-devel',
+ 'libgcc',
+ 'libstdc++',
+ 'libstdc++-devel',
+ 'libstdc++-static']
+ boost_packages = ['boost-devel',
+ 'boost-static',
+ 'boost-system']
+ osv_root = os.path.join(os.path.dirname(os.path.abspath(__file__)),
'..')
+ script_path = '%s/scripts/download_rpm_package.sh' % osv_root
+ destination = '%s/downloaded_packages/aarch64' % osv_root
+ ##
+ # The setup.py is typically run as root to allow yum properly install
packages
+ # This however would cause all files downloaded to
downloaded_packages/aarch64 directory
+ # get created and owned by the root user which in most cases is not
desirable
+ # To prevent that let us compare current process user id with the
owner id of osv root
+ # directory and if different run all download command with the same
user as the one owning
+ # the root directory
+ current_user_id = os.getuid()
+ osv_root_owner_id = os.stat(osv_root).st_uid
+ if current_user_id != osv_root_owner_id and current_user_id == 0:
+ command_prefix = "sudo -u '#%d'" % osv_root_owner_id # Most likely
setup.py is run by root so let us use sudo
+ else:
+ command_prefix = ''
+
+ install_commands = ['%s %s %s %s %s/gcc' % (command_prefix,
script_path, package, version, destination) for package in gcc_packages]
+ install_commands += ['%s %s %s %s %s/boost' % (command_prefix,
script_path, package, version, destination) for package in boost_packages]
+ install_commands = ['%s rm -rf %s/gcc/install' % (command_prefix,
destination),
+ '%s rm -rf %s/boost/install' % (command_prefix,
destination)] + install_commands
+ return ' && '.join(install_commands)
+
class Fedora_25(object):
packages = ['java-1.8.0-openjdk', 'python2-requests', 'openssl-devel',
'lua-5.3.*', 'lua-devel-5.3.*']
ec2_packages = []
@@ -361,6 +395,10 @@ for distro in distros:
if cmdargs.test:
pkg += distro.test_packages + dver.test_packages
subprocess.check_call(distro.install + ' ' + str.join(' ',
pkg), shell=True)
+ if 'aarch64_download' in dir(distro):
+ print('Downloading aarch64 packages to cross-compile ARM
version ...')
+
subprocess.check_call(distro.aarch64_download(dver.version), shell=True)
+ print('Downloaded all aarch64 packages!')
if cmdargs.ec2:
if distro.ec2_post_install:
subprocess.check_call(distro.ec2_post_install,
shell=True)
--
2.20.1
--
You received this message because you are subscribed to the Google Groups "OSv
Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/osv-dev/20200225055252.6672-2-jwkozaczuk%40gmail.com.