mirror of
https://github.com/topjohnwu/Magisk.git
synced 2024-12-22 07:57:39 +00:00
Support building individual applets
This commit is contained in:
parent
bf58205b0a
commit
7918fc3528
20
build.py
20
build.py
@ -56,11 +56,14 @@ archs = ['armeabi-v7a', 'x86']
|
||||
arch64 = ['arm64-v8a', 'x86_64']
|
||||
keystore = 'release-key.jks'
|
||||
config = {}
|
||||
support_targets = ['magisk', 'magiskinit', 'magiskboot', 'magiskpolicy', 'busybox', 'test']
|
||||
default_targets = ['magisk', 'magiskinit', 'magiskboot', 'busybox']
|
||||
|
||||
|
||||
def mv(source, target):
|
||||
try:
|
||||
shutil.move(source, target)
|
||||
vprint(f'mv: {source} -> {target}')
|
||||
except:
|
||||
pass
|
||||
|
||||
@ -76,6 +79,7 @@ def cp(source, target):
|
||||
def rm(file):
|
||||
try:
|
||||
os.remove(file)
|
||||
vprint(f'rm: {file}')
|
||||
except OSError as e:
|
||||
if e.errno != errno.ENOENT:
|
||||
raise
|
||||
@ -102,7 +106,7 @@ def zip_with_msg(zip_file, source, target):
|
||||
def collect_binary():
|
||||
for arch in archs + arch64:
|
||||
mkdir_p(os.path.join('native', 'out', arch))
|
||||
for bin in ['magisk', 'magiskinit', 'magiskinit64', 'magiskboot', 'busybox', 'test']:
|
||||
for bin in support_targets + ['magiskinit64']:
|
||||
source = os.path.join('native', 'libs', arch, bin)
|
||||
target = os.path.join('native', 'out', arch, bin)
|
||||
mv(source, target)
|
||||
@ -183,14 +187,12 @@ def run_ndk_build(flags):
|
||||
|
||||
|
||||
def build_binary(args):
|
||||
support_targets = {'magisk', 'magiskinit', 'magiskboot', 'busybox', 'test'}
|
||||
if args.target:
|
||||
args.target = set(args.target) & support_targets
|
||||
args.target = set(args.target) & set(support_targets)
|
||||
if not args.target:
|
||||
return
|
||||
else:
|
||||
# If nothing specified, build everything
|
||||
args.target = ['magisk', 'magiskinit', 'magiskboot', 'busybox']
|
||||
args.target = default_targets
|
||||
|
||||
header('* Building binaries: ' + ' '.join(args.target))
|
||||
|
||||
@ -227,6 +229,9 @@ def build_binary(args):
|
||||
run_ndk_build('B_INIT=1')
|
||||
run_ndk_build('B_INIT64=1')
|
||||
|
||||
if 'magiskpolicy' in args.target:
|
||||
run_ndk_build('B_POLICY=1')
|
||||
|
||||
if 'magiskboot' in args.target:
|
||||
run_ndk_build('B_BOOT=1')
|
||||
|
||||
@ -439,7 +444,8 @@ all_parser.set_defaults(func=build_all)
|
||||
|
||||
binary_parser = subparsers.add_parser('binary', help='build binaries')
|
||||
binary_parser.add_argument(
|
||||
'target', nargs='*', help='Support: magisk, magiskinit, magiskboot, busybox. Leave empty to build all.')
|
||||
'target', nargs='*', help=f"Either {', '.join(support_targets)}, \
|
||||
or empty for defaults ({', '.join(default_targets)})")
|
||||
binary_parser.set_defaults(func=build_binary)
|
||||
|
||||
apk_parser = subparsers.add_parser('apk', help='build Magisk Manager APK')
|
||||
@ -463,7 +469,7 @@ un_parser.set_defaults(func=zip_uninstaller)
|
||||
|
||||
clean_parser = subparsers.add_parser('clean', help='cleanup.')
|
||||
clean_parser.add_argument(
|
||||
'target', nargs='*', help='Support: native, java. Leave empty to clean all.')
|
||||
'target', nargs='*', help='Either native, java, or empty to clean both.')
|
||||
clean_parser.set_defaults(func=cleanup)
|
||||
|
||||
if len(sys.argv) == 1:
|
||||
|
@ -56,6 +56,30 @@ include $(BUILD_EXECUTABLE)
|
||||
|
||||
endif
|
||||
|
||||
ifdef B_POLICY
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := magiskpolicy
|
||||
LOCAL_STATIC_LIBRARIES := libsepol libutils
|
||||
LOCAL_C_INCLUDES := \
|
||||
jni/include \
|
||||
$(LIBSEPOL) \
|
||||
$(LIBUTILS)
|
||||
|
||||
LOCAL_SRC_FILES := \
|
||||
core/applet_stub.cpp \
|
||||
magiskpolicy/api.cpp \
|
||||
magiskpolicy/magiskpolicy.cpp \
|
||||
magiskpolicy/rules.cpp \
|
||||
magiskpolicy/policydb.cpp \
|
||||
magiskpolicy/sepolicy.c
|
||||
|
||||
LOCAL_CFLAGS := -DAPPLET_STUB_MAIN=magiskpolicy_main
|
||||
LOCAL_LDFLAGS := -static
|
||||
include $(BUILD_EXECUTABLE)
|
||||
|
||||
endif
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
ifdef B_INIT
|
||||
|
9
native/jni/core/applet_stub.cpp
Normal file
9
native/jni/core/applet_stub.cpp
Normal file
@ -0,0 +1,9 @@
|
||||
#include <sys/stat.h>
|
||||
|
||||
#include <magisk.h>
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
umask(0);
|
||||
cmdline_logging();
|
||||
return APPLET_STUB_MAIN(argc, argv);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user