Unverified Commit 8b88f47c authored by Christian Beer's avatar Christian Beer Committed by GitHub
Browse files

Merge pull request #4131 from BOINC/cb_migrate_osx_to_github_actions

[CI] add OSX workflow to Github Actions
parents 180ea883 cf5075f8
name: OSX
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
schedule:
- cron: '20 12 * * 0'
jobs:
build:
name: ${{ matrix.type }}-build
runs-on: macos-latest
strategy:
matrix:
type: [manager]
fail-fast: false
steps:
- uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '12.2'
- uses: actions/checkout@v2
- name: Cache dependencies
uses: actions/cache@v2.1.3
with:
path: 3rdParty/buildCache
key: osx-${{ matrix.type }}-${{ hashFiles('3rdParty/*Mac*.sh', 'mac_build/dependencyNames.sh', 'mac_build/[bB]uild*.sh') }}
restore-keys: osx-${{ matrix.type }}-
- name: install dependencies
run: ./3rdParty/buildMacDependencies.sh -q
- name: make
if: success()
run: ./mac_build/buildMacBOINC-CI.sh --no_shared_headers
- name: deploy
if: ${{ success() }}
run: echo "Would start deployment now"
#run: ./deploy/prepare_deployment.sh osx_${BOINC_TYPE} deploy/osx_${BOINC_TYPE}/ && ./deploy/deploy_to_bintray.sh deploy/osx_${BOINC_TYPE}/
......@@ -14,10 +14,10 @@
\b0\fs24 \cf0 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\qc\partightenfactor0
\cf0 Written by Charlie Fenton\
Last updated 12/1/20\
Last updated 12/24/20\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0
\cf0 \
This document applies to BOINC version 7.16.14 and later. It has instructions for building the BOINC Client and Manager for Macintosh OSX. Information for building science project applications to run under BOINC on Macintosh OSX can be found {\field{\*\fldinst{HYPERLINK "http://boinc.berkeley.edu/trac/wiki/BuildMacApp"}}{\fldrslt here}}. \
This document applies to BOINC version 7.16.15 and later. It has instructions for building the BOINC Client and Manager for Macintosh OSX. Information for building science project applications to run under BOINC on Macintosh OSX can be found {\field{\*\fldinst{HYPERLINK "http://boinc.berkeley.edu/trac/wiki/BuildMacApp"}}{\fldrslt here}}. \
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0
......@@ -106,7 +106,7 @@ You get these tools, including the GCC or Apple LLVM compiler and system library
Note: building BOINC Manager 7.3.0 and later requires the OS 10.8 SDK or later.\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
\cf0 BOINC depends on seven third-party libraries: wxWidgets-3.1.0, c-ares-1.13.0, curl-7.58.0, openssl-1.1.0g, freetype-2.9 and ftgl-2.1.3~rc5. You can obtain the source files from the following URLs. Clicking on the first URL of each pair will download the tar file. The second URL will open the third party\'92s home web page. On Mac OS X the tar file will usually be downloaded into the Downloads folder. You will need to expand the tar files by double-clicking on them, which will create a folder and place the appropriate files into that folder. You will need to move these folders later.\
\cf0 BOINC depends on seven third-party libraries: wxWidgets-3.1.0, c-ares-1.13.0, curl-7.73.0, openssl-1.1.0l, freetype-2.9 and ftgl-2.1.3~rc5. You can obtain the source files from the following URLs. Clicking on the first URL of each pair will download the tar file. The second URL will open the third party\'92s home web page. On Mac OS X the tar file will usually be downloaded into the Downloads folder. You will need to expand the tar files by double-clicking on them, which will create a folder and place the appropriate files into that folder. You will need to move these folders later.\
\
wxWidgets-3.1.0 (needed only if you are building the BOINC Manager):\
{\field{\*\fldinst{HYPERLINK "https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.0/wxWidgets-3.1.0.tar.bz2"}}{\fldrslt
......@@ -118,10 +118,10 @@ wxWidgets-3.1.0 (needed only if you are building the BOINC Manager):\
\f1\fs26 \
\f0\fs24 \
curl-7.58.0:\
curl-7.73.0:\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
\f1\fs26 \cf0 {\field{\*\fldinst{HYPERLINK "https://curl.haxx.se/download/curl-7.58.0.tar.gz"}}{\fldrslt https://curl.haxx.se/download/curl-7.58.0.tar.gz}}\
\f1\fs26 \cf0 {\field{\*\fldinst{HYPERLINK "https://curl.haxx.se/download/curl-7.73.0.tar.gz"}}{\fldrslt https://curl.haxx.se/download/curl-7.73.0.tar.gz}}\
{\field{\*\fldinst{HYPERLINK "http://curl.haxx.se"}}{\fldrslt http://curl.haxx.se}}\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
......@@ -134,10 +134,10 @@ curl-7.58.0:\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
\f0\fs24 \cf0 openssl-1.1.0g\
\f0\fs24 \cf0 openssl-1.1.0l\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
\f1\fs26 \cf0 {\field{\*\fldinst{HYPERLINK "https://www.openssl.org/source/openssl-1.1.0g.tar.gz"}}{\fldrslt https://www.openssl.org/source/openssl-1.1.0g.tar.gz}}\
\f1\fs26 \cf0 {\field{\*\fldinst{HYPERLINK "https://www.openssl.org/source/openssl-1.1.0l.tar.gz"}}{\fldrslt https://www.openssl.org/source/openssl-1.1.0l.tar.gz}}\
{\field{\*\fldinst{HYPERLINK "http://www.openssl.org/"}}{\fldrslt http://www.openssl.org/}}\
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
......@@ -173,7 +173,7 @@ MAC_OS_X_VERSION_MIN_REQUIRED=1090\
\f0\fs24 \cf0 \
\pard\pardeftab720\sa260\partightenfactor0
\cf0 These are not done automatically by either the Xcode projects which come with wxWidgets-3.1.0, nor the AutoMake scripts supplied with wxWidgets-3.1.0, c-ares-1.13.0, curl-7.58.0, openssl-1.1.0g, freetype-2.9 and ftgl-2.1.3~rc5. So be sure to use our special scripts to build these packages.\
\cf0 These are not done automatically by either the Xcode projects which come with wxWidgets-3.1.0, nor the AutoMake scripts supplied with wxWidgets-3.1.0, c-ares-1.13.0, curl-7.73.0, openssl-1.1.0l, freetype-2.9 and ftgl-2.1.3~rc5. So be sure to use our special scripts to build these packages.\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0
\cf0 [1] Make sure you are logged into the Mac using an account with administrator privileges. Create a parent directory within which to work. In this description; we will call it BOINC_dev, but you can name it anything you wish.\
\
......@@ -183,9 +183,9 @@ MAC_OS_X_VERSION_MIN_REQUIRED=1090\
\f1\fs26 \cf0 c-ares-
\fs24 1.13.0
\fs26 \
curl-7.58.0\
curl-7.73.0\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
\cf0 openssl-1.1.0g\
\cf0 openssl-1.1.0l\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0
\cf0 wxWidgets-3.1.0\
freetype-2.9\
......@@ -242,7 +242,7 @@ If you don't wish to force a full rebuild of everything, omit the -clean argumen
\f0\fs24 command to run them.\
\b Note 2:
\b0 This script tries to build all seven third-party libraries: wxWidgets-3.1.0, c-ares-1.13.0, curl-7.58.0, openssl-1.1.0g, freetype-2.9 and ftgl-2.1.3~rc5. When the script finishes, it will display a warning about any libraries it was unable to build (for example, if you have not downloaded them.) To make it easier to find the error messages, clear the Terminal display and run the script again without
\b0 This script tries to build all seven third-party libraries: wxWidgets-3.1.0, c-ares-1.13.0, curl-7.73.0, openssl-1.1.0l, freetype-2.9 and ftgl-2.1.3~rc5. When the script finishes, it will display a warning about any libraries it was unable to build (for example, if you have not downloaded them.) To make it easier to find the error messages, clear the Terminal display and run the script again without
\f1 -clean
\f0 .\
......@@ -509,9 +509,9 @@ The general instructions in the mac_build folder in the file HowToBuildBOINC_XCo
All of these external programs:\
\
wxWidgets-3.1.0 s-3.1.0.tar.bz2\
curl-7.58.0:\
curl-7.73.0:\
c-ares-1.13.0 (used by curl):\
openssl-1.1.0g\
openssl-1.1.0l\
freetype-2.9 \
ftgl-2.1.3~rc5 \
\
......@@ -520,7 +520,7 @@ Need to go into the top GitHub directory on your system and be unpacked there. O
/Users/<your name>/GitHub/\
\
So that when you build in XCode, they can be found in the existing setup, which looks for them in - for example - \
USER_HEADER_SEARCH_PATHS = ../../curl-7.58.0/include ../../openssl-1.1.0g/include ../lib/**\
USER_HEADER_SEARCH_PATHS = ../../curl-7.73.0/include ../../openssl-1.1.0l/include ../lib/**\
\
I found the existing how-to-build pdf slightly misleading. It could be that to command line build would benefit from having the external libraries in this folder directly above the 'boinc' folder.\
\
......@@ -528,7 +528,7 @@ In my case I have \
/Users/Robert/Documents/GitHub\
/boinc\
/c-ares-1.13.0\
/curl-7.58.0\
/curl-7.73.0\
... and so on for the other required programs.\
\
Below the boinc folder there is of course the 'boinc/mac_build' folder.\
......
......@@ -4338,15 +4338,15 @@
COPY_PHASE_STRIP = NO;
DEPLOYMENT_POSTPROCESSING = YES;
HEADER_SEARCH_PATHS = (
"../../curl-7.58.0/include",
"../../openssl-1.1.0g/include",
"../../curl-7.73.0/include",
"../../openssl-1.1.0l/include",
"../lib/**",
);
INFOPLIST_PREPROCESSOR_DEFINITIONS = "";
LIBRARY_SEARCH_PATHS = (
"../../curl-7.58.0/lib/.libs",
"../../curl-7.73.0/lib/.libs",
"../../c-ares-1.13.0/.libs",
"../../openssl-1.1.0g/",
"../../openssl-1.1.0l/",
);
OTHER_LDFLAGS = (
"-L.",
......@@ -4359,7 +4359,7 @@
);
PRODUCT_NAME = boinc;
STRIP_INSTALLED_PRODUCT = NO;
USER_HEADER_SEARCH_PATHS = "../../curl-7.58.0/include ../../openssl-1.1.0g/include ../lib/**";
USER_HEADER_SEARCH_PATHS = "../../curl-7.73.0/include ../../openssl-1.1.0l/include ../lib/**";
};
name = Deployment;
};
......@@ -4504,15 +4504,15 @@
COPY_PHASE_STRIP = NO;
DEPLOYMENT_POSTPROCESSING = YES;
HEADER_SEARCH_PATHS = (
"../../curl-7.58.0/include",
"../../openssl-1.1.0g/include",
"../../curl-7.73.0/include",
"../../openssl-1.1.0l/include",
"../lib/**",
);
INFOPLIST_PREPROCESSOR_DEFINITIONS = "";
LIBRARY_SEARCH_PATHS = (
"../../curl-7.58.0/lib/.libs",
"../../curl-7.73.0/lib/.libs",
"../../c-ares-1.13.0/.libs",
"../../openssl-1.1.0g/",
"../../openssl-1.1.0l/",
);
OTHER_CFLAGS = (
"-D_THREAD_SAFE",
......@@ -4531,7 +4531,7 @@
);
PRODUCT_NAME = boinc;
STRIP_INSTALLED_PRODUCT = NO;
USER_HEADER_SEARCH_PATHS = "../../curl-7.58.0/include ../../openssl-1.1.0g/include ../lib/**";
USER_HEADER_SEARCH_PATHS = "../../curl-7.73.0/include ../../openssl-1.1.0l/include ../lib/**";
};
name = Development;
};
......
......@@ -37,6 +37,7 @@
# Updated 2/22/18 to avoid APIs not available in earlier versions of OS X
# Updated 1/23/19 use libc++ instead of libstdc++ for Xcode 10 compatibility
# Updated 8/22/20 TO build Apple Silicon / arm64 and x86_64 Universal binary
# Updated 12/24/20 for curl 7.73.0
#
## This script requires OS 10.8 or later
#
......@@ -66,7 +67,7 @@ function patch_curl_config {
cat >> /tmp/curl_config_h_diff1 << ENDOFFILE
--- lib/curl_config.h 2018-02-22 04:21:52.000000000 -0800
+++ lib/curl_config1.h.in 2018-02-22 04:29:56.000000000 -0800
@@ -141,5 +141,5 @@
@@ -165,5 +165,5 @@
/* Define to 1 if you have the __builtin_available function. */
-#define HAVE_BUILTIN_AVAILABLE 1
......@@ -82,7 +83,7 @@ ENDOFFILE
cat >> /tmp/curl_config_h_diff2 << ENDOFFILE
--- lib/curl_config.h 2018-02-22 04:21:52.000000000 -0800
+++ lib/curl_config2.h.in 2018-02-22 04:30:21.000000000 -0800
@@ -144,5 +144,5 @@
@@ -168,5 +168,5 @@
/* Define to 1 if you have the clock_gettime function and monotonic timer. */
-#define HAVE_CLOCK_GETTIME_MONOTONIC 1
......
......@@ -35,6 +35,7 @@
# Updated 1/25/18 for bulding openssl 1.1.0g (updated comemnts only)
# Updated 1/23/19 use libc++ instead of libstdc++ for Xcode 10 compatibility
# Updated 10/20/20 To build Apple Silicon / arm64 and x86_64 Universal binary
# Updated 12/24/20 for openssl-1.1.0l
#
## This script requires OS 10.8 or later
#
......@@ -129,7 +130,7 @@ if [ ! -f Configurations/10-main.conf.orig ]; then
cat >> /tmp/0-main_conf_diff << ENDOFFILE
--- 10-main.conf 2017-11-02 07:29:01.000000000 -0700
+++ 10-main_patched.con2020-10-19 01:34:06.000000000 -0700
@@ -1614,6 +1614,14 @@
@@ -1599,6 +1599,14 @@
perlasm_scheme => "macosx",
shared_ldflag => "-arch x86_64 -dynamiclib",
},
......@@ -272,13 +273,12 @@ if [ $GCC_can_build_arm64 == "yes" ]; then
myScriptDir="${myScriptPath%/*}"
source "${myScriptDir}/dependencyNames.sh"
if [ "${opensslDirName}" != "openssl-1.1.0g" ]; then
if [ "${opensslDirName}" != "openssl-1.1.0l" ]; then
echo "${opensslDirName}"
echo "************ NOTICE ****************"
echo "New version of openssl may have better arm64 darwin support"
echo "See comments in build script buildopenssl.sh for details."
echo "************************************"
return
fi
fi
......
......@@ -23,10 +23,12 @@
## This file is usually source'ed by scripts that build the dependencies.
##
## Update this file and the Xcode project build settings when upgrading
## to a newer version of one of these libraries. Note that the scripts
## buildcurl,sh and buildWxMac.sh contain code to patch source files
## for their respective libraries, so they may need to be modified
## for new versions of those source files.
## to a newer version of one of these libraries.
##
## ** NOTE ** the scripts buildc-ares.sh, buildcurl.sh, buildopenssl.sh
## and buildWxMac.sh contain code to patch source files for their
## respective libraries, so they may need to be modified for new versions
## of those source files.
##
## To ensure that rebuilds of older versions of BOINC always use the
## same versions of the third party libraries as the original builds,
......@@ -35,17 +37,17 @@
## build settings.
##
opensslDirName="openssl-1.1.0g"
opensslFileName="openssl-1.1.0g.tar.gz"
opensslURL="https://www.openssl.org/source/openssl-1.1.0g.tar.gz"
opensslDirName="openssl-1.1.0l"
opensslFileName="openssl-1.1.0l.tar.gz"
opensslURL="https://www.openssl.org/source/openssl-1.1.0l.tar.gz"
caresDirName="c-ares-1.13.0"
caresFileName="c-ares-1.13.0.tar.gz"
caresURL="https://c-ares.haxx.se/download/c-ares-1.13.0.tar.gz"
curlDirName="curl-7.58.0"
curlFileName="curl-7.58.0.tar.gz"
curlURL="https://curl.haxx.se/download/curl-7.58.0.tar.gz"
curlDirName="curl-7.73.0"
curlFileName="curl-7.73.0.tar.gz"
curlURL="https://curl.haxx.se/download/curl-7.73.0.tar.gz"
wxWidgetsDirName="wxWidgets-3.1.0"
wxWidgetsFileName="wxWidgets-3.1.0.tar.bz2"
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment