diff --git a/pythonforandroid/bootstraps/common/build/src/main/java/org/kivy/android/PythonUtil.java b/pythonforandroid/bootstraps/common/build/src/main/java/org/kivy/android/PythonUtil.java index 5bc23bacf4..cc04d83f6b 100644 --- a/pythonforandroid/bootstraps/common/build/src/main/java/org/kivy/android/PythonUtil.java +++ b/pythonforandroid/bootstraps/common/build/src/main/java/org/kivy/android/PythonUtil.java @@ -55,6 +55,7 @@ protected static ArrayList getLibraries(File libsDir) { libsList.add("python3.8"); libsList.add("python3.9"); libsList.add("python3.10"); + libsList.add("python3.11"); libsList.add("main"); return libsList; } @@ -74,7 +75,7 @@ public static void loadLibraries(File filesDir, File libsDir) { // load, and it has failed, give a more // general error Log.v(TAG, "Library loading error: " + e.getMessage()); - if (lib.startsWith("python3.10") && !foundPython) { + if (lib.startsWith("python3.11") && !foundPython) { throw new RuntimeException("Could not load any libpythonXXX.so"); } else if (lib.startsWith("python")) { continue; diff --git a/pythonforandroid/recipes/cython/__init__.py b/pythonforandroid/recipes/cython/__init__.py index 9135e187ca..b8bac0ae18 100644 --- a/pythonforandroid/recipes/cython/__init__.py +++ b/pythonforandroid/recipes/cython/__init__.py @@ -3,7 +3,7 @@ class CythonRecipe(CompiledComponentsPythonRecipe): - version = '0.29.28' + version = '0.29.36' url = 'https://github.com/cython/cython/archive/{version}.tar.gz' site_packages_name = 'cython' depends = ['setuptools'] diff --git a/pythonforandroid/recipes/hostpython3/__init__.py b/pythonforandroid/recipes/hostpython3/__init__.py index ee53b6ef09..9ba4580019 100644 --- a/pythonforandroid/recipes/hostpython3/__init__.py +++ b/pythonforandroid/recipes/hostpython3/__init__.py @@ -35,7 +35,7 @@ class HostPython3Recipe(Recipe): :class:`~pythonforandroid.python.HostPythonRecipe` ''' - version = '3.10.10' + version = '3.11.5' name = 'hostpython3' build_subdir = 'native-build' diff --git a/pythonforandroid/recipes/python3/__init__.py b/pythonforandroid/recipes/python3/__init__.py index 387922718e..e1107549de 100644 --- a/pythonforandroid/recipes/python3/__init__.py +++ b/pythonforandroid/recipes/python3/__init__.py @@ -56,7 +56,7 @@ class Python3Recipe(TargetPythonRecipe): :class:`~pythonforandroid.python.GuestPythonRecipe` ''' - version = '3.10.10' + version = '3.11.5' url = 'https://www.python.org/ftp/python/{version}/Python-{version}.tgz' name = 'python3' @@ -71,7 +71,7 @@ class Python3Recipe(TargetPythonRecipe): # Python 3.8.1 & 3.9.X ('patches/py3.8.1.patch', version_starts_with("3.8")), ('patches/py3.8.1.patch', version_starts_with("3.9")), - ('patches/py3.8.1.patch', version_starts_with("3.10")) + ('patches/py3.8.1.patch', version_starts_with("3.10")), ] if shutil.which('lld') is not None: @@ -79,7 +79,8 @@ class Python3Recipe(TargetPythonRecipe): ("patches/py3.7.1_fix_cortex_a8.patch", version_starts_with("3.7")), ("patches/py3.8.1_fix_cortex_a8.patch", version_starts_with("3.8")), ("patches/py3.8.1_fix_cortex_a8.patch", version_starts_with("3.9")), - ("patches/py3.8.1_fix_cortex_a8.patch", version_starts_with("3.10")) + ("patches/py3.8.1_fix_cortex_a8.patch", version_starts_with("3.10")), + ("patches/py3.11.4_fix_cortex_a8.patch", version_starts_with("3.11")) ] depends = ['hostpython3', 'sqlite3', 'openssl', 'libffi'] @@ -101,7 +102,12 @@ class Python3Recipe(TargetPythonRecipe): 'ac_cv_header_sys_eventfd_h=no', '--prefix={prefix}', '--exec-prefix={exec_prefix}', - '--enable-loadable-sqlite-extensions') + '--enable-loadable-sqlite-extensions' + ) + + if version_starts_with("3.11"): + configure_args += ('--with-build-python={python_host_bin}',) + '''The configure arguments needed to build the python recipe. Those are used in method :meth:`build_arch` (if not overwritten like python3's recipe does). @@ -218,6 +224,13 @@ def get_recipe_env(self, arch=None, with_flags_in_cc=True): else: warning('lld not found, linking without it. ' 'Consider installing lld if linker errors occur.') + + if 'MAKEFLAGS' in env.keys() and version_starts_with("3.11"): + if "-j" in env['MAKEFLAGS']: + __ = env['MAKEFLAGS'].split(" ") + __.pop(__.index("-j") + 1) # -j 10, here pop 10 + __.pop(__.index("-j")) # here pop '-j' + env["MAKEFLAGS"] = " ".join(__) return env @@ -323,12 +336,17 @@ def build_arch(self, arch): *(' '.join(self.configure_args).format( android_host=env['HOSTARCH'], android_build=android_build, + python_host_bin=join(self.get_recipe( + 'host' + self.name, self.ctx + ).get_path_to_python(), "python3"), prefix=sys_prefix, exec_prefix=sys_exec_prefix)).split(' '), _env=env) + # disable parallel build on 3.11 to fix: + # ld: error: unable to find library -lpython3.11 shprint( - sh.make, 'all', '-j', str(cpu_count()), + sh.make, 'all', '-j', (str(cpu_count()) if not version_starts_with("3.11") else "1"), 'INSTSONAME={lib_name}'.format(lib_name=self._libpython), _env=env ) diff --git a/pythonforandroid/recipes/python3/patches/py3.11.4_fix_cortex_a8.patch b/pythonforandroid/recipes/python3/patches/py3.11.4_fix_cortex_a8.patch new file mode 100644 index 0000000000..e799135915 --- /dev/null +++ b/pythonforandroid/recipes/python3/patches/py3.11.4_fix_cortex_a8.patch @@ -0,0 +1,11 @@ +--- Python-3.11.4/configure 2023-06-07 03:30:27.000000000 +0530 ++++ Python-3.11.4.mod/configure 2023-07-08 11:51:11.031135937 +0530 +@@ -6994,7 +6994,7 @@ + printf "%s\n" "$_arm_arch" >&6; } + if test "$_arm_arch" = 7; then + BASECFLAGS="${BASECFLAGS} -mfloat-abi=softfp -mfpu=vfpv3-d16" +- LDFLAGS="${LDFLAGS} -march=armv7-a -Wl,--fix-cortex-a8" ++ LDFLAGS="${LDFLAGS} -march=armv7-a" + fi + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not Android" >&5 diff --git a/pythonforandroid/recipes/python3/patches/reproducible-buildinfo.diff b/pythonforandroid/recipes/python3/patches/reproducible-buildinfo.diff index 807d180a68..4f5e7a353f 100644 --- a/pythonforandroid/recipes/python3/patches/reproducible-buildinfo.diff +++ b/pythonforandroid/recipes/python3/patches/reproducible-buildinfo.diff @@ -1,13 +1 @@ -# DP: Build getbuildinfo.o with DATE/TIME values when defined - ---- a/Makefile.pre.in -+++ b/Makefile.pre.in -@@ -785,6 +785,8 @@ Modules/getbuildinfo.o: $(PARSER_OBJS) \ - -DGITVERSION="\"`LC_ALL=C $(GITVERSION)`\"" \ - -DGITTAG="\"`LC_ALL=C $(GITTAG)`\"" \ - -DGITBRANCH="\"`LC_ALL=C $(GITBRANCH)`\"" \ -+ $(if $(BUILD_DATE),-DDATE='"$(BUILD_DATE)"') \ -+ $(if $(BUILD_TIME),-DTIME='"$(BUILD_TIME)"') \ - -o $@ $(srcdir)/Modules/getbuildinfo.c - - Modules/getpath.o: $(srcdir)/Modules/getpath.c Makefile +{"payload":{"allShortcutsEnabled":false,"fileTree":{"pythonforandroid/recipes/python3/patches":{"items":[{"name":"py3.7.1_fix-ctypes-util-find-library.patch","path":"pythonforandroid/recipes/python3/patches/py3.7.1_fix-ctypes-util-find-library.patch","contentType":"file"},{"name":"py3.7.1_fix-zlib-version.patch","path":"pythonforandroid/recipes/python3/patches/py3.7.1_fix-zlib-version.patch","contentType":"file"},{"name":"py3.7.1_fix_cortex_a8.patch","path":"pythonforandroid/recipes/python3/patches/py3.7.1_fix_cortex_a8.patch","contentType":"file"},{"name":"py3.8.1.patch","path":"pythonforandroid/recipes/python3/patches/py3.8.1.patch","contentType":"file"},{"name":"py3.8.1_fix_cortex_a8.patch","path":"pythonforandroid/recipes/python3/patches/py3.8.1_fix_cortex_a8.patch","contentType":"file"},{"name":"pyconfig_detection.patch","path":"pythonforandroid/recipes/python3/patches/pyconfig_detection.patch","contentType":"file"},{"name":"reproducible-buildinfo.diff","path":"pythonforandroid/recipes/python3/patches/reproducible-buildinfo.diff","contentType":"file"}],"totalCount":7},"pythonforandroid/recipes/python3":{"items":[{"name":"patches","path":"pythonforandroid/recipes/python3/patches","contentType":"directory"},{"name":"__init__.py","path":"pythonforandroid/recipes/python3/__init__.py","contentType":"file"}],"totalCount":2},"pythonforandroid/recipes":{"items":[{"name":"Pillow","path":"pythonforandroid/recipes/Pillow","contentType":"directory"},{"name":"aiohttp","path":"pythonforandroid/recipes/aiohttp","contentType":"directory"},{"name":"android","path":"pythonforandroid/recipes/android","contentType":"directory"},{"name":"apsw","path":"pythonforandroid/recipes/apsw","contentType":"directory"},{"name":"argon2-cffi","path":"pythonforandroid/recipes/argon2-cffi","contentType":"directory"},{"name":"atom","path":"pythonforandroid/recipes/atom","contentType":"directory"},{"name":"audiostream","path":"pythonforandroid/recipes/audiostream","contentType":"directory"},{"name":"av","path":"pythonforandroid/recipes/av","contentType":"directory"},{"name":"av_codecs","path":"pythonforandroid/recipes/av_codecs","contentType":"directory"},{"name":"bcrypt","path":"pythonforandroid/recipes/bcrypt","contentType":"directory"},{"name":"boost","path":"pythonforandroid/recipes/boost","contentType":"directory"},{"name":"brokenrecipe","path":"pythonforandroid/recipes/brokenrecipe","contentType":"directory"},{"name":"cffi","path":"pythonforandroid/recipes/cffi","contentType":"directory"},{"name":"coverage","path":"pythonforandroid/recipes/coverage","contentType":"directory"},{"name":"cppy","path":"pythonforandroid/recipes/cppy","contentType":"directory"},{"name":"cryptography","path":"pythonforandroid/recipes/cryptography","contentType":"directory"},{"name":"cymunk","path":"pythonforandroid/recipes/cymunk","contentType":"directory"},{"name":"cython","path":"pythonforandroid/recipes/cython","contentType":"directory"},{"name":"decorator","path":"pythonforandroid/recipes/decorator","contentType":"directory"},{"name":"enaml","path":"pythonforandroid/recipes/enaml","contentType":"directory"},{"name":"ethash","path":"pythonforandroid/recipes/ethash","contentType":"directory"},{"name":"evdev","path":"pythonforandroid/recipes/evdev","contentType":"directory"},{"name":"feedparser","path":"pythonforandroid/recipes/feedparser","contentType":"directory"},{"name":"ffmpeg","path":"pythonforandroid/recipes/ffmpeg","contentType":"directory"},{"name":"ffpyplayer","path":"pythonforandroid/recipes/ffpyplayer","contentType":"directory"},{"name":"ffpyplayer_codecs","path":"pythonforandroid/recipes/ffpyplayer_codecs","contentType":"directory"},{"name":"flask","path":"pythonforandroid/recipes/flask","contentType":"directory"},{"name":"fontconfig","path":"pythonforandroid/recipes/fontconfig","contentType":"directory"},{"name":"freetype-py","path":"pythonforandroid/recipes/freetype-py","contentType":"directory"},{"name":"freetype","path":"pythonforandroid/recipes/freetype","contentType":"directory"},{"name":"genericndkbuild","path":"pythonforandroid/recipes/genericndkbuild","contentType":"directory"},{"name":"gevent","path":"pythonforandroid/recipes/gevent","contentType":"directory"},{"name":"greenlet","path":"pythonforandroid/recipes/greenlet","contentType":"directory"},{"name":"groestlcoin_hash","path":"pythonforandroid/recipes/groestlcoin_hash","contentType":"directory"},{"name":"harfbuzz","path":"pythonforandroid/recipes/harfbuzz","contentType":"directory"},{"name":"hostpython3","path":"pythonforandroid/recipes/hostpython3","contentType":"directory"},{"name":"icu","path":"pythonforandroid/recipes/icu","contentType":"directory"},{"name":"ifaddr","path":"pythonforandroid/recipes/ifaddr","contentType":"directory"},{"name":"ifaddrs","path":"pythonforandroid/recipes/ifaddrs","contentType":"directory"},{"name":"jedi","path":"pythonforandroid/recipes/jedi","contentType":"directory"},{"name":"jpeg","path":"pythonforandroid/recipes/jpeg","contentType":"directory"},{"name":"kivy","path":"pythonforandroid/recipes/kivy","contentType":"directory"},{"name":"kivy3","path":"pythonforandroid/recipes/kivy3","contentType":"directory"},{"name":"kiwisolver","path":"pythonforandroid/recipes/kiwisolver","contentType":"directory"},{"name":"lapack","path":"pythonforandroid/recipes/lapack","contentType":"directory"},{"name":"leveldb","path":"pythonforandroid/recipes/leveldb","contentType":"directory"},{"name":"libbz2","path":"pythonforandroid/recipes/libbz2","contentType":"directory"},{"name":"libcurl","path":"pythonforandroid/recipes/libcurl","contentType":"directory"},{"name":"libexpat","path":"pythonforandroid/recipes/libexpat","contentType":"directory"},{"name":"libffi","path":"pythonforandroid/recipes/libffi","contentType":"directory"},{"name":"libgeos","path":"pythonforandroid/recipes/libgeos","contentType":"directory"},{"name":"libglob","path":"pythonforandroid/recipes/libglob","contentType":"directory"},{"name":"libiconv","path":"pythonforandroid/recipes/libiconv","contentType":"directory"},{"name":"liblzma","path":"pythonforandroid/recipes/liblzma","contentType":"directory"},{"name":"libmysqlclient","path":"pythonforandroid/recipes/libmysqlclient","contentType":"directory"},{"name":"libogg","path":"pythonforandroid/recipes/libogg","contentType":"directory"},{"name":"libpcre","path":"pythonforandroid/recipes/libpcre","contentType":"directory"},{"name":"libpq","path":"pythonforandroid/recipes/libpq","contentType":"directory"},{"name":"librt","path":"pythonforandroid/recipes/librt","contentType":"directory"},{"name":"libsecp256k1","path":"pythonforandroid/recipes/libsecp256k1","contentType":"directory"},{"name":"libshine","path":"pythonforandroid/recipes/libshine","contentType":"directory"},{"name":"libsodium","path":"pythonforandroid/recipes/libsodium","contentType":"directory"},{"name":"libtorrent","path":"pythonforandroid/recipes/libtorrent","contentType":"directory"},{"name":"libtribler","path":"pythonforandroid/recipes/libtribler","contentType":"directory"},{"name":"libvorbis","path":"pythonforandroid/recipes/libvorbis","contentType":"directory"},{"name":"libvpx","path":"pythonforandroid/recipes/libvpx","contentType":"directory"},{"name":"libwebp","path":"pythonforandroid/recipes/libwebp","contentType":"directory"},{"name":"libx264","path":"pythonforandroid/recipes/libx264","contentType":"directory"},{"name":"libxml2","path":"pythonforandroid/recipes/libxml2","contentType":"directory"},{"name":"libxslt","path":"pythonforandroid/recipes/libxslt","contentType":"directory"},{"name":"libzbar","path":"pythonforandroid/recipes/libzbar","contentType":"directory"},{"name":"libzmq","path":"pythonforandroid/recipes/libzmq","contentType":"directory"},{"name":"lxml","path":"pythonforandroid/recipes/lxml","contentType":"directory"},{"name":"m2crypto","path":"pythonforandroid/recipes/m2crypto","contentType":"directory"},{"name":"matplotlib","path":"pythonforandroid/recipes/matplotlib","contentType":"directory"},{"name":"msgpack-python","path":"pythonforandroid/recipes/msgpack-python","contentType":"directory"},{"name":"netifaces","path":"pythonforandroid/recipes/netifaces","contentType":"directory"},{"name":"numpy","path":"pythonforandroid/recipes/numpy","contentType":"directory"},{"name":"omemo-backend-signal","path":"pythonforandroid/recipes/omemo-backend-signal","contentType":"directory"},{"name":"omemo","path":"pythonforandroid/recipes/omemo","contentType":"directory"},{"name":"openal","path":"pythonforandroid/recipes/openal","contentType":"directory"},{"name":"opencv","path":"pythonforandroid/recipes/opencv","contentType":"directory"},{"name":"opencv_extras","path":"pythonforandroid/recipes/opencv_extras","contentType":"directory"},{"name":"openssl","path":"pythonforandroid/recipes/openssl","contentType":"directory"},{"name":"pandas","path":"pythonforandroid/recipes/pandas","contentType":"directory"},{"name":"pil","path":"pythonforandroid/recipes/pil","contentType":"directory"},{"name":"png","path":"pythonforandroid/recipes/png","contentType":"directory"},{"name":"preppy","path":"pythonforandroid/recipes/preppy","contentType":"directory"},{"name":"protobuf_cpp","path":"pythonforandroid/recipes/protobuf_cpp","contentType":"directory"},{"name":"psycopg2","path":"pythonforandroid/recipes/psycopg2","contentType":"directory"},{"name":"py3dns","path":"pythonforandroid/recipes/py3dns","contentType":"directory"},{"name":"pyaml","path":"pythonforandroid/recipes/pyaml","contentType":"directory"},{"name":"pybind11","path":"pythonforandroid/recipes/pybind11","contentType":"directory"},{"name":"pycparser","path":"pythonforandroid/recipes/pycparser","contentType":"directory"},{"name":"pycrypto","path":"pythonforandroid/recipes/pycrypto","contentType":"directory"},{"name":"pycryptodome","path":"pythonforandroid/recipes/pycryptodome","contentType":"directory"},{"name":"pydantic","path":"pythonforandroid/recipes/pydantic","contentType":"directory"},{"name":"pygame","path":"pythonforandroid/recipes/pygame","contentType":"directory"},{"name":"pyicu","path":"pythonforandroid/recipes/pyicu","contentType":"directory"},{"name":"pyjnius","path":"pythonforandroid/recipes/pyjnius","contentType":"directory"},{"name":"pyleveldb","path":"pythonforandroid/recipes/pyleveldb","contentType":"directory"},{"name":"pymunk","path":"pythonforandroid/recipes/pymunk","contentType":"directory"},{"name":"pynacl","path":"pythonforandroid/recipes/pynacl","contentType":"directory"},{"name":"pyogg","path":"pythonforandroid/recipes/pyogg","contentType":"directory"},{"name":"pyopenal","path":"pythonforandroid/recipes/pyopenal","contentType":"directory"},{"name":"pyopenssl","path":"pythonforandroid/recipes/pyopenssl","contentType":"directory"},{"name":"pyproj","path":"pythonforandroid/recipes/pyproj","contentType":"directory"},{"name":"pyrxp","path":"pythonforandroid/recipes/pyrxp","contentType":"directory"},{"name":"pysdl2","path":"pythonforandroid/recipes/pysdl2","contentType":"directory"},{"name":"pysha3","path":"pythonforandroid/recipes/pysha3","contentType":"directory"},{"name":"python3","path":"pythonforandroid/recipes/python3","contentType":"directory"},{"name":"pyusb","path":"pythonforandroid/recipes/pyusb","contentType":"directory"},{"name":"pyzbar","path":"pythonforandroid/recipes/pyzbar","contentType":"directory"},{"name":"pyzmq","path":"pythonforandroid/recipes/pyzmq","contentType":"directory"},{"name":"regex","path":"pythonforandroid/recipes/regex","contentType":"directory"},{"name":"reportlab","path":"pythonforandroid/recipes/reportlab","contentType":"directory"},{"name":"ruamel.yaml","path":"pythonforandroid/recipes/ruamel.yaml","contentType":"directory"},{"name":"scipy","path":"pythonforandroid/recipes/scipy","contentType":"directory"},{"name":"scrypt","path":"pythonforandroid/recipes/scrypt","contentType":"directory"},{"name":"sdl2","path":"pythonforandroid/recipes/sdl2","contentType":"directory"},{"name":"sdl2_image","path":"pythonforandroid/recipes/sdl2_image","contentType":"directory"},{"name":"sdl2_mixer","path":"pythonforandroid/recipes/sdl2_mixer","contentType":"directory"},{"name":"sdl2_ttf","path":"pythonforandroid/recipes/sdl2_ttf","contentType":"directory"},{"name":"secp256k1","path":"pythonforandroid/recipes/secp256k1","contentType":"directory"},{"name":"setuptools","path":"pythonforandroid/recipes/setuptools","contentType":"directory"},{"name":"shapely","path":"pythonforandroid/recipes/shapely","contentType":"directory"},{"name":"six","path":"pythonforandroid/recipes/six","contentType":"directory"},{"name":"snappy","path":"pythonforandroid/recipes/snappy","contentType":"directory"},{"name":"spine","path":"pythonforandroid/recipes/spine","contentType":"directory"},{"name":"sqlalchemy","path":"pythonforandroid/recipes/sqlalchemy","contentType":"directory"},{"name":"sqlite3","path":"pythonforandroid/recipes/sqlite3","contentType":"directory"},{"name":"storm","path":"pythonforandroid/recipes/storm","contentType":"directory"},{"name":"sympy","path":"pythonforandroid/recipes/sympy","contentType":"directory"},{"name":"tflite-runtime","path":"pythonforandroid/recipes/tflite-runtime","contentType":"directory"},{"name":"twisted","path":"pythonforandroid/recipes/twisted","contentType":"directory"},{"name":"ujson","path":"pythonforandroid/recipes/ujson","contentType":"directory"},{"name":"vispy","path":"pythonforandroid/recipes/vispy","contentType":"directory"},{"name":"vlc","path":"pythonforandroid/recipes/vlc","contentType":"directory"},{"name":"wsaccel","path":"pythonforandroid/recipes/wsaccel","contentType":"directory"},{"name":"x3dh","path":"pythonforandroid/recipes/x3dh","contentType":"directory"},{"name":"xeddsa","path":"pythonforandroid/recipes/xeddsa","contentType":"directory"},{"name":"zbar","path":"pythonforandroid/recipes/zbar","contentType":"directory"},{"name":"zbarlight","path":"pythonforandroid/recipes/zbarlight","contentType":"directory"},{"name":"zeroconf","path":"pythonforandroid/recipes/zeroconf","contentType":"directory"},{"name":"zope","path":"pythonforandroid/recipes/zope","contentType":"directory"},{"name":"zope_interface","path":"pythonforandroid/recipes/zope_interface","contentType":"directory"},{"name":"__init__.py","path":"pythonforandroid/recipes/__init__.py","contentType":"file"},{"name":"ndghttpsclient","path":"pythonforandroid/recipes/ndghttpsclient","contentType":"file"}],"totalCount":148},"pythonforandroid":{"items":[{"name":"bootstraps","path":"pythonforandroid/bootstraps","contentType":"directory"},{"name":"includes","path":"pythonforandroid/includes","contentType":"directory"},{"name":"recipes","path":"pythonforandroid/recipes","contentType":"directory"},{"name":"tools","path":"pythonforandroid/tools","contentType":"directory"},{"name":"__init__.py","path":"pythonforandroid/__init__.py","contentType":"file"},{"name":"androidndk.py","path":"pythonforandroid/androidndk.py","contentType":"file"},{"name":"archs.py","path":"pythonforandroid/archs.py","contentType":"file"},{"name":"bdistapk.py","path":"pythonforandroid/bdistapk.py","contentType":"file"},{"name":"bootstrap.py","path":"pythonforandroid/bootstrap.py","contentType":"file"},{"name":"build.py","path":"pythonforandroid/build.py","contentType":"file"},{"name":"checkdependencies.py","path":"pythonforandroid/checkdependencies.py","contentType":"file"},{"name":"distribution.py","path":"pythonforandroid/distribution.py","contentType":"file"},{"name":"entrypoints.py","path":"pythonforandroid/entrypoints.py","contentType":"file"},{"name":"graph.py","path":"pythonforandroid/graph.py","contentType":"file"},{"name":"logger.py","path":"pythonforandroid/logger.py","contentType":"file"},{"name":"patching.py","path":"pythonforandroid/patching.py","contentType":"file"},{"name":"prerequisites.py","path":"pythonforandroid/prerequisites.py","contentType":"file"},{"name":"pythonpackage.py","path":"pythonforandroid/pythonpackage.py","contentType":"file"},{"name":"recipe.py","path":"pythonforandroid/recipe.py","contentType":"file"},{"name":"recommendations.py","path":"pythonforandroid/recommendations.py","contentType":"file"},{"name":"toolchain.py","path":"pythonforandroid/toolchain.py","contentType":"file"},{"name":"util.py","path":"pythonforandroid/util.py","contentType":"file"}],"totalCount":22},"":{"items":[{"name":".github","path":".github","contentType":"directory"},{"name":"ci","path":"ci","contentType":"directory"},{"name":"doc","path":"doc","contentType":"directory"},{"name":"pythonforandroid","path":"pythonforandroid","contentType":"directory"},{"name":"testapps","path":"testapps","contentType":"directory"},{"name":"tests","path":"tests","contentType":"directory"},{"name":".coveragerc","path":".coveragerc","contentType":"file"},{"name":".deepsource.toml","path":".deepsource.toml","contentType":"file"},{"name":".dockerignore","path":".dockerignore","contentType":"file"},{"name":".env","path":".env","contentType":"file"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":".projectile","path":".projectile","contentType":"file"},{"name":"CHANGELOG.md","path":"CHANGELOG.md","contentType":"file"},{"name":"Dockerfile","path":"Dockerfile","contentType":"file"},{"name":"LICENSE","path":"LICENSE","contentType":"file"},{"name":"MANIFEST.in","path":"MANIFEST.in","contentType":"file"},{"name":"Makefile","path":"Makefile","contentType":"file"},{"name":"README.md","path":"README.md","contentType":"file"},{"name":"distribute.sh","path":"distribute.sh","contentType":"file"},{"name":"setup.py","path":"setup.py","contentType":"file"},{"name":"tox.ini","path":"tox.ini","contentType":"file"}],"totalCount":21}},"fileTreeProcessingTime":18.537468,"foldersToFetch":[],"reducedMotionEnabled":null,"repo":{"id":2866041,"defaultBranch":"develop","name":"python-for-android","ownerLogin":"kivy","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2011-11-28T09:02:36.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/1266152?v=4","public":true,"private":false,"isOrgOwned":true},"symbolsExpanded":false,"treeExpanded":true,"refInfo":{"name":"develop","listCacheKey":"v0:1694976804.0","canEdit":false,"refType":"branch","currentOid":"4cc12678ba2a1cdcf0aa25a7ae53fc10a422b3d7"},"path":"pythonforandroid/recipes/python3/patches/reproducible-buildinfo.diff","currentUser":null,"blob":{"rawLines":["# DP: Build getbuildinfo.o with DATE/TIME values when defined","","--- a/Makefile.pre.in","+++ b/Makefile.pre.in","@@ -785,6 +785,8 @@ Modules/getbuildinfo.o: $(PARSER_OBJS) \\"," \t -DGITVERSION=\"\\\"`LC_ALL=C $(GITVERSION)`\\\"\" \\"," \t -DGITTAG=\"\\\"`LC_ALL=C $(GITTAG)`\\\"\" \\"," \t -DGITBRANCH=\"\\\"`LC_ALL=C $(GITBRANCH)`\\\"\" \\","+\t $(if $(BUILD_DATE),-DDATE='\"$(BUILD_DATE)\"') \\","+\t $(if $(BUILD_TIME),-DTIME='\"$(BUILD_TIME)\"') \\"," \t -o $@ $(srcdir)/Modules/getbuildinfo.c"," "," Modules/getpath.o: $(srcdir)/Modules/getpath.c Makefile"],"stylingDirectives":[[{"start":0,"end":61,"cssClass":"pl-c"},{"start":0,"end":1,"cssClass":"pl-c"}],[],[{"start":0,"end":21,"cssClass":"pl-md"}],[{"start":0,"end":21,"cssClass":"pl-mi1"}],[{"start":0,"end":19,"cssClass":"pl-mdr"}],[],[],[],[{"start":0,"end":54,"cssClass":"pl-mi1"},{"start":0,"end":1,"cssClass":"pl-mi1"}],[{"start":0,"end":54,"cssClass":"pl-mi1"},{"start":0,"end":1,"cssClass":"pl-mi1"}],[],[],[]],"csv":null,"csvError":null,"dependabotInfo":{"showConfigurationBanner":false,"configFilePath":null,"networkDependabotPath":"/kivy/python-for-android/network/updates","dismissConfigurationNoticePath":"/settings/dismiss-notice/dependabot_configuration_notice","configurationNoticeDismissed":null,"repoAlertsPath":"/kivy/python-for-android/security/dependabot","repoSecurityAndAnalysisPath":"/kivy/python-for-android/settings/security_analysis","repoOwnerIsOrg":true,"currentUserCanAdminRepo":false},"displayName":"reproducible-buildinfo.diff","displayUrl":"https://github.com/kivy/python-for-android/blob/develop/pythonforandroid/recipes/python3/patches/reproducible-buildinfo.diff?raw=true","headerInfo":{"blobSize":"536 Bytes","deleteInfo":{"deleteTooltip":"You must be signed in to make or propose changes"},"editInfo":{"editTooltip":"You must be signed in to make or propose changes"},"ghDesktopPath":"https://desktop.github.com","gitLfsPath":null,"onBranch":true,"shortPath":"807d180","siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Fkivy%2Fpython-for-android%2Fblob%2Fdevelop%2Fpythonforandroid%2Frecipes%2Fpython3%2Fpatches%2Freproducible-buildinfo.diff","isCSV":false,"isRichtext":false,"toc":null,"lineInfo":{"truncatedLoc":"13","truncatedSloc":"11"},"mode":"file"},"image":false,"isCodeownersFile":null,"isPlain":false,"isValidLegacyIssueTemplate":false,"issueTemplateHelpUrl":"https://docs.github.com/articles/about-issue-and-pull-request-templates","issueTemplate":null,"discussionTemplate":null,"language":"Diff","languageID":88,"large":false,"loggedIn":false,"newDiscussionPath":"/kivy/python-for-android/discussions/new","newIssuePath":"/kivy/python-for-android/issues/new","planSupportInfo":{"repoIsFork":null,"repoOwnedByCurrentUser":null,"requestFullPath":"/kivy/python-for-android/blob/develop/pythonforandroid/recipes/python3/patches/reproducible-buildinfo.diff","showFreeOrgGatedFeatureMessage":null,"showPlanSupportBanner":null,"upgradeDataAttributes":null,"upgradePath":null},"publishBannersInfo":{"dismissActionNoticePath":"/settings/dismiss-notice/publish_action_from_dockerfile","dismissStackNoticePath":"/settings/dismiss-notice/publish_stack_from_file","releasePath":"/kivy/python-for-android/releases/new?marketplace=true","showPublishActionBanner":false,"showPublishStackBanner":false},"renderImageOrRaw":false,"richText":null,"renderedFileInfo":null,"shortPath":null,"tabSize":8,"topBannersInfo":{"overridingGlobalFundingFile":false,"globalPreferredFundingPath":null,"repoOwner":"kivy","repoName":"python-for-android","showInvalidCitationWarning":false,"citationHelpUrl":"https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-citation-files","showDependabotConfigurationBanner":false,"actionsOnboardingTip":null},"truncated":false,"viewable":true,"workflowRedirectUrl":null,"symbols":{"timedOut":false,"notAnalyzed":true,"symbols":[]}},"copilotInfo":null,"csrf_tokens":{"/kivy/python-for-android/branches":{"post":"I_dilABfsUIjtk-OfYvQOqSO8h-WeLV7vzD1yHB1IEguJmhVjbpuy6czwDK3SJqrxSJIEVlPdaw2ObY4wAYUDw"},"/repos/preferences":{"post":"V0oug93dkWEWdwCZzBy65kuD95z5pu2guZo08scvDo3pk0lRYOk90TpNHrOmmZVTsWEdcxpakzAIF4crsKK_Tw"}}},"title":"python-for-android/pythonforandroid/recipes/python3/patches/reproducible-buildinfo.diff at develop ยท kivy/python-for-android"} \ No newline at end of file