-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathlxplus_setup.sh
More file actions
executable file
·167 lines (146 loc) · 6.8 KB
/
lxplus_setup.sh
File metadata and controls
executable file
·167 lines (146 loc) · 6.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
#!/bin/bash
# Script to install DarkBottomLine on lxplus (CERN computing environment)
# Creator: ptiwari (main creator)
#
# This script installs the DarkBottomLine repository itself.
# Dependencies should be installed first using: python3 check_requirements.py --install --local-dir ./.local
set -e # Exit on error
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
LOCAL_DIR="${SCRIPT_DIR}/.local"
# Get Python version for site-packages path
PYTHON_VERSION=$(python3 -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')")
SITE_PACKAGES_DIR="${LOCAL_DIR}/lib/python${PYTHON_VERSION}/site-packages"
echo "=========================================="
echo "DarkBottomLine Installation for lxplus"
echo "=========================================="
echo ""
echo "Note: Make sure dependencies are installed first:"
echo " python3 check_requirements.py --install --local-dir ./.local"
echo ""
# Add .local site-packages to PYTHONPATH if it exists (packages installed by check_requirements.py)
# When using --user with PYTHONUSERBASE, packages go to lib/pythonX.X/site-packages
if [ -d "$SITE_PACKAGES_DIR" ]; then
if [[ ":$PYTHONPATH:" != *":$SITE_PACKAGES_DIR:"* ]]; then
export PYTHONPATH="${SITE_PACKAGES_DIR}:${PYTHONPATH}"
echo "✓ Found .local site-packages directory, added to PYTHONPATH"
fi
elif [ -d "$LOCAL_DIR" ]; then
# Fallback to base directory if site-packages doesn't exist yet
if [[ ":$PYTHONPATH:" != *":${LOCAL_DIR}:"* ]]; then
export PYTHONPATH="${LOCAL_DIR}:${PYTHONPATH}"
echo "✓ Found .local directory, added to PYTHONPATH"
fi
fi
# Install the package in development mode
echo "Installing DarkBottomLine repository..."
echo "----------------------------------------"
echo "Running: pip3 install -e . --prefix ${LOCAL_DIR}"
echo ""
# Temporarily remove .local from PYTHONPATH to avoid conflicts during installation
# We'll add it back after
OLD_PYTHONPATH="$PYTHONPATH"
if [[ "$PYTHONPATH" == *"${SITE_PACKAGES_DIR}"* ]]; then
# Remove site-packages from PYTHONPATH temporarily
export PYTHONPATH=$(echo "$PYTHONPATH" | tr ':' '\n' | grep -v "^${SITE_PACKAGES_DIR}$" | tr '\n' ':' | sed 's/:$//')
elif [[ "$PYTHONPATH" == *"${LOCAL_DIR}"* ]]; then
# Remove .local from PYTHONPATH temporarily
export PYTHONPATH=$(echo "$PYTHONPATH" | tr ':' '\n' | grep -v "^${LOCAL_DIR}$" | tr '\n' ':' | sed 's/:$//')
fi
# Ensure .local directory exists
mkdir -p "${LOCAL_DIR}"
# Install using --prefix to force installation to cwd .local
# Note: --prefix installs to prefix/lib/pythonX.X/site-packages, so we need to adjust
# For editable installs, we need to set PYTHONUSERBASE instead
export PYTHONUSERBASE="${LOCAL_DIR}"
unset PYTHONHOME # Prevent interference
# if pip3 install -e . --user --no-cache-dir; then
if pip3 install -e . --prefix ${LOCAL_DIR} --no-cache-dir --no-deps; then
echo "✓ DarkBottomLine repository installed successfully!"
echo ""
# Restore PYTHONPATH
export PYTHONPATH="$OLD_PYTHONPATH"
# Make sure site-packages directory is in PYTHONPATH
if [ -d "$SITE_PACKAGES_DIR" ]; then
if [[ ":$PYTHONPATH:" != *":$SITE_PACKAGES_DIR:"* ]]; then
export PYTHONPATH="${SITE_PACKAGES_DIR}:${PYTHONPATH}"
fi
fi
unset PYTHONUSERBASE
# Add .local/bin to PATH if not already there (for darkbottomline command)
LOCAL_BIN_DIR="${LOCAL_DIR}/bin"
if [ -d "$LOCAL_BIN_DIR" ] && [[ ":$PATH:" != *":$LOCAL_BIN_DIR:"* ]]; then
export PATH="$LOCAL_BIN_DIR:$PATH"
echo "Added ${LOCAL_BIN_DIR} to PATH for this session"
echo "To make it permanent, add to your ~/.bashrc:"
echo " export PATH=\"${LOCAL_BIN_DIR}:\$PATH\""
echo ""
fi
# Verify installation
echo "Verifying installation..."
if python3 -c "from darkbottomline import DarkBottomLineProcessor; print('✓ Import successful')" 2>/dev/null; then
echo "✓ Package can be imported"
else
echo "⚠ Package installed but import test failed"
echo " Make sure .local is in your PYTHONPATH:"
echo " export PYTHONPATH=\"${LOCAL_DIR}:\$PYTHONPATH\""
echo " export PYTHONPATH=\"${SITE_PACKAGES_DIR}:\$PYTHONPATH\""
fi
# Check if command is available
if command -v darkbottomline &> /dev/null; then
echo "✓ darkbottomline command is available"
else
echo "⚠ darkbottomline command not found in PATH"
echo " Make sure ${LOCAL_BIN_DIR} is in your PATH:"
echo " export PATH=\"${LOCAL_BIN_DIR}:\$PATH\""
echo " Or run: python3 -m darkbottomline.cli --help"
fi
echo ""
echo "=========================================="
echo "Installation Complete!"
echo "=========================================="
echo ""
# Export paths for current session
echo "Setting up environment for current session..."
PYTHON_VERSION=$(python3 -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')")
SITE_PACKAGES_PATH="${LOCAL_DIR}/lib/python${PYTHON_VERSION}/site-packages"
# Export PYTHONPATH
if [ -d "$SITE_PACKAGES_PATH" ]; then
if [[ ":$PYTHONPATH:" != *":$SITE_PACKAGES_PATH:"* ]]; then
export PYTHONPATH="${SITE_PACKAGES_PATH}:${PYTHONPATH}"
echo "✓ Exported PYTHONPATH=${SITE_PACKAGES_PATH}:${PYTHONPATH}"
fi
fi
# Export PATH for darkbottomline command
if [ -d "$LOCAL_BIN_DIR" ] && [[ ":$PATH:" != *":$LOCAL_BIN_DIR:"* ]]; then
export PATH="${LOCAL_BIN_DIR}:${PATH}"
echo "✓ Exported PATH=${LOCAL_BIN_DIR}:${PATH}"
fi
echo ""
echo "To use DarkBottomLine in this session:"
echo " darkbottomline --help"
echo " # Or:"
echo " python3 -m darkbottomline.cli --help"
echo ""
echo "To use DarkBottomLine in future sessions, export these paths:"
echo " PYTHON_VERSION=\$(python3 -c \"import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')\")"
echo " export PYTHONPATH=\"${LOCAL_DIR}/lib/python/${PYTHON_VERSION}/site-packages:\$PYTHONPATH\""
echo " export PATH=\"${LOCAL_BIN_DIR}:\$PATH\""
echo ""
echo "Or add to your ~/.bashrc or ~/.bash_profile:"
echo " # DarkBottomLine paths"
echo " PYTHON_VERSION=\$(python3 -c \"import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')\")"
echo " export PYTHONPATH=\"${LOCAL_DIR}/lib/python/${PYTHON_VERSION}/site-packages:\$PYTHONPATH\""
echo " export PATH=\"${LOCAL_BIN_DIR}:\$PATH\""
echo ""
else
# Restore PYTHONPATH and unset PYTHONUSERBASE
export PYTHONPATH="$OLD_PYTHONPATH"
unset PYTHONUSERBASE
echo "✗ Installation failed"
echo ""
echo "If you see pkg_resources errors, try:"
echo " pip3 install --target ${LOCAL_DIR} setuptools jaraco.text"
echo " export PYTHONUSERBASE=\"${LOCAL_DIR}\""
echo " pip3 install -e . --user"
exit 1
fi