About this Install Guide

This guide is intended to get you up and running with this tool quickly with the most common settings. For a thorough review of all options, refer to the official documentation.

Porting Advisor for Graviton is a command line tool for assessing the portability of software to AWS Graviton processors.

Porting Advisor analyzes source code for known patterns and dependencies, and generates a report with any incompatibilities.

Supported operating systems include Linux, Windows, and macOS.

Porting Advisor analyzes C/C++, Python, Java, Fortran, and Go applications.

Before you begin

Follow the instructions below to install and use Porting Advisor on Ubuntu or Amazon Linux 2023 .

When the instructions are different, operating system specific tabs are provided.

Confirm you are using an Arm machine by running:

    

        
        
            uname -m
        
    

The output should be:

    

        
        aarch64

        
    

If you see a different result, you are not using an Arm computer running 64-bit Linux.

Porting Advisor has the following prerequisites:

  • Python 3.10 or above
  • Python pip
  • Python venv

If you want to analyze Java applications you will also need:

  • Java 17 or above
  • Maven

Install the prerequisites using the package manager:

    

        
        
            
sudo apt update
sudo apt install python3-pip python-is-python3 python3-venv -y
  
        
    
    

        
        
            
sudo dnf install git -y
sudo dnf install python3.11 -y
  
        
    

If you want to analyze Java applications:

    

        
        
            
wget -O- https://apt.corretto.aws/corretto.key | sudo apt-key add - 
sudo add-apt-repository 'deb https://apt.corretto.aws stable main' -y
sudo apt-get update; sudo apt-get install -y java-17-amazon-corretto-jdk
sudo apt install maven -y
  
        
    
    

        
        
            
sudo dnf install java-17-amazon-corretto -y
sudo dnf install maven -y
  
        
    

Installation

Download Porting Advisor from GitHub:

    

        
        
            git clone https://github.com/aws/porting-advisor-for-graviton.git
cd porting-advisor-for-graviton
        
    

Porting Advisor can be run as a Python script or as an executable. If you want to run the executable, you should still complete the run as a script section to confirm your environment is setup correctly.

Run as a script

To setup to run as a python script, create a Python virtual environment:

    

        
        
            
python3 -m venv .venv
  
        
    
    

        
        
            
python3.11 -m venv .venv
  
        
    

Enter the Python virtual environment and install the required packages:

    

        
        
            source .venv/bin/activate
pip install -r requirements.txt
pip install pyinstaller certifi
        
    

Confirm Porting Advisor runs as a script:

    

        
        
            python3 src/porting-advisor.py --help
        
    

The output should be a long help message starting with the usage information and explaining the options for Porting Advisor.

    

        
        usage: porting-advisor [-h] [--issue-types ISSUE_TYPES] [--no-filter] [--no-progress] [--output OUTPUT]
                       [--output-format OUTPUT_FORMAT] [--quiet] [--target-os TARGET_OS] [--version]
                       [--logging-level {error,warning,info,debug}] [--log-file LOG_FILE] [--log-to-console]
                       DIRECTORY

        
    

Run as an executable

Running Porting Advisor as an executable requires a build step.

The executable is a good option if you want to run Porting Advisor on multiple machines.

The executable can be copied to other machines and run without installing Python packages.

Build the executable:

    

        
        
            ./build.sh
        
    

A success message will be printed when the build completes:

    

        
        *** Success: Executable saved at dist/porting-advisor-linux-aarch64 ***

        
    

The executable is in the dist directory with the filename printed in the output.

Confirm Porting Advisor runs as an executable:

    

        
        
            ./dist/porting-advisor-linux-aarch64 --help
        
    

The output will be the same help message printed by the Python invocation.

You can copy the executable from the dist folder to any another machine (with the same operating system and architecture) and use Porting Advisor immediately. There is no need to install anything related to Python.

Test a sample project

The Porting Advisor includes some small examples in the sample-projects directory of the GitHub repository.

Run Porting Advisor on a Go sample with the executable:

    

        
        
            ./dist/porting-advisor-linux-aarch64 sample-projects/java-samples/
        
    

The recommendations for this application will be printed along with links on where to get more details.

    

        
        Porting Advisor for Graviton v1.1.1
Report date: 2024-06-25 08:47:06

2 files scanned.
detected java code. we recommend using Corretto. see https://aws.amazon.com/corretto/ for more details.
detected java code. min version 8 is required. version 11 or above is recommended. see https://github.com/aws/aws-graviton-getting-started/blob/main/java.md for more details.

Report generated successfully. Hint: you can use --output FILENAME.html to generate an HTML report.

        
    

Try out the other sample projects.

You are ready to use Porting Advisor for Graviton on your own projects.


Feedback

How would you rate the overall quality of this tool quick-install guide?