Giter VIP home page Giter VIP logo

dragon's Introduction

Logo

An expansible build system built for speed and ease of use.



Documentation | Getting Started | Example Project | Github Actions Integration

Installing dragon

In your terminal:

pip3 install dragon

Updating

Version 1.6.0 and later:

dragon update

To reinstall a broken installation:

rm -rf ~/.dragon
pip3 install --force-reinstall dragon

vri

a project by cynder

brought to reality with the ongoing help of so many others.


Continued in honor of Lorenzo Pane, without whom this project, and so much else, would not have been possible.

in lieu of personal donations/sponsorships, please direct donations to The Trevor Project

dragon's People

Contributors

0cyn avatar icrazeios avatar l1ghtmann avatar mrgcgamer avatar vr1s avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dragon's Issues

Windows Support

  • Remove termios hard-dependency

expand this list as needed.

iOS support

Hi, I understand this project is in its infancy, but will ios support eventually be added?
Thanks

Globs borked in subdirs

Indicative of a need for a refactor regarding configurations, it gets faaaar too complicated using native typing.

Project specific variables affect global namespace in DragonMake

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.

Compiling errors

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 [

An undocumented issue whilst compiling SuccessionCLI

Steps to reproduce

  1. Clone the SuccessionRestore repo: https://github.com/samgisaninja/SuccessionRestore
  2. Checkout the SuccessionCLI branch (git checkout SuccessionCLI)
    3: run dragon build
    Output:
    dragon do
    Error: An undocumented error has been hit
    Please contact a maintainer
    Press v for detailed debugging output, any other key to exit.
    [Errno 13] Permission denied: './SuccessionCLIhelper.ninja'
    File "/var/mobile/.dragonbuild//DragonGen/DragonGen.py", line 937, in
    main()
    File "/var/mobile/.dragonbuild//DragonGen/DragonGen.py", line 909, in main
    with open(f'{proj_config["dir"]}/{proj_config["name"]}.ninja', 'w+') as out:
    [Dragon] Build failed
    [Dragon] Cleaning Up :
    configuration:
    iOS 13.5, ipad 7, using the Odyssey jailbreak with the Procursus repo.
    thanks for the support.

KeyError on setting device ip/port

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

Linux -- ldid dependency

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.

Linux -- lingering tmp folder

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.

icmd null and preferences issue on Ubuntu (WSL)

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.

Using sbingner arm64e linux toolchain with dragonbuild

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"

Issue with SDK (at least on linux)

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?

Linux -- standard Makefile undocumented error

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

Installation script problem task list

  • Users may have a misconfigured path variable
  • Users' python installations may ignore the pyyaml dependency
  • Users should be able to configure install dir with a cli arg, or be capable of migrating itself later, setup should be quiet by default

Linux -- prefs install broken

This applies to all tweaks with preferences, but I tested with your tweak Signe to make sure the DragonMake structure wasn't the problem.

After cloning and compiling this is what the prefs page looks like:
BrokenPrefs

Globbing broken

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

deb package should have files owned by root

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?

Lack of portability - support forge mod build

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.

  • Figure out what needs to be on this checklist

Tweak cannot build for simulator

➜ 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"

Dragon .deb installation issue

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

Error on Generating Debug Symbols for projectName on first compile

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

Poorly documented YAML Parsing Errors

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 `

Cannot build an empty ios project

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

Linux -- inconsistent Makefile archs translation

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.

error: -fobjc-arc is not supported on platforms using the legacy runtime

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

Error on Linux

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

resim fails to build on arm64 macs

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

Spurious warning when using prerm

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.

Dragon setup triggers SSL: CERTIFICATE_VERIFY_FAILED

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)>

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.