ColdWindScholar / MIO-KITCHEN-SOURCE

An Android Rom Tool in python
GNU Affero General Public License v3.0
279 stars 52 forks source link

[Arch Linux] Unable to pack or unpack due to "permission denied" #22

Closed vbajs closed 6 months ago

vbajs commented 7 months ago

MIO-KITCHEN Source was used @ 2a9922ffacb41c16c18c95c05909861c742ab00e Running Arch linux and did the following steps to run

git clone https://github.com/ColdWindScholar/MIO-KITCHEN-SOURCE && cd MIO-KITCHEN-SOURCE
sudo pacman -S tk
python -m venv venv
source ./venv/bin/activate
pip install -r requirements.txt
python tool.py

When attempting to pack any partition as either ext4 with the option to use MK2FS+ESDROID or EROFS, the following error occurs

ERROR 0x13
Value:__name__=__main__
Value:__doc__=None
Value:__package__=None
Value:__loader__=<_frozen_importlib_external.SourceFileLoader object at 0x72baf4212e90>
Value:__spec__=None
Value:__annotations__={}
Value:__builtins__=<module 'builtins' (built-in)>
Value:__file__=/run/media/vbajs/Data/ak/MIO-KITCHEN-SOURCE-linux/tool.py
Value:__cached__=None
Value:mmap=<module 'mmap' from '/usr/lib/python3.11/lib-dynload/mmap.cpython-311-x86_64-linux-gnu.so'>
Value:platform=<module 'platform' from '/usr/lib/python3.11/platform.py'>
Value:subprocess=<module 'subprocess' from '/usr/lib/python3.11/subprocess.py'>
Value:wraps=<function wraps at 0x72baf3d89260>
Value:AI_engine=<module 'AI_engine' from '/run/media/vbajs/Data/ak/MIO-KITCHEN-SOURCE-linux/AI_engine.py'>
Value:ext4=<module 'ext4' from '/run/media/vbajs/Data/ak/MIO-KITCHEN-SOURCE-linux/ext4.py'>
Value:json=<module 'json' from '/usr/lib/python3.11/json/__init__.py'>
Value:os=<module 'os' (frozen)>
Value:shlex=<module 'shlex' from '/usr/lib/python3.11/shlex.py'>
Value:sys=<module 'sys' (built-in)>
Value:time=<module 'time' (built-in)>
Value:tk=<module 'tkinter' from '/usr/lib/python3.11/tkinter/__init__.py'>
Value:ConfigParser=<class 'configparser.ConfigParser'>
Value:openurl=<function open at 0x72baf25cd440>
Value:extra=<module 'extra' from '/run/media/vbajs/Data/ak/MIO-KITCHEN-SOURCE-linux/extra.py'>
Value:utils=<module 'utils' from '/run/media/vbajs/Data/ak/MIO-KITCHEN-SOURCE-linux/utils.py'>
Value:re=<module 're' from '/usr/lib/python3.11/re/__init__.py'>
Value:contextpatch=<module 'contextpatch' from '/run/media/vbajs/Data/ak/MIO-KITCHEN-SOURCE-linux/contextpatch.py'>
Value:fspatch=<module 'fspatch' from '/run/media/vbajs/Data/ak/MIO-KITCHEN-SOURCE-linux/fspatch.py'>
Value:symlink=<built-in function symlink>
Value:updaterutil=<class 'extra.updaterutil'>
Value:script2fs_context=<function script2fs_context at 0x72baf25ce200>
Value:cz=<function cz at 0x72baf275f380>
Value:jzxs=<function jzxs at 0x72baf275f6a0>
Value:v_code=<function v_code at 0x72baf275f240>
Value:gettype=<function gettype at 0x72baf38e79c0>
Value:findfile=<function findfile at 0x72baf275f560>
Value:findfolder=<function findfolder at 0x72baf275f600>
Value:sdat2img=<class 'utils.sdat2img'>
Value:filedialog=<module 'mkc_filedialog' from '/run/media/vbajs/Data/ak/MIO-KITCHEN-SOURCE-linux/mkc_filedialog.py'>
Value:zipfile=<module 'zipfile' from '/usr/lib/python3.11/zipfile.py'>
Value:BytesIO=<class '_io.BytesIO'>
Value:StringIO=<class '_io.StringIO'>
Value:machine=<function machine at 0x72baf3a99260>
Value:TclError=<class '_tkinter.TclError'>
Value:NO=0
Value:FALSE=0
Value:OFF=0
Value:YES=1
Value:TRUE=1
Value:ON=1
Value:N=n
Value:S=s
Value:W=w
Value:E=e
Value:NW=nw
Value:SW=sw
Value:NE=ne
Value:SE=se
Value:NS=ns
Value:EW=ew
Value:NSEW=nsew
Value:CENTER=center
Value:NONE=none
Value:X=x
Value:Y=y
Value:BOTH=both
Value:LEFT=left
Value:TOP=top
Value:RIGHT=right
Value:BOTTOM=bottom
Value:RAISED=raised
Value:SUNKEN=sunken
Value:FLAT=flat
Value:RIDGE=ridge
Value:GROOVE=groove
Value:SOLID=solid
Value:HORIZONTAL=horizontal
Value:VERTICAL=vertical
Value:NUMERIC=numeric
Value:CHAR=char
Value:WORD=word
Value:BASELINE=baseline
Value:INSIDE=inside
Value:OUTSIDE=outside
Value:SEL=sel
Value:SEL_FIRST=sel.first
Value:SEL_LAST=sel.last
Value:END=end
Value:INSERT=insert
Value:CURRENT=current
Value:ANCHOR=anchor
Value:ALL=all
Value:NORMAL=normal
Value:DISABLED=disabled
Value:ACTIVE=active
Value:HIDDEN=hidden
Value:CASCADE=cascade
Value:CHECKBUTTON=checkbutton
Value:COMMAND=command
Value:RADIOBUTTON=radiobutton
Value:SEPARATOR=separator
Value:SINGLE=single
Value:BROWSE=browse
Value:MULTIPLE=multiple
Value:EXTENDED=extended
Value:DOTBOX=dotbox
Value:UNDERLINE=underline
Value:PIESLICE=pieslice
Value:CHORD=chord
Value:ARC=arc
Value:FIRST=first
Value:LAST=last
Value:BUTT=butt
Value:PROJECTING=projecting
Value:ROUND=round
Value:BEVEL=bevel
Value:MITER=miter
Value:MOVETO=moveto
Value:SCROLL=scroll
Value:UNITS=units
Value:PAGES=pages
Value:TkVersion=8.6
Value:TclVersion=8.6
Value:READABLE=2
Value:WRITABLE=4
Value:EXCEPTION=8
Value:EventType=<enum 'EventType'>
Value:Event=<class 'tkinter.Event'>
Value:NoDefaultRoot=<function NoDefaultRoot at 0x72baf3c80fe0>
Value:Variable=<class 'tkinter.Variable'>
Value:StringVar=<class 'tkinter.StringVar'>
Value:IntVar=<class 'tkinter.IntVar'>
Value:DoubleVar=<class 'tkinter.DoubleVar'>
Value:BooleanVar=<class 'tkinter.BooleanVar'>
Value:mainloop=<function mainloop at 0x72baf3c81440>
Value:getint=<class 'int'>
Value:getdouble=<class 'float'>
Value:getboolean=<function getboolean at 0x72baf3c82840>
Value:Misc=<class 'tkinter.Misc'>
Value:CallWrapper=<class 'tkinter.CallWrapper'>
Value:XView=<class 'tkinter.XView'>
Value:YView=<class 'tkinter.YView'>
Value:Wm=<class 'tkinter.Wm'>
Value:Tk=<class 'tkinter.Tk'>
Value:Tcl=<function Tcl at 0x72baf3c82980>
Value:Pack=<class 'tkinter.Pack'>
Value:Place=<class 'tkinter.Place'>
Value:Grid=<class 'tkinter.Grid'>
Value:BaseWidget=<class 'tkinter.BaseWidget'>
Value:Widget=<class 'tkinter.Widget'>
Value:Toplevel=<class 'tkinter.Toplevel'>
Value:Button=<class 'tkinter.Button'>
Value:Canvas=<class 'tkinter.Canvas'>
Value:Checkbutton=<class 'tkinter.Checkbutton'>
Value:Entry=<class 'tkinter.Entry'>
Value:Frame=<class 'tkinter.Frame'>
Value:Label=<class 'tkinter.Label'>
Value:Listbox=<class 'tkinter.Listbox'>
Value:Menu=<class 'tkinter.Menu'>
Value:Menubutton=<class 'tkinter.Menubutton'>
Value:Message=<class 'tkinter.Message'>
Value:Radiobutton=<class 'tkinter.Radiobutton'>
Value:Scale=<class 'tkinter.Scale'>
Value:Scrollbar=<class 'tkinter.Scrollbar'>
Value:Text=<class 'tkinter.Text'>
Value:OptionMenu=<class 'tkinter.OptionMenu'>
Value:Image=<module 'PIL.Image' from '/run/media/vbajs/Data/ak/MIO-KITCHEN-SOURCE-linux/venv/lib/python3.11/site-packages/PIL/Image.py'>
Value:PhotoImage=<class 'tkinter.PhotoImage'>
Value:BitmapImage=<class 'tkinter.BitmapImage'>
Value:image_names=<function image_names at 0x72baf38d3100>
Value:image_types=<function image_types at 0x72baf38e4d60>
Value:Spinbox=<class 'tkinter.Spinbox'>
Value:LabelFrame=<class 'tkinter.LabelFrame'>
Value:PanedWindow=<class 'tkinter.PanedWindow'>
Value:ttk=<module 'tkinter.ttk' from '/usr/lib/python3.11/tkinter/ttk.py'>
Value:messagebox=<module 'tkinter.messagebox' from '/usr/lib/python3.11/tkinter/messagebox.py'>
Value:rmtree=<function rmtree at 0x72baf39279c0>
Value:copy=<function copy at 0x72baf3927420>
Value:move=<function move at 0x72baf3927b00>
Value:requests=<module 'requests' from '/run/media/vbajs/Data/ak/MIO-KITCHEN-SOURCE-linux/venv/lib/python3.11/site-packages/requests/__init__.py'>
Value:sv_ttk=<module 'sv_ttk' from '/run/media/vbajs/Data/ak/MIO-KITCHEN-SOURCE-linux/venv/lib/python3.11/site-packages/sv_ttk/__init__.py'>
Value:ImageTk=<module 'PIL.ImageTk' from '/run/media/vbajs/Data/ak/MIO-KITCHEN-SOURCE-linux/venv/lib/python3.11/site-packages/PIL/ImageTk.py'>
Value:imgextractor=<module 'imgextractor' from '/run/media/vbajs/Data/ak/MIO-KITCHEN-SOURCE-linux/imgextractor.py'>
Value:lpunpack=<module 'lpunpack' from '/run/media/vbajs/Data/ak/MIO-KITCHEN-SOURCE-linux/lpunpack.py'>
Value:mkdtboimg=<module 'mkdtboimg' from '/run/media/vbajs/Data/ak/MIO-KITCHEN-SOURCE-linux/mkdtboimg.py'>
Value:ozipdecrypt=<module 'ozipdecrypt' from '/run/media/vbajs/Data/ak/MIO-KITCHEN-SOURCE-linux/ozipdecrypt.py'>
Value:payload_dumper=<module 'payload_dumper' from '/run/media/vbajs/Data/ak/MIO-KITCHEN-SOURCE-linux/payload_dumper.py'>
Value:splituapp=<module 'splituapp' from '/run/media/vbajs/Data/ak/MIO-KITCHEN-SOURCE-linux/splituapp.py'>
Value:dti=<built-in function perf_counter>
Value:ofp_qc_decrypt=<module 'ofp_qc_decrypt' from '/run/media/vbajs/Data/ak/MIO-KITCHEN-SOURCE-linux/ofp_qc_decrypt.py'>
Value:ofp_mtk_decrypt=<module 'ofp_mtk_decrypt' from '/run/media/vbajs/Data/ak/MIO-KITCHEN-SOURCE-linux/ofp_mtk_decrypt.py'>
Value:editor=<module 'editor' from '/run/media/vbajs/Data/ak/MIO-KITCHEN-SOURCE-linux/editor.py'>
Value:yaml=<module 'yaml' from '/run/media/vbajs/Data/ak/MIO-KITCHEN-SOURCE-linux/venv/lib/python3.11/site-packages/yaml/__init__.py'>
Value:opscrypto=<module 'opscrypto' from '/run/media/vbajs/Data/ak/MIO-KITCHEN-SOURCE-linux/opscrypto.py'>
Value:images=<module 'images' from '/run/media/vbajs/Data/ak/MIO-KITCHEN-SOURCE-linux/images.py'>
Value:json_edit=<class '__main__.json_edit'>
Value:load_car=<class '__main__.load_car'>
Value:cartoon=<__main__.load_car object at 0x72baf1fe1f90>
Value:dev_null=<class '__main__.dev_null'>
Value:Tool=<class '__main__.Tool'>
Value:win=.
Value:start=336.533900213
Value:elocal=/run/media/vbajs/Data/ak/MIO-KITCHEN-SOURCE-linux
Value:settings_file=/run/media/vbajs/Data/ak/MIO-KITCHEN-SOURCE-linux/bin/setting.ini
Value:dn=PY_VAR0
Value:theme=PY_VAR1
Value:language=PY_VAR2
Value:tool_bin=/run/media/vbajs/Data/ak/MIO-KITCHEN-SOURCE-linux/bin/Linux/x86_64/
Value:ModuleError=<class '__main__.ModuleError'>
Value:lang=<class '__main__.lang'>
Value:load=<function load at 0x72baf2771760>
Value:error=<function error at 0x72baf196e480>
Value:welcome=<class '__main__.welcome'>
Value:set_utils=<class '__main__.set_utils'>
Value:settings=<__main__.set_utils object at 0x72baf1975290>
Value:re_folder=<function re_folder at 0x72baf196ef20>
Value:un_dtbo=<function un_dtbo at 0x72baf196e3e0>
Value:pack_dtbo=<function pack_dtbo at 0x72baf196f060>
Value:logo_dump=<function logo_dump at 0x72baf196f1a0>
Value:logo_pack=<function logo_pack at 0x72baf196f2e0>
Value:Process=<class '__main__.Process'>
Value:IconGrid=<class '__main__.IconGrid'>
Value:mpkman=<function mpkman at 0x72baf196f380>
Value:Install_mpk=<class '__main__.Install_mpk'>
Value:packxx=<class '__main__.packxx'>
Value:dbkxyt=<function dbkxyt at 0x72baf196fba0>
Value:packss=<class '__main__.packss'>
Value:packsuper=<function packsuper at 0x72baf19882c0>
Value:StdoutRedirector=<class '__main__.StdoutRedirector'>
Value:call=<function call at 0x72baf1988360>
Value:download_api=<function download_api at 0x72baf19885e0>
Value:download_file=<function download_file at 0x72baf1988680>
Value:jboot=<function jboot at 0x72baf19887c0>
Value:dboot=<function dboot at 0x72baf1988900>
Value:packrom=<function packrom at 0x72baf1988a40>
Value:rdi=<function rdi at 0x72baf1988ae0>
Value:input_=<function input_ at 0x72baf1988b80>
Value:script2fs=<function script2fs at 0x72baf1988c20>
Value:unpackrom=<function unpackrom at 0x72baf1988d60>
Value:rwork=<function rwork at 0x72baf1988e00>
Value:unpack=<function unpack at 0x72baf1988f40>
Value:ask_win=<function ask_win at 0x72baf1988fe0>
Value:dirsize=<class '__main__.dirsize'>
Value:datbr=<function datbr at 0x72baf1989300>
Value:mkerofs=<function mkerofs at 0x72baf19893a0>
Value:make_ext4fs=<function make_ext4fs at 0x72baf19894e0>
Value:mke2fs=<function mke2fs at 0x72baf1989580>
Value:rmdir=<function rmdir at 0x72baf19896c0>
Value:get_all_file_paths=<function get_all_file_paths at 0x72baf1989760>
Value:zip_file=<function zip_file at 0x72baf1989800>
Value:pack_zip=<function pack_zip at 0x72baf19899e0>
Value:dndfile=<function dndfile at 0x72baf1989a80>
Value:xmcd=<class '__main__.xmcd'>
Value:frame3=<class '__main__.frame3'>
Value:unpack_gui=<class '__main__.unpack_gui'>
Value:unpackg=.!labelframe.!notebook.!frame2.!unpack_gui
Value:project_menu=.!labelframe.!notebook.!frame2.!xmcd
Value:img2simg=<function img2simg at 0x72baf12c4a40>
Value:format_conversion=<class '__main__.format_conversion'>

Error File: /run/media/vbajs/Data/ak/MIO-KITCHEN-SOURCE-linux/tool.py

Error Function: packrom

Function Args: ((<tkinter.StringVar object at 0x72baf12d0ed0>, <tkinter.StringVar object at 0x72baf12d0d50>, <tkinter.StringVar object at 0x72baf12d0a10>, <tkinter.IntVar object at 0x72baf12d0f10>, ['system'], <tkinter.IntVar object at 0x72baf12d08d0>, 0, 1, 'Auto', 0, 1), {})

Error Line:131

Reason: PermissionError(13, 'Permission denied')
Attempted but failed workarounds 1. run `tool.py` as sudo We then experience the issue of the python script unable to find tk. 2. `sudo chown -r $USER MIO-KITCHEN-SOURCE` Unforunately does nothing
ColdWindScholar commented 7 months ago

Note:If u cannot run it in linux,you may need do "chmod a+x ./*"

vbajs commented 7 months ago

Note:If u cannot run it in linux,you may need do "chmod a+x ./*"

Unfortunately, this has done nothing. Also, the issue needs to be updated now to also indicate that this is also effecting unpacking too

vbajs commented 6 months ago

A month late, but a proper solution for those who are experiencing this

chmod +x bin/Linux/x86_64/*

Looks like chmod doesn't really recursively set execute permission throughout the entire directory Credits to @ookiineko for finding this and sending it on the telegram group (linked in README)

ghost commented 6 months ago

Looks like chmod doesn't really recursively set execute permission throughout the entire directory

in fact, i think this is a bug in the repository, binary files dont have executable permission by default, unless you run the build.py to produce a binary distribution. btw, maybe you can also use chmod -R +x YOUR_DIR to change the permissons recursively

ghost commented 6 months ago

if execution permission is missing, maybe the tool will also break on macos when running directly from source, @ColdWindScholar, maybe change the file mode for binaries in this repository (by doing chmod +x for once and commit on a posix machine)

in fact i think changing it in tree is reasonable, since we also want to support running the tool without building, and no need to make the source tree dirty by doing the chmod locally, since i have also encountered this problem on my linux machine while testing with the locales lately

ghost commented 6 months ago

should be fixed by the pr

ghost commented 6 months ago

now the chmod workaround should be no longer needed