Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package openmopac for openSUSE:Factory checked in at 2025-05-22 16:56:31 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openmopac (Old) and /work/SRC/openSUSE:Factory/.openmopac.new.2732 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openmopac" Thu May 22 16:56:31 2025 rev:2 rq:1279028 version:23.1.2 Changes: -------- --- /work/SRC/openSUSE:Factory/openmopac/openmopac.changes 2025-03-17 22:22:31.674849027 +0100 +++ /work/SRC/openSUSE:Factory/.openmopac.new.2732/openmopac.changes 2025-05-22 16:56:55.898069501 +0200 @@ -1,0 +2,6 @@ +Wed May 21 11:18:56 UTC 2025 - Martin Pluskal <mplus...@suse.com> + +- Regenerate obscpio archive without excluding hidden files +- Use gfortran-14 for building on Leap + +------------------------------------------------------------------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openmopac.spec ++++++ --- /var/tmp/diff_new_pack.vonpES/_old 2025-05-22 16:56:57.018117578 +0200 +++ /var/tmp/diff_new_pack.vonpES/_new 2025-05-22 16:56:57.018117578 +0200 @@ -25,12 +25,17 @@ Source0: mopac-%{version}.tar.gz BuildRequires: blas-devel BuildRequires: cmake -BuildRequires: gcc-fortran BuildRequires: lapack-devel BuildRequires: python3-numpy-devel # mopac7 is obsolete version of same software Provides: mopac7 = %{version} Obsoletes: mopac7 < %{version} +%if 0%{?suse_version} > 1550 +BuildRequires: gcc-fortran +%else +BuildRequires: gcc14-fortran +%endif + %description MOPAC is a computational chemistry software package that implements a @@ -66,6 +71,9 @@ %autosetup -n mopac-%{version} %build +%if 0%{?suse_version} < 1550 +export FC="gfortran-14" +%endif %cmake %cmake_build ++++++ _service ++++++ --- /var/tmp/diff_new_pack.vonpES/_old 2025-05-22 16:56:57.050118952 +0200 +++ /var/tmp/diff_new_pack.vonpES/_new 2025-05-22 16:56:57.054119124 +0200 @@ -5,7 +5,6 @@ <param name="scm">git</param> <param name="revision">main</param> <param name="changesgenerate">enable</param> - <param name="exclude">.*</param> <param name="versionrewrite-pattern">v(.*)</param> </service> <service name="tar" mode="buildtime"/> ++++++ mopac-23.1.2.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mopac-23.1.2/.github/ISSUE_TEMPLATE/bug_report.md new/mopac-23.1.2/.github/ISSUE_TEMPLATE/bug_report.md --- old/mopac-23.1.2/.github/ISSUE_TEMPLATE/bug_report.md 1970-01-01 01:00:00.000000000 +0100 +++ new/mopac-23.1.2/.github/ISSUE_TEMPLATE/bug_report.md 2025-03-06 22:14:50.000000000 +0100 @@ -0,0 +1,27 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +A clear and concise description of how to reproduce the bug. + +Please provide a MOPAC input file that causes the bug to occur, if possible. This does not have to be the input file that originally produced the bug. It is preferable to isolate a minimal representative example that is as short and simple as possible. + +Also, please clarify if the bug is intermittent or requires a particular set of circumstances to reproduce it. + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Operating system** +The operating system that this problem occurred on. + +**Additional context** +Add other useful context about the problem here, if any. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mopac-23.1.2/.github/ISSUE_TEMPLATE/feature_request.md new/mopac-23.1.2/.github/ISSUE_TEMPLATE/feature_request.md --- old/mopac-23.1.2/.github/ISSUE_TEMPLATE/feature_request.md 1970-01-01 01:00:00.000000000 +0100 +++ new/mopac-23.1.2/.github/ISSUE_TEMPLATE/feature_request.md 2025-03-06 22:14:50.000000000 +0100 @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: '' +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mopac-23.1.2/.github/PULL_REQUEST_TEMPLATE.md new/mopac-23.1.2/.github/PULL_REQUEST_TEMPLATE.md --- old/mopac-23.1.2/.github/PULL_REQUEST_TEMPLATE.md 1970-01-01 01:00:00.000000000 +0100 +++ new/mopac-23.1.2/.github/PULL_REQUEST_TEMPLATE.md 2025-03-06 22:14:50.000000000 +0100 @@ -0,0 +1,5 @@ +<!-- Describe your PR --> + +## Status +<!-- Put an 'x' in the checkbox if your PR is ready to be merged into the main MOPAC branch --> +- [ ] Ready for merge diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mopac-23.1.2/.github/filecheckboxform.ui new/mopac-23.1.2/.github/filecheckboxform.ui --- old/mopac-23.1.2/.github/filecheckboxform.ui 1970-01-01 01:00:00.000000000 +0100 +++ new/mopac-23.1.2/.github/filecheckboxform.ui 2025-03-06 22:14:50.000000000 +0100 @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>PathCheckBoxForm</class> + <widget class="QWidget" name="FileCheckBoxForm"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>412</width> + <height>179</height> + </rect> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <property name="margin"> + <number>0</number> + </property> + <item> + <widget class="QCheckBox" name="fileCheckBox"> + <property name="text"> + <string>Register .mop file extension to double-click MOPAC input files</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + <property name="tristate"> + <bool>false</bool> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mopac-23.1.2/.github/iconcheckboxform.ui new/mopac-23.1.2/.github/iconcheckboxform.ui --- old/mopac-23.1.2/.github/iconcheckboxform.ui 1970-01-01 01:00:00.000000000 +0100 +++ new/mopac-23.1.2/.github/iconcheckboxform.ui 2025-03-06 22:14:50.000000000 +0100 @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>PathCheckBoxForm</class> + <widget class="QWidget" name="IconCheckBoxForm"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>412</width> + <height>179</height> + </rect> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <property name="margin"> + <number>0</number> + </property> + <item> + <widget class="QCheckBox" name="iconCheckBox"> + <property name="text"> + <string>Add MOPAC icon to the desktop to drag-and-drop MOPAC input files</string> + </property> + <property name="unchecked"> + <bool>true</bool> + </property> + <property name="tristate"> + <bool>false</bool> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> Binary files old/mopac-23.1.2/.github/mopac.ico and new/mopac-23.1.2/.github/mopac.ico differ Binary files old/mopac-23.1.2/.github/mopac_at_molssi.png and new/mopac-23.1.2/.github/mopac_at_molssi.png differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mopac-23.1.2/.github/pathcheckboxform.ui new/mopac-23.1.2/.github/pathcheckboxform.ui --- old/mopac-23.1.2/.github/pathcheckboxform.ui 1970-01-01 01:00:00.000000000 +0100 +++ new/mopac-23.1.2/.github/pathcheckboxform.ui 2025-03-06 22:14:50.000000000 +0100 @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>PathCheckBoxForm</class> + <widget class="QWidget" name="PathCheckBoxForm"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>412</width> + <height>179</height> + </rect> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <property name="margin"> + <number>0</number> + </property> + <item> + <widget class="QCheckBox" name="pathCheckBox"> + <property name="text"> + <string>Add MOPAC to the system path</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + <property name="tristate"> + <bool>false</bool> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mopac-23.1.2/.github/qtifw_component.qs new/mopac-23.1.2/.github/qtifw_component.qs --- old/mopac-23.1.2/.github/qtifw_component.qs 1970-01-01 01:00:00.000000000 +0100 +++ new/mopac-23.1.2/.github/qtifw_component.qs 2025-03-06 22:14:50.000000000 +0100 @@ -0,0 +1,66 @@ +function Component() +{ + component.loaded.connect(this, addCheckBoxes); +} + +addCheckBoxes = function() +{ + if(installer.isInstaller()) { + installer.addWizardPageItem(component, "PathCheckBoxForm", QInstaller.TargetDirectory, 1); + if(systemInfo.kernelType === "winnt") { + installer.addWizardPageItem(component, "FileCheckBoxForm", QInstaller.TargetDirectory, 2); + installer.addWizardPageItem(component, "IconCheckBoxForm", QInstaller.TargetDirectory, 3); + } + } +} + +Component.prototype.createOperations = function() +{ + component.createOperations(); + + var checkboxForm = component.userInterface("PathCheckBoxForm"); + if(checkboxForm && checkboxForm.pathCheckBox.checked) { + if(systemInfo.kernelType === "winnt") { + let target_dir = installer.value("TargetDir").replace(/\//g,"\\"); + let add_path = "$LiteralPath = '" + target_dir + "\\bin'; $regPath = 'registry::HKEY_CURRENT_USER\\Environment'; $currDirs = (Get-Item -LiteralPath $regPath).GetValue('Path', '', 'DoNotExpandEnvironmentNames') -split ';' -ne ''; $newValue = ($currDirs + $LiteralPath) -join ';'; Set-ItemProperty -Type ExpandString -LiteralPath $regPath Path $newValue; $dummyName = [guid]::NewGuid().ToString(); [Environment]::SetEnvironmentVariable($dummyName, 'foo', 'User'); [Environment]::SetEnvironmentVariable($dummyName, [NullString]::value, 'User');"; + let remove_path = "$LiteralPath = '" + target_dir + "\\bin'; $regPath = 'registry::HKEY_CURRENT_USER\\Environment'; $currDirs = (Get-Item -LiteralPath $regPath).GetValue('Path', '', 'DoNotExpandEnvironmentNames') -split ';' -ne ''; $newValue = ($currDirs.Split(';') | Where-Object { $_ -ne $LiteralPath }) -join ';'; Set-ItemProperty -Type ExpandString -LiteralPath $regPath Path $newValue; $dummyName = [guid]::NewGuid().ToString(); [Environment]::SetEnvironmentVariable($dummyName, 'foo', 'User'); [Environment]::SetEnvironmentVariable($dummyName, [NullString]::value, 'User');"; + component.addOperation("Execute", + "powershell.exe", + "-Command", + add_path, + "UNDOEXECUTE", + "powershell.exe", + "-Command", + remove_path); + } + else { + let path_append = ' PATH="$PATH:@TargetDir@/bin"\n'; + if(systemInfo.kernelType == "darwin") { component.addOperation("AppendFile", "@HomeDir@/.bash_profile", "export" + path_append); } + else { component.addOperation("AppendFile", "@HomeDir@/.bashrc", "export" + path_append); } + component.addOperation("AppendFile", "@HomeDir@/.cshrc", "setenv" + path_append); + component.addOperation("AppendFile", "@HomeDir@/.zshrc", "export" + path_append); + component.addOperation("AppendFile", "@HomeDir@/.profile", "export" + path_append); + } + } + + if(systemInfo.kernelType === "winnt") { + let target_dir = installer.value("TargetDir").replace(/\//g,"\\"); + checkboxForm = component.userInterface("IconCheckBoxForm"); + if(checkboxForm && checkboxForm.iconCheckBox.checked) { + component.addOperation("CreateShortcut", + "@TargetDir@/bin/mopac.exe", + "@DesktopDir@/MOPAC.lnk", + "iconPath=@TargetDir@/mopac.ico"); + } + checkboxForm = component.userInterface("FileCheckBoxForm"); + if(checkboxForm && checkboxForm.fileCheckBox.checked) { + component.addOperation("RegisterFileType", + "mop", + target_dir + "\\bin\\mopac.exe \"%1\"", + "MOPAC input file extension", + "text/plain", + target_dir + "\\mopac.ico", + "ProgId=mopac.mop"); + } + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mopac-23.1.2/.github/qtifw_controller.qs new/mopac-23.1.2/.github/qtifw_controller.qs --- old/mopac-23.1.2/.github/qtifw_controller.qs 1970-01-01 01:00:00.000000000 +0100 +++ new/mopac-23.1.2/.github/qtifw_controller.qs 2025-03-06 22:14:50.000000000 +0100 @@ -0,0 +1,21 @@ +function Controller() +{ +} + +Controller.prototype.IntroductionPageCallback = function() +{ + var widget = gui.currentPageWidget(); // get the current wizard page + if (widget != null && installer.isInstaller()) { + widget.MessageLabel.setText("Welcome to the MOPAC Setup Wizard.\n\n\ +This is the first official release of the open-source version of MOPAC [https://github.com/openmopac/mopac], \ +which continues from the commercial development of MOPAC that has ended with MOPAC2016. \ +The original MOPAC developer, James J. P. Stewart, will continue to be involved with MOPAC at a gradually diminishing level of activity.\n\n\ +For long-time users, there are some small changes to be aware of. \ +The main executable has been renamed from \"MOPAC2016\" to \"mopac\", and it now depends \ +on a core shared library, \"libmopac\", as well as Intel's OpenMP shared library, \ +both of which are contained in this installer package."); // set the welcome text + + installer.setDefaultPageVisible(QInstaller.StartMenuSelection, false); + installer.setDefaultPageVisible(QInstaller.ComponentSelection, false); + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mopac-23.1.2/.github/workflows/CI.yaml new/mopac-23.1.2/.github/workflows/CI.yaml --- old/mopac-23.1.2/.github/workflows/CI.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/mopac-23.1.2/.github/workflows/CI.yaml 2025-03-06 22:14:50.000000000 +0100 @@ -0,0 +1,453 @@ +name: CI + +on: + push: + branches: + - main + pull_request: + branches: + - main + schedule: + - cron: "0 0 * * 0" + +# Download links for the Intel MKL library & Fortran compiler from: +# https://www.intel.com/content/www/us/en/developer/articles/tool/oneapi-standalone-components.html +# (while MKL is available through several package managers, the compiler is not and we are grouping these dependencies for simplicity) +env: + IFORT_LINUX_URL: https://registrationcenter-download.intel.com/akdlm/IRC_NAS/0d65c8d4-f245-4756-80c4-6712b43cf835/l_fortran-compiler_p_2023.2.1.8_offline.sh + MKL_LINUX_URL: https://registrationcenter-download.intel.com/akdlm/IRC_NAS/adb8a02c-4ee7-4882-97d6-a524150da358/l_onemkl_p_2023.2.0.49497_offline.sh + IFORT_MAC_URL: https://registrationcenter-download.intel.com/akdlm/IRC_NAS/2fbce033-15f4-4e13-8d14-f5a2016541ce/m_fortran-compiler-classic_p_2023.2.0.49001_offline.dmg + MKL_MAC_URL: https://registrationcenter-download.intel.com/akdlm/IRC_NAS/9399bece-76fb-4b1c-b15c-8ac295448513/m_onemkl_p_2023.2.0.49501_offline.dmg + IFORT_WINDOWS_URL: https://registrationcenter-download.intel.com/akdlm/IRC_NAS/1720594b-b12c-4aca-b7fb-a7d317bac5cb/w_fortran-compiler_p_2023.2.1.7_offline.exe + MKL_WINDOWS_URL: https://registrationcenter-download.intel.com/akdlm/IRC_NAS/2b9cdf66-5291-418e-a7e8-f90515cc9098/w_onemkl_p_2023.2.0.49500_offline.exe + IFORT_WINDOWS_VERSION: 2023.2.1 + MKL_WINDOWS_VERSION: 2023.2.0 + +jobs: + linux-static: + runs-on: ubuntu-22.04 + timeout-minutes: 30 + + steps: + - name: Check number of cores + run: | + lscpu + lscpu | grep "CPU(s): " | awk '{print $2}' > num_cores + echo "NUM_CORES=$(cat num_cores)" >> $GITHUB_ENV + + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: '3.x' + + - name: Install dependencies with PyPI + run: pip install numpy + + - name: Configure MOPAC with CMake + run: | + cmake -B build \ + -DCMAKE_BUILD_TYPE=Debug \ + -DTHREADS_KEYWORD=OFF \ + -DSTATIC_BUILD=ON + + - name: Build MOPAC with Make + run: | + cmake --build build -- -j$NUM_CORES + +# - name: Run Valgrind on MOPAC API tester +# run: | +# sudo apt update && sudo apt install -y valgrind +# cd build/tests +# valgrind -s --track-origins=yes --leak-check=yes ./mopac-api-test + + - name: Test MOPAC with CTest + run: | + cd build + ctest -V -j $NUM_CORES + + - name: Save test results as an artifact (on failure) + if: ${{ failure() }} + uses: actions/upload-artifact@v4 + with: + name: static-test-output + path: build/tests + + code-coverage: + runs-on: ubuntu-22.04 + timeout-minutes: 30 + + steps: + - name: Check number of cores + run: | + lscpu + lscpu | grep "CPU(s): " | awk '{print $2}' > num_cores + echo "NUM_CORES=$(cat num_cores)" >> $GITHUB_ENV + + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: '3.x' + + - name: Install lcov with Ubuntu package manager + run: sudo apt-get install lcov + + - name: Install dependencies with PyPI + run: pip install numpy + + - name: Configure MOPAC with CMake + run: | + cmake -B build \ + -DCMAKE_BUILD_TYPE=Debug \ + -DTHREADS_KEYWORD=OFF \ + -DENABLE_COVERAGE=ON + + - name: Build MOPAC with Make + run: | + cmake --build build -- -j$NUM_CORES + +# - name: Run Valgrind on MOPAC API tester +# run: | +# sudo apt update && sudo apt install -y valgrind +# cd build/tests +# valgrind -s --track-origins=yes --leak-check=yes ./mopac-api-test + + - name: Test MOPAC with CTest + run: | + cd build + ctest -V -j $NUM_CORES + + - name: Save test results as an artifact (on failure) + if: ${{ failure() }} + uses: actions/upload-artifact@v4 + with: + name: coverage-test-output + path: build/tests + + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v4 + with: + directory: build + files: coverage.info + token: ${{ secrets.CODECOV_TOKEN }} + + linux-build: + # Ubuntu 22+ switched to newer glibc (2.34) that breaks the compatibility library right now + runs-on: ubuntu-20.04 + timeout-minutes: 30 + + steps: + - name: Check number of cores + run: | + lscpu + lscpu | grep "CPU(s): " | awk '{print $2}' > num_cores + echo "NUM_CORES=$(cat num_cores)" >> $GITHUB_ENV + + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: '3.x' + + # Set up the QT installer framework + - uses: jmarrec/setup-qtifw@v1 + with: + qtifw-version: '4.6.x' + + - name: Cache Intel dependencies + id: cache-intel + uses: actions/cache@v4 + with: + path: /opt/intel + key: cache-${{ env.IFORT_LINUX_URL }}-${{ env.MKL_LINUX_URL }} + + - name: Download & install Intel dependencies + if: steps.cache-intel.outputs.cache-hit != 'true' + run: | + curl $IFORT_LINUX_URL --output ifort_download.sh + sudo sh ifort_download.sh -a --silent --eula accept + curl $MKL_LINUX_URL --output mkl_download.sh + sudo sh mkl_download.sh -a --silent --eula accept + + - name: Clone glibc compatibility library + uses: actions/checkout@v4 + with: + repository: wheybags/glibc_version_header + path: glibc + + - name: Install dependencies with PyPI + run: pip install numpy + + - name: Configure MOPAC with CMake + run: | + source /opt/intel/oneapi/setvars.sh + cmake -B build \ + -DCMAKE_Fortran_COMPILER=ifort \ + -DCMAKE_Fortran_FLAGS="-static-intel" \ + -DCMAKE_C_COMPILER=gcc \ + -DCMAKE_C_FLAGS="-include $GITHUB_WORKSPACE/glibc/version_headers/x64/force_link_glibc_2.17.h" \ + -DAUTO_BLAS=OFF \ + -DMOPAC_LINK="-Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_lp64.a ${MKLROOT}/lib/intel64/libmkl_intel_thread.a ${MKLROOT}/lib/intel64/libmkl_core.a -Wl,--end-group -liomp5 -lpthread -lm -ldl" + + - name: Build MOPAC with Make + run: | + source /opt/intel/oneapi/setvars.sh + cmake --build build -- -j$NUM_CORES + ldd -v build/mopac + + - name: Test MOPAC with CTest + run: | + source /opt/intel/oneapi/setvars.sh + cd build + ctest -V -j $NUM_CORES + + - name: Save test results as an artifact (on failure) + if: ${{ failure() }} + uses: actions/upload-artifact@v4 + with: + name: linux-test-output + path: build/tests + + - name: Package MOPAC with CPack + run: | + source /opt/intel/oneapi/setvars.sh + cd build + cpack -G IFW + ls -l + + - name: Local installation test & minimal packaging + run: | + cd build + sudo make install + sudo cpack -G TGZ + + - name: Save executable as an artifact + uses: actions/upload-artifact@v4 + with: + name: linux-dist + path: build/mopac-*-linux.* + + mac-build: + # macos-latest is now ARM-based, MOPAC is being distributed for Intel-based Macs right now, so using latest free Intel-based standard runner + runs-on: macos-13 + timeout-minutes: 30 + + steps: + - name: Check number of cores + run: | + system_profiler SPHardwareDataType + system_profiler SPHardwareDataType | grep "Total Number of Cores" | awk '{print $5}' > num_cores + echo "NUM_CORES=$(cat num_cores)" >> $GITHUB_ENV + + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: '3.x' + + # Set up the QT installer framework + - uses: jmarrec/setup-qtifw@v1 + with: + qtifw-version: '4.6.x' + + - name: Fix permissions for cache restore + run: | + sudo mkdir -p /opt/intel + sudo chown $USER /opt/intel + + - name: Cache Intel Fortran compiler + id: cache-intel + uses: actions/cache@v4 + with: + path: /opt/intel + key: cache-${{ env.IFORT_MAC_URL }}-${{ env.MKL_MAC_URL }}-macos-13 + + - name: Download & install Intel Fortran compiler + if: steps.cache-intel.outputs.cache-hit != 'true' + run: | + curl $MKL_MAC_URL --output mkl_download.dmg + hdiutil attach mkl_download.dmg + sudo /Volumes/m_onemkl*/bootstrapper.app/Contents/MacOS/install.sh --silent --eula accept + curl $IFORT_MAC_URL --output ifort_download.dmg + hdiutil attach ifort_download.dmg + sudo /Volumes/m_fortran-compiler*/bootstrapper.app/Contents/MacOS/install.sh --silent --eula accept + + - name: Install dependencies with PyPI + run: pip3 install numpy + + # AUTO_BLAS=OFF because find_package(BLAS) has a bug with static BLAS libraries on Mac + - name: Configure MOPAC with CMake + run: | + source /opt/intel/oneapi/setvars.sh + cmake -B build \ + -DCMAKE_OSX_DEPLOYMENT_TARGET=10.8 \ + -DCMAKE_Fortran_COMPILER=ifort \ + -DCMAKE_Fortran_FLAGS="-static-intel" \ + -DCMAKE_C_COMPILER=gcc \ + -DAUTO_BLAS=OFF \ + -DCMAKE_SHARED_LINKER_FLAGS="-Wl,-ld_classic" \ + -DCMAKE_EXE_LINKER_FLAGS="-Wl,-ld_classic" \ + -DMOPAC_LINK="${MKLROOT}/lib/libmkl_intel_lp64.a ${MKLROOT}/lib/libmkl_intel_thread.a ${MKLROOT}/lib/libmkl_core.a -liomp5 -lpthread -lm -ldl" + + # an Intel-suggested hack is temporarily circumventing excessively slow calls to xcodebuild hidden in ifort, taken from: + # https://community.intel.com/t5/Intel-oneAPI-HPC-Toolkit/slow-execution-of-ifort-icpc-on-MacOSX-catalina/m-p/1203190 + - name: Build MOPAC with Make + run: | + source /opt/intel/oneapi/setvars.sh + mkdir xcode_hack + echo -ne '#!/bin/bash\ncase "$4" in\n "")\n echo $INTEL_OSXSDK_VER;;\n *)\n echo $INTEL_OSXSDK_PATH;;\nesac\n' > xcode_hack/xcodebuild + chmod 755 xcode_hack/xcodebuild + export INTEL_OSXSDK_VER=`xcodebuild -sdk macosx -version | grep SDKVersion` + export INTEL_OSXSDK_PATH=`xcodebuild -sdk macosx -version Path` + export PATH=$GITHUB_WORKSPACE/xcode_hack:${PATH} + cmake --build build -- -j$NUM_CORES + + - name: Test MOPAC with CTest + run: | + source /opt/intel/oneapi/setvars.sh + cd build + ctest -V -j $NUM_CORES + + - name: Save test results as an artifact (on failure) + if: ${{ failure() }} + uses: actions/upload-artifact@v4 + with: + name: mac-test-output + path: build/tests + + - name: Local installation test + run: | + cd build + make install + + - name: Package MOPAC with CPack + run: | + source /opt/intel/oneapi/setvars.sh + cd build + cpack -G IFW + ls -l + + - name: Local installation test & minimal packaging + run: | + cd build + sudo make install + sudo cpack -G ZIP + + - name: Save executable as an artifact + uses: actions/upload-artifact@v4 + with: + name: mac-dist + path: build/mopac-*-mac.* + + windows-build: + # NOTE: windows-latest has been switched to Visual Studio 2022, which is not yet supported by Intel development tools + runs-on: windows-2019 + timeout-minutes: 30 + + steps: + - name: Check number of cores + shell: bash + run: | + WMIC CPU Get -Format:List + WMIC CPU Get NumberOfLogicalProcessors | head -2 | tail -1 > num_cores + echo "NUM_CORES=$(cat num_cores)" >> $GITHUB_ENV + + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: '3.x' + + # Set up the QT installer framework + - uses: jmarrec/setup-qtifw@v1 + with: + qtifw-version: '4.6.x' + + - name: Cache Intel Fortran compiler + id: cache-intel + uses: actions/cache@v4 + with: + path: C:\Program Files (x86)\Intel + key: cache-${{ env.IFORT_WINDOWS_URL }}-${{ env.MKL_WINDOWS_URL }} + + - name: Download & install Intel Fortran compiler + if: steps.cache-intel.outputs.cache-hit != 'true' + shell: cmd + run: | + curl ${{ env.IFORT_WINDOWS_URL }} --output ifort_download.exe + ifort_download -s -x -f ifort_unpack + ifort_unpack\bootstrapper --silent --eula accept -p=NEED_VS2019_INTEGRATION=0 + curl ${{ env.MKL_WINDOWS_URL }} --output mkl_download.exe + mkl_download -s -x -f mkl_unpack + mkl_unpack\bootstrapper --silent --eula accept -p=NEED_VS2019_INTEGRATION=0 + + - name: Install dependencies with PyPI + run: pip3 install numpy + + # The main Intel\oneAPI\setvars.bat script is not setting up the correct version of ifort, so using component-level scripts + - name: Configure MOPAC with CMake + shell: cmd + run: | + call "C:\Program Files (x86)\Intel\oneAPI\compiler\${{ env.IFORT_WINDOWS_VERSION }}\env\vars.bat" + call "C:\Program Files (x86)\Intel\oneAPI\mkl\${{ env.MKL_WINDOWS_VERSION }}\env\vars.bat" + echo %PATH% + cmake -Bbuild ^ + -GNinja ^ + -DBUILD_BZ=ON ^ + -DCMAKE_Fortran_COMPILER=ifort ^ + -DCMAKE_Fortran_FLAGS="/libs:static" ^ + -DBLA_STATIC=ON ^ + -DBLA_VENDOR=Intel10_64lp + + - name: Build MOPAC with Ninja + shell: cmd + run: | + call "C:\Program Files (x86)\Intel\oneAPI\compiler\${{ env.IFORT_WINDOWS_VERSION }}\env\vars.bat" + call "C:\Program Files (x86)\Intel\oneAPI\mkl\${{ env.MKL_WINDOWS_VERSION }}\env\vars.bat" + cmake --build build -- -v + + - name: Test MOPAC with CTest + shell: cmd + run: | + call "C:\Program Files (x86)\Intel\oneAPI\compiler\${{ env.IFORT_WINDOWS_VERSION }}\env\vars.bat" + call "C:\Program Files (x86)\Intel\oneAPI\mkl\${{ env.MKL_WINDOWS_VERSION }}\env\vars.bat" + cd build + ctest -V -j %NUM_CORES% + + - name: Save test results as an artifact (on failure) + if: ${{ failure() }} + uses: actions/upload-artifact@v4 + with: + name: windows-test-output + path: build/tests + + - name: Local installation test + shell: cmd + run: | + cd build + cmake --install . + + - name: Package MOPAC with CPack (in development) + shell: cmd + run: | + call "C:\Program Files (x86)\Intel\oneAPI\compiler\${{ env.IFORT_WINDOWS_VERSION }}\env\vars.bat" + call "C:\Program Files (x86)\Intel\oneAPI\mkl\${{ env.MKL_WINDOWS_VERSION }}\env\vars.bat" + cd build + cpack -G IFW + dir + + - name: Local installation test & minimal packaging + shell: cmd + run: | + call "C:\Program Files (x86)\Intel\oneAPI\compiler\${{ env.IFORT_WINDOWS_VERSION }}\env\vars.bat" + call "C:\Program Files (x86)\Intel\oneAPI\mkl\${{ env.MKL_WINDOWS_VERSION }}\env\vars.bat" + cd build + make install + cpack -G ZIP + + - name: Save executable as an artifact + uses: actions/upload-artifact@v4 + with: + name: windows-dist + path: build/mopac-*-win.* diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mopac-23.1.2/.gitignore new/mopac-23.1.2/.gitignore --- old/mopac-23.1.2/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/mopac-23.1.2/.gitignore 2025-03-06 22:14:50.000000000 +0100 @@ -0,0 +1,43 @@ +# Mac stuff +.DS_Store + +# Prerequisites +*.d + +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod +*.smod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.app + +# Python intermediates +__pycache__ + +# CMake build directories +build*/ + +# Local files directory +local/