33# Exit on error, unset variable, or pipe failure
44set -euo pipefail
55
6- # This will be empty for nightly test, and we will clone master branch
7- FLUX_RELEASE_VERSION=${FLUX_RELEASE_VERSION:- 0.78.0}
8- FLUX_VERSION=${FLUX_VERSION:- 0.78.0}
6+ # This must be set
7+ PYTHON_VERSION=${1:- py311}
98
10- if [[ " $( uname) " == " Darwin" ]]; then
11- brew install \
12- autoconf \
13- automake \
14- libtool \
15- make \
16- pkg-config \
17- epoll-shim \
18- libev \
19- zeromq \
20- jansson \
21- lz4 \
22- libarchive \
23- hwloc \
24- sqlite \
25- lua \
26- luarocks \
27- cffi \
28- libyaml \
29- jq
30-
31- # Possibility - install munge with MacPorts
32- # sudo port install munge
33- eval " $( /opt/homebrew/bin/brew shellenv) "
34-
35- # Set the dynamic library path variable for macOS
36- export DYLD_LIBRARY_PATH=/usr/local/lib
37-
38- # Ensure we activate micromamabe that has a pinned version
39- PIP_INSTALL=" /opt/conda/bin/python3 -m pip install"
40- ln -s $( which glibtoolize) /usr/local/bin/libtoolize
41-
42- CPPFLAGS=" -I${HOMEBREW_PREFIX} /include/lua"
43- CPPFLAGS=" -I$( brew --prefix libev) /include ${CPPFLAGS} "
44- CPPFLAGS=" -I$( brew --prefix epoll-shim) /include/libepoll-shim ${CPPFLAGS} "
45- # LDFLAGS=-L${HOMEBREW_PREFIX}/lib
46- PKG_CONFIG_PATH=$( pkg-config --variable pc_path pkg-config)
47- PKG_CONFIG_PATH=$( brew --prefix libarchive) /lib/pkgconfig:${PKG_CONFIG_PATH}
48- PATH=$( brew --prefix libtool) /libexec/gnubin:$PATH
49- export LD_LIBRARY_PATH=" /opt/conda/envs/build/lib:/opt/conda/envs/build/lib64"
50-
51- # Linux block!
52- else
9+ # These will be empty for nightly test, and we will clone master branch
10+ FLUX_RELEASE_VERSION=${2:- 0.78.0}
11+ FLUX_VERSION=${3:- 0.78.0}
12+
13+ if [[ " $( uname) " != " Darwin" ]]; then
5314 export DEBIAN_FRONTEND=noninteractive
5415 export TZ=UTC
5516 sudo ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ | sudo tee /etc/timezone
6425 libzmq3-dev \
6526 libczmq-dev \
6627 libjansson-dev \
67- libmunge-dev \
6828 libncursesw5-dev \
6929 lua5.3 \
7030 liblua5.3-dev \
7636 libs3-dev \
7737 libevent-dev \
7838 libarchive-dev \
79- python3-sphinx \
80- python3-cffi \
8139 libtool \
8240 git \
8341 build-essential \
@@ -86,53 +44,103 @@ else
8644 sudo rm -rf /var/lib/apt/lists/*
8745 sudo ldconfig
8846
89- # Set the dynamic library path variable for Linux. The conda path is for the container.
90- export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/opt/conda/envs/build/lib
47+ # Set the dynamic library path variable for Linux.
48+ export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib
49+ echo " LD_LIBRARY_PATH: ${LD_LIBRARY_PATH} "
9150fi
9251
93- # Ensure we find micromamba environment first
94- # mamba init commands are intolerable so let's do basics ourselves.
95- PIP_INSTALL=" /opt/conda/envs/build/bin/python3 -m pip install"
96- export PATH=" /opt/conda/envs/build/bin:$PATH "
97- export PYTHONPATH=$( find /opt/conda/envs/build -name site-packages)
98- export PYTHON=/opt/conda/envs/build/bin/python3
99- export PYTHON_PREFIX=${PYTHONPATH}
100- export PYTHON_EXEC_PREFIX=${PYTHONPATH}
101- # export LIBS="-L/opt/conda/envs/build/lib:/opt/conda/envs/build/lib64"
102-
10352echo " Found Python $( which python3) "
104- echo " PYTHONPATH: ${PATH} "
10553echo " PATH: ${PATH} "
106- echo " LD_LIBRARY_PATH: ${LD_LIBRARY_PATH} "
10754
10855# Here we can start common setup (we hope)
10956echo " Flux Version for pypi is ${FLUX_VERSION} "
11057if [[ " $( uname) " == " Darwin" ]]; then
58+ PIXI_ROOT=/Users/runner/work/flux-python/flux-python/.pixi
59+ PIXI_ENV=${PIXI_ROOT} /envs/${PYTHON_VERSION}
11160 sed -i ' ' " s/package_version = \" develop\" /package_version = \" $FLUX_VERSION \" /" setup.py
61+ echo $( find /Users/runner/ -name python3) || echo $( find /Users/runner/ -name python)
62+
63+ # Tell where to look for lua.h
64+ CPPFLAGS=" -I${PIXI_ENV} /include"
65+
66+ # This makes me want to kill homebrew and MacOS with fire.
67+ # I know most of these aren't required. I can't remove them because of the ❤️🔥
68+ export PYTHON_SITE_PACKAGES=$( find ${PIXI_ENV} -name site-packages)
69+ export PYTHON_EXEC_PREFIX=${PYTHON_SITE_PACKAGES}
70+ export PYTHON_SITE_PKG=${PYTHON_SITE_PACKAGES}
71+ export PYTHON_PLATFORM_SITE_PKG=${PYTHON_SITE_PACKAGES}
72+ export PYTHON_SITELIB=${PYTHON_SITE_PACKAGES}
73+ export PYTHON_PREFIX=${PYTHON_SITE_PACKAGES}
74+ export PKG_CONFIG_PATH=${PIXI_ENV} /lib/pkgconfig
75+ export PYTHONDIR=${PYTHON_SITE_PACKAGES}
76+
77+ # Set these to empty.
78+ export PYTHON_EXTRA_LDFLAGS=" "
79+ export PYTHON_EXTRA_LIBS=" "
80+
81+ echo " PKG_CONFIG_PATH: ${PKG_CONFIG_PATH} "
82+ echo " PYTHON_PREFIX: ${PYTHON_PREFIX} "
83+ echo " PYTHON_SITE_PACKAGES: ${PYTHON_SITE_PACKAGES} "
84+ echo " PYTHON_EXEC_PREFIX: ${PYTHON_EXEC_PREFIX} "
11285else
86+ PIXI_ROOT=/home/runner/work/flux-python/flux-python/.pixi
87+ export PIXI_ENV=${PIXI_ROOT} /envs/${PYTHON_VERSION}
11388 sed -i " s/package_version = \" develop\" /package_version = \" $FLUX_VERSION \" /" setup.py
89+ CPPFLAGS=" -I${PIXI_ENV} /include"
11490fi
11591
92+ # Can we remove need for setuptools?
93+ export PYTHON=${PIXI_ENV} /bin/python3
94+ export PYTHON_EXECUTABLE=${PIXI_ENV} /bin/python3
95+ export PYTHON_NOVERSIONCHECK=yes
96+ export LUA_CFLAGS=" -I${PIXI_ENV} /include"
97+ export LDFLAGS=" -L${PIXI_ENV} /lib -L${PIXI_ENV} /lib64"
98+ echo " Found lua.h in:\n$( find ${PIXI_ROOT} -name lua.h) " || echo " Did not find lua.h"
99+
116100# Store current directory
117101here=$( pwd)
102+ luarocks install luaposix
118103
119- # Install Python requirements using the OS-specific pip command - allow for ubuntu to be 24.04 or not.
120- # I like how "--break-system-packages" is analogous with --i-acknowledge-i-am-a-terrible-person
104+ # Flux Security --
105+ # Does not have a variant for Mac
121106if [[ " $( uname) " == " Darwin" ]]; then
122- echo " Installing python requirements for MacOS"
123- ${PIP_INSTALL} IPython setuptools ply sphinx cffi pyyaml
124- ${PIP_INSTALL} -r .github/scripts/requirements-dev.txt
107+
108+ LIBSODIUM_VERSION=" 1.0.20"
109+ ZMQ_VERSION=" 4.3.5"
110+
111+ curl -L " https://github.com/jedisct1/libsodium/archive/refs/tags/${LIBSODIUM_VERSION} -RELEASE.tar.gz" -o libsodium.tar.gz
112+ tar -xf libsodium.tar.gz
113+ cd " libsodium-${LIBSODIUM_VERSION} -RELEASE"
114+ ./configure --prefix=${PIXI_ENV}
115+ make -j
116+ sudo make install
117+ cd ..
118+
119+
120+ curl -L " https://github.com/zeromq/libzmq/releases/download/v${ZMQ_VERSION} /zeromq-${ZMQ_VERSION} .tar.gz" -o zeromq.tar.gz
121+ tar -xf zeromq.tar.gz
122+ cd " zeromq-${ZMQ_VERSION} "
123+ CFLAGS=" -Wno-missing-braces" CXXFLAGS=" -Wno-missing-braces" ./configure --prefix=${PIXI_ENV} --with-libsodium
124+ make -j
125+ sudo make install
126+ cd ..
127+
125128else
126- echo " Installing python requirements for Linux"
127- ${PIP_INSTALL} IPython pyyaml || ${PIP_INSTALL} IPython --break-system-packages pyyaml
128- ${PIP_INSTALL} -r .github/scripts/requirements-dev.txt || ${PIP_INSTALL} -r .github/scripts/requirements-dev.txt --break-system-packages
129129
130- # Flux Security --
131- # Does not have a variant for Mac
130+ # Install munge and libmunge
131+ MUNGE_VERSION=" 0.5.16"
132+ curl -L " https://github.com/dun/munge/releases/download/munge-${MUNGE_VERSION} /munge-${MUNGE_VERSION} .tar.xz" -o munge.tar.xz
133+ tar -xf munge.tar.xz
134+ cd " munge-${MUNGE_VERSION} "
135+ ./configure --prefix=/usr
136+ make
137+ sudo make install
138+ cd ..
139+
132140 git clone https://github.com/flux-framework/flux-security ~ /security
133141 cd ~ /security
134142 ./autogen.sh
135- PYTHON_PREFIX=PYTHON_EXEC_PREFIX= ${PYTHON_PREFIX} PYTHON=/opt/conda/bin/python3 ./configure --prefix=/usr/local
143+ ./configure --prefix=/usr/local
136144 make
137145 sudo make install
138146 sudo ldconfig
@@ -149,11 +157,12 @@ chmod +x etc/gen-cmdhelp.py
149157./autogen.sh || echo " No autogen here"
150158
151159if [[ " $( uname) " == " Darwin" ]]; then
152- CPPFLAGS=" $CPPFLAGS " PKG_CONFIG_PATH=$PKG_CONFIG_PATH ./configure --prefix=/usr/local
160+ CPPFLAGS=" $CPPFLAGS " CFLAGS= " ${CPPFLAGS} " LDFLAGS= " ${LDFLAGS} -lzmq -lsodium " PKG_CONFIG_PATH=$PKG_CONFIG_PATH ./configure --prefix=/usr/local || (cp ./config.log ../ && exit 1)
153161 ls ./scripts
154- ./scripts/check-macos.sh || echo " No check-macos.sh "
162+ ./scripts/check-macos.sh || (cp ./config.log ../ && exit 1)
155163else
156- ./configure --prefix=/usr/local
164+ ./configure CPPFLAGS=" $CPPFLAGS " CFLAGS=" ${CPPFLAGS} " LDFLAGS=" ${LDFLAGS} " --prefix=/usr/local
165+ cp ./config.log ../
157166 make VERBOSE=1
158167 sudo make install || true
159168 sudo make install
0 commit comments