Magellan Linux

Contents of /trunk/include/python.sminc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 33631 - (show annotations) (download)
Thu Aug 10 15:18:55 2023 UTC (9 months, 4 weeks ago) by niro
File size: 5096 byte(s)
-support pyproject.toml sources with python-pip
1 # $Id$
2
3 # simulate the old behavior
4 if [[ -z ${MAGE_PYTHON_EXEC} ]]
5 then
6 MAGE_PYTHON_EXEC="python"
7
8 SDEPEND="${SDEPEND}
9 >= dev-lang/python-3"
10 fi
11
12 # call meson include in the smage2, to prevent unnecessary dependencies
13 #sminclude meson
14
15 # get the major.minor current installed python version
16 # -> ex 2.4
17 mget-python-version()
18 {
19 local pyver
20 # pyver="$(${MAGE_PYTHON_EXEC} -V 2>&1 | cut -d' ' -f2 | cut -d. -f1-2)"
21 pyver=$(${MAGE_PYTHON_EXEC} -c "import sys ; print (sys.version[:3])")
22 [[ -z ${pyver} ]] && return 1
23 echo "${pyver}"
24 return 0
25 }
26
27 mget-python-libdir()
28 {
29 local pylib
30 pylib=$(${MAGE_PYTHON_EXEC} -c 'import sysconfig; print (sysconfig.get_path("platlib"))')
31 [[ -z ${pylib} ]] && return 1
32 echo "${pylib}"
33 return 0
34 }
35
36 mget-python-includedir()
37 {
38 local pyinc
39 pyinc=$(${MAGE_PYTHON_EXEC} -c 'import sysconfig; print (sysconfig.get_path("platinclude"))')
40 [[ -z ${pyinc} ]] && return 1
41 echo "${pyinc}"
42 return 0
43 }
44
45 # fallback functions to support old smage scripts, dropped in near future
46 get_python_version()
47 {
48 echo -e "${COLYELLOW}Warning: get_python_version() is depcrecated, please use mget-python-version() instead${COLDEFAULT}" >&2
49 mget-python-version
50 }
51 get_python_libdir()
52 {
53 echo -e "${COLYELLOW}Warning: get_python_libdir() is depcrecated, please use mget-python-libdir() instead${COLDEFAULT}" >&2
54 mget-python-libdir
55 }
56 get_python_includedir()
57 {
58 echo -e "${COLYELLOW}Warning: get_python_includedir() is depcrecated, please use mget-python-includedir() instead${COLDEFAULT}" >&2
59 mget-python-includedir
60 }
61
62 python_src_prepare()
63 {
64 munpack ${SRCFILE} || die
65 }
66
67 python_docompile()
68 {
69 if [[ -e pyproject.toml ]]
70 then
71 TMPDIR=${BUILDDIR} ${MAGE_PYTHON_EXEC} \
72 -m pip wheel --wheel-dir dist --no-build-isolation --no-deps --disable-pip-version-check \
73 --no-cache-dir --use-pep517 --no-clean ${PWD} || die
74 elif [[ -e setup.py ]]
75 then
76 ${MAGE_PYTHON_EXEC} setup.py build $@ || die
77 elif [[ -e waf ]]
78 then
79 ${MAGE_PYTHON_EXEC} waf configure --prefix=/usr --libdir=/usr/$(mlibdir) $@ || die
80 ${MAGE_PYTHON_EXEC} waf build $@ || die
81 elif [[ -e meson.build ]]
82 then
83 # never run multilib builds here, multilib will be enabled by python_multilib_src_compile
84 # this honors the logic of other build methods (python, waf, autotools)
85 MULTILIB_BUILD=false meson_configure -D python=${MAGE_PYTHON_EXEC} || die
86 MULTILIB_BUILD=false mninja || die
87 elif [[ -e configure ]]
88 then
89 if [[ ${MULTILIB_BUILD} = true ]] && [[ ! -z $(typeset -f oldmconfigure) ]] && [[ ! -z $(typeset -f oldmmake) ]]
90 then
91 oldmconfigure $@ || die
92 oldmmake || die
93 else
94 mconfigure $@ || die
95 mmake || die
96 fi
97 elif [[ -e install.py ]]
98 then
99 echo "install.py found - nothing to compile here."
100 else
101 mmake || die
102 fi
103 }
104
105 python_doinstall()
106 {
107 if [[ -e pyproject.toml ]]
108 then
109 TMPDIR=${BUILDDIR} ${MAGE_PYTHON_EXEC} \
110 -m pip install --root ${BINDIR} --no-index --no-deps --disable-pip-version-check \
111 --no-cache-dir --use-pep517 --ignore-installed --no-warn-script-location $(find dist -name \*.whl) || die
112 elif [[ -e setup.py ]]
113 then
114 ${MAGE_PYTHON_EXEC} setup.py install --no-compile --root ${BINDIR} $@ || die
115 elif [[ -e waf ]]
116 then
117 ${MAGE_PYTHON_EXEC} waf install --destdir=${BINDIR} $@ || die
118 elif [[ -e meson.build ]]
119 then
120 # never run multilib builds here, multilib will be enabled by python_multilib_src_compile
121 # this honors the logic of other build methods (python, waf, autotools)
122 MULTILIB=false DESTDIR=${BINDIR} mninja install || die
123 elif [[ -e install.py ]]
124 then
125 ${MAGE_PYTHON_EXEC} install.py --prefix=/usr --files-only --destdir=${BINDIR} $@ || die
126 else
127 if [[ ${MULTILIB_BUILD} = true ]] && [[ ! -z $(typeset -f oldmconfigure) ]] && [[ ! -z $(typeset -f oldmmake) ]]
128 then
129 oldmmake DESTDIR=${BINDIR} install || die
130 else
131 mmake DESTDIR=${BINDIR} install || die
132 fi
133 fi
134 }
135
136 python_src_compile()
137 {
138 cd ${SRCDIR}
139 python_docompile $@ || die
140 }
141
142 python_multilib_src_compile()
143 {
144 local abi
145 local saved_SRCDIR="${SRCDIR}"
146
147 for abi in ${MULTILIB_ABIS}
148 do
149 SRCDIR="${saved_SRCDIR}-${abi}/${SRCSUBDIR}"
150 cd ${SRCDIR}
151 abi-${abi} python_docompile $@ || die
152 done
153 SRCDIR="${saved_SRCDIR}"
154 }
155
156 python_src_check()
157 {
158 return 0
159 }
160
161 python_src_install()
162 {
163 cd ${SRCDIR}
164 python_doinstall $@ || die
165
166 local i
167 for i in ABOUT-NLS AUTHORS BUGS CHANGES ChangeLog COPYING \
168 FAQ LICENSE NEWS README* TODO PKG-INFO
169 do
170 if [ -f ${SRCDIR}/${i} ]
171 then
172 minstalldocs ${i} || die
173 fi
174 done
175 }
176
177 python_multilib_src_install()
178 {
179 local abi
180 local saved_SRCDIR="${SRCDIR}"
181
182 for abi in ${MULTILIB_ABIS}
183 do
184 SRCDIR="${saved_SRCDIR}-${abi}/${SRCSUBDIR}"
185 cd ${SRCDIR}
186 abi-${abi} python_doinstall $@ || die
187
188 local i
189 for i in ABOUT-NLS AUTHORS BUGS CHANGES ChangeLog COPYING \
190 FAQ LICENSE NEWS README* TODO PKG-INFO
191 do
192 if [ -f ${SRCDIR}/${i} ]
193 then
194 oldminstalldocs ${i} || die
195 fi
196 done
197 done
198 SRCDIR="${saved_SRCDIR}"
199 }
200
201 export_inherits python src_prepare src_check
202 if [[ ${MULTILIB_BUILD} = true ]]
203 then
204 export_inherits python_multilib src_compile src_install
205 else
206 export_inherits python src_compile src_install
207 fi