Merge pull request #19470 from copumpkin/fix-sierra

Fix Darwin stdenv to work on Sierra
This commit is contained in:
Daniel Peebles 2016-10-12 19:04:03 -04:00 committed by GitHub
commit 77d1fb94f1
6 changed files with 246 additions and 279 deletions

View file

@ -35,6 +35,18 @@ in stdenv.mkDerivation rec {
propagatedBuildInputs = [ ncurses zlib ];
# The goal here is to disable LLVM bindings (currently go and ocaml) regardless
# of whether the impure CMake search sheananigans find the compilers in global
# paths. This mostly exists because sandbox builds don't work very well on Darwin
# and sometimes you get weird behavior if CMake finds go in your system path.
# This would be far prettier if there were a CMake option to just disable bindings
# but from what I can tell, there isn't such a thing. The file in question only
# contains `if(WIN32)` conditions to check whether to disable bindings, so making
# those always succeed has the net effect of disabling all bindings.
prePatch = ''
substituteInPlace cmake/config-ix.cmake --replace "if(WIN32)" "if(1)"
'';
# hacky fix: created binaries need to be run before installation
preBuild = ''
mkdir -p $out/

View file

@ -56,9 +56,40 @@ appleDerivation rec {
# The startup object files
cp ${Csu}/lib/* $out/lib
# OMG impurity
ln -s /usr/lib/libSystem.B.dylib $out/lib/libSystem.B.dylib
ln -s /usr/lib/libSystem.dylib $out/lib/libSystem.dylib
# Narrowly speaking, these would work if we re-exported libsystem_c and libsystem_kernel,
# but we also need to run the original central libsystem constructor (which initializes
# a ton of crap for its consitutent libraries) so we link against the central library here.
mkdir -p $out/lib/system
ld -macosx_version_min 10.7 -arch x86_64 -dylib \
-o $out/lib/system/libsystem_c.dylib \
/usr/lib/libSystem.dylib \
-reexported_symbols_list ${./system_c_symbols}
ld -macosx_version_min 10.7 -arch x86_64 -dylib \
-o $out/lib/system/libsystem_kernel.dylib \
/usr/lib/libSystem.dylib \
-reexported_symbols_list ${./system_kernel_symbols}
libs=$(otool -arch x86_64 -L /usr/lib/libSystem.dylib | tail -n +3 | awk '{ print $1 }')
for i in $libs; do
if [ "$i" != "/usr/lib/system/libsystem_kernel.dylib" ] && [ "$i" != "/usr/lib/system/libsystem_c.dylib" ]; then
args="$args -reexport_library $i"
fi
done
ld -macosx_version_min 10.7 \
-arch x86_64 \
-dylib \
-o $out/lib/libSystem.B.dylib \
-compatibility_version 1.0 \
-current_version 1226.10.1 \
-reexport_library $out/lib/system/libsystem_c.dylib \
-reexport_library $out/lib/system/libsystem_kernel.dylib \
$args
ln -s libSystem.B.dylib $out/lib/libSystem.dylib
# Set up links to pretend we work like a conventional unix (Apple's design, not mine!)
for name in c dbm dl info m mx poll proc pthread rpcsvc util gcc_s.10.4 gcc_s.10.5; do

View file

@ -1,14 +1,3 @@
_NSGetNextSearchPathEnumeration
_NSStartSearchPathEnumeration
_OSAtomicAdd32
_OSAtomicAdd32Barrier
_OSAtomicAnd32
_OSAtomicDequeue
_OSAtomicEnqueue
_OSSpinLockLock
_OSSpinLockUnlock
__Block_copy
__Block_release
__CurrentRuneLocale
__DefaultRuneLocale
__Exit
@ -62,20 +51,18 @@ ___bt_setcur
___bt_split
___bt_sync
___buf_free
___bzero
___cVersionNumber
___cVersionString
___call_hash
___chmod_extended
___cleanup
___cmp_D2A
___collate_equiv_match
___collate_load_error
___collate_lookup
___commpage_gettimeofday
___copybits_D2A
___cxa_atexit
___cxa_finalize
___cxa_finalize_ranges
___cxa_thread_atexit
___d2b_D2A
___dbpanic
@ -85,34 +72,21 @@ ___default_utx
___delpair
___diff_D2A
___dtoa
___error
___exit
___expand_table
___fchmod_extended
___fcntl
___fcntl_nocancel
___fflush
___fgetwc
___find_bigpair
___find_last_page
___fix_locale_grouping_str
___fork
___fpclassifyd
___fpclassifyl
___fread
___free_ovflpage
___freedtoa
___fstat64_extended
___fstat_extended
___gdtoa
___gdtoa_locks
___get_buf
___get_page
___getdirentries64
___gethex_D2A
___getlogin
___getonlyClocaleconv
___gettimeofday
___hash_open
___hdtoa
___hexdig_D2A
@ -126,14 +100,11 @@ ___increment_D2A
___isctype
___istype
___istype_l
___kill
___ldtoa
___libc_init
___lo0bits_D2A
___log2
___lshift_D2A
___lstat64_extended
___lstat_extended
___maskrune
___maskrune_l
___match_D2A
@ -143,22 +114,15 @@ ___memccpy_chk
___memcpy_chk
___memmove_chk
___memset_chk
___mkdir_extended
___mkfifo_extended
___mult_D2A
___multadd_D2A
___nrv_alloc_D2A
___open
___open_extended
___open_nocancel
___opendir2
___opendir2$INODE64
___ovfl_delete
___ovfl_get
___ovfl_put
___pow5mult_D2A
___pthread_sigmask
___pthread_workqueue_setkill
___put_page
___quorem_D2A
___ratio_D2A
@ -179,29 +143,19 @@ ___rec_sync
___rec_vmap
___rec_vpipe
___reclaim_buf
___recvfrom
___recvfrom_nocancel
___rshift_D2A
___rv_alloc_D2A
___s2b_D2A
___sF
___sclose
___sdidinit
___semwait_signal
___semwait_signal_nocancel
___sendto
___sendto_nocancel
___set_ones_D2A
___setlogin
___setonlyClocaleconv
___settimeofday
___sflags
___sflush
___sfp
___sfvwrite
___sglue
___sigaction
___sigaltstack
___sinit
___slbexpand
___smakebuf
@ -214,8 +168,6 @@ ___srget
___sseek
___stack_chk_fail
___stack_chk_guard
___stat64_extended
___stat_extended
___stderrp
___stdinp
___stdoutp
@ -237,7 +189,6 @@ ___swbuf
___swhatbuf
___swrite
___swsetup
___sysctl
___tens_D2A
___tinytens_D2A
___tolower
@ -246,31 +197,25 @@ ___toupper
___toupper_l
___trailz_D2A
___ulp_D2A
___umask_extended
___ungetc
___ungetwc
___unix_conforming
___vsnprintf_chk
___vsprintf_chk
___wait4
___wait4_nocancel
___wcwidth
___wcwidth_l
__allocenvstate
__atexit_receipt
__c_locale
__cleanup
__closeutx
__copyenv
__cthread_init_routine
__deallocenvstate
__dyld_register_func_for_add_image
__endutxent
__exit
__flockfile_debug_stub
__fseeko
__ftello
__fwalk
__get_cpu_capabilities
__getenvp
__getutxent
__getutxid
@ -279,34 +224,20 @@ __inet_aton_check
__init_clock_port
__int_to_time
__libc_fork_child
__libc_initializer
__long_to_time
__mkpath_np
__mktemp
__openutx
__os_alloc_once
__os_alloc_once_table
__os_assert_log
__os_assert_log_ctx
__os_assumes_log
__os_assumes_log_ctx
__os_avoid_tail_call
__osx_assert_log
__osx_assert_log_ctx
__osx_assumes_log
__osx_assumes_log_ctx
__osx_avoid_tail_call
__platform_bzero
__platform_memccpy
__platform_memchr
__platform_memcmp
__platform_memmove
__platform_memset
__platform_memset_pattern16
__platform_memset_pattern4
__platform_memset_pattern8
__platform_strchr
__platform_strcmp
__platform_strncmp
__os_crash
__os_crash_callback
__os_debug_log
__os_debug_log_error_str
__putenvp
__pututxline
__rand48_add
@ -322,20 +253,7 @@ __setutxent
__sigaction_nobind
__sigintr
__signal_nobind
__sigtramp
__sigvec_nobind
__simple_asl_log
__simple_asl_log_prog
__simple_asl_msg_new
__simple_asl_msg_set
__simple_asl_send
__simple_dprintf
__simple_salloc
__simple_sappend
__simple_sfree
__simple_sprintf
__simple_string
__simple_vsprintf
__sread
__sseek
__swrite
@ -345,14 +263,12 @@ __time_to_int
__time_to_long
__time_to_time32
__time_to_time64
__tlv_atexit
__tlv_exit
__unsetenvp
__utmpxname
_a64l
_abort
_abort_report_np
_abs
_access
_acl_add_flag_np
_acl_add_perm
_acl_calc_mask
@ -416,12 +332,6 @@ _arc4random_uniform
_ascii2addr
_asctime
_asctime_r
_asl_get
_asl_new
_asl_open
_asl_send
_asl_set
_asl_set_query
_asprintf
_asprintf_l
_asxprintf
@ -442,8 +352,6 @@ _backtrace_symbols_fd
_basename
_bcmp
_bcopy
_bootstrap_parent
_bootstrap_port
_brk
_bsd_signal
_bsearch
@ -451,7 +359,6 @@ _bsearch_b
_btowc
_btowc_l
_bzero
_calloc
_catclose
_catgets
_catopen
@ -471,17 +378,12 @@ _cgetnum
_cgetset
_cgetstr
_cgetustr
_chdir
_chflags
_chmod
_chmodx_np
_clearerr
_clearerr_unlocked
_clock
_clock_get_time
_clock_port
_clock_sem
_close$NOCANCEL
_closedir
_compat_mode
_confstr
@ -514,19 +416,13 @@ _digittoint
_digittoint_l
_dirfd
_dirname
_dispatch_get_global_queue
_div
_dladdr
_dlsym
_dprintf
_dprintf_l
_drand48
_dup2
_duplocale
_dxprintf
_dxprintf_exec
_dyld_get_program_sdk_version
_dyld_get_sdk_version
_ecvt
_encrypt
_endttyent
@ -545,26 +441,22 @@ _execle
_execlp
_execv
_execvP
_execve
_execvp
_exit
_f_prealloc
_fchdir
_fchmodx_np
_fclose
_fcntl$NOCANCEL
_fcvt
_fdopen
_fdopen$DARWIN_EXTSN
_fegetenv
_fdopendir
_fdopendir$INODE64
_feof
_feof_unlocked
_ferror
_ferror_unlocked
_fesetenv
_fflagstostr
_fflush
_ffsctl
_fgetc
_fgetln
_fgetpos
@ -586,7 +478,6 @@ _filesec_query_property
_filesec_set_property
_filesec_unset_property
_flockfile
_flsl
_fmtcheck
_fmtmsg
_fnmatch
@ -606,33 +497,24 @@ _fputwc_l
_fputws
_fputws_l
_fread
_free
_free_printf_comp
_free_printf_domain
_freeifaddrs
_freelocale
_freopen
_fscanf
_fscanf_l
_fsctl
_fseek
_fseeko
_fsetpos
_fstat
_fstat$INODE64
_fstatfs
_fstatfs$INODE64
_fstatvfs
_fstatx64_np
_fstatx_np
_fstatx_np$INODE64
_fsync$NOCANCEL
_fsync_volume_np
_ftell
_ftello
_ftime
_ftok
_ftruncate
_ftrylockfile
_fts_children
_fts_children$INODE64
@ -660,7 +542,6 @@ _fwscanf_l
_fxprintf
_fxprintf_exec
_gcvt
_getattrlist
_getbsize
_getc
_getc_unlocked
@ -670,22 +551,11 @@ _getcwd
_getdate
_getdate_err
_getdelim
_getdirentries
_getdiskbyname
_getdtablesize
_getenv
_geteuid
_getfsstat
_getfsstat$INODE64
_getfsstat64
_getgrgid
_getgrnam
_getgroupcount
_getgrouplist
_getgroups$DARWIN_EXTSN
_gethostid
_gethostname
_getifaddrs
_getipv4sourcefilter
_getlastlogx
_getlastlogxbyname
@ -703,24 +573,13 @@ _getopt_long_only
_getpagesize
_getpass
_getpeereid
_getpgrp
_getpid
_getpriority
_getprogname
_getpwnam
_getpwuid
_getpwuid_r
_getrlimit
_getrusage
_gets
_getsectiondata
_getsockopt
_getsourcefilter
_getsubopt
_gettimeofday
_getttyent
_getttynam
_getuid
_getusershell
_getutmp
_getutmpx
@ -753,9 +612,7 @@ _hcreate
_hdestroy
_heapsort
_heapsort_b
_host_get_clock_service
_hsearch
_if_nametoindex
_imaxabs
_imaxdiv
_index
@ -777,7 +634,6 @@ _inet_ntop6
_inet_pton
_initstate
_insque
_ioctl
_isalnum
_isalnum_l
_isalpha
@ -808,7 +664,6 @@ _ispunct
_ispunct_l
_isrune
_isrune_l
_issetugid
_isspace
_isspace_l
_isspecial
@ -857,7 +712,7 @@ _iswxdigit_l
_isxdigit
_isxdigit_l
_jrand48
_kill
_kOSThermalNotificationPressureLevelName
_killpg
_l64a
_labs
@ -882,26 +737,13 @@ _logout
_logwtmp
_lrand48
_lsearch
_lseek
_lstat
_lstat$INODE64
_lstatx64_np
_lstatx_np
_lstatx_np$INODE64
_lutimes
_mach_absolute_time
_mach_error_string
_mach_host_self
_mach_port_deallocate
_mach_task_self_
_mach_timebase_info
_malloc
_mblen
_mblen_l
_mbmb
_mbr_gid_to_uuid
_mbr_uid_to_uuid
_mbr_uuid_to_id
_mbrlen
_mbrlen_l
_mbrrune
@ -931,7 +773,6 @@ _memset_pattern8
_memset_s
_mergesort
_mergesort_b
_mkdir
_mkdirx_np
_mkdtemp
_mkfifox_np
@ -940,7 +781,6 @@ _mkstemp
_mkstemps
_mktemp
_mktime
_mmap
_monaddition
_moncontrol
_moncount
@ -957,10 +797,6 @@ _mpool_open
_mpool_put
_mpool_sync
_mrand48
_munmap
_nan
_nanf
_nanl
_nanosleep
_nanosleep$NOCANCEL
_new_printf_comp
@ -973,16 +809,10 @@ _nftw$INODE64
_nice
_nl_langinfo
_nl_langinfo_l
_notify_cancel
_notify_check
_notify_monitor_file
_notify_post
_notify_register_check
_nrand48
_off32
_off64
_offtime
_open$NOCANCEL
_opendev
_opendir
_opendir$INODE64
@ -993,60 +823,21 @@ _opterr
_optind
_optopt
_optreset
_pathconf
_pause
_pause$NOCANCEL
_pclose
_perror
_pipe
_popen
_popen$DARWIN_EXTSN
_posix2time
_posix_openpt
_posix_spawn
_posix_spawn_file_actions_addclose
_posix_spawn_file_actions_adddup2
_posix_spawn_file_actions_destroy
_posix_spawn_file_actions_init
_posix_spawnattr_destroy
_posix_spawnattr_init
_posix_spawnattr_setflags
_posix_spawnattr_setsigdefault
_posix_spawnattr_setsigmask
_posix_spawnp
_pread$NOCANCEL
_printf
_printf_l
_proc_name
_pselect
_pselect$1050
_pselect$DARWIN_EXTSN
_pselect$DARWIN_EXTSN$NOCANCEL
_pselect$NOCANCEL
_psignal
_psort
_psort_b
_psort_r
_pthread_get_stackaddr_np
_pthread_get_stacksize_np
_pthread_getspecific
_pthread_key_create
_pthread_key_init_np
_pthread_kill
_pthread_mutex_destroy
_pthread_mutex_init
_pthread_mutex_lock
_pthread_mutex_trylock
_pthread_mutex_unlock
_pthread_once
_pthread_rwlock_destroy
_pthread_rwlock_rdlock
_pthread_rwlock_unlock
_pthread_rwlock_wrlock
_pthread_self
_pthread_setspecific
_pthread_sigmask
_pthread_testcancel
_ptsname
_putc
_putc_unlocked
@ -1060,7 +851,6 @@ _putwc
_putwc_l
_putwchar
_putwchar_l
_pwrite$NOCANCEL
_qsort
_qsort_b
_qsort_r
@ -1078,14 +868,11 @@ _rb_tree_init
_rb_tree_insert_node
_rb_tree_iterate
_rb_tree_remove_node
_read$NOCANCEL
_readdir
_readdir$INODE64
_readdir_r
_readdir_r$INODE64
_readlink
_readpassphrase
_realloc
_reallocf
_realpath
_realpath$DARWIN_EXTSN
@ -1113,7 +900,6 @@ _rewind
_rewinddir
_rewinddir$INODE64
_rindex
_rmdir
_sbrk
_scandir
_scandir$INODE64
@ -1124,15 +910,8 @@ _scanf_l
_seed48
_seekdir
_seekdir$INODE64
_select
_select$1050
_select$DARWIN_EXTSN
_select$DARWIN_EXTSN$NOCANCEL
_select$NOCANCEL
_semaphore_create
_send
_send$NOCANCEL
_setattrlist
_setbuf
_setbuffer
_setenv
@ -1140,24 +919,16 @@ _sethostid
_sethostname
_setinvalidrune
_setipv4sourcefilter
_setitimer
_setkey
_setlinebuf
_setlocale
_setlogin
_setmode
_setpgid
_setpgrp
_setpriority
_setprogname
_setregid
_setreuid
_setrgid
_setrlimit
_setruid
_setrunelocale
_setsid
_setsockopt
_setsourcefilter
_setstate
_settimeofday
@ -1180,12 +951,9 @@ _sigismember
_signal
_sigpause
_sigpause$NOCANCEL
_sigprocmask
_sigrelse
_sigset
_sigsetmask
_sigsuspend
_sigsuspend$NOCANCEL
_sigvec
_skip
_sl_add
@ -1197,10 +965,6 @@ _sleep$NOCANCEL
_snprintf
_snprintf_l
_sockatmark
_socket
_socketpair
_spin_lock
_spin_unlock
_sprintf
_sprintf_l
_sradixsort
@ -1211,9 +975,6 @@ _srandom
_srandomdev
_sscanf
_sscanf_l
_stat
_stat$INODE64
_statfs$INODE64
_statvfs
_statx64_np
_statx_np
@ -1306,10 +1067,8 @@ _sysconf
_sysctl
_sysctlbyname
_sysctlnametomib
_syslog
_system
_system$NOCANCEL
_task_set_special_port
_tcdrain
_tcdrain$NOCANCEL
_tcflow
@ -1346,6 +1105,23 @@ _towlower
_towlower_l
_towupper
_towupper_l
_tre_ast_new_catenation
_tre_ast_new_iter
_tre_ast_new_literal
_tre_ast_new_node
_tre_ast_new_union
_tre_compile
_tre_fill_pmatch
_tre_free
_tre_mem_alloc_impl
_tre_mem_destroy
_tre_mem_new_impl
_tre_parse
_tre_stack_destroy
_tre_stack_new
_tre_stack_num_objects
_tre_tnfa_run_backtrack
_tre_tnfa_run_parallel
_tsearch
_ttyname
_ttyname_r
@ -1356,13 +1132,11 @@ _tzset
_tzsetwall
_ualarm
_ulimit
_umask
_umaskx_np
_uname
_ungetc
_ungetwc
_ungetwc_l
_unlink
_unlockpt
_unsetenv
_unvis
@ -1370,7 +1144,6 @@ _uselocale
_usleep
_usleep$NOCANCEL
_utime
_utimes
_utmpxname
_uuid_clear
_uuid_compare
@ -1407,7 +1180,6 @@ _vfwscanf_l
_vfxprintf
_vfxprintf_exec
_vis
_vm_allocate
_vprintf
_vprintf_l
_vscanf
@ -1436,7 +1208,6 @@ _vxprintf_exec
_wait
_wait$NOCANCEL
_wait3
_wait4
_waitpid
_waitpid$NOCANCEL
_warn
@ -1519,12 +1290,9 @@ _wordexp
_wordfree
_wprintf
_wprintf_l
_write$NOCANCEL
_writev$NOCANCEL
_wscanf
_wscanf_l
_wtmpxname
_xprintf
_xprintf_exec
dyld_stub_binder
mcount

View file

@ -9,17 +9,20 @@ ___access_extended
___aio_suspend_nocancel
___bind
___bsdthread_create
___bsdthread_ctl
___bsdthread_register
___bsdthread_terminate
___carbon_delete
___chmod
___chmod_extended
___chud
___close_nocancel
___coalition
___coalition_info
___commpage_gettimeofday
___connect
___connect_nocancel
___copyfile
___csrctl
___delete
___disable_threadsignal
___error
@ -29,7 +32,6 @@ ___fchmod_extended
___fcntl
___fcntl_nocancel
___fork
___fsgetpath
___fstat64_extended
___fstat_extended
___fsync_nocancel
@ -37,7 +39,6 @@ ___get_remove_counter
___getattrlist
___getdirentries64
___gethostuuid
___getlcid
___getlogin
___getpeername
___getpid
@ -47,6 +48,7 @@ ___getsockname
___gettid
___gettimeofday
___getwgroups
___guarded_open_dprotected_np
___guarded_open_np
___identitysvc
___inc_remove_counter
@ -54,11 +56,14 @@ ___initgroups
___ioctl
___iopolicysys
___kdebug_trace
___kdebug_trace64
___kdebug_trace_string
___kernelVersionNumber
___kernelVersionString
___kill
___lchown
___libkernel_init
___libkernel_voucher_init
___listen
___lseek
___lstat64_extended
@ -66,8 +71,6 @@ ___lstat_extended
___mac_execve
___mac_get_fd
___mac_get_file
___mac_get_lcid
___mac_get_lctx
___mac_get_link
___mac_get_mount
___mac_get_pid
@ -76,10 +79,10 @@ ___mac_getfsstat
___mac_mount
___mac_set_fd
___mac_set_file
___mac_set_lctx
___mac_set_link
___mac_set_proc
___mac_syscall
___microstackshot
___mkdir_extended
___mkfifo_extended
___mmap
@ -96,12 +99,16 @@ ___open
___open_dprotected_np
___open_extended
___open_nocancel
___openat
___openat_nocancel
___pipe
___poll_nocancel
___posix_spawn
___pread_nocancel
___proc_info
___process_policy
___pselect
___pselect_nocancel
___psynch_cvbroad
___psynch_cvclrprepost
___psynch_cvsignal
@ -131,6 +138,7 @@ ___recvfrom_nocancel
___recvmsg
___recvmsg_nocancel
___rename
___renameat
___rmdir
___sandbox_me
___sandbox_mm
@ -149,8 +157,8 @@ ___sendmsg_nocancel
___sendto
___sendto_nocancel
___setattrlist
___setlcid
___setlogin
___setpriority
___setregid
___setreuid
___setrlimit
@ -159,6 +167,8 @@ ___settid
___settid_with_pid
___settimeofday
___setwgroups
___sfi_ctl
___sfi_pidctl
___shared_region_check_np
___shared_region_map_and_slide_np
___shm_open
@ -171,20 +181,24 @@ ___sigsuspend
___sigsuspend_nocancel
___sigwait
___socketpair
___stack_snapshot
___stack_snapshot_with_config
___stat64_extended
___stat_extended
___syscall
___syscall_logger
___sysctl
___sysctlbyname
___telemetry
___thread_selfid
___thread_selfusage
___umask_extended
___unlink
___unlinkat
___vfork
___wait4
___wait4_nocancel
___waitid_nocancel
___work_interval_ctl
___workq_kernreturn
___workq_open
___write_nocancel
@ -238,6 +252,7 @@ __kernelrpc_mach_port_set_attributes
__kernelrpc_mach_port_set_context
__kernelrpc_mach_port_set_mscount
__kernelrpc_mach_port_set_seqno
__kernelrpc_mach_port_space_basic_info
__kernelrpc_mach_port_space_info
__kernelrpc_mach_port_type
__kernelrpc_mach_port_unguard
@ -253,6 +268,9 @@ __kernelrpc_mach_vm_protect_trap
__kernelrpc_mach_vm_read
__kernelrpc_mach_vm_remap
__kernelrpc_task_set_port_space
__kernelrpc_thread_policy
__kernelrpc_thread_policy_set
__kernelrpc_thread_set_policy
__kernelrpc_vm_map
__kernelrpc_vm_read
__kernelrpc_vm_remap
@ -304,11 +322,18 @@ _clock_sleep
_clock_sleep_trap
_close
_close$NOCANCEL
_coalition_create
_coalition_info_resource_usage
_coalition_reap
_coalition_terminate
_connect
_connect$NOCANCEL
_connectx
_csops
_csops_audittoken
_csr_check
_csr_get_active_config
_denap_boost_assertion_token
_disconnectx
_dup
_dup2
@ -321,10 +346,13 @@ _exception_raise_state
_exception_raise_state_identity
_exchangedata
_execve
_faccessat
_fchdir
_fchflags
_fchmod
_fchmodat
_fchown
_fchownat
_fcntl
_fcntl$NOCANCEL
_fdatasync
@ -344,6 +372,9 @@ _fsetxattr
_fstat
_fstat$INODE64
_fstat64
_fstatat
_fstatat$INODE64
_fstatat64
_fstatfs
_fstatfs$INODE64
_fstatfs64
@ -353,6 +384,8 @@ _ftruncate
_futimes
_get_dp_control_port
_getattrlist
_getattrlistat
_getattrlistbulk
_getaudit
_getaudit_addr
_getauid
@ -385,11 +418,18 @@ _getsockopt
_getuid
_getwgroups_np
_getxattr
_grab_pgo_data
_guarded_close_np
_guarded_kqueue_np
_guarded_open_dprotected_np
_guarded_open_np
_guarded_pwrite_np
_guarded_write_np
_guarded_writev_np
_host_create_mach_voucher
_host_default_memory_manager
_host_get_UNDServer
_host_get_atm_diagnostic_flag
_host_get_boot_info
_host_get_clock_control
_host_get_clock_service
@ -406,12 +446,15 @@ _host_processor_set_priv
_host_processor_sets
_host_processors
_host_reboot
_host_register_mach_voucher_attr_manager
_host_register_well_known_mach_voucher_attr_manager
_host_request_notification
_host_security_create_task_token
_host_security_set_task_token
_host_self
_host_self_trap
_host_set_UNDServer
_host_set_atm_diagnostic_flag
_host_set_exception_ports
_host_set_special_port
_host_statistics
@ -426,8 +469,11 @@ _internal_catch_exc_subsystem
_ioctl
_issetugid
_kas_info
_kdebug_trace
_kdebug_trace_string
_kevent
_kevent64
_kevent_qos
_kext_request
_kill
_kmod_control
@ -438,6 +484,7 @@ _kqueue
_lchown
_ledger
_link
_linkat
_lio_listio
_listen
_listxattr
@ -454,6 +501,7 @@ _lstat
_lstat$INODE64
_lstat64
_mach_absolute_time
_mach_approximate_time
_mach_error
_mach_error_full_diag
_mach_error_string
@ -462,6 +510,7 @@ _mach_host_self
_mach_init
_mach_make_memory_entry
_mach_make_memory_entry_64
_mach_memory_info
_mach_memory_object_memory_entry
_mach_memory_object_memory_entry_64
_mach_msg
@ -510,6 +559,7 @@ _mach_port_set_attributes
_mach_port_set_context
_mach_port_set_mscount
_mach_port_set_seqno
_mach_port_space_basic_info
_mach_port_space_info
_mach_port_type
_mach_port_unguard
@ -540,6 +590,12 @@ _mach_vm_region_recurse
_mach_vm_remap
_mach_vm_wire
_mach_vm_write
_mach_voucher_attr_command
_mach_voucher_deallocate
_mach_voucher_debug_info
_mach_voucher_extract_all_attr_recipes
_mach_voucher_extract_attr_content
_mach_voucher_extract_attr_recipe
_mach_wait_until
_mach_zone_force_gc
_mach_zone_info
@ -565,6 +621,7 @@ _mk_timer_cancel
_mk_timer_create
_mk_timer_destroy
_mkdir
_mkdirat
_mkfifo
_mknod
_mlock
@ -573,6 +630,7 @@ _mmap
_modwatch
_mount
_mprotect
_mremap_encrypted
_msg_receive
_msg_rpc
_msg_send
@ -588,6 +646,8 @@ _msync$NOCANCEL
_munlock
_munlockall
_munmap
_necp_match_policy
_netagent_trigger
_netname_check_in
_netname_check_out
_netname_look_up
@ -599,12 +659,17 @@ _normal_boost_assertion_token
_open
_open$NOCANCEL
_open_dprotected_np
_openat
_openat$NOCANCEL
_openbyid_np
_panic
_panic_init
_pathconf
_peeloff
_pid_for_task
_pid_hibernate
_pid_resume
_pid_shutdown_sockets
_pid_suspend
_pipe
_poll
@ -621,6 +686,8 @@ _posix_spawn_file_actions_addopen
_posix_spawn_file_actions_destroy
_posix_spawn_file_actions_init
_posix_spawnattr_destroy
_posix_spawnattr_get_darwin_role_np
_posix_spawnattr_get_qos_clamp_np
_posix_spawnattr_getbinpref_np
_posix_spawnattr_getcpumonitor
_posix_spawnattr_getflags
@ -631,9 +698,12 @@ _posix_spawnattr_getprocesstype_np
_posix_spawnattr_getsigdefault
_posix_spawnattr_getsigmask
_posix_spawnattr_init
_posix_spawnattr_set_darwin_role_np
_posix_spawnattr_set_importancewatch_port_np
_posix_spawnattr_set_qos_clamp_np
_posix_spawnattr_setauditsessionport_np
_posix_spawnattr_setbinpref_np
_posix_spawnattr_setcoalition_np
_posix_spawnattr_setcpumonitor
_posix_spawnattr_setcpumonitor_default
_posix_spawnattr_setexceptionports_np
@ -648,7 +718,10 @@ _posix_spawnattr_setspecialport_np
_pread
_pread$NOCANCEL
_proc_clear_delayidlesleep
_proc_clear_dirty
_proc_clear_vmpressure
_proc_denap_assertion_begin_with_msg
_proc_denap_assertion_complete
_proc_disable_apptype
_proc_disable_cpumon
_proc_disable_wakemon
@ -661,8 +734,10 @@ _proc_importance_assertion_begin_with_msg
_proc_importance_assertion_complete
_proc_kmsgbuf
_proc_libversion
_proc_list_uptrs
_proc_listallpids
_proc_listchildpids
_proc_listcoalitions
_proc_listpgrppids
_proc_listpids
_proc_listpidspath
@ -671,19 +746,23 @@ _proc_pid_rusage
_proc_pidfdinfo
_proc_pidfileportinfo
_proc_pidinfo
_proc_pidoriginatorinfo
_proc_pidpath
_proc_regionfilename
_proc_rlimit_control
_proc_set_cpumon_defaults
_proc_set_cpumon_params
_proc_set_cpumon_params_fatal
_proc_set_delayidlesleep
_proc_set_dirty
_proc_set_owner_vmpressure
_proc_set_wakemon_defaults
_proc_set_wakemon_params
_proc_setpcontrol
_proc_setthread_cpupercent
_proc_suppress
_proc_terminate
_proc_trace_log
_proc_track_dirty
_proc_uuid_policy
_processor_assign
@ -704,6 +783,11 @@ _processor_set_statistics
_processor_set_tasks
_processor_set_threads
_processor_start
_pselect
_pselect$1050
_pselect$DARWIN_EXTSN
_pselect$DARWIN_EXTSN$NOCANCEL
_pselect$NOCANCEL
_pthread_getugid_np
_pthread_setugid_np
_ptrace
@ -714,6 +798,7 @@ _quotactl
_read
_read$NOCANCEL
_readlink
_readlinkat
_readv
_readv$NOCANCEL
_reboot
@ -721,8 +806,11 @@ _recvfrom
_recvfrom$NOCANCEL
_recvmsg
_recvmsg$NOCANCEL
_recvmsg_x
_removexattr
_rename
_rename_ext
_renameat
_revoke
_rmdir
_searchfs
@ -764,6 +852,7 @@ _semsys
_sendfile
_sendmsg
_sendmsg$NOCANCEL
_sendmsg_x
_sendto
_sendto$NOCANCEL
_set_dp_control_port
@ -790,6 +879,10 @@ _setsockopt
_setuid
_setwgroups_np
_setxattr
_sfi_get_class_offtime
_sfi_process_get_flags
_sfi_process_set_flags
_sfi_set_class_offtime
_shm_open
_shm_unlink
_shmat
@ -805,6 +898,15 @@ _sigsuspend$NOCANCEL
_socket
_socket_delegate
_socketpair
_stackshot_capture_with_config
_stackshot_config_create
_stackshot_config_dealloc
_stackshot_config_dealloc_buffer
_stackshot_config_get_stackshot_buffer
_stackshot_config_get_stackshot_size
_stackshot_config_set_flags
_stackshot_config_set_pid
_stackshot_config_set_size_hint
_stat
_stat$INODE64
_stat64
@ -815,10 +917,13 @@ _swapon
_swtch
_swtch_pri
_symlink
_symlinkat
_sync
_syscall
_syscall_thread_switch
_system_get_sfi_window
_system_override
_system_set_sfi_window
_task_assign
_task_assign_default
_task_create
@ -826,6 +931,7 @@ _task_for_pid
_task_get_assignment
_task_get_emulation_vector
_task_get_exception_ports
_task_get_mach_voucher
_task_get_special_port
_task_get_state
_task_info
@ -843,6 +949,7 @@ _task_set_emulation
_task_set_emulation_vector
_task_set_exception_ports
_task_set_info
_task_set_mach_voucher
_task_set_phys_footprint_limit
_task_set_policy
_task_set_port_space
@ -852,6 +959,7 @@ _task_set_state
_task_suspend
_task_suspend2
_task_swap_exception_ports
_task_swap_mach_voucher
_task_terminate
_task_threads
_task_zone_info
@ -864,6 +972,8 @@ _thread_create_running
_thread_depress_abort
_thread_get_assignment
_thread_get_exception_ports
_thread_get_mach_voucher
_thread_get_register_pointer_values
_thread_get_special_port
_thread_get_state
_thread_info
@ -874,11 +984,13 @@ _thread_resume
_thread_sample
_thread_self_trap
_thread_set_exception_ports
_thread_set_mach_voucher
_thread_set_policy
_thread_set_special_port
_thread_set_state
_thread_suspend
_thread_swap_exception_ports
_thread_swap_mach_voucher
_thread_switch
_thread_terminate
_thread_wire
@ -886,6 +998,7 @@ _truncate
_umask
_undelete
_unlink
_unlinkat
_unmount
_utimes
_vfork
@ -917,12 +1030,20 @@ _vm_region_recurse_64
_vm_remap
_vm_wire
_vm_write
_voucher_mach_msg_adopt
_voucher_mach_msg_clear
_voucher_mach_msg_revert
_voucher_mach_msg_set
_vprintf_stderr_func
_wait4
_waitevent
_waitid
_waitid$NOCANCEL
_watchevent
_work_interval_create
_work_interval_destroy
_work_interval_notify
_work_interval_notify_simple
_write
_write$NOCANCEL
_writev

View file

@ -6,14 +6,14 @@
# Allow passing in bootstrap files directly so we can test the stdenv bootstrap process when changing the bootstrap tools
, bootstrapFiles ? let
fetch = { file, sha256, executable ? true }: import <nix/fetchurl.nix> {
url = "http://tarballs.nixos.org/stdenv-darwin/x86_64/62540508837664e9b366e36d1265502db4329a6e/${file}";
url = "http://tarballs.nixos.org/stdenv-darwin/x86_64/33f59c9d11b8d5014dfd18cc11a425f6393c884a/${file}";
inherit sha256 system executable;
}; in {
sh = fetch { file = "sh"; sha256 = "1qpg16qbqqkmcr5an4d73p6q55izhlzmdd3nvid8gp7f3f9spbz7"; };
bzip2 = fetch { file = "bzip2"; sha256 = "1g67sh51fa2ws9wch5gznvrmmh27mks3dbnp6gvac43qxdnv6mpz"; };
mkdir = fetch { file = "mkdir"; sha256 = "1lkp6y33lsrj9yif1cfrw5g021pffynrdscrz3ds19hslg55w4dw"; };
cpio = fetch { file = "cpio"; sha256 = "115pgrl0pcq2h4yfqrmfvffl0dcabw4mgkc91aphd913wrzfmlz9"; };
tarball = fetch { file = "bootstrap-tools.cpio.bz2"; sha256 = "1ak16xrj41l15ads5l2kfgbyrb1lczzhmi8nln5h0np8r3w9frw9"; executable = false; };
sh = fetch { file = "sh"; sha256 = "1rx4kg6358xdj05z0m139a0zn4f4zfmq4n4vimlmnwyfiyn4x7wk"; };
bzip2 = fetch { file = "bzip2"; sha256 = "104qnhzk79vkbp2yi0kci6lszgfppvrwk3rgxhry842ly1xz2r7l"; };
mkdir = fetch { file = "mkdir"; sha256 = "0d91c19xjzmqisncvldv79d7ddzai9l7vcmajhwlwwv74g6da5yl"; };
cpio = fetch { file = "cpio"; sha256 = "0lw057bmcqls96j0gv1n3mgl66q31mba7i413cbkkaf0rfzz3dxj"; };
tarball = fetch { file = "bootstrap-tools.cpio.bz2"; sha256 = "13ihbj002pis3fgy1d9c4fi7flca21z9brjsjkklm82h5b4nlwxl"; executable = false; };
}
}:

View file

@ -17,9 +17,44 @@ for i in $out/bin/*; do
fi
done
install_name_tool \
-id $out/lib/system/libsystem_c.dylib \
$out/lib/system/libsystem_c.dylib
install_name_tool \
-id $out/lib/system/libsystem_kernel.dylib \
$out/lib/system/libsystem_kernel.dylib
# TODO: this logic basically duplicates similar logic in the Libsystem expression. Deduplicate them!
libs=$(otool -arch x86_64 -L /usr/lib/libSystem.dylib | tail -n +3 | awk '{ print $1 }')
for i in $libs; do
if [ "$i" != "/usr/lib/system/libsystem_kernel.dylib" ] && [ "$i" != "/usr/lib/system/libsystem_c.dylib" ]; then
args="$args -reexport_library $i"
fi
done
ld -macosx_version_min 10.7 \
-arch x86_64 \
-dylib \
-o $out/lib/libSystem.B.dylib \
-compatibility_version 1.0 \
-current_version 1226.10.1 \
-reexport_library $out/lib/system/libsystem_c.dylib \
-reexport_library $out/lib/system/libsystem_kernel.dylib \
$args
ln -s libSystem.B.dylib $out/lib/libSystem.dylib
for name in c dbm dl info m mx poll proc pthread rpcsvc util gcc_s.10.4 gcc_s.10.5; do
ln -s libSystem.dylib $out/lib/lib$name.dylib
done
ln -s libresolv.9.dylib $out/lib/libresolv.dylib
for i in $out/lib/*.dylib $out/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation; do
if ! test -L $i; then
echo patching $i
if test ! -L "$i" -a "$i" != "$out/lib/libSystem*.dylib"; then
echo "Patching $i"
id=$(otool -D "$i" | tail -n 1)
install_name_tool -id "$(dirname $i)/$(basename $id)" $i