Skip to content

Commit fcfb9ba

Browse files
authored
Merge pull request #1 from redBorder/development
Add airflow venv #22338
2 parents 905b097 + 1fd28c1 commit fcfb9ba

File tree

2 files changed

+42
-84
lines changed

2 files changed

+42
-84
lines changed

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.0.1
1+
0.1.0
Lines changed: 41 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -1,115 +1,73 @@
11
%define debug_package %{nil}
2-
%global __brp_strip %{nil}
2+
%define _build_id_links none
33

4-
%global pyenv_root %{__pyenv_root}
5-
%global python_version %{__python_version}
6-
7-
# =====================
8-
# Directories
9-
# =====================
10-
11-
# Airflow
4+
%global pyenv_root /opt/redborder/pyenv
5+
%global python_version 3.11.13
126
%global airflow_dir /opt/airflow
137
%global airflow_venv_path %{airflow_dir}/venv
148

15-
# =====================
16-
# Filtering provides/requires
17-
# =====================
18-
%global __provides_exclude ^python3$|libpython3\.11\.so\.1\.0.*|libpython3\.so.*|libsqlite3.*
19-
%global __requires_exclude ^python3$
9+
%define __brp_strip %{nil}
10+
%global __brp_strip_exclude_from %{airflow_venv_path}/.*
2011

12+
# Exclude provisions and requirements from pyenv and Airflow
13+
%global __provides_exclude ^python3$|libpython3.*|libsqlite3.*
14+
%global __provides_exclude_from %{pyenv_root}/.*|%{airflow_dir}/.*
15+
%global __requires_exclude ^python3$
16+
%global __requires_exclude_from %{pyenv_root}/.*|%{airflow_dir}/.*
2117
%undefine __brp_mangle_shebangs
2218

2319
Name: redborder-malware-pythonpyenv
2420
Version: %{__version}
2521
Release: %{__release}%{?dist}
26-
Summary: Python %{python_version} with pyenv in /opt/redborder/pyenv
22+
Summary: Airflow virtualenv based on Python %{python_version} from redborder-pythonpyenv
2723
License: MIT
2824
ExclusiveArch: x86_64
2925

30-
# =====================
31-
# Sources (vendored)
32-
# =====================
3326
Source0: airflow_requirements.txt
3427

35-
BuildRequires: gcc, gcc-c++, make, zlib-devel, bzip2-devel, readline-devel, sqlite-devel, openssl-devel, xz-devel, libffi-devel, git, curl, autoconf, automake, libtool, gcc-gfortran, autoconf, openblas-devel, wget, unzip, findutils, libvirt-devel, pkgconfig, krb5-devel, mariadb-devel, graphviz-devel, openldap-devel
36-
37-
Requires: bash, openblas-devel
28+
BuildRequires: redborder-pythonpyenv
29+
BuildRequires: krb5-devel, gcc, libffi-devel, openldap-devel, mariadb-devel, graphviz-devel, pkgconfig, wget, unzip, findutils, libvirt-devel
30+
Requires: redborder-pythonpyenv, bash
3831

3932
%description
40-
This package installs pyenv into %{pyenv_root}, Python %{python_version},
41-
and one isolated virtualenvs: for Airflow.
33+
This package installs an isolated Airflow virtualenv at %{airflow_dir},
34+
using the Python %{python_version} provided by redborder-pythonpyenv.
4235

4336
%prep
4437
# No source to unpack
4538

4639
%build
47-
mkdir -p %{pyenv_root}
48-
export PYENV_ROOT=%{pyenv_root}
49-
export PATH="$PYENV_ROOT/bin:$PATH"
50-
51-
# Install pyenv
52-
git clone https://github.com/pyenv/pyenv.git %{pyenv_root}
53-
54-
# Instalar SQLite 3.45.3
55-
SQLITE_VERSION=3.45.3
56-
SQLITE_PREFIX=$PYENV_ROOT/.deps/sqlite
57-
58-
mkdir -p $SQLITE_PREFIX
59-
curl -LO https://www.sqlite.org/2024/sqlite-autoconf-3450300.tar.gz
60-
tar xzf sqlite-autoconf-3450300.tar.gz
61-
cd sqlite-autoconf-3450300
62-
./configure --prefix=$SQLITE_PREFIX
63-
make -j$(nproc)
64-
make install
65-
cd ..
66-
67-
# Export build flags for Python
68-
export CPPFLAGS="-I$SQLITE_PREFIX/include"
69-
export LDFLAGS="-L$SQLITE_PREFIX/lib -Wl,-rpath,$SQLITE_PREFIX/lib"
70-
export LD_RUN_PATH="$SQLITE_PREFIX/lib"
71-
export PKG_CONFIG_PATH="$SQLITE_PREFIX/lib/pkgconfig"
72-
export CONFIGURE_OPTS="--with-ensurepip=install --enable-loadable-sqlite-extensions"
73-
74-
# Build Python
75-
eval "$(%{pyenv_root}/bin/pyenv init -)"
76-
%{pyenv_root}/bin/pyenv install %{python_version}
77-
%{pyenv_root}/bin/pyenv global %{python_version}
78-
PYTHON_BIN=%{pyenv_root}/versions/%{python_version}/bin/python3
79-
80-
$PYTHON_BIN -m pip install --upgrade pip setuptools virtualenv
81-
82-
# Macro to install requirements in a venv
83-
%global install_requirements() \
84-
$PYTHON_BIN -m venv %1 ; \
85-
%1/bin/pip install --upgrade pip setuptools ; \
86-
%1/bin/pip install --no-deps -r %2 \
87-
%{nil}
88-
89-
# =====================
90-
# VENV airflow
91-
# =====================
92-
mkdir -p %{airflow_dir}
93-
$PYTHON_BIN -m virtualenv %{airflow_venv_path}
94-
%{airflow_venv_path}/bin/pip install -r $RPM_SOURCE_DIR/airflow_requirements.txt
95-
96-
%check
9740

9841
%install
99-
# Airflow
10042
mkdir -p %{buildroot}%{airflow_dir}
101-
cp -a %{airflow_dir}/. %{buildroot}%{airflow_dir}/
10243

103-
# =====================
104-
# Strip unnecessary caches
105-
# =====================
106-
find %{buildroot} -name '__pycache__' -type d -exec rm -rf {} +
107-
find %{buildroot} -name '*.pyc' -delete
44+
# Create venv using Python from pyenv
45+
%{pyenv_root}/versions/%{python_version}/bin/python3 -m venv %{buildroot}%{airflow_venv_path}
46+
%{buildroot}%{airflow_venv_path}/bin/pip install --upgrade pip setuptools
47+
48+
# Installation requirements
49+
%{buildroot}%{airflow_venv_path}/bin/pip install --no-cache-dir -r %{SOURCE0}
50+
51+
# Rewrite shebangs for all binaries
52+
find %{buildroot}%{airflow_venv_path}/bin -type f -exec sed -i \
53+
"1 s|^#!.*python3$|#!%{airflow_venv_path}/bin/python3|" {} \;
54+
55+
# Update pyvenv.cfg
56+
sed -i "s|^home = .*|home = %{pyenv_root}/versions/%{python_version}|" \
57+
%{buildroot}%{airflow_venv_path}/pyvenv.cfg
58+
59+
sed -i "s|^command = .*|command = %{pyenv_root}/versions/%{python_version}/bin/python3 -m venv %{airflow_venv_path}|" \
60+
%{buildroot}%{airflow_venv_path}/pyvenv.cfg
61+
62+
# Update activation scripts
63+
for script in activate activate.csh activate.fish; do
64+
sed -i "s|/builddir/build/BUILDROOT/.*%{airflow_venv_path}|%{airflow_venv_path}|g" \
65+
%{buildroot}%{airflow_venv_path}/bin/$script
66+
done
10867

10968
%files
110-
%{pyenv_root}
11169
%{airflow_venv_path}
11270

11371
%changelog
114-
* Mon Sep 22 2025 Vicente Mesa <vimesa@redborder.com>
115-
- Add airflow venv
72+
* Mon Sep 22 2025 Vicente Mesa <vimesa@redborder.com> - 0.0.1
73+
- Create airflow venv

0 commit comments

Comments
 (0)