From 87a92446442836ecac880dd05ab06d1b68846d5a Mon Sep 17 00:00:00 2001 From: Michael Grant Date: Sat, 13 Apr 2024 09:01:36 -0700 Subject: [PATCH 1/7] start work on ci support --- .github/workflows/ci.yml | 154 +++++++++++++++++++++++++++++++++++++++ .gitmodules | 7 -- sdpt3 | 1 - sedumi | 1 - solvers.txt | 5 ++ 5 files changed, 159 insertions(+), 9 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 160000 sdpt3 delete mode 160000 sedumi create mode 100644 solvers.txt diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..b3d0f0bb --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,154 @@ +name: CI +on: + push: + branches: + - master + tags: + - '*' + pull_request: + branches: + - master +jobs: + build-mex: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-20.04,windows-2019,macos-12,macos-14] + steps: + - name: Retrieve the source code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Install MATLAB + uses: matlab-actions/setup-matlab@v2 + with: + release: ${{ matrix.os == 'macos-14' && 'R2023b' || ( matrix.os == 'windows-2019' && 'R2021b' || 'R2021a' ) }} + - name: Build MEX files + uses: matlab-actions/run-command@v2 + with: + command: "cd lib; mex cvx_eliminate_mex.c; mex cvx_bcompress_mex.c" + - name: Upload MATLAB MEX files + uses: actions/upload-artifact@v4 + with: + name: mex-${{ matrix.os }} + path: "lib/*.mex*" + build-oct: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-20.04,windows-2019,macos-12,macos-14] + steps: + - name: Retrieve the source code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Install Octave + shell: bash + run: | + if [ "${{ matrix.os }}" = ubuntu-20.04 ]; then + sudo apt update + sudo snap install octave + sudo apt install --no-install-recommends libopenblas-dev + echo "OCTAVE=snap run octave" >>$GITHUB_ENV + elif [ "${{ matrix.os }}" = windows-2019 ]; then + choco install octave.portable + else + brew install octave + echo "OCTAVE=octave" >>$GITHUB_ENV + fi + - name: Build MEX files (Unix) + if: matrix.os != 'windows-2019' + run: $OCTAVE --eval "cd lib; mex cvx_eliminate_mex.c; mex cvx_bcompress_mex.c" + - name: Build Mex files (Windows) + if: matrix.os == 'windows-2019' + shell: cmd + run: | + set PATH=C:\ProgramData\chocolatey\bin;%PATH% + octave-cli.exe --no-gui --eval "cd lib; mex cvx_eliminate_mex.c; mex cvx_bcompress_mex.c" + if %errorlevel% neq 0 exit /b %errorlevel% + - name: Upload Octave MEX files + uses: actions/upload-artifact@v4 + with: + name: oct-${{ matrix.os }} + path: "*.mex" + package: + needs: [build-mex,build-oct] + runs-on: ubuntu-latest + steps: + - name: Retrieve the source code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Retrieve artifacts + uses: actions/download-artifact@v4 + - name: Move artifacts into place + run: | + mkdir -p lib/o_lin && mv oct-ubuntu-*/* lib/o_lin/ + mkdir -p lib/o_win && mv oct-windows-*/* lib/o_win/ + mkdir -p lib/o_maci && mv oct-macos-12/* lib/o_maci/ + mkdir -p lib/o_maca && mv oct-macos-14/* lib/o_maca/ + mv mex-*/* . + rmdir mex-* oct-* + - name: Download solvers + run: | + rm -rf sdpt3 sedumi || : + for url in $(grep -v ^# solvers.txt); do + echo "Downloading: $url" + curl -OL $url + echo "Unpacking: ${url##*/} + tar xfz ${url##*/} + rm ${url##*/} + done + - name: Show files, build archives + run: | + cd .. + zip -r cvx.zip cvx -x 'cvx/.git/*' -x 'cvx/.github/*' + tar cfz cvx.tgz --exclude "cvx/.git" --exclude "cvx/.github" sedumi + echo "--------" + tar tfz cvx.tgz + echo "--------" + zipinfo cvx.zip + echo "--------" + mv cvx.tgz cvx.zip sedumi + - name: Upload bundles + uses: actions/upload-artifact@v4 + with: + name: bundles + path: | + cvx.zip + cvx.tgz + matlab-tests: + needs: package + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest,macos-latest,windows-latest,macos-14] + steps: + - name: Retrieve artifact + uses: actions/download-artifact@v4 + with: + name: bundles + - name: Unpack artifact + run: tar xfz cvx.tgz --strip-components=1 + - name: Install latest MATLAB + uses: matlab-actions/setup-matlab@v2 + - name: Run test + uses: matlab-actions/run-command@v2 + with: + command: "cvx_setup" + publish: + needs: [matlab-tests] + if: startsWith(github.ref, 'refs/tags/') + runs-on: ubuntu-latest + steps: + - name: Retrieve artifacts + uses: actions/download-artifact@v4 + with: + name: bundles + - uses: softprops/action-gh-release@v2 + with: + files: | + cvx.tgz + cvx.zip \ No newline at end of file diff --git a/.gitmodules b/.gitmodules index 607e8293..e69de29b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,7 +0,0 @@ -[submodule "sedumi"] - path = sedumi - url = git@github.com:sqlp/sedumi.git - branch = pretransfo -[submodule "sdpt3"] - path = sdpt3 - url = git@github.com:sqlp/sdpt3.git diff --git a/sdpt3 b/sdpt3 deleted file mode 160000 index 3b880163..00000000 --- a/sdpt3 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 3b880163eba732c396a1a346dac4a350a259249a diff --git a/sedumi b/sedumi deleted file mode 160000 index e422895d..00000000 --- a/sedumi +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e422895d47992b2f89b3f69b59bb78834fc923fa diff --git a/solvers.txt b/solvers.txt new file mode 100644 index 00000000..59daab2a --- /dev/null +++ b/solvers.txt @@ -0,0 +1,5 @@ +# These are the URLs of the SDPT3 and SeDuMi bundles to include. +# We have stopped using submodules because the MEX files are no +# longer checked into Git; instead, they are built by CI processes +https://github.com/sqlp/sedumi/releases/download/v1.3.8/sedumi.tgz +https://github.com/sqlp/sdpt3/releases/download/4.0-20240410/sdpt3.tgz From 2d5a8c10aa00712d4861365e1dfbb6fb7e22a367 Mon Sep 17 00:00:00 2001 From: Michael Grant Date: Sat, 13 Apr 2024 09:29:08 -0700 Subject: [PATCH 2/7] minor octave fix, .gitignore --- .github/workflows/ci.yml | 2 +- .gitignore | 8 ++++++++ cvx_version.m | 33 +++++++++++++-------------------- 3 files changed, 22 insertions(+), 21 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b3d0f0bb..b419d02a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -71,7 +71,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: oct-${{ matrix.os }} - path: "*.mex" + path: "lib/*.mex" package: needs: [build-mex,build-oct] runs-on: ubuntu-latest diff --git a/.gitignore b/.gitignore index f6d04ee1..5beac4c0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,10 @@ doc/_build +sedumi/ +sdpt3/ +sedumi.tgz +sedumi.zip +sdpt3.tgz +sdpt3.zip +lib/*.mex* +lib/*/*.mex diff --git a/cvx_version.m b/cvx_version.m index e776fb68..42a3b24c 100644 --- a/cvx_version.m +++ b/cvx_version.m @@ -39,32 +39,25 @@ isoctave = exist( 'OCTAVE_VERSION', 'builtin' ); % File and path separators, MEX extension + comp = computer; if isoctave, - comp = octave_config_info('canonical_host_type'); mext = 'mex'; izpc = false; izmac = false; - if octave_config_info('mac'), - msub = 'mac'; - izmac = true; - elseif octave_config_info('windows'), - msub = 'win'; - izpc = true; - elseif octave_config_info('unix') && any(strfind(comp,'linux')), - msub = 'lin'; - else - msub = 'unknown'; - end - if ~isempty( msub ), - msub = [ 'o_', msub ]; - if strncmp( comp, 'x86_64', 6 ), - msub = [ msub, '64' ]; - else - msub = [ msub, '32' ]; - end + switch comp + case 'x86_64-pc-linux-gnu' + msub = 'o_lin'; + case 'x86_64-apple-darwin21.6.0' + msub = 'o_maci'; + case 'aarch64-apple-darwin23.4.0' + msub = 'o_maca'; + case 'x86_64-w64-mingw32' + msub = 'o_win'; + otherwise + warning(sprintf('Unexpected Octave computer type: %s', COMPUTER)); + msub = ''; end else - comp = computer; izpc = strncmp( comp, 'PC', 2 ); izmac = strncmp( comp, 'MAC', 3 ); mext = mexext; From 7dbef9eb18b2e0b5bde7e07d7509ffb2cbd96c46 Mon Sep 17 00:00:00 2001 From: Michael Grant Date: Sat, 13 Apr 2024 09:38:58 -0700 Subject: [PATCH 3/7] remove old mex files; add octave test code --- .github/workflows/ci.yml | 91 +++++++++++++++++++++++++++--- README.md | 20 +++++++ cvx_setup.m | 3 + cvx_version.m | 7 +++ lib/cvx_bcompress_mex.mexa64 | Bin 11509 -> 0 bytes lib/cvx_bcompress_mex.mexglx | Bin 7397 -> 0 bytes lib/cvx_bcompress_mex.mexmaci64 | Bin 8872 -> 0 bytes lib/cvx_bcompress_mex.mexw64 | Bin 43520 -> 0 bytes lib/cvx_eliminate_mex.mexa64 | Bin 11983 -> 0 bytes lib/cvx_eliminate_mex.mexglx | Bin 8273 -> 0 bytes lib/cvx_eliminate_mex.mexmaci64 | Bin 12744 -> 0 bytes lib/cvx_eliminate_mex.mexw64 | Bin 40448 -> 0 bytes lib/o_lin64/cvx_bcompress_mex.mex | Bin 21022 -> 0 bytes lib/o_lin64/cvx_eliminate_mex.mex | Bin 24470 -> 0 bytes lib/o_mac64/cvx_bcompress_mex.mex | Bin 13256 -> 0 bytes lib/o_mac64/cvx_eliminate_mex.mex | Bin 13016 -> 0 bytes 16 files changed, 112 insertions(+), 9 deletions(-) delete mode 100755 lib/cvx_bcompress_mex.mexa64 delete mode 100644 lib/cvx_bcompress_mex.mexglx delete mode 100755 lib/cvx_bcompress_mex.mexmaci64 delete mode 100644 lib/cvx_bcompress_mex.mexw64 delete mode 100755 lib/cvx_eliminate_mex.mexa64 delete mode 100755 lib/cvx_eliminate_mex.mexglx delete mode 100755 lib/cvx_eliminate_mex.mexmaci64 delete mode 100644 lib/cvx_eliminate_mex.mexw64 delete mode 100755 lib/o_lin64/cvx_bcompress_mex.mex delete mode 100755 lib/o_lin64/cvx_eliminate_mex.mex delete mode 100755 lib/o_mac64/cvx_bcompress_mex.mex delete mode 100755 lib/o_mac64/cvx_eliminate_mex.mex diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b419d02a..8eb6f631 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,7 +26,7 @@ jobs: - name: Build MEX files uses: matlab-actions/run-command@v2 with: - command: "cd lib; mex cvx_eliminate_mex.c; mex cvx_bcompress_mex.c" + command: "cd lib; mex cvx_eliminate_mex.c; mex cvx_bcompress_mex.c; cd ..; cvx_setup -exit-if" - name: Upload MATLAB MEX files uses: actions/upload-artifact@v4 with: @@ -88,7 +88,7 @@ jobs: mkdir -p lib/o_win && mv oct-windows-*/* lib/o_win/ mkdir -p lib/o_maci && mv oct-macos-12/* lib/o_maci/ mkdir -p lib/o_maca && mv oct-macos-14/* lib/o_maca/ - mv mex-*/* . + mv mex-*/* lib/ rmdir mex-* oct-* - name: Download solvers run: | @@ -96,21 +96,24 @@ jobs: for url in $(grep -v ^# solvers.txt); do echo "Downloading: $url" curl -OL $url - echo "Unpacking: ${url##*/} - tar xfz ${url##*/} - rm ${url##*/} + fname=${url##*/} + echo "Unpacking: $fname" + tar xfz $fname + rm $fname done - name: Show files, build archives run: | cd .. + mv CVX cvx zip -r cvx.zip cvx -x 'cvx/.git/*' -x 'cvx/.github/*' - tar cfz cvx.tgz --exclude "cvx/.git" --exclude "cvx/.github" sedumi + tar cfz cvx.tgz --exclude "cvx/.git" --exclude "cvx/.github" cvx echo "--------" tar tfz cvx.tgz echo "--------" zipinfo cvx.zip echo "--------" - mv cvx.tgz cvx.zip sedumi + mv cvx CVX + mv cvx.tgz cvx.zip CVX - name: Upload bundles uses: actions/upload-artifact@v4 with: @@ -137,9 +140,79 @@ jobs: - name: Run test uses: matlab-actions/run-command@v2 with: - command: "cvx_setup" + command: "cvx_setup -exit-if" + octave-tests: + needs: package + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest,windows-latest,macos-latest,macos-14] + steps: + - name: Retrieve artifact + uses: actions/download-artifact@v4 + with: + name: bundles + - name: Unpack artifact + run: tar xfz cvx.tgz --strip-components=1 + - name: Install Octave, Snap, Flatpak + shell: bash + run: | + if [ "${{ matrix.os }}" = ubuntu-latest ]; then + sudo apt update + sudo apt install --no-install-recommends octave + elif [ "${{ matrix.os }}" = windows-latest ]; then + choco install octave.portable + else + brew install octave + fi + - name: Run test (Unix) + shell: bash + run: octave --eval "cvx_setup -exit-if" + - name: Run test (Windows) + if: matrix.os == 'windows-latest' + shell: cmd + run: | + set PATH=C:\ProgramData\chocolatey\bin;%PATH% + octave-cli.exe --no-gui --eval "cvx_setup -exit-if" + flatpak-test: + needs: package + runs-on: ubuntu-latest + steps: + - name: Retrieve artifact + uses: actions/download-artifact@v4 + with: + name: bundles + - name: Unpack artifact + run: tar xfz cvx.tgz --strip-components=1 + - name: Install Flatpak octave + run: | + sudo apt update + sudo apt install flatpak + flatpak remote-add --user --if-not-exists \ + flathub https://flathub.org/repo/flathub.flatpakrepo + flatpak install --user -y flathub org.octave.Octave + - name: Run test + shell: bash + run: flatpak run org.octave.Octave --eval "cvx_setup -exit-if" + snap-test: + needs: package + runs-on: ubuntu-latest + steps: + - name: Retrieve artifact + uses: actions/download-artifact@v4 + with: + name: bundles + - name: Unpack artifact + run: tar xfz cvx.tgz --strip-components=1 + - name: Install Flatpak octave + run: | + sudo snap install octave + - name: Run test + shell: bash + run: snap run octave --eval "cvx_setup -exit-if" publish: - needs: [matlab-tests] + needs: [matlab-tests,octave-tests,flatpak-test,snap-test] if: startsWith(github.ref, 'refs/tags/') runs-on: ubuntu-latest steps: diff --git a/README.md b/README.md index ae7564e2..4892f066 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,25 @@ ## CVX: A system for disciplined convex programming +### IMPORTANT UPDATE + +We are working towards making this repository the *official* source +for CVX, and updating the [download page](http://cvxr.com/cvx/download) +with links back to this site. This will take a bit more time; but when +finished, there will be significant benefits: + +- Fresh builds of the supporting MEX files for Linux, Windows, macOS + Apple Silicon, and macOS Intel will be included. +- The solver shims for Mosek and Gurobi will be included, without + obfuscation, so that anyone with a valid license for these solvers + can use CVX, for commercial and non-commercial use. +- We will be able to slowly enable community contributions to supply + bug fixes and improvements. Note that the first of these improvements + will need to include improvements to an automatable test suite to + help insure that changes do not introduce regressions. + +Please stay tuned, here and on the [web site](http://cvxr.com/cvx), +for further developments. + ### Introduction CVX is a Matlab package for convex optimizaton. diff --git a/cvx_setup.m b/cvx_setup.m index 1645a530..361fc9bb 100644 --- a/cvx_setup.m +++ b/cvx_setup.m @@ -19,6 +19,7 @@ function cvx_setup( varargin ) cvx_version( '-install', varargin{:} ); if ~isfield( cvx___, 'loaded' ) || ~cvx___.loaded, %#ok + if cvx___.exit_if, exit(-1); end error( 'CVX:Expected', 'Error detected by cvx_version' ); end isoctave = cvx___.isoctave; @@ -151,6 +152,7 @@ function cvx_setup( varargin ) 'No valid solvers were found. This suggests a corrupt installation. Please\n', ... 'try re-installing the files and re-running cvx_setup. If the same error\n', ... 'occurs, please contact CVX support.\n' ] ); + if cvx___.exit_if, exit(-1); end error('CVX:Unexpected','No valid solvers were found.'); end solvers = solvers(cellfun(@isempty,{solvers.error})); @@ -179,6 +181,7 @@ function cvx_setup( varargin ) cvx_global; if isempty( cvx___.solvers.list ), + if cvx___.exit_if, exit(-1); end error('CVX:Unexpected','No valid solvers were found.'); end diff --git a/cvx_version.m b/cvx_version.m index 42a3b24c..80f1acdf 100644 --- a/cvx_version.m +++ b/cvx_version.m @@ -12,6 +12,7 @@ args = varargin; compile = false; +exit_if = false; quick = nargout > 0; if nargin if ~ischar( args{1} ), @@ -23,9 +24,13 @@ tt = strcmp( args, '-compile' ); compile = any( tt ); if compile, quick = false; args(tt) = []; end + tt = strcmp( args, '-exit-if' ); + exit_if = any( tt ); + if exit_if, quick = false; args(tt) = []; end end end +cvx___.exit_if = exit_if; if isfield( cvx___, 'loaded' ), if quick, return; end @@ -310,6 +315,8 @@ if ~issue, cvx___.loaded = true; +elseif exit_if, + exit(1) end clear fs; fprintf( '%s\n', line ); diff --git a/lib/cvx_bcompress_mex.mexa64 b/lib/cvx_bcompress_mex.mexa64 deleted file mode 100755 index b5d95e69bfb72dd5f81df6dc0c50096908becced..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11509 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 bYi^2o|8#H1Vo@OPy6M`Btor)WtDgS>p}j!o diff --git a/lib/cvx_bcompress_mex.mexmaci64 b/lib/cvx_bcompress_mex.mexmaci64 deleted file mode 100755 index 16422a5bbd8dede092a0b774ea5296b61df6d4f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8872 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 diff --git a/lib/cvx_eliminate_mex.mexglx b/lib/cvx_eliminate_mex.mexglx deleted file mode 100755 index c15dda3bcdfb4e5f8125b80ee3cc33539fabc6f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8273 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 Oup~BE?MD2;!v6uL#hl&% diff --git a/lib/cvx_eliminate_mex.mexw64 b/lib/cvx_eliminate_mex.mexw64 deleted file mode 100644 index 546d2ebdc115b7a716c8e97e12a13cc23dd8b844..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40448 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 diff --git a/lib/o_lin64/cvx_bcompress_mex.mex b/lib/o_lin64/cvx_bcompress_mex.mex deleted file mode 100755 index 3ba0a32272f9867429f5ca1af20bb6a9ced46368..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21022 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 diff --git a/lib/o_lin64/cvx_eliminate_mex.mex b/lib/o_lin64/cvx_eliminate_mex.mex deleted file mode 100755 index 1bd039706a2cde8d13c347c7428bb4cdcdeda3cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24470 zcmeHvd3aP+n)kU?m2e?Tg(U1-L6-@2yHz z(mL~e&-WMSN!@pU&wJjp-0kFc7J64$6h&~cidzIxJ4YFuJSkAuNCY5HED@t{oGGU3 zx(N|c9QJCu!D1+cLuXJOiTF9D>m;B?qE!ThgRrsjP3Lyu2^tXDCU%ZJF?4 z#cySCxp?sL2XbF~{yYEi$6f#N$F)VXJs*E>?%yw%ttI%jEcUPMn3~>IRu8-{lf@+ zipw!X(;%uw;FpfTKM4MC^-di@f5`~^mqzgO;0XMEBk-Rbf&V%9X=0pcaX5fQ%2}Xk zB2(1G@XzV|adG^e;HQhxV&`ZeCp0u z@%h`U$U#*@{SGLu+UhHn9`YNi+S&qbqA}1~8}PL?w+4Z>uLw2ygZ0f#qOpBtAn0i| z;3~fXiwsa~fD)4CS2Z*=lQ_RMP!$Xmhv2W?UsM%rt#20%^;??Zt_cCRxZ0Xs3xzLG zT@|cCL$|cG8SMnCsoH2iuS>k1ERe_?x&AQ!g3SA7*>B8e`pgW6?vSPluNB02KZ+l{ zp7uxaqo>w|C_dLgelADx$I@QT(JRen}KRIf`Eq#ZQUiYh53yT6aRqB!|#;_XQLBmqMs@9aWDQN`p7f zf@ts>Cyw?RdBBLSBjLdNgDBTbCR!o-q)w+3O(`1a)9EopQ)&iY&}j?Nl#+q{I{oK~ zpsC9S_UQCQqA4{4J9YXT(Ug*b7M=cpXzH?o&7ifOgnlrzp4@*2DA(p**1{iZU6)h0 zSvDO(!@ML!!!B+be4pZn{)>kGGg117E?c$mVeQblWtwtQJ9Rmv8;_fy8@~l(EqrY7 z1G3+ldl#4@bgkBv`(G1)m7~63veunj3VweILh7%>Vbie$4GiVeBQ;c9_8GenGNm^6 z@;I0UXCt^?IH2Grmm~fUz=p5ElbZ%Mz=3_nPSPJ(4LoAL$Gu()UqCC}HK8-i~<4qQOFCN zP&i_PAe?_CbpEzY?v3tE?%R(<;(^!Tar+G9t0j}x~f{91nsco*$yq9FXI0_Bq*)3Cj0zu}DL|5JFQGp+v?)9VqB|CrX3+@*!R zPObm+mBGQR*I%Jg{9~FL1>sBNaY_GQAn=3>(b32IU(}Tf!e8ooKOsHD;|+H>OZwk6 z^iwHkJ?c zyXH@$uI#csqG&lMLKkY>cGs946GP(*<{oo*EmbD&d);oFl?xu(;P-SZ@i4v!`qFvXx$CYIh29V!RhK(t}k$=6=r>0Q(&L- zW{rK$?=BYD(-Qs+8A4Dfm5x2|l~$ni1BZ2ib7IYMyDPch{=iXmhkZA7UiUYz6m%Dg zf}G>_UEc>?*t2;M&M-IL_xk^f)|&$70wilU4Gv1!s-DdK2I{!@%LDc^HXWvxM;69+I391XdjDCI&9N&-mvd_8g`oBf`#%UPmk>wLJ?Hgwzn_ZHy%6x zj-Fo`Mw)%smtRINn4YfJkdN1F-lYvrhkbVngqSNWS$*AQ&JLOcyI&7woS%zMGUB6= zk#jgWQTKOj>jlqo+cApU;D`FrukAUQD)tAbpvSa(kJ4(x>z3Ph1i6}{p$3gA4PS=0 zi}vgKXgF-XxZFP0hK@K6olI&7#fHYDAz6n}--bSFHPnyMSVr3pW2x!G=xT>eIQw4R zo8AuaGVQzFSbPTN>$%NChn}UiXlQF^kOrNSBI{{>ciH_{H2+~wPx5gjakTw`$FY9c zcRzw-*I}igd!sYci)b~(akvY0Q-n8u2LsRJ|Fkfi`~qUkq6Vt8s4S#|%?V!ip@Q%k zw3b2}SOI4mJeBARX3x!2H2+|K`eiWvZ)@RQ&YhIdp3FU3c%Sp{fTJ%mcfW%K4=EZ=#`KqY*yJjRwMs2BtUXjnLUb49R4)sq2VR7@qp5buP|!N=}eE zXQO_yMfBl*t!JNeCjvXvKSOy<^B?ix?0o7k-tb`me57Re$M%PQh<@7rYx}O}0clR? zi*t81wZFlcR}{vKPaBtx

JT?(M0-vWruqFQPflR8d{yX%iSH^Wurz~axTi@ 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 K)KXZmSpN+-!MzFq diff --git a/lib/o_mac64/cvx_eliminate_mex.mex b/lib/o_mac64/cvx_eliminate_mex.mex deleted file mode 100755 index 835003255f7f579eab93a23b358a8061fed81f42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13016 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 Date: Sat, 13 Apr 2024 17:12:08 -0700 Subject: [PATCH 4/7] build manifest --- .github/workflows/ci.yml | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8eb6f631..55916d4c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -101,12 +101,16 @@ jobs: tar xfz $fname rm $fname done + rm -rf solvers.txt .gitignore .git .github */.gitignore - name: Show files, build archives run: | + GCOM="^\.\\|^doc/\\|^examples/" + find . -type d | sed 's@^\./\(.*\)@\1/@' | grep -v $GCOM | sort -f >MANIFEST + find . \! -type d | sed 's@^\./@@' | grep -v $GCOM | sort -f >>MANIFEST cd .. mv CVX cvx - zip -r cvx.zip cvx -x 'cvx/.git/*' -x 'cvx/.github/*' - tar cfz cvx.tgz --exclude "cvx/.git" --exclude "cvx/.github" cvx + zip -r cvx.zip cvx + tar cfz cvx.tgz cvx echo "--------" tar tfz cvx.tgz echo "--------" @@ -134,7 +138,10 @@ jobs: with: name: bundles - name: Unpack artifact - run: tar xfz cvx.tgz --strip-components=1 + shell: bash + run: | + tar xfz cvx.tgz --strip-components=1 + rm cvx.tgz cvx.zip - name: Install latest MATLAB uses: matlab-actions/setup-matlab@v2 - name: Run test @@ -154,7 +161,10 @@ jobs: with: name: bundles - name: Unpack artifact - run: tar xfz cvx.tgz --strip-components=1 + shell: bash + run: | + tar xfz cvx.tgz --strip-components=1 + rm cvx.tgz cvx.zip - name: Install Octave, Snap, Flatpak shell: bash run: | @@ -184,7 +194,9 @@ jobs: with: name: bundles - name: Unpack artifact - run: tar xfz cvx.tgz --strip-components=1 + run: | + tar xfz cvx.tgz --strip-components=1 + rm cvx.tgz cvx.zip - name: Install Flatpak octave run: | sudo apt update @@ -204,7 +216,9 @@ jobs: with: name: bundles - name: Unpack artifact - run: tar xfz cvx.tgz --strip-components=1 + run: | + tar xfz cvx.tgz --strip-components=1 + rm cvx.tgz cvx.zip - name: Install Flatpak octave run: | sudo snap install octave From 412982a3305e7f163263e3361b1b325903957ced Mon Sep 17 00:00:00 2001 From: Michael Grant Date: Sat, 13 Apr 2024 17:56:53 -0700 Subject: [PATCH 5/7] Update README --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 4892f066..7ac32eb9 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ ## CVX: A system for disciplined convex programming +#### [Click here](https://github.com/cvxr/cvx/releases/latest) to download the precompiled bundle from this repository. These bundles include the SeDuMi and SDPT3 solvers, as well as pre-compiled MATLAB and Octave MEX files files for Windows, Linux, and macOS (Intel and Apple Silicon). + ### IMPORTANT UPDATE We are working towards making this repository the *official* source From 19a24a3f5c0b3bfcd418c4015deb082d95c5a525 Mon Sep 17 00:00:00 2001 From: Michael Grant Date: Sat, 13 Apr 2024 22:50:57 -0700 Subject: [PATCH 6/7] Add version info --- .github/workflows/ci.yml | 15 +++++++++++++++ cvx_version.m | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 55916d4c..7a7fc27e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -80,6 +80,21 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 0 + - name: Extract version info + run: | + /bin/echo -n Extracting and updating version information... + DESCR=$(git describe --long) + VERSION=$(echo "$DESCR" | cut -d '-' -f 1) + BUILD=$(echo "$DESCR" | cut -d '-' -f 2) + BCOMMIT=$(echo "$DESCR" | cut -d '-' -f 3 | sed 's@^g@@') + BDATE=$(git log -n1 --pretty=%ad --date=local) + MONTH=`date +%B` + MONBIB=`date +%b | tr [:upper:] [:lower:]` + YEAR=`date +%Y` + echo done. + echo "Version $DESCR, $MONTH $YEAR" + sed "s@cvx_bld *= *'[^']*'@cvx_bld = '$BUILD'@;s@cvx_bdate *= *'[^']*'@cvx_bdate = '$BDATE'@;s@cvx_bcomm *= *'[^']*'@cvx_bcomm = '$BCOMMIT'@" cvx_version.m > cvx_version.new + mv -f cvx_version.new cvx_version.m - name: Retrieve artifacts uses: actions/download-artifact@v4 - name: Move artifacts into place diff --git a/cvx_version.m b/cvx_version.m index 80f1acdf..cb2a3def 100644 --- a/cvx_version.m +++ b/cvx_version.m @@ -141,7 +141,7 @@ line = '---------------------------------------------------------------------------'; fprintf( '\n%s\n', line ); fprintf( 'CVX: Software for Disciplined Convex Programming (c)2014 CVX Research\n' ); -fprintf( 'Version %3s, Build %4s (%7s)%42s\n', cvx_ver, cvx_bld, cvx_bcomm, cvx_bdate ); +fprintf( 'Version %3s, Build %3s (%7s)%42s\n', cvx_ver, cvx_bld, cvx_bcomm, cvx_bdate ); fprintf( '%s\n', line ); fprintf( 'Installation info:\n Path: %s\n', cvx___.where ); if isoctave, From a9267e0328348e7d6f3e69f7f21c9f2341bfe374 Mon Sep 17 00:00:00 2001 From: Michael Grant Date: Sun, 14 Apr 2024 14:24:30 -0700 Subject: [PATCH 7/7] compile docs --- .github/workflows/ci.yml | 17 +++++++++++++++++ doc/conf.py | 4 ++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7a7fc27e..ce60bd6e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -80,6 +80,23 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 0 + - name: Compile the docs + run: | + sudo apt update + sudo apt install latexmk texlive-latex-recommended texlive-latex-extra tex-gyre make + source $CONDA/bin/activate + conda install -c defaults -c conda-forge sphinx cloud_sptheme + pushd doc + sphinx-build -b latex -d _build/doctrees . _build/latex + sphinx-build -b html -d _build/doctrees . _build/html + pushd _build/latex + latexmk -pdf CVX.tex + popd + popd + mv doc _doc + mkdir doc + mv _doc/_build/{html,latex/CVX.pdf} doc/ + rm -rf _doc - name: Extract version info run: | /bin/echo -n Extracting and updating version information... diff --git a/doc/conf.py b/doc/conf.py index 76226910..d57cf47e 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -116,7 +116,7 @@ # The name of an image file (relative to this directory) to place at the top # of the sidebar. -html_logo = 'cvxrlogo.png' +html_logo = '_static/cvxrlogo.png' # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 @@ -178,7 +178,7 @@ latex_elements = { 'papersize': 'letterpaper', 'pointsize': '11pt', - 'preamble': '\usepackage{amsmath,amssymb}', + 'preamble': r'\usepackage{amsmath,amssymb}', } # Grouping the document tree into LaTeX files. List of tuples