dragonbuild / dragon Goto Github PK
View Code? Open in Web Editor NEWpip install dragon | A Powerful buildsystem and toolkit currently targeting darwin (iOS/macOS) machines
License: MIT License
pip install dragon | A Powerful buildsystem and toolkit currently targeting darwin (iOS/macOS) machines
License: MIT License
charliewhile@FuckyouBigSal2 Mandy % dragon s
[Dragon] Enter Device IP
192.168.0.48
[Dragon] Enter Port (Leave blank for 22)
KeyError: Missing value in variables array.
''
Press v for detailed debugging output, any other key to exit.
''
File "/Users/charliewhile/.dragonbuild//DragonGen/DragonGen.py", line 937, in <module>
main()
File "/Users/charliewhile/.dragonbuild//DragonGen/DragonGen.py", line 916, in main
outline = generate_ninja_outline(variables)
File "/Users/charliewhile/.dragonbuild//DragonGen/DragonGen.py", line 541, in generate_ninja_outline
rule_list, build_state = rules_and_build_statements(variables)
File "/Users/charliewhile/.dragonbuild//DragonGen/DragonGen.py", line 378, in rules_and_build_statements
filedict = classify({key: variables[key] for key in FILE_RULES})
File "/Users/charliewhile/.dragonbuild//DragonGen/DragonGen.py", line 206, in classify
filedict[{
[Dragon] Build failed
[Dragon] Cleaning Up
The output is the same if a port is specified
echo -e "$(cat control)"
seems to produce desired output. Need to properly check this out tomorrow.
Indicative of a need for a refactor regarding configurations, it gets faaaar too complicated using native typing.
Whenever I try to compile any tweak, I get these errors:
KeyError: Missing value in variables array. 'cc' Press v for detailed debugging output, any other key to exit. 'cc' File "/home/ajaidan0/.dragonbuild//DragonGen/DragonGen.py", line 850, in <module> main() File "/home/ajaidan0/.dragonbuild//DragonGen/DragonGen.py", line 828, in main variables = generate_vars(proj_config, config, default_target) File "/home/ajaidan0/.dragonbuild//DragonGen/DragonGen.py", line 309, in generate_vars ret.update({k: f'$dragondir/toolchain/linux/iphone/bin/$toolchain-prefix' + var_d[k] for k in [ File "/home/ajaidan0/.dragonbuild//DragonGen/DragonGen.py", line 309, in <dictcomp> ret.update({k: f'$dragondir/toolchain/linux/iphone/bin/$toolchain-prefix' + var_d[k] for k in [
Hello, I am trying to use DragonBuild on Arch Linux. When I run the bash script, initially everything appears to be going fine, the script ends with the following errors:
fatal: not a git repository (or any of the parent directories): .git fatal: not a git repository (or any of the parent directories): .git
I notice that I can still run dragon commands, so I attempt to build a package using dragon d
and I get the following result:
We hit an error while generating your package. Unfortunately this error is undocumented. This means that either _kritanta broke something, or you've found a new bug! Regardless, please do reach out to @_kritanta with this info! Press v for detailed debugging output, any other key to exit. Exiting...
I will give the detailed debugging output below:
File "/home/tyler/.dragonbuild//DragonGen/DragonGen.py", line 1100, in <module> main() File "/home/tyler/.dragonbuild//DragonGen/DragonGen.py", line 1042, in main config = yaml.safe_load(f) File "/usr/lib/python3.8/site-packages/yaml/__init__.py", line 162, in safe_load return load(stream, SafeLoader) File "/usr/lib/python3.8/site-packages/yaml/__init__.py", line 114, in load return loader.get_single_data() File "/usr/lib/python3.8/site-packages/yaml/constructor.py", line 49, in get_single_data node = self.get_single_node() File "/usr/lib/python3.8/site-packages/yaml/composer.py", line 39, in get_single_node if not self.check_event(StreamEndEvent): File "/usr/lib/python3.8/site-packages/yaml/parser.py", line 98, in check_event self.current_event = self.state() File "/usr/lib/python3.8/site-packages/yaml/parser.py", line 171, in parse_document_start raise ParserError(None, None, ParserError(None, None, "expected '<document start>', but found '<scalar>'", <yaml.error.Mark object at 0x7fda64a93d90>) expected '<document start>', but found '<scalar>' in "DragonMake", line 6, column 1
Commenting out this line will get it to work for the desperate ones:
https://github.com/DragonBuild/DragonBuild/blob/3b59c890d875cc0176cdd2006db32168a1e03c1d/dragon#L378
I can’t think of where it’s even used or why it’d be needed
When building, I get this:
NoMoreScrollstoTop_CFLAGS = -fobjc-arcdef standardize_file_list(subdir: str, files: list) -> list:
^
SyntaxError: invalid syntax
I get the NoMoreScrollstoTop error even in a different tweak directory.
will pr with a fix at some point
SSH Passwordless Authentication prompt (from setupSSHKey()) will repeatedly be called whenever you run dragon do
until you decline, whether you set it up or not
Whenever the tweak
project type is chosen, in virtually 100% of cases the user intends to link against libsubstrate. A special flag reserved for substrate (or libhooker, just to cover bases) would be best in this case.
Additionally, the prefs
project type also suffers from defaults being overwritten in regards to the "Preferences" framework.
After installing a deb to the device with dragon do
or dragon i
, the temporary directory /var/mobile/dragon/packages/ is created on the device and never deleted.
Figured it's temporary given that it's completely empty.
min repro:
git clone https://github.com/kritantadev/statusviz
cd statusviz
dragon c b
also shows up in dragon test
in multiple
is this new?
If I have a DragonMake containing a type: tweak
module followed by a type: cli
module, the cli executable is wrongly built as a shared library. The reason seems to be that the type definition for tweak
in defaults.yml sets lopts: '-dynamiclib ...'
, and the definition for cli
has no lopts
at all. Instead of causing an empty lopts
, this makes it keep the old value from when it processed the tweak, so it passes -dynamiclib when building the cli executable too.
Putting the cli
module first and the tweak
module second fixes the problem. Setting lopts: ''
in the definition of cli
in defaults.yml also works.
Similarly, the cli module gets wrongly linked to Foundation and CydiaSubstrate if it's defined after the tweak in the DragonMake, but not if it's defined first.
Not entirely sure that this is even an 'issue,' but thought it was worth mentioning ... during the initial install of dragon it will attempt to install ldid:
Installing Dependencies (ldid ). Press Enter to Continue. Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package ldid Installing dependencies failed. You need to manually install: ldid
This is unnecessary as ldid is bundled with whatever toolchain the dev chooses to use.
If you run dragon clean
in any project, a build.ninja file appears regardless of your preference
https://github.com/Luki120/PerfectSpotify
believe it's an issue with cephei headers
Going to try and provide as much useful info as possible here, so apologies in advance for the lengthy posting.
I setup DragonBuild recently and tried to compile a couple of my existing projects (Vinyl & Quorra) with both their existing Makefiles and then with DragonMakefiles and noticed two things:
1) The after-install command always returns null:
Running ''
No command provided.
When trying to log sys.argv[2] in device.py's main(), I got the error "IndexError: list index out of range," which would explain why [2:] comes up empty. I did try looking around some more, but couldn't figure out why [2] doesn't exist (I'm not well versed in python).
2) Preferences do not compile properly:
After compiling both projects with their existing Makefile's, I couldn't get either to show up in settings. After compiling both projects with DragonMakefiles, they showed up in settings, but opening either of them presented a blank page or "There was an error loading the preference bundle for TweakName: The bundle "TweakPrefs.Bundle" couldn't be loaded because it is damaged or missing necessary resources."
Just to make sure I wasn't missing something, I also cloned Signe from your GitHub and compiled it, but had a similar experience: both the after-install command and preference issues were present. And, just to be triple sure, I also asked a friend to try compiling Signe on WSL with DragonBuild and they had an identical experience.
When I try to do dragon do or dragon install I get this error
dpkg: error processing archive /var/mobile/dragon/packages/com.nico671.bettermusicplayer_2.0_iphoneos-arm.deb (--install):
unable to open file '/var/lib/dpkg/tmp.ci//.dragonbuilding': Is a directory
Errors were encountered while processing:
/var/mobile/dragon/packages/com.nico671.bettermusicplayer_2.0_iphoneos-arm.deb
sorry if this is a known issue or its something on my end
When compiling a tweak with a standard Makefile, dragon occasionally fails to adhere to the archs specified. Instead, it seems to default to arm64, arm64e, and armv7, though armv7 wasn't specified in the Makefile.
as we only need a very limited scope of its features.
Project: https://github.com/AirKetchPLAYZ/dragtest/
Command output
[Dragon] [1/4] (0.033) clang++ -arch arm64 -I$DRAGONBUILD/include -I$DRAGONBUILD/vendor/include -I$DRAGONBUILD/include/_fallback -I/headers/ -I. -fmodules -fcxx-modules -fmodule-name=test -fobjc-arc -fbuild-session-file=.dragon/modules/ -fcolor-diagnostics -fmodules-prune-after=345600 -miphoneos-version-min=13.0 -isysroot $DRAGONBUILD/sdks/iPhoneOS.sdk -O0 -fmodules-validate-once-per-build-session -F$DRAGONBUILD/sdks/iPhoneOS.sdk/System/Library/Frameworks -F$DRAGONBUILD/sdks/iPhoneOS.sdk/System/Library/PrivateFrameworks -F$DRAGONBUILD/frameworks -miphoneos-version-min=13.0 -isysroot $DRAGONBUILD/sdks/iPhoneOS.sdk -Wall -fmodules-prune-interval=86400 -framework UIKit -framework Foundation -dynamiclib -ggdb -Xlinker -segalign -Xlinker 4000 -L$DRAGONBUILD/lib -L. -framework CydiaSubstrate -o .dragon/build/test.arm64
FAILED: .dragon/build/test.arm64
clang++ -arch arm64 -I$DRAGONBUILD/include -I$DRAGONBUILD/vendor/include -I$DRAGONBUILD/include/_fallback -I/headers/ -I. -fmodules -fcxx-modules -fmodule-name=test -fobjc-arc -fbuild-session-file=.dragon/modules/ -fcolor-diagnostics -fmodules-prune-after=345600 -miphoneos-version-min=13.0 -isysroot $DRAGONBUILD/sdks/iPhoneOS.sdk -O0 -fmodules-validate-once-per-build-session -F$DRAGONBUILD/sdks/iPhoneOS.sdk/System/Library/Frameworks -F$DRAGONBUILD/sdks/iPhoneOS.sdk/System/Library/PrivateFrameworks -F$DRAGONBUILD/frameworks -miphoneos-version-min=13.0 -isysroot $DRAGONBUILD/sdks/iPhoneOS.sdk -Wall -fmodules-prune-interval=86400 -framework UIKit -framework Foundation -dynamiclib -ggdb -Xlinker -segalign -Xlinker 4000 -L$DRAGONBUILD/lib -L. -framework CydiaSubstrate -o .dragon/build/test.arm64
clang: warning: argument unused during compilation: '-arch arm64' [-Wunused-command-line-argument]
clang: warning: argument unused during compilation: '-F/home/user/.dragonbuild//sdks/iPhoneOS.sdk/System/Library/Frameworks' [-Wunused-command-line-argument]
clang: warning: argument unused during compilation: '-F/home/user/.dragonbuild//sdks/iPhoneOS.sdk/System/Library/PrivateFrameworks' [-Wunused-command-line-argument]
clang: warning: argument unused during compilation: '-F/home/user/.dragonbuild//frameworks' [-Wunused-command-line-argument]
clang: warning: argument unused during compilation: '-dynamiclib' [-Wunused-command-line-argument]
/usr/bin/ld: -f may not be used without -shared
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
[Dragon] Build failed
[Dragon] Cleaning Up
I tried to install a freshly built tweak on my iPhone 7 Plus after building it from my M1 Macbook Pro, and the preferences didn't work.
I think it's fair to note that another tweak of mine that doesn't have preferences, when built and installed from and on the same devices, works just fine.
Here is the source code if necessary:
https://github.com/monotrix/Open-Sourced-Tweaks/tree/master/ReachOptions
Hello, I'm trying to install Dragon on MacOS Monterey v12.0 Beta with Python 3.9.6 and Pip 21.1.3. I installed Dragon with Pip then triggered the setup process with the default install directory. After selecting that directory this appears,
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py", line 1346, in do_open
h.request(req.get_method(), req.selector, req.data, headers,
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py", line 1257, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py", line 1303, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py", line 1252, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py", line 1012, in _send_output
self.send(msg)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py", line 952, in send
self.connect()
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py", line 1426, in connect
self.sock = self._context.wrap_socket(self.sock,
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ssl.py", line 500, in wrap_socket
return self.sslsocket_class._create(
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ssl.py", line 1040, in _create
self.do_handshake()
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ssl.py", line 1309, in do_handshake
self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/runpy.py", line 197, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/dragontools/wizard.py", line 83, in <module>
setup_wizard()
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/dragontools/wizard.py", line 50, in setup_wizard
get_supporting(
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/dragontools/wizard.py", line 63, in get_supporting
response: dict = json.load(request.urlopen(api))
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py", line 214, in urlopen
return opener.open(url, data, timeout)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py", line 517, in open
response = self._open(req, data)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py", line 534, in _open
result = self._call_chain(self.handle_open, protocol, protocol +
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py", line 494, in _call_chain
result = func(*args)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py", line 1389, in https_open
return self.do_open(http.client.HTTPSConnection, req,
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py", line 1349, in do_open
raise URLError(err)
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)>
My DragonMake file sets postinst
and prerm
to strings, and the contents are correctly stored in maintainer scripts in the DEBIAN directory. The actual feature works great.
But DragonGen gives a warning when building:
[DragonGen] Generating build scripts
[DragonGen] ! Warning: Key prerm is not a valid module (a dictionary), nor is it a known configuration key
[DragonGen] ! This key will be ignored.
It does not complain about postinst, only about prerm. I guess all four preinst/postinst/prerm/postrm should be added to DragonGen.py META_KEYS.
expand this list as needed.
A bug exists where when [projectname].ninja is generated, it is not renamed to build.ninja and ninja fails. Can be circumvented by renaming [projectname].ninja manually.
FAILED: .dragon/build/arm64/resim.mm.o │·································································
clang++ -arch arm64 -I$DRAGONBUILD/include -I$DRAGONBUILD/vendor/include -I$DRAGONBUILD/include/_fallback -I/headers/ -I. -fcolor-diagnostics -F$DRAGONBUILD/sdks/iPhoneOS.sdk/System/Library/PrivateFramewo│·································································
rks/ -F$DRAGONBUILD/frameworks -O0 -isysroot -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk -fobjc-arc -target arm64-apple-│·································································
darwin20.3.0 -DDYLIB_DIR=@"$DRAGONBUILD/simulator/load" -Wall -c resim.mm -o .dragon/build/arm64/resim.mm.o │·································································
clang: warning: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk: 'linker' input unused [-Wunused-command-line-argument] │·································································
clang: warning: no such sysroot directory: '-isysroot' [-Wmissing-sysroot] │·································································
resim.mm:1:10: fatal error: 'unistd.h' file not found
DragonBuild - v1.5.1 using sbingner toolchain with default sdks provided by dragonbuild
What is happening -
Making a new simple project, the very first compile spits out an error saying
[Dragon] [9/10] (1.953) Generating Debug Symbols for example error: cannot parse the debug map for '".dragon/sign/.dragon/_/Library/MobileSubstrate/DynamicLibraries/example.dylib.unsym"': No such file or directory
After that, the project seems to compile just fine, even after cleaning the project without any errors.
Project used was example project on - https://github.com/DragonBuild/example.git
How to reproduce:
1.Install dragon pip3 install dragon
2.Run command dragon
3.Install Sbingner Toolchain
4.git clone https://github.com/DragonBuild/example.git
5. dragonmake
in example dir
delete example dir and clone and then try again to reproduce multiple times
Operating System: Linux WSL2 x86_64 Windows 10
Complete Log:
[DragonGen] Creating build script for example
[Dragon] Building
[Dragon] [5/10] (1.869) Linking .dragon/build/arm64/Tweak.x.m.o with $DRAGONDIR/toolchain/linux/iphone/bin/clang++ [arm64]
ld: warning: building for iOS, but linking in .tbd file (/home/ubuntu/.dragon/frameworks/CydiaSubstrate.framework/CydiaSubstrate.tbd) built for iOS Simulator
[Dragon] [6/10] (1.875) Linking .dragon/build/arm64e/Tweak.x.m.o with $DRAGONDIR/toolchain/linux/iphone/bin/clang++ [arm64e]
ld: warning: building for iOS, but linking in .tbd file (/home/ubuntu/.dragon/frameworks/CydiaSubstrate.framework/CydiaSubstrate.tbd) built for iOS Simulator
[Dragon] [7/10] (1.938) Linking .dragon/build/armv7/Tweak.x.m.o with $DRAGONDIR/toolchain/linux/iphone/bin/clang++ [armv7]
ld: warning: building for iOS, but linking in .tbd file (/home/ubuntu/.dragon/frameworks/CydiaSubstrate.framework/CydiaSubstrate.tbd) built for iOS Simulator
[Dragon] [9/10] (1.953) Generating Debug Symbols for example
error: cannot parse the debug map for '".dragon/sign/.dragon/_/Library/MobileSubstrate/DynamicLibraries/example.dylib.unsym"': No such file or directory
[Dragon] [10/10] (1.959) Signing example
[Dragon] >>> Running Stage for example
[Packager] Generating Package Structure
[Packager] Pulling 'control' values from DragonMake
[Packager] Building Package
dm.pl: building package `example:iphoneos-arm' in `.dragon/packages//example_0.1.0_iphoneos-arm.deb'
[Dragon] Cleaning Up
hm
I built a tweak using dragon, and the resulting .deb installs files under UID 1000 (which is the user I'm running dragon as). That UID doesn't even exist in iOS. It should install them as root:wheel (0:0) instead.
Dragon runs as a normal user, so the directory structure in .dragon/_/
will be owned by my user too. When the package is built, tar
copies the UID/GID and permissions into the data.tar, and when installing the package, dpkg applies them to the installed files.
The way Debian handles this nowadays is by passing --root-owner-group
to dpkg-deb when building the binary package. This sets all files to root:root ownership. However this would need dpkg 1.19.0; I'm not sure what is used on macOS or on-device iOS?
➜ dragon b sim
[DragonGen] Targeting Simulator + simject
[DragonGen] Generating build scripts
[DragonGen] Creating build script for Aeolus
[Dragon] Building Tweak
[Dragon] [4/8] (0.272) Linking .dragon/build/arm64/Aeolus.xm.mm.o with clang++ [arm64]
FAILED: .dragon/build/Aeolus.arm64
clang++ -arch arm64 -I$DRAGONBUILD/include -I$DRAGONBUILD/vendor/include -I$DRAGONBUILD/include/_fallback -I/headers/ -I. -fcolor-diagnostics -F$DRAGONBUILD/sdks/iPhoneOS.sdk/System/Library/PrivateFrameworks/ -F$DRAGONBUILD/frameworks -O0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk -fobjc-arc -target x86_64-apple-darwin20.2.0 -Wall -fmodules -fcxx-modules -fmodule-name=Aeolus -fbuild-session-file=.dragon/modules/ -fmodules-validate-once-per-build-session -fmodules-prune-after=345600 -fmodules-prune-interval=86400 -framework UIKit -framework Foundation -dynamiclib -ggdb -Xlinker -segalign -Xlinker 4000 -framework CydiaSubstrate -L$DRAGONBUILD/lib -L. -o .dragon/build/Aeolus.arm64 .dragon/build/arm64/Aeolus.xm.mm.o -lobjc -lc++
ld: in '/Users/me/.dragonbuild/sdks/iPhoneOS.sdk/System/Library/PrivateFrameworks//DocumentManager.framework/DocumentManager.tbd', building for iOS Simulator, but linking in .tbd built for iOS, for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[Dragon] [5/8] (0.272) Linking .dragon/build/arm64e/Aeolus.xm.mm.o with clang++ [arm64e]
FAILED: .dragon/build/Aeolus.arm64e
clang++ -arch arm64e -I$DRAGONBUILD/include -I$DRAGONBUILD/vendor/include -I$DRAGONBUILD/include/_fallback -I/headers/ -I. -fcolor-diagnostics -F$DRAGONBUILD/sdks/iPhoneOS.sdk/System/Library/PrivateFrameworks/ -F$DRAGONBUILD/frameworks -O0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk -fobjc-arc -target x86_64-apple-darwin20.2.0 -Wall -fmodules -fcxx-modules -fmodule-name=Aeolus -fbuild-session-file=.dragon/modules/ -fmodules-validate-once-per-build-session -fmodules-prune-after=345600 -fmodules-prune-interval=86400 -framework UIKit -framework Foundation -dynamiclib -ggdb -Xlinker -segalign -Xlinker 4000 -framework CydiaSubstrate -L$DRAGONBUILD/lib -L. -o .dragon/build/Aeolus.arm64e .dragon/build/arm64e/Aeolus.xm.mm.o -lobjc -lc++
ld: warning: ignoring file /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/lib/darwin/libclang_rt.iossim.a, missing required architecture arm64e in file /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/lib/darwin/libclang_rt.iossim.a (3 slices)
ld: in '/Users/me/.dragonbuild/sdks/iPhoneOS.sdk/System/Library/PrivateFrameworks//DocumentManager.framework/DocumentManager.tbd', building for iOS Simulator, but linking in .tbd built for iOS, for architecture arm64e
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
[Dragon] Build failed
[Dragon] Cleaning Up
This is the output I get from "dragon b sim"
After trying to compile a tweak with a standard Makefile that doesn't contain the FILES field, the follow error occurs:
"
[DragonGen] Error: An undocumented error has been hit
[DragonGen] Please contact a maintainer
[DragonGen] Press v for detailed debugging output, any other key to exit.
[DragonGen] unsupported operand type(s) for +: 'NoneType' and 'str'
[DragonGen] File "/home/lightmann/.dragonbuild/DragonGenerator.py", line 15, in
DragonGen.main()
File "/home/lightmann/.dragonbuild/DragonGen/DragonGen.py", line 586, in main
config = interpret_theos_makefile(open('Makefile'))
File "/home/lightmann/.dragonbuild/DragonGen/util.py", line 125, in interpret_theos_makefile
module_files = variables.get(module_name + '_FILES') or variables.get(f'$({module_type_naming}_NAME)_FILES') or ''
[Dragon] Build failed
[Dragon] Cleaning Up
"
Tested with my tweak Hijack and with Litten's tweak Rose
Hi, I understand this project is in its infancy, but will ios support eventually be added?
Thanks
dragon + dragongen is primarily hardcoded for C building. This is a design limitation of dragon. End goal is for the project to be expansible to literally anything. Formatting for any build process should be easy and possible without requiring python knowledge.
i’m trying to build your Gravitation tweak with this and it seems to be giving me undocumented errors, and from a python developer, the errors don’t seem easy to debug. the other error i saw was kind of what i had but here’s the thing: some things go wrong on my computer and when i ssh into my computer from my phone, other things go wrong. i realize this is new and you seem to be really working hard (thanks for that) but i need my gravitation tweak
by the way, i had to install some python modules (regex), so that might be a problem
another thing i noticed is that the python shell it’s using is the one that comes with spyder, so maybe that’s conflicting with something too
here’s a snippet of the error:
`File "/Users/OllinRuiz/.dragonbuild//DragonGen/DragonGen.py", line 1100, in
main()
File "/Users/OllinRuiz/.dragonbuild//DragonGen/DragonGen.py", line 1042, in main
config = yaml.safe_load(f)
File "/Users/OllinRuiz/opt/anaconda3/lib/python3.7/site-packages/yaml/init.py", line 162, in safe_load
return load(stream, SafeLoader)
File "/Users/OllinRuiz/opt/anaconda3/lib/python3.7/site-packages/yaml/init.py", line 114, in load
return loader.get_single_data()
File "/Users/OllinRuiz/opt/anaconda3/lib/python3.7/site-packages/yaml/constructor.py", line 41, in get_single_data
node = self.get_single_node()
File "/Users/OllinRuiz/opt/anaconda3/lib/python3.7/site-packages/yaml/composer.py", line 39, in get_single_node
if not self.check_event(StreamEndEvent):
File "/Users/OllinRuiz/opt/anaconda3/lib/python3.7/site-packages/yaml/parser.py", line 98, in check_event
self.current_event = self.state()
File "/Users/OllinRuiz/opt/anaconda3/lib/python3.7/site-packages/yaml/parser.py", line 174, in parse_document_start
self.peek_token().start_mark)
ParserError(None, None, "expected '', but found ''", <yaml.error.Mark object at 0x108baa250>)
expected '', but found ''
in "DragonMake", line 6, column 1
[Dragon] Cleaning Up `
Steps to reproduce
Using https://github.com/sbingner/llvm-project/releases with dragonbuild doesn't seem to work; moving ios-arm64e-clang-toolchain/* to toolchain/linux/iphone makes an error when running dragonbuild
Other than copying the toolchain and ios 13 sdk, it's a fresh install of dragonbuild using the install script
$ dragon make
KeyError: Missing value in variables array.
'cc'
Press v for detailed debugging output, any other key to exit.
Entire Project Config:
Traceback (most recent call last):
File "/home/joshualausch/.dragonbuild//DragonGen/DragonGen.py", line 989, in <module>
main()
File "/home/joshualausch/.dragonbuild//DragonGen/DragonGen.py", line 971, in main
variables = generate_vars(proj_config, config, default_target)
File "/home/joshualausch/.dragonbuild//DragonGen/DragonGen.py", line 262, in generate_vars
ret.update({k: '$dragondir/toolchain/linux/iphone/bin/arm64-apple-darwin14-' + var_d[k] for k in [
File "/home/joshualausch/.dragonbuild//DragonGen/DragonGen.py", line 262, in <dictcomp>
ret.update({k: '$dragondir/toolchain/linux/iphone/bin/arm64-apple-darwin14-' + var_d[k] for k in [
KeyError: 'cc'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/joshualausch/.dragonbuild//DragonGen/DragonGen.py", line 999, in <module>
handle(exception)
File "/home/joshualausch/.dragonbuild//DragonGen/DragonGen.py", line 904, in handle
pprint.pprint(ex.variables, stream=sys.stderr)
AttributeError: 'KeyError' object has no attribute 'variables'
And here is DragonMake:
name: FakeShutoff
icmd: sbreload
all:
targetvers: 13.0
archs:
- arm64
- arm64e
FakeShutoff:
type: tweak
logos_files:
- "*.xm"
Cannot build anything. not even the example project
When i run the install script it cannot install ninja or ldid.
Ninja is the wrong package name, so i just manually installed with the right name, ninja-build. I couldn't find ldid
Anyway when i try to build anything, even the example project, I get that error that is in the title
Dragon creates an executable, even if the (prefs) bundle only contains resources
Reproducible via dragon test
(see signe failure)
Specifically git clone https://github.com/kritantadev/signe; cd signe; dragon b
Broke during refactor, not sure why yet
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.