mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	
		
			
	
	
		
			25 lines
		
	
	
	
		
			713 B
		
	
	
	
		
			Bash
		
	
	
	
	
	
		
		
			
		
	
	
			25 lines
		
	
	
	
		
			713 B
		
	
	
	
		
			Bash
		
	
	
	
	
	
| 
								 | 
							
								#!/bin/bash
							 | 
						||
| 
								 | 
							
								INTERPRETER_UNDER_TEST="$1"
							 | 
						||
| 
								 | 
							
								if [[ ! -x "${INTERPRETER_UNDER_TEST}" ]]; then
							 | 
						||
| 
								 | 
							
								    echo "Interpreter must be the command line argument."
							 | 
						||
| 
								 | 
							
								    exit 4
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								EXECUTABLE="$0" exec "${INTERPRETER_UNDER_TEST}" -E - <<END_OF_PYTHON
							 | 
						||
| 
								 | 
							
								import os
							 | 
						||
| 
								 | 
							
								import zipfile
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace = {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								filename = os.environ['EXECUTABLE']
							 | 
						||
| 
								 | 
							
								print(f'Opening {filename} as a zipfile.')
							 | 
						||
| 
								 | 
							
								with zipfile.ZipFile(filename, mode='r') as exe_zip:
							 | 
						||
| 
								 | 
							
								  for file_info in exe_zip.infolist():
							 | 
						||
| 
								 | 
							
								    data = exe_zip.read(file_info)
							 | 
						||
| 
								 | 
							
								    exec(data, namespace, namespace)
							 | 
						||
| 
								 | 
							
								    break  # Only use the first file in the archive.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								print('Favorite number in executable:', namespace["FAVORITE_NUMBER"])
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Archive contents will be appended after this file. ###
							 | 
						||
| 
								 | 
							
								END_OF_PYTHON
							 |