this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'master' of https://github.com/darlinghq/darling

+97 -37
+7
.gitmodules
··· 205 205 [submodule "src/external/zsh"] 206 206 path = src/external/zsh 207 207 url = ../darling-zsh.git 208 + 209 + [submodule "src/external/mail_cmds"] 210 + path = src/external/mail_cmds 211 + url = ../darling-mail_cmds.git 212 + [submodule "src/external/screen"] 213 + path = src/external/screen 214 + url = ../darling-screen.git
+11 -5
cmake/darling_framework.cmake
··· 3 3 include(InstallSymlink) 4 4 5 5 function(add_framework name) 6 - cmake_parse_arguments(FRAMEWORK "CURRENT_VERSION;FAT" "VERSION;LINK_FLAGS" "SOURCES;DEPENDENCIES" ${ARGN}) 6 + cmake_parse_arguments(FRAMEWORK "CURRENT_VERSION;FAT;PRIVATE" "VERSION;LINK_FLAGS" "SOURCES;DEPENDENCIES" ${ARGN}) 7 7 if (FRAMEWORK_CURRENT_VERSION) 8 8 set(my_name "${name}") 9 9 else (FRAMEWORK_CURRENT_VERSION) 10 10 set(my_name "${name}_${FRAMEWORK_VERSION}") 11 11 endif (FRAMEWORK_CURRENT_VERSION) 12 12 13 - set(DYLIB_INSTALL_NAME "/System/Library/Frameworks/${name}.framework/Versions/${FRAMEWORK_VERSION}/${name}") 13 + if (FRAMEWORK_PRIVATE) 14 + set(dir_name "PrivateFrameworks") 15 + else (FRAMEWORK_PRIVATE) 16 + set(dir_name "Frameworks") 17 + endif (FRAMEWORK_PRIVATE) 18 + 19 + set(DYLIB_INSTALL_NAME "/System/Library/${dir_name}/${name}.framework/Versions/${FRAMEWORK_VERSION}/${name}") 14 20 add_darling_library(${my_name} SHARED ${FRAMEWORK_SOURCES}) 15 21 16 22 if (FRAMEWORK_CURRENT_VERSION) ··· 34 40 set_property(TARGET ${my_name} APPEND_STRING PROPERTY LINK_FLAGS " ${FRAMEWORK_LINK_FLAGS}") 35 41 endif (FRAMEWORK_LINK_FLAGS) 36 42 37 - install(TARGETS ${my_name} DESTINATION "libexec/darling/System/Library/Frameworks/${name}.framework/Versions/${FRAMEWORK_VERSION}/") 43 + install(TARGETS ${my_name} DESTINATION "libexec/darling/System/Library/${dir_name}/${name}.framework/Versions/${FRAMEWORK_VERSION}/") 38 44 39 45 if (FRAMEWORK_CURRENT_VERSION) 40 - InstallSymlink(${FRAMEWORK_VERSION} "${CMAKE_INSTALL_PREFIX}/libexec/darling/System/Library/Frameworks/${name}.framework/Versions/Current") 41 - InstallSymlink("Versions/Current/${name}" "${CMAKE_INSTALL_PREFIX}/libexec/darling/System/Library/Frameworks/${name}.framework/${name}") 46 + InstallSymlink(${FRAMEWORK_VERSION} "${CMAKE_INSTALL_PREFIX}/libexec/darling/System/Library/${dir_name}/${name}.framework/Versions/Current") 47 + InstallSymlink("Versions/Current/${name}" "${CMAKE_INSTALL_PREFIX}/libexec/darling/System/Library/${dir_name}/${name}.framework/${name}") 42 48 endif (FRAMEWORK_CURRENT_VERSION) 43 49 endfunction(add_framework) 44 50
+3 -3
src/CMakeLists.txt
··· 99 99 add_subdirectory(libutil) 100 100 add_subdirectory(libnotify) 101 101 add_subdirectory(libremovefile) 102 - add_subdirectory(launchd/liblaunch) 102 + add_subdirectory(launchd) 103 103 add_subdirectory(keymgr) 104 104 add_subdirectory(ncurses) 105 105 add_subdirectory(libiconv) ··· 178 178 add_subdirectory(external/gnutar/gnutar) 179 179 add_subdirectory(external/gpatch) 180 180 add_subdirectory(external/gnudiff) 181 - #add_subdirectory(launchd/src) 182 - #add_subdirectory(launchd/support) 183 181 add_subdirectory(external/openssh) 184 182 #add_subdirectory(external/top) 185 183 add_subdirectory(external/perl) 184 + add_subdirectory(external/mail_cmds) 185 + add_subdirectory(external/screen) 186 186 add_subdirectory(unxip) 187 187 add_subdirectory(external/zsh) 188 188 add_subdirectory(external/libcxxabi)
+43
src/dyld/darling.c
··· 25 25 #include <alloca.h> 26 26 #include <errno.h> 27 27 #include <fcntl.h> 28 + #include <dirent.h> 28 29 #include <sys/stat.h> 29 30 #include <signal.h> 31 + #include <stdbool.h> 30 32 #include <sched.h> 31 33 #include <sys/mount.h> 32 34 #include <sys/wait.h> ··· 43 45 const char* DARLING_INIT_COMM = "darling-init"; 44 46 char *prefix; 45 47 uid_t g_originalUid, g_originalGid; 48 + bool g_fixPermissions = false; 46 49 char **g_argv, **g_envp; 47 50 48 51 int main(int argc, char ** argv, char ** envp) ··· 82 85 unsetenv("DPREFIX"); 83 86 84 87 if (!checkPrefixDir()) 88 + { 85 89 setupPrefix(); 90 + g_fixPermissions = true; 91 + } 86 92 checkPrefixOwner(); 87 93 88 94 int c; ··· 389 395 fprintf(stderr, "Darling needs this in order to create mount and PID namespaces and to perform mounts.\n"); 390 396 } 391 397 398 + void fixDirectoryPermissions(const char* path) 399 + { 400 + DIR* dir; 401 + struct dirent* ent; 402 + 403 + dir = opendir(path); 404 + if (!dir) 405 + return; 406 + 407 + while ((ent = readdir(dir)) != NULL) 408 + { 409 + if (ent->d_type == DT_DIR) 410 + { 411 + char* subdir; 412 + 413 + if (strcmp(ent->d_name, ".") == 0 || strcmp(ent->d_name, "..") == 0) 414 + continue; 415 + 416 + subdir = (char*) malloc(strlen(path) + 2 + strlen(ent->d_name)); 417 + sprintf(subdir, "%s/%s", path, ent->d_name); 418 + 419 + fixDirectoryPermissions(subdir); 420 + 421 + if (chown(subdir, g_originalUid, g_originalGid) == -1) 422 + fprintf(stderr, "Cannot chown %s: %s\n", subdir, strerror(errno)); 423 + 424 + free(subdir); 425 + } 426 + } 427 + 428 + closedir(dir); 429 + } 430 + 392 431 pid_t spawnInitProcess(void) 393 432 { 394 433 pid_t pid; ··· 454 493 } 455 494 456 495 free(opts); 496 + 497 + // This is executed once at prefix creation 498 + if (g_fixPermissions) 499 + fixDirectoryPermissions(prefix); 457 500 458 501 snprintf(putOld, sizeof(putOld), "%s" SYSTEM_ROOT, prefix); 459 502
+8
src/launchd/CMakeLists.txt
··· 1 + project(launchd-top) 2 + 3 + add_subdirectory(liblaunch) 4 + add_subdirectory(src) 5 + add_subdirectory(support) 6 + 7 + install(FILES man/launchctl.1 DESTINATION libexec/darling/usr/share/man/man1) 8 + install(FILES man/launchd.8 DESTINATION libexec/darling/usr/share/man/man8)
+13 -11
src/launchd/src/CMakeLists.txt
··· 20 20 21 21 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../external/libdispatch/) 22 22 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../external/libdispatch/private) 23 - include_directories(${DARLING_TOP_DIRECTORY}/platform-include) 23 + include_directories(${CMAKE_SOURCE_DIR}/platform-include) 24 24 include_directories(${CMAKE_CURRENT_SOURCE_DIR}) 25 25 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../liblaunch/) 26 - include_directories(${DARLING_TOP_DIRECTORY}/src/libc/darwin) 27 - include_directories(${DARLING_TOP_DIRECTORY}/src/libc/gen) 28 - include_directories(${DARLING_TOP_DIRECTORY}/src/libinfo/lookup.subproj) 26 + include_directories(${CMAKE_SOURCE_DIR}/src/libc/darwin) 27 + include_directories(${CMAKE_SOURCE_DIR}/src/libc/gen) 28 + include_directories(${CMAKE_SOURCE_DIR}/src/libmalloc/include) 29 + include_directories(${CMAKE_SOURCE_DIR}/src/kernel/libsyscall/wrappers/libproc) 30 + include_directories(${CMAKE_SOURCE_DIR}/src/external/syslog/libsystem_asl.tproj/include) 31 + include_directories(${CMAKE_SOURCE_DIR}/src/kernel/libsyscall/wrappers/spawn) 32 + include_directories(${CMAKE_SOURCE_DIR}/src/libinfo/lookup.subproj) 29 33 include_directories(${CMAKE_CURRENT_BINARY_DIR}) 30 34 31 - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -fblocks -nostdinc -include ${DARLING_TOP_DIRECTORY}/kernel-include/sys/fileport.h -ggdb -O0") 32 - set(CMAKE_EXE_LINKER_FLAGS "-nodefaultlibs -nostdlib -Wl,--version-script=${DARLING_TOP_DIRECTORY}/darwin.map") 35 + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fblocks -nostdinc -include ${CMAKE_SOURCE_DIR}/kernel-include/sys/fileport.h") 33 36 34 37 mig(job.defs) 35 38 mig(helper.defs) ··· 41 44 #mig(job_types.defs) 42 45 #mig(protocol_jobmgr.defs) 43 46 44 - add_definitions(-DPRIVATE) 47 + # The xpc_domain_server definition seems to be wrong, 48 + # but it's hard to determine the right solution. 49 + add_definitions(-DPRIVATE -Dxpc_domain_server=job_server) 45 50 46 51 set(launchd_sources 47 52 core.c ··· 53 58 runtime.c 54 59 ${CMAKE_CURRENT_BINARY_DIR}/jobServer.c 55 60 ${CMAKE_CURRENT_BINARY_DIR}/helperUser.c 61 + ${CMAKE_CURRENT_BINARY_DIR}/internalServer.c 56 62 ${CMAKE_CURRENT_BINARY_DIR}/internalUser.c 57 63 ${CMAKE_CURRENT_BINARY_DIR}/notifyServer.c 58 64 ${CMAKE_CURRENT_BINARY_DIR}/job_forwardUser.c ··· 60 66 ${CMAKE_CURRENT_BINARY_DIR}/mach_excServer.c 61 67 #${CMAKE_CURRENT_BINARY_DIR}/job_typesUser.c 62 68 ) 63 - 64 - SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/darling") 65 - SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) 66 - SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) 67 69 68 70 include(darling_exe) 69 71 add_darling_executable(launchd ${launchd_sources})
+12 -18
src/launchd/support/CMakeLists.txt
··· 14 14 15 15 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../external/libdispatch/) 16 16 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../external/libdispatch/private) 17 - include_directories(${DARLING_TOP_DIRECTORY}/platform-include) 17 + include_directories(${CMAKE_SOURCE_DIR}/platform-include) 18 18 include_directories(${CMAKE_CURRENT_SOURCE_DIR}) 19 19 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../liblaunch/) 20 - include_directories(${DARLING_TOP_DIRECTORY}/src/libc/darwin) 21 - include_directories(${DARLING_TOP_DIRECTORY}/src/libc/gen) 22 - include_directories(${DARLING_TOP_DIRECTORY}/src/libc/include/NetBSD) 23 - include_directories(${DARLING_TOP_DIRECTORY}/src/CFF) 24 - include_directories(${DARLING_TOP_DIRECTORY}/src/libedit/src) 25 - include_directories(${DARLING_TOP_DIRECTORY}/src/libinfo/lookup.subproj) 20 + include_directories(${CMAKE_SOURCE_DIR}/src/libc/darwin) 21 + include_directories(${CMAKE_SOURCE_DIR}/src/libc/gen) 22 + include_directories(${CMAKE_SOURCE_DIR}/src/libc/include/NetBSD) 23 + include_directories(${CMAKE_SOURCE_DIR}/src/libedit/src) 24 + include_directories(${CMAKE_SOURCE_DIR}/src/libinfo/lookup.subproj) 26 25 include_directories(${CMAKE_CURRENT_BINARY_DIR}) 27 - include_directories(${DARLING_TOP_DIRECTORY}/src/external/corefoundation/Headers) 28 - include_directories(${CMAKE_BINARY_DIR}/src/external/corefoundation/Headers) 29 - include_directories(${DARLING_TOP_DIRECTORY}/src/external/foundation/Headers) 26 + include_directories(${CMAKE_SOURCE_DIR}/src/external/corefoundation) 27 + include_directories(${CMAKE_SOURCE_DIR}/src/external/libclosure) 28 + include_directories(${CMAKE_SOURCE_DIR}/src/external/foundation/include) 30 29 31 - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -fblocks -nostdinc -include ${DARLING_TOP_DIRECTORY}/kernel-include/sys/fileport.h -ggdb -O0") 32 - set(CMAKE_EXE_LINKER_FLAGS "-nodefaultlibs -nostdlib -Wl,--version-script=${DARLING_TOP_DIRECTORY}/darwin.map") 30 + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -fblocks -nostdinc -include ${CMAKE_SOURCE_DIR}/kernel-include/sys/fileport.h") 33 31 34 - add_definitions(-DPRIVATE -DOBJC2RUNTIME=1) 35 - 36 - SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/darling") 37 - SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) 38 - SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) 32 + add_definitions(-DPRIVATE) 39 33 40 34 include(darling_exe) 41 35 add_darling_executable(launchctl launchctl.c) 42 - target_link_libraries(launchctl xpc CFFExtra edit) 36 + target_link_libraries(launchctl xpc CoreFoundation edit) 43 37 44 38 install(TARGETS launchctl DESTINATION libexec/darling/bin) 45 39