diff --git a/.github/workflows/osx_build.yml b/.github/workflows/osx_build.yml index 869d9da1b..4c00fd4f4 100644 --- a/.github/workflows/osx_build.yml +++ b/.github/workflows/osx_build.yml @@ -32,31 +32,59 @@ jobs: steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Install application certificate - uses: apple-actions/import-codesign-certs@v1 + uses: apple-actions/import-codesign-certs@v2 with: keychain: ${{ github.run_id }} keychain-password: ${{ github.run_id }} p12-file-base64: ${{ secrets.MACOS_CERTIFICATE }} p12-password: ${{ secrets.MACOS_CERTIFICATE_PWD }} - # Build GeoDa - - name: Build GeoDa + - name: Setup Brew + run: | + brew install boost@1.76 + ln -s /usr/local/opt/boost@1.76 /usr/local/opt/boost + brew install gdal + + - uses: actions/cache@v3 + id: cache + with: + path: | + BuildTools/macosx/libraries + BuildTools/macosx/temp + key: ${{ runner.os }}-deps-cache-${{ hashFiles('BuildTools/macosx/install.sh') }} + + - if: steps.cache.outputs.cache-hit != 'true' + name: Build Dependencies run: | - cp GeoDamake.macosx.opt GeoDamake.opt - cd BuildTools - cd macosx + cd BuildTools/macosx export GEODA_HOME=$PWD export GEODA_ARCH=x86_64 + ./install.sh + + - name: Build GeoDa + run: | + mkdir -p o + cd BuildTools/macosx + export GEODA_HOME=$PWD + cp ../../GeoDamake.macosx.opt ../../GeoDamake.opt echo "find identity" security find-identity -v - echo "start installing..." - ./install.sh + VER_MAJOR=$(grep version_major $GEODA_HOME/../../version.h | sed -e 's/^[[:space:]][[:alpha:]|[:space:]|_|=]*//g' | sed -e 's/;//g') + VER_MINOR=$(grep version_minor $GEODA_HOME/../../version.h | sed -e 's/^[[:space:]][[:alpha:]|[:space:]|_|=]*//g' | sed -e 's/;//g') + VER_BUILD=$(grep version_build $GEODA_HOME/../../version.h | sed -e 's/^[[:space:]][[:alpha:]|[:space:]|_|=]*//g' | sed -e 's/;//g') + GEODA_VERSION=$VER_MAJOR.$VER_MINOR.$VER_BUILD + echo $GEODA_VERSION + make -j$(sysctl -n hw.ncpu) + make app + cd create-dmg + ./geoda.sh $GEODA_VERSION + codesign --timestamp -s "Developer ID Application: Geodapress LLC (26M5NG43GP)" -i edu.uchicago.spatial GeoDa$GEODA_VERSION-Installer.dmg # Upload artifact - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v3 with: name: GeoDa-${{ env.GEODA_VER }}-MacOS path: ${{ github.workspace }}/BuildTools/macosx/create-dmg/GeoDa${{ env.GEODA_VER }}-Installer.dmg diff --git a/.github/workflows/ubuntu_build.yml b/.github/workflows/ubuntu_build.yml index f581bd985..23d32dba1 100644 --- a/.github/workflows/ubuntu_build.yml +++ b/.github/workflows/ubuntu_build.yml @@ -22,19 +22,19 @@ jobs: # This workflow contains a single job called "build" ubuntu_build: # The type of runner that the job will run on - runs-on: ubuntu-latest + runs-on: ${{ matrix.distro }} if: ${{ !contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]') }} strategy: fail-fast: true matrix: distro: - - 'ubuntu:18.04' - - 'ubuntu:20.04' + - 'ubuntu-22.04' + - 'ubuntu-20.04' include: - - distro: 'ubuntu:18.04' - pre: 'bionic' - - distro: 'ubuntu:20.04' + - distro: 'ubuntu-22.04' + pre: 'jammy' + - distro: 'ubuntu-20.04' pre: 'focal' env: @@ -45,22 +45,48 @@ jobs: # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 # Prepare - name: Prepare on ${{ matrix.distro }} run: | + chmod +x BuildTools/ubuntu/create_deps.sh chmod +x BuildTools/ubuntu/install.sh - mkdir -p o - chmod 644 o echo ${{ env.TARGET_OS }} + - uses: actions/cache@v3 + id: cache + with: + path: | + BuildTools/ubuntu/libraries + BuildTools/ubuntu/temp + key: ${{ runner.os }}-${{ env.TARGET_OS }}-deps-cache-${{ hashFiles('BuildTools/ubuntu/create_deps.sh') }} + + # Create Deps + - if: steps.cache.outputs.cache-hit != 'true' + name: Create Dependencies + run: | + export WORK_DIR=$PWD + export OS=${{ env.TARGET_OS }} + export VER=${{ env.GEODA_VER }} + export APT="sudo apt-get" + cd BuildTools/ubuntu + ./create_deps.sh + # Build GeoDa - name: Build GeoDa - run: docker run --privileged=true -e CI -e WORK_DIR="$PWD" -e CURL_CA_BUNDLE="/etc/ssl/certs/ca-certificates.crt" -e OS=${{ env.TARGET_OS }} -e VER=${{ env.GEODA_VER }} -e APT="apt-get" -v $PWD:$PWD -v /var/run/docker.sock:/var/run/docker.sock ${{ matrix.distro }} $PWD/BuildTools/ubuntu/install.sh + run: | + mkdir -p o + chmod 755 o + export WORK_DIR=$PWD + export OS=${{ env.TARGET_OS }} + export VER=${{ env.GEODA_VER }} + export APT="sudo apt-get" + cd BuildTools/ubuntu + ./install.sh # Upload artifact - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v3 with: name: GeoDa-${{ env.GEODA_VER }}-${{ env.TARGET_OS }} path: ${{ github.workspace }}/BuildTools/ubuntu/geoda_${{ env.GEODA_VER }}-1${{ env.TARGET_OS }}1_amd64.deb diff --git a/.github/workflows/windows_build.yml b/.github/workflows/windows_build.yml index ace964701..8c7702575 100644 --- a/.github/workflows/windows_build.yml +++ b/.github/workflows/windows_build.yml @@ -49,7 +49,7 @@ jobs: steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 # Set environment - name: Set environment @@ -81,8 +81,17 @@ jobs: echo ::set-env name=LIB::%LIB% echo ::set-env name=LIBPATH::%LIBPATH% - # Build GeoDa - - name: Build + - uses: actions/cache@v3 + id: cache + with: + path: | + BuildTools/windows/libraries + BuildTools/windows/temp + key: ${{ runner.os }}-${{ matrix.platform }}-deps-cache-${{ hashFiles('BuildTools/windows/deps.md') }} + + # Create Deps + - if: steps.cache.outputs.cache-hit != 'true' + name: Create Dependencies shell: pwsh run: | $ErrorActionPreference = 'continue' @@ -206,16 +215,40 @@ jobs: 7z x OpenCL.zip dir cd .. - # - # GeoDa - # + + # Build GeoDa + - name: Build GeoDa + shell: pwsh + run: | + function exec + { + param ( [ScriptBlock] $ScriptBlock ) + & $ScriptBlock 2>&1 | ForEach-Object -Process { "$_" } + if ($LastExitCode -ne 0) { exit $LastExitCode } + } + echo "ARCH_FLAGS = $env:ARCH_FLAGS" + Import-PackageProvider NuGet -Force + Set-PSRepository -Name PSGallery -InstallationPolicy Trusted + # install pscx powershell and vSSetup + Install-Module Pscx -AllowClobber + Install-Module VSSetup -Scope CurrentUser + if($env:VS_VER -eq "2019") + { + } + else + { + Import-VisualStudioVars -VisualStudioVersion $env:VS_VER -Architecture $env:ARCHITECTURE + } + $ErrorActionPreference = 'continue' + $env:GDA_PATH="$env:GITHUB_WORKSPACE\BuildTools\windows" + cd $env:GDA_PATH if($env:platform -eq "x86") { - msbuild.exe GeoDa.vs2019.sln /t:GeoDa /property:Configuration="Release" /p:Platform="Win32" + msbuild.exe GeoDa.vs2019.sln /t:GeoDa /property:Configuration="Release" /m /p:Platform="Win32" } else { - msbuild.exe GeoDa.vs2019.sln /t:GeoDa /property:Configuration="Release" /p:Platform="x64" + msbuild.exe GeoDa.vs2019.sln /t:GeoDa /property:Configuration="Release" /m /p:Platform="x64" } # # InnoSetup @@ -236,12 +269,12 @@ jobs: } dir - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v3 with: name: GeoDa-Windows-${{ env.platform }}-installer path: ${{ github.workspace }}\BuildTools\windows\GeoDa_1.22_${{ env.platform }}_Setup.exe - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v3 with: name: GeoDa-Windows7+-${{ env.platform }}-installer path: ${{ github.workspace }}\BuildTools\windows\GeoDa_1.22_win7+${{ env.platform }}_Setup.exe diff --git a/BuildTools/macosx/code_sign.py b/BuildTools/macosx/code_sign.py index 532b59bf0..393c9f10a 100755 --- a/BuildTools/macosx/code_sign.py +++ b/BuildTools/macosx/code_sign.py @@ -18,6 +18,8 @@ def ProcessDependency(dylib_path, cid): dylib_path = '/opt/homebrew/opt/geos/lib/libgeos.3.11.0.dylib' if dylib_path == '@rpath/libgeos.3.11.2.dylib': dylib_path = '/opt/homebrew/opt/geos/lib/libgeos.3.11.2.dylib' + if dylib_path == '@rpath/libgeos.3.12.2.dylib': + dylib_path = '/opt/homebrew/opt/geos/lib/libgeos.3.12.2.dylib' if dylib_path == '@loader_path/libicuuc.71.dylib': dylib_path = '/opt/homebrew/opt/icu4c/lib/libicuuc.71.dylib' if dylib_path == '@loader_path/libicuuc.72.dylib': @@ -47,6 +49,10 @@ def ProcessDependency(dylib_path, cid): dylib_path = '/usr/local/opt/openexr/lib/libOpenEXR-3_1.30.dylib' if dylib_path == '@rpath/libOpenEXRCore-3_1.30.dylib': dylib_path = '/usr/local/opt/openexr/lib/libOpenEXRCore-3_1.30.dylib' + + m = re.search('@rpath/(libabsl.*)', dylib_path) + if m: + dylib_path = '/usr/local/opt/abseil/lib/' + m.group(1) m = re.search('@rpath/(libaws.*)', dylib_path) if m: diff --git a/BuildTools/macosx/install.sh b/BuildTools/macosx/install.sh index 890fab3fa..48721f9a3 100755 --- a/BuildTools/macosx/install.sh +++ b/BuildTools/macosx/install.sh @@ -5,14 +5,14 @@ set -e export GEODA_HOME=$PWD echo $GEODA_HOME -CPUS=2 +CPUS=`sysctl -n hw.ncpu` # Install boost 1.75 -brew install boost@1.76 -ln -s /usr/local/opt/boost@1.76 /usr/local/opt/boost +#brew install boost@1.76 +#ln -s /usr/local/opt/boost@1.76 /usr/local/opt/boost # Install libgdal 3.6 -brew install gdal +#brew install gdal cd $GEODA_HOME mkdir -p temp @@ -21,6 +21,8 @@ mkdir -p libraries/lib mkdir -p libraries/include mkdir -p ../../o +cd temp + # FIX for libgdal on Monterey using sqlite 3.30.1 # cd temp # curl -L -O https://sqlite.org/2019/sqlite-autoconf-3300100.tar.gz @@ -33,7 +35,6 @@ mkdir -p ../../o # cd .. # Build wxWidgets 3.1.4 -cd temp if ! [ -f "wxWidgets-3.1.4.tar.bz2" ]; then curl -L -O https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.4/wxWidgets-3.1.4.tar.bz2 tar -xf wxWidgets-3.1.4.tar.bz2 @@ -94,19 +95,19 @@ if ! [ -f "v0.8.0.zip" ]; then mv spectra-0.8.0 spectra fi -# Build GeoDa cd .. -cp ../../GeoDamake.macosx.opt ../../GeoDamake.opt -make -j $CPUS -make app +# Build GeoDa +# cp ../../GeoDamake.macosx.opt ../../GeoDamake.opt +# make -j $CPUS +# make app -# Create dmg -VER_MAJOR=$(grep version_major $GEODA_HOME/../../version.h | sed -e 's/^[[:space:]][[:alpha:]|[:space:]|_|=]*//g' | sed -e 's/;//g') -VER_MINOR=$(grep version_minor $GEODA_HOME/../../version.h | sed -e 's/^[[:space:]][[:alpha:]|[:space:]|_|=]*//g' | sed -e 's/;//g') -VER_BUILD=$(grep version_build $GEODA_HOME/../../version.h | sed -e 's/^[[:space:]][[:alpha:]|[:space:]|_|=]*//g' | sed -e 's/;//g') -GEODA_VERSION=$VER_MAJOR.$VER_MINOR.$VER_BUILD -echo $GEODA_VERSION +# # Create dmg +# VER_MAJOR=$(grep version_major $GEODA_HOME/../../version.h | sed -e 's/^[[:space:]][[:alpha:]|[:space:]|_|=]*//g' | sed -e 's/;//g') +# VER_MINOR=$(grep version_minor $GEODA_HOME/../../version.h | sed -e 's/^[[:space:]][[:alpha:]|[:space:]|_|=]*//g' | sed -e 's/;//g') +# VER_BUILD=$(grep version_build $GEODA_HOME/../../version.h | sed -e 's/^[[:space:]][[:alpha:]|[:space:]|_|=]*//g' | sed -e 's/;//g') +# GEODA_VERSION=$VER_MAJOR.$VER_MINOR.$VER_BUILD +# echo $GEODA_VERSION -cd create-dmg -./geoda.sh $GEODA_VERSION -codesign --timestamp -s "Developer ID Application: Geodapress LLC (26M5NG43GP)" -i edu.uchicago.spatial GeoDa$GEODA_VERSION-Installer.dmg +# cd create-dmg +# ./geoda.sh $GEODA_VERSION +# codesign --timestamp -s "Developer ID Application: Geodapress LLC (26M5NG43GP)" -i edu.uchicago.spatial GeoDa$GEODA_VERSION-Installer.dmg diff --git a/BuildTools/macosx/install_name.py b/BuildTools/macosx/install_name.py index e6aab873b..2655ec039 100644 --- a/BuildTools/macosx/install_name.py +++ b/BuildTools/macosx/install_name.py @@ -21,6 +21,8 @@ def ProcessDependency(dir_path, dylib_name): copyitem = '/usr/local/opt/geos/lib/libgeos.dylib' if item == '@rpath/libgeos.3.11.0.dylib': copyitem = '/usr/local/opt/geos/lib/libgeos.dylib' + if item == '@rpath/libgeos.3.12.0.dylib': + copyitem = '/usr/local/opt/geos/lib/libgeos.dylib' if item == '@rpath/libgeos.3.11.1.dylib': copyitem = '/usr/local/opt/geos/lib/libgeos.dylib' if item == '@rpath/libgeos.3.11.2.dylib': @@ -51,7 +53,19 @@ def ProcessDependency(dir_path, dylib_name): copyitem = '/usr/local/opt/openexr/lib/libOpenEXR-3_1.30.dylib' if item == '@rpath/libOpenEXRCore-3_1.30.dylib': copyitem = '/usr/local/opt/openexr/lib/libOpenEXRCore-3_1.30.dylib' + if item == '@rpath/libabsl_log_internal_conditions.2301.0.0.dylib': + copyitem = '/usr/local/opt/abseil/lib/libabsl_log_internal_conditions.2301.0.0.dylib' + if item == '@rpath/libabsl_raw_logging_internal.2301.0.0.dylib': + copyitem = '/usr/local/opt/abseil/lib/libabsl_raw_logging_internal.2301.0.0.dylib' + if item == '@rpath/libabsl_log_severity.2301.0.0.dylib': + copyitem = '/usr/local/opt/abseil/lib/libabsl_log_severity.2301.0.0.dylib' + if item == '@rpath/libabsl_base.2301.0.0.dylib': + copyitem = '/usr/local/opt/abseil/lib/libabsl_base.2301.0.0.dylib' + m = re.search('@rpath/(libabsl.*)', item) + if m: + copyitem = '/usr/local/opt/abseil/lib/' + m.group(1) + m = re.search('@rpath/(libaws.*)', item) if m: copyitem = '/usr/local/opt/aws-sdk-cpp/lib/' + m.group(1) diff --git a/BuildTools/ubuntu/create_deb.sh b/BuildTools/ubuntu/create_deb.sh index 537b512a5..16d47a286 100755 --- a/BuildTools/ubuntu/create_deb.sh +++ b/BuildTools/ubuntu/create_deb.sh @@ -19,7 +19,7 @@ if [[ $MACHINE_TYPE != 'x86_64' ]]; then fi if [[ $# -ne 2 ]]; then - echo "create_deb.sh bionic|disco|xenial 1.22" + echo "create_deb.sh focal|jammy 1.22" exit fi diff --git a/BuildTools/ubuntu/create_deps.sh b/BuildTools/ubuntu/create_deps.sh new file mode 100755 index 000000000..c6dc661db --- /dev/null +++ b/BuildTools/ubuntu/create_deps.sh @@ -0,0 +1,116 @@ +#!/bin/sh + +# stops the execution of a script if a command or pipeline has an error +set -e + +echo $OS +echo $VER +echo $APT + +# prepare: BuildTools/ubuntu +cd "$WORK_DIR" +cd BuildTools +cd ubuntu +export GEODA_HOME=$PWD +mkdir -p libraries +mkdir -p libraries/lib +mkdir -p libraries/include +mkdir -p temp + +cd temp + +# Install libgdal +export DEBIAN_FRONTEND=noninteractive +$APT update -y +# fix curl 60 error +$APT install -y ca-certificates libgnutls30 +echo '-k' > ~/.curlrc +$APT install -y libpq-dev +$APT install -y gdal-bin +$APT install -y libgdal-dev +$APT install -y unzip cmake dh-autoreconf libgtk-3-dev libgl1-mesa-dev libglu1-mesa-dev + +if [ $OS = 'jammy' ] ; then + $APT install -y libwebkit2gtk-4.0-dev +elif [ $OS = 'focal' ] ; then + $APT install -y libwebkit2gtk-4.0-dev +else + $APT install -y libwebkitgtk-3.0-dev +fi + +# Install boost 1.75 +if ! [ -f "boost_1_75_0.tar.bz2" ] ; then + curl -L -O https://pilotfiber.dl.sourceforge.net/project/boost/boost/1.75.0/boost_1_75_0.tar.bz2 +fi +if ! [ -d "boost" ] ; then + tar -xf boost_1_75_0.tar.bz2 + mv boost_1_75_0 boost +fi +cd boost +./bootstrap.sh +./b2 --with-thread --with-date_time --with-chrono --with-system link=static threading=multi stage +cd .. + +# Build JSON Spirit v4.08 +if ! [ -f "json_spirit_v4.08.zip" ] ; then + curl -L -O https://github.com/GeoDaCenter/software/releases/download/v2000/json_spirit_v4.08.zip +fi +if ! [ -d "json_spirit_v4.08" ] ; then + unzip json_spirit_v4.08.zip +fi +cd json_spirit_v4.08 +cp ../../dep/json_spirit/CMakeLists.txt . +mkdir -p bld +cd bld +cmake -DBoost_NO_BOOST_CMAKE=TRUE -DBOOST_ROOT:PATHNAME=$GEODA_HOME/temp/boost .. +make -j$(nproc) +cp -R ../json_spirit ../../../libraries/include/. +cp json_spirit/libjson_spirit.a ../../../libraries/lib/. +cd .. +cd .. + +# Build CLAPACK +if ! [ -f "clapack.tgz" ] ; then + curl -L -O https://github.com/GeoDaCenter/software/releases/download/v2000/clapack.tgz +fi +if ! [ -d "CLAPACK-3.2.1" ] ; then + tar -xf clapack.tgz + cp -rf ../dep/CLAPACK-3.2.1 . +fi +cd CLAPACK-3.2.1 +make -j$(nproc) f2clib +make -j$(nproc) blaslib +cd INSTALL +make -j$(nproc) +cd .. +cd SRC +make -j$(nproc) +cd .. +cp F2CLIBS/libf2c.a . +cd .. + +# Build Eigen3 and Spectra +if ! [ -f "eigen3.zip" ] ; then + curl -L -O https://github.com/GeoDaCenter/software/releases/download/v2000/eigen3.zip + unzip eigen3.zip +fi +if ! [ -f "v0.8.0.zip" ] ; then + curl -L -O https://github.com/yixuan/spectra/archive/refs/tags/v0.8.0.zip + unzip v0.8.0.zip + mv spectra-0.8.0 spectra +fi + +# Build wxWidgets 3.1.4 +if ! [ -f "wxWidgets-3.1.4.tar.bz2" ] ; then + curl -L -O https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.4/wxWidgets-3.1.4.tar.bz2 +fi +if ! [ -d "wxWidgets-3.1.4" ] ; then + tar -xf wxWidgets-3.1.4.tar.bz2 +fi +cd wxWidgets-3.1.4 +chmod +x configure +./configure --with-gtk=3 --disable-shared --enable-monolithic --with-opengl --enable-postscript --without-libtiff --disable-debug --enable-webview --prefix=$GEODA_HOME/libraries +make -j$(nproc) +make install +cd .. +cd .. diff --git a/BuildTools/ubuntu/install.sh b/BuildTools/ubuntu/install.sh index 6fe4f4145..2fef666ee 100755 --- a/BuildTools/ubuntu/install.sh +++ b/BuildTools/ubuntu/install.sh @@ -3,22 +3,11 @@ # stops the execution of a script if a command or pipeline has an error set -e -echo $OS -echo $VER -echo $APT - # prepare: BuildTools/ubuntu cd "$WORK_DIR" -mkdir -p o cd BuildTools cd ubuntu export GEODA_HOME=$PWD -mkdir -p libraries -mkdir -p libraries/lib -mkdir -p libraries/include -mkdir -p temp - -cd temp # Install libgdal export DEBIAN_FRONTEND=noninteractive @@ -31,7 +20,7 @@ $APT install -y gdal-bin $APT install -y libgdal-dev $APT install -y unzip cmake dh-autoreconf libgtk-3-dev libgl1-mesa-dev libglu1-mesa-dev -if [ $OS = 'disco' ] ; then +if [ $OS = 'jammy' ] ; then $APT install -y libwebkit2gtk-4.0-dev elif [ $OS = 'focal' ] ; then $APT install -y libwebkit2gtk-4.0-dev @@ -39,86 +28,9 @@ else $APT install -y libwebkitgtk-3.0-dev fi -# Install boost 1.75 -if ! [ -f "boost_1_75_0.tar.bz2" ] ; then - curl -L -O https://pilotfiber.dl.sourceforge.net/project/boost/boost/1.75.0/boost_1_75_0.tar.bz2 -fi -if ! [ -d "boost" ] ; then - tar -xf boost_1_75_0.tar.bz2 - mv boost_1_75_0 boost -fi -cd boost -./bootstrap.sh -./b2 --with-thread --with-date_time --with-chrono --with-system link=static threading=multi stage -cd .. - -# Build JSON Spirit v4.08 -if ! [ -f "json_spirit_v4.08.zip" ] ; then - curl -L -O https://github.com/GeoDaCenter/software/releases/download/v2000/json_spirit_v4.08.zip -fi -if ! [ -d "json_spirit_v4.08" ] ; then - unzip json_spirit_v4.08.zip -fi -cd json_spirit_v4.08 -cp ../../dep/json_spirit/CMakeLists.txt . -mkdir -p bld -cd bld -cmake -DBoost_NO_BOOST_CMAKE=TRUE -DBOOST_ROOT:PATHNAME=$GEODA_HOME/temp/boost .. -make -j2 -cp -R ../json_spirit ../../../libraries/include/. -cp json_spirit/libjson_spirit.a ../../../libraries/lib/. -cd .. -cd .. - -# Build CLAPACK -if ! [ -f "clapack.tgz" ] ; then - curl -L -O https://github.com/GeoDaCenter/software/releases/download/v2000/clapack.tgz -fi -if ! [ -d "CLAPACK-3.2.1" ] ; then - tar -xf clapack.tgz - cp -rf ../dep/CLAPACK-3.2.1 . -fi -cd CLAPACK-3.2.1 -make -j2 f2clib -make -j2 blaslib -cd INSTALL -make -j2 -cd .. -cd SRC -make -j2 -cd .. -cp F2CLIBS/libf2c.a . -cd .. - -# Build Eigen3 and Spectra -if ! [ -f "eigen3.zip" ] ; then - curl -L -O https://github.com/GeoDaCenter/software/releases/download/v2000/eigen3.zip - unzip eigen3.zip -fi -if ! [ -f "v0.8.0.zip" ] ; then - curl -L -O https://github.com/yixuan/spectra/archive/refs/tags/v0.8.0.zip - unzip v0.8.0.zip - mv spectra-0.8.0 spectra -fi - -# Build wxWidgets 3.1.4 -if ! [ -f "wxWidgets-3.1.4.tar.bz2" ] ; then - curl -L -O https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.4/wxWidgets-3.1.4.tar.bz2 -fi -if ! [ -d "wxWidgets-3.1.4" ] ; then - tar -xf wxWidgets-3.1.4.tar.bz2 -fi -cd wxWidgets-3.1.4 -chmod +x configure -./configure --with-gtk=3 --disable-shared --enable-monolithic --with-opengl --enable-postscript --without-libtiff --disable-debug --enable-webview --prefix=$GEODA_HOME/libraries -make -j2 -make install -cd .. -cd .. - # Build GeoDa cp ../../GeoDamake.$OS.opt ../../GeoDamake.opt -make -j2 +make -j$(nproc) make app # Create deb# diff --git a/BuildTools/ubuntu/package/DEBIAN/control_disco b/BuildTools/ubuntu/package/DEBIAN/control_jammy similarity index 84% rename from BuildTools/ubuntu/package/DEBIAN/control_disco rename to BuildTools/ubuntu/package/DEBIAN/control_jammy index 6503c11eb..d846d38cf 100644 --- a/BuildTools/ubuntu/package/DEBIAN/control_disco +++ b/BuildTools/ubuntu/package/DEBIAN/control_jammy @@ -4,7 +4,7 @@ Architecture: amd64 Priority: optional Section: graphics Installed-Size: 121795 -Depends: libgdal26, zlib1g, libexpat1, freeglut3, libreadline8, libgtk-3-0, libssl1.1, libwebkit2gtk-4.0-37 +Depends: libgdal30, zlib1g, libexpat1, freeglut3, libreadline8, libgtk-3-0, libssl1.1, libwebkit2gtk-4.0-37 Maintainer: Luc Anselin < anselin@uchicago.edu > Provides: geoda Homepage: http://spatial.uchicago.edu diff --git a/BuildTools/windows/deps.md b/BuildTools/windows/deps.md new file mode 100644 index 000000000..49221dabb --- /dev/null +++ b/BuildTools/windows/deps.md @@ -0,0 +1,10 @@ +# Dependencies + +boost 1.75 +gdal 1911 +wxWidgets 3.1.4 +JSON Spirit v4.08 +CLAPACK 3.1.1 +Eigen3 +Spectra v0.8.0 +OpenCL \ No newline at end of file diff --git a/GeoDamake.disco.opt b/GeoDamake.jammy.opt similarity index 91% rename from GeoDamake.disco.opt rename to GeoDamake.jammy.opt index 288694182..101b28902 100644 --- a/GeoDamake.disco.opt +++ b/GeoDamake.jammy.opt @@ -18,13 +18,13 @@ LIBS = $(WXLIBS) \ $(GEODA_HOME)/temp/boost/stage/lib/libboost_thread.a \ $(GEODA_HOME)/temp/boost/stage/lib/libboost_system.a \ $(GEODA_HOME)/libraries/lib/libjson_spirit.a \ - -L$(GEODA_HOME)/libraries/lib -lgdal -lcurl -L/usr/lib/x86_64-linux-gnu -lz -lwebkit2gtk-4.0 -lEGL + -L$(GEODA_HOME)/libraries/lib -lgdal -lcurl -L/usr/lib/x86_64-linux-gnu -lz -lwebkit2gtk-4.0 -lEGL -ljavascriptcoregtk-4.0 # Note: Library -lrtmp causes a missing library problem at runtime on # Ubuntu 14.10 and later. -BOOST_HEADER = -I$(GEODA_HOME)/libraries/include/boost +BOOST_HEADER = -I$(GEODA_HOME)/temp/boost -EIGEN_HEADER = -I$(GEODA_HOME)/libraries/include/eigen3 -I$(GEODA_HOME)/temp/spectra/include +EIGEN_HEADER = -I$(GEODA_HOME)/temp/eigen3 -I$(GEODA_HOME)/temp/spectra/include GDAL_HEADER = -I/usr/include/gdal -D__PROJ6__