Skip to content

Commit 47ef5f0

Browse files
Fix chiplet tools installation issues
- Improve Julia installation with better snap detection and verification - Fix OpenSTA installation: add CUDD dependency and disable CUDD in cmake - Fix Python package installation with --user flag to avoid permission issues - Update Python path to include user site-packages directory - Add verification steps for Julia and OpenSTA installations - Improve error handling and status reporting throughout
1 parent 474e29e commit 47ef5f0

1 file changed

Lines changed: 40 additions & 14 deletions

File tree

.github/workflows/build-and-test.yml

Lines changed: 40 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -611,8 +611,8 @@ jobs:
611611
echo "🔍 Detected Python version: $PYTHON_VERSION_DETECTED"
612612
613613
# Set up Python paths dynamically
614-
export PYTHONPATH="/usr/lib/python$PYTHON_VERSION_DETECTED/dist-packages:/usr/local/lib/python$PYTHON_VERSION_DETECTED/dist-packages:$PYTHONPATH"
615-
export PYTHONNOUSERSITE=1
614+
export PYTHONPATH="/usr/lib/python$PYTHON_VERSION_DETECTED/dist-packages:/usr/local/lib/python$PYTHON_VERSION_DETECTED/dist-packages:$HOME/.local/lib/python$PYTHON_VERSION_DETECTED/site-packages:$PYTHONPATH"
615+
export PYTHONNOUSERSITE=0
616616
export PYTHONUNBUFFERED=1
617617
export PYTHON_CMD="$PYTHON_CMD"
618618
export PIP_CMD="$PIP_CMD"
@@ -668,17 +668,33 @@ jobs:
668668
# Try apt installation first
669669
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y julia || echo "⚠️ Julia apt installation failed, trying snap method"
670670
671-
# Alternative: Install Julia via snap
672-
if ! command -v julia &> /dev/null; then
671+
# Check if Julia was installed via apt
672+
if command -v julia &> /dev/null; then
673+
echo "✅ Julia installation completed via apt package"
674+
else
675+
# Alternative: Install Julia via snap
673676
echo "🔧 Installing Julia via snap..."
674-
sudo snap install julia --classic || echo "⚠️ Julia snap installation failed"
675-
if command -v julia &> /dev/null; then
676-
echo "✅ Julia installation completed via snap"
677+
if command -v snap &> /dev/null; then
678+
sudo snap install julia --classic
679+
if command -v julia &> /dev/null; then
680+
echo "✅ Julia installation completed via snap"
681+
else
682+
echo "⚠️ Julia snap installation failed"
683+
fi
677684
else
678-
echo "⚠️ Julia installation failed via all methods"
685+
echo "⚠️ snap not available, Julia installation failed"
679686
fi
680687
fi
681688
689+
# Verify Julia installation
690+
echo "🔍 Verifying Julia installation..."
691+
if command -v julia &> /dev/null; then
692+
julia --version || echo "⚠️ Julia version check failed"
693+
echo "✅ Julia is available and working"
694+
else
695+
echo "❌ Julia installation failed - tool not found"
696+
fi
697+
682698
# Medium Priority Tools (Important for Advanced Features)
683699
echo "📦 Installing Medium Priority Chiplet Tools..."
684700
@@ -711,6 +727,7 @@ jobs:
711727
libxcb-shape0-dev \
712728
libxcb-xfixes0-dev \
713729
libeigen3-dev \
730+
libcudd-dev \
714731
|| echo "⚠️ Some build dependencies failed"
715732
716733
# 5. OpenTimer (High-performance static timing analysis)
@@ -729,36 +746,45 @@ jobs:
729746
730747
# 6. OpenSTA (Open-source static timing analyzer)
731748
echo "🔧 Installing OpenSTA for static timing analysis..."
732-
# Install OpenSTA from Ubuntu package
733-
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y opensta || echo "⚠️ OpenSTA apt installation failed"
749+
# Try to install OpenSTA from Ubuntu package (may not be available in all versions)
750+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y opensta 2>/dev/null || echo "⚠️ OpenSTA package not available in this Ubuntu version"
734751
735752
# Verify installation
736753
if command -v sta &> /dev/null; then
737754
echo "✅ OpenSTA installation completed via apt package"
738755
else
739-
echo "⚠️ OpenSTA installation failed via apt, trying manual build..."
756+
echo "⚠️ OpenSTA not available via apt, trying manual build..."
740757
# Fallback to manual build if apt fails
741758
cd /tmp
742759
git clone https://github.com/The-OpenROAD-Project/OpenSTA.git || echo "⚠️ OpenSTA clone failed"
743760
if [ -d "OpenSTA" ]; then
744761
cd OpenSTA
745762
mkdir build && cd build
746-
# Set Eigen3 path explicitly
763+
# Set Eigen3 path explicitly and disable CUDD if not available
747764
export EIGEN3_INCLUDE_DIR=/usr/include/eigen3
748-
cmake .. -DEIGEN3_INCLUDE_DIR=$EIGEN3_INCLUDE_DIR || echo "⚠️ OpenSTA cmake failed"
765+
cmake .. -DEIGEN3_INCLUDE_DIR=$EIGEN3_INCLUDE_DIR -DCUDD=OFF || echo "⚠️ OpenSTA cmake failed"
749766
make -j$(nproc) || echo "⚠️ OpenSTA build failed"
750767
sudo make install || echo "⚠️ OpenSTA install failed"
751768
echo "✅ OpenSTA installation completed via manual build"
752769
fi
753770
cd $GITHUB_WORKSPACE
754771
fi
755772
773+
# Verify OpenSTA installation
774+
echo "🔍 Verifying OpenSTA installation..."
775+
if command -v sta &> /dev/null; then
776+
sta --version 2>/dev/null || echo "⚠️ OpenSTA version check failed"
777+
echo "✅ OpenSTA is available and working"
778+
else
779+
echo "❌ OpenSTA installation failed - tool not found"
780+
fi
781+
756782
# Low Priority Tools (Nice to Have)
757783
echo "📦 Installing Low Priority Chiplet Tools..."
758784
759785
# 7. Additional Python packages for chiplet analysis
760786
echo "🔧 Installing Python chiplet analysis packages..."
761-
$PIP_CMD install \
787+
$PIP_CMD install --user \
762788
pyyaml \
763789
networkx \
764790
matplotlib \

0 commit comments

Comments
 (0)