| 
									
										
										
										
											2023-06-20 16:00:55 -07:00
										 |  |  | #!/usr/bin/env bash
 | 
					
						
							| 
									
										
										
										
											2023-03-09 08:52:24 -06:00
										 |  |  | set +u | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if [ -z "$1" ]; then | 
					
						
							| 
									
										
										
										
											2023-12-18 23:48:21 -08:00
										 |  |  |   echo "When running this script, please supply the name of the user account for which to set up unstructured dependencies." | 
					
						
							|  |  |  |   echo "Ex: ${0} abertl" | 
					
						
							|  |  |  |   exit 1 | 
					
						
							| 
									
										
										
										
											2023-03-09 08:52:24 -06:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | set -eux | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Set package manager command for this distribution | 
					
						
							|  |  |  | pac="yum" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # If we're not running as root, we want to prefix certain commands with sudo | 
					
						
							|  |  |  | if [[ $(whoami) == 'root' ]]; then | 
					
						
							| 
									
										
										
										
											2023-12-18 23:48:21 -08:00
										 |  |  |   $pac update -y | 
					
						
							|  |  |  |   $pac install -y sudo | 
					
						
							|  |  |  |   sudo='' | 
					
						
							| 
									
										
										
										
											2023-12-11 20:04:15 -05:00
										 |  |  | else | 
					
						
							| 
									
										
										
										
											2023-12-18 23:48:21 -08:00
										 |  |  |   type -p sudo >/dev/null || (echo "Please have an administrator install sudo and add you to the sudo group before continuing." && exit 1) | 
					
						
							|  |  |  |   sudo='sudo' | 
					
						
							| 
									
										
										
										
											2023-03-09 08:52:24 -06:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Set user account for which we're configuring the tools | 
					
						
							|  |  |  | USER_ACCOUNT=$1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Update existing packages | 
					
						
							|  |  |  | $sudo $pac update -y | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #### Utils | 
					
						
							|  |  |  | # Prerequisites | 
					
						
							|  |  |  | $sudo $pac install -y gcc wget tar curl make xz-devel | 
					
						
							|  |  |  | # Install non-ancient version of sed | 
					
						
							|  |  |  | wget http://ftp.gnu.org/gnu/sed/sed-4.9.tar.gz | 
					
						
							|  |  |  | tar xvf sed-4.9.tar.gz | 
					
						
							|  |  |  | cd sed-4.9/ | 
					
						
							|  |  |  | ./configure && make && $sudo make install | 
					
						
							|  |  |  | cd .. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #### Git | 
					
						
							|  |  |  | # Install git | 
					
						
							|  |  |  | $sudo $pac install -y git | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #### Python | 
					
						
							|  |  |  | # Install tools needed to build python | 
					
						
							| 
									
										
										
										
											2023-12-11 20:04:15 -05:00
										 |  |  | $sudo $pac install -y bzip2 sqlite zlib-devel readline-devel sqlite-devel openssl-devel tk-devel libffi-devel bzip2-devel | 
					
						
							| 
									
										
										
										
											2023-03-09 08:52:24 -06:00
										 |  |  | # Install pyenv | 
					
						
							|  |  |  | sudo -u "$USER_ACCOUNT" -i <<'EOF' | 
					
						
							|  |  |  |     if [[ ! -d "$HOME"/.pyenv ]]; then | 
					
						
							|  |  |  |         cd $HOME | 
					
						
							|  |  |  |         curl https://pyenv.run | bash | 
					
						
							|  |  |  |         touch "$HOME"/.bashrc | 
					
						
							|  |  |  |         # Remove initialization lines from .bashrc if they are already there, so we don't duplicate them | 
					
						
							|  |  |  |         # shellcheck disable=SC2016 | 
					
						
							|  |  |  |         sed -i '/export PYENV_ROOT="$HOME\/.pyenv"/d' "$HOME"/.bashrc | 
					
						
							|  |  |  |         # shellcheck disable=SC2016 | 
					
						
							|  |  |  |         sed -i '/command -v pyenv >\/dev\/null || export PATH="$PYENV_ROOT\/bin:$PATH"/d' "$HOME"/.bashrc | 
					
						
							|  |  |  |         # shellcheck disable=SC2016 | 
					
						
							|  |  |  |         sed -i '/eval "$(pyenv init -)"/d' "$HOME"/.bashrc | 
					
						
							|  |  |  |         # shellcheck disable=SC2016 | 
					
						
							|  |  |  |         sed -i '/eval "$(pyenv virtualenv-init -)"/d' "$HOME"/.bashrc | 
					
						
							|  |  |  |         # Add initialization lines to .bashrc | 
					
						
							|  |  |  |         # shellcheck disable=SC2016 | 
					
						
							|  |  |  |         cat <<'EOT' | cat - "$HOME"/.bashrc > temp && mv temp "$HOME"/.bashrc
 | 
					
						
							|  |  |  | export PYENV_ROOT="$HOME/.pyenv" | 
					
						
							|  |  |  | command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH" | 
					
						
							|  |  |  | eval "$(pyenv init -)" | 
					
						
							|  |  |  | eval "$(pyenv virtualenv-init -)" | 
					
						
							|  |  |  | EOT | 
					
						
							|  |  |  |         # install python | 
					
						
							|  |  |  |         source "$HOME"/.bashrc | 
					
						
							| 
									
										
										
										
											2024-01-09 18:37:30 -05:00
										 |  |  |         pyenv install 3.10.4 | 
					
						
							| 
									
										
										
										
											2023-03-09 08:52:24 -06:00
										 |  |  |     fi | 
					
						
							|  |  |  | EOF | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #### OpenCV dependencies | 
					
						
							|  |  |  | $sudo $pac install -y mesa-libGL | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #### Poppler | 
					
						
							|  |  |  | # Install poppler | 
					
						
							|  |  |  | $sudo $pac install -y poppler-utils | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #### Tesseract | 
					
						
							|  |  |  | # Install dependencies for image and pdf manipulation | 
					
						
							|  |  |  | $sudo $pac install -y opencv opencv-devel opencv-python perl-core clang libpng-devel libtiff-devel libwebp-devel libjpeg-turbo-devel git-core libtool pkgconfig xz | 
					
						
							|  |  |  | # Install leptonica (tesseract dependency) | 
					
						
							|  |  |  | wget https://github.com/DanBloomberg/leptonica/releases/download/1.75.1/leptonica-1.75.1.tar.gz | 
					
						
							|  |  |  | tar -xzvf leptonica-1.75.1.tar.gz | 
					
						
							|  |  |  | cd leptonica-1.75.1 | 
					
						
							|  |  |  | ./configure && make && $sudo make install | 
					
						
							|  |  |  | cd .. | 
					
						
							|  |  |  | # Install autoconf-archive (tesseract dependency) | 
					
						
							|  |  |  | wget http://mirror.squ.edu.om/gnu/autoconf-archive/autoconf-archive-2017.09.28.tar.xz | 
					
						
							|  |  |  | tar -xvf autoconf-archive-2017.09.28.tar.xz | 
					
						
							|  |  |  | cd autoconf-archive-2017.09.28 | 
					
						
							|  |  |  | ./configure && make && $sudo make install | 
					
						
							|  |  |  | $sudo cp m4/* /usr/share/aclocal | 
					
						
							|  |  |  | cd .. | 
					
						
							|  |  |  | # Install tesseract | 
					
						
							| 
									
										
										
										
											2023-12-11 20:04:15 -05:00
										 |  |  | git clone --depth 1 https://github.com/tesseract-ocr/tesseract.git tesseract-ocr | 
					
						
							| 
									
										
										
										
											2023-03-09 08:52:24 -06:00
										 |  |  | cd tesseract-ocr | 
					
						
							|  |  |  | export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig | 
					
						
							|  |  |  | ./autogen.sh | 
					
						
							|  |  |  | ./configure && make && $sudo make install | 
					
						
							|  |  |  | cd .. | 
					
						
							|  |  |  | # Install tesseract languages | 
					
						
							|  |  |  | git clone https://github.com/tesseract-ocr/tessdata.git | 
					
						
							|  |  |  | $sudo cp tessdata/*.traineddata /usr/local/share/tessdata | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #### libmagic | 
					
						
							|  |  |  | $sudo $pac install -y file-devel |