@@ -36,7 +36,7 @@ impl<'a> ArchiveBuilder<'a> for ArArchiveBuilder<'a> {
36
36
dst : output. to_path_buf ( ) ,
37
37
src : input. map ( |p| p. to_path_buf ( ) ) ,
38
38
lib_search_paths : archive_search_paths ( sess) ,
39
- is_like_osx : sess. target . target . options . is_like_osx ,
39
+ is_like_osx : true , // sess.target.target.options.is_like_osx,
40
40
} ;
41
41
42
42
let ( src_archives, entries) = if let Some ( src) = & config. src {
@@ -146,8 +146,24 @@ impl<'a> ArchiveBuilder<'a> for ArArchiveBuilder<'a> {
146
146
ArchiveEntry :: FromArchive { archive_index, entry_index } => {
147
147
let entry = self . src_archives [ archive_index] . jump_to_entry ( entry_index) . unwrap ( ) ;
148
148
let orig_header = entry. header ( ) ;
149
+
150
+ let orig_filename = orig_header. identifier ( ) . to_vec ( ) ;
151
+
152
+ use std:: collections:: hash_map:: DefaultHasher ;
153
+ use std:: hash:: { Hash , Hasher } ;
154
+ let mut hasher = DefaultHasher :: new ( ) ;
155
+ orig_filename. hash ( & mut hasher) ;
156
+ let mut filename = hasher. finish ( ) . to_le_bytes ( ) [ 0 ..6 ] . to_vec ( ) ;
157
+ filename. extend ( & orig_filename[ orig_filename. len ( ) - 9 ..] ) ;
158
+
159
+ assert ! (
160
+ filename. len( ) <= 16 ,
161
+ "Filenames bigger than 16 bytes are not yet supported. Filename was: \" {}\" " ,
162
+ String :: from_utf8( filename) . unwrap_or_else( |e| e. to_string( ) ) ,
163
+ ) ;
164
+
149
165
let mut header =
150
- ar:: Header :: new ( orig_header . identifier ( ) . to_vec ( ) , orig_header. size ( ) ) ;
166
+ ar:: Header :: new ( filename , orig_header. size ( ) ) ;
151
167
header. set_mtime ( orig_header. mtime ( ) ) ;
152
168
header. set_uid ( orig_header. uid ( ) ) ;
153
169
header. set_gid ( orig_header. gid ( ) ) ;
0 commit comments