Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add support for Xcode 15 #17343

Merged
merged 1 commit into from
Sep 20, 2023
Merged

add support for Xcode 15 #17343

merged 1 commit into from
Sep 20, 2023

Conversation

siddarthkay
Copy link
Contributor

After upgrading to Xcode 15 make run-ios would fail with

❌ /Users/siddarthkumar/code/status-im/PR/status-mobile/ios/Pods/boost/boost/container_hash/hash.hpp:131:33: no template named 'unary_function' in namespace 'std'; did you mean '__unary_function'?
        struct hash_base : std::unary_function<T, std::size_t> {};

This PR fixes the issue and makes existing codebase compatible with newer Xcode.
reference issue in react-native repo : facebook/react-native#37748

Platforms

  • iOS

status: ready

@status-im-auto
Copy link
Member

status-im-auto commented Sep 20, 2023

Jenkins Builds

Commit #️⃣ Finished (UTC) Duration Platform Result
11dd8a3 #1 2023-09-20 05:08:20 ~4 min ios 📄log
✔️ 11dd8a3 #1 2023-09-20 05:14:21 ~10 min android-e2e 🤖apk 📲
✔️ 11dd8a3 #1 2023-09-20 05:14:24 ~10 min android 🤖apk 📲
✔️ 3700068 #2 2023-09-20 05:20:10 ~5 min android-e2e 🤖apk 📲
✔️ 3700068 #2 2023-09-20 05:21:11 ~6 min ios 📱ipa 📲
✔️ 3700068 #2 2023-09-20 05:21:51 ~7 min android 🤖apk 📲
✔️ 3700068 #2 2023-09-20 05:24:12 ~9 min tests 📄log

After upgrading to Xcode 15 make run-ios would fail with

```
❌ /Users/siddarthkumar/code/status-im/PR/status-mobile/ios/Pods/boost/boost/container_hash/hash.hpp:131:33: no template named 'unary_function' in namespace 'std'; did you mean '__unary_function'?
        struct hash_base : std::unary_function<T, std::size_t> {};
```

This commit fixes the issue and makes existing codebase compatible with newer Xcode.

reference issue in react-native repo : facebook/react-native#37748
@siddarthkay
Copy link
Contributor Author

Side effect of this approach is we now get ugly logs like this when running make run-ios

[StatusIm] Compiling main.m
⚠️  ld: option '-no_dead_strip_inits_and_terms' is obsolete, use '-dead_strip' instead
ld: warning: ignoring duplicate libraries: '-lc++', '-lz'
ld: warning: '/Users/siddarthkumar/Library/Developer/Xcode/DerivedData/StatusIm-btihnuzvzghnuvhfwbpfwxtxfhoy/Build/Products/Debug-iphonesimulator/Statusgo.framework/Versions/A/Statusgo[x86_64][2](go.o)' has malformed LC_DYSYMTAB, expected 117 undefined symbols to start at index 88103, found 260 undefined symbols starting at index 399
❌ duplicate symbol '_secp256k1_ec_pubkey_serialize' in
❌ duplicate symbol '_secp256k1_context_set_error_callback' in
❌ duplicate symbol '_secp256k1_nonce_function_default' in
❌ duplicate symbol '_secp256k1_ec_pubkey_create' in
❌ duplicate symbol '_secp256k1_ecdsa_signature_serialize_der' in
❌ duplicate symbol '_secp256k1_ecdsa_recoverable_signature_serialize_compact' in
❌ duplicate symbol '_secp256k1_ec_pubkey_combine' in
❌ duplicate symbol '_secp256k1_ecdsa_signature_parse_der' in
❌ duplicate symbol '_secp256k1_context_randomize' in
❌ duplicate symbol '_secp256k1_ecdsa_signature_serialize_compact' in
❌ duplicate symbol '_secp256k1_ec_privkey_tweak_add' in
❌ duplicate symbol '_secp256k1_ecdsa_recoverable_signature_parse_compact' in
❌ duplicate symbol '_secp256k1_ecdsa_sign_recoverable' in
❌ duplicate symbol '_secp256k1_context_destroy' in
❌ duplicate symbol '_secp256k1_ecdsa_verify' in
❌ duplicate symbol '_secp256k1_context_create' in
❌ duplicate symbol '_secp256k1_ec_seckey_verify' in
❌ duplicate symbol '_secp256k1_ec_pubkey_tweak_add' in
❌ duplicate symbol '_secp256k1_ecdsa_recover' in
❌ duplicate symbol '_secp256k1_context_set_illegal_callback' in
❌ duplicate symbol '_secp256k1_ec_pubkey_tweak_mul' in
❌ duplicate symbol '_secp256k1_ec_pubkey_parse' in
❌ duplicate symbol '_secp256k1_ecdsa_signature_normalize' in
❌ duplicate symbol '_secp256k1_ecdsa_sign' in
❌ duplicate symbol '_secp256k1_nonce_function_rfc6979' in
❌ duplicate symbol '_secp256k1_context_clone' in
❌ duplicate symbol '_secp256k1_ecdsa_recoverable_signature_convert' in
❌ duplicate symbol '_secp256k1_ecdsa_signature_parse_compact' in
❌ duplicate symbol '_secp256k1_ec_privkey_tweak_mul' in
[StatusIm] Running script Bundle React Native code and images

However the end result is

** BUILD SUCCEEDED **
success Successfully built the app
2023-09-20 10:41:04.490 xcodebuild[34999:300739] Requested but did not find extension point with identifier Xcode.InterfaceBuilderBuildSupport.PlatformDefinition
info Installing "/Users/siddarthkumar/Library/Developer/Xcode/DerivedData/StatusIm-btihnuzvzghnuvhfwbpfwxtxfhoy/Build/Products/Debug-iphonesimulator/StatusIm.app"
info Launching "im.status.ethereum.debug"
success Successfully launched the app on the simulator

So I guess the red Xs are safe to ignore for now.

@@ -772,7 +772,7 @@ SPEC CHECKSUMS:
RNLanguages: 962e562af0d34ab1958d89bcfdb64fafc37c513e
RNPermissions: ad71dd4f767ec254f2cd57592fbee02afee75467
RNReactNativeHapticFeedback: 2566b468cc8d0e7bb2f84b23adc0f4614594d071
RNReanimated: d0db0ee059c33381bca787a2193c27e52750ccaf
RNReanimated: b3b67ebe099c0b0e7b5c7386b18d2468e29c9d41
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

someone forgot to push this change?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess

@flexsurfer
Copy link
Member

i gave approve because i don't see anything wrong, but i haven't tested it

@status-im-auto
Copy link
Member

81% of end-end tests have passed

Total executed tests: 43
Failed tests: 8
Passed tests: 35
IDs of failed tests: 702732,702894,702783,703503,702786,702731,702808,703382 

Failed tests (8)

Click to expand
  • Rerun failed tests

  • Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_pin_messages, id: 702731
    Test is not run, e2e blocker  
    

    [[reason: [NOTRUN] Pin feature is in development]]

    Class TestCommunityOneDeviceMerged:

    1. test_community_discovery, id: 703503

    Test is not run, e2e blocker  
    

    [[reason: [NOTRUN] https://github.com//issues/17175]]

    2. test_community_mute_community_and_channel, id: 703382

    Device 1: Find MuteButton by accessibility id: mute-community
    Device 1: Click system back button

    critical/test_public_chat_browsing.py:442: in test_community_mute_community_and_channel
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Text 'Muted until 08:07 today' is not shown for muted community
    E    Text 'Muted until 08:07 today' is not shown for a channel in muted community
    



    Device sessions

    Class TestCommunityMultipleDeviceMergedTwo:

    1. test_community_mentions_push_notification, id: 702786

    # STEP: Invited member gets push notification with the mention and tap it
    Device 2: Getting PN by 'user_2'

    critical/test_public_chat_browsing.py:1149: in test_community_mentions_push_notification
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Push notification with the mention was not received by admin
    E    Can not edit a message with a mention
    E    Push notification with the mention was not received by the invited member 
    

    [[Issue with username in PN, issue #6 in 15500]]

    Device sessions

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_pin_messages, id: 702732

    Test is not run, e2e blocker  
    

    [[reason: [NOTRUN] Pin feature is in development]]

    2. test_group_chat_offline_pn, id: 702808

    Device 3: Looking for a message by text: message from old member
    Device 3: Looking for a message by text: message from new member

    critical/chats/test_group_chat.py:442: in test_group_chat_offline_pn
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Messages PN was not fetched from offline
    



    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUiTwo:

    1. test_1_1_chat_is_shown_message_sent_delivered_from_offline, id: 702783

    Device 2: Find Text by xpath: //*[starts-with(@text,'test message')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']//*[@content-desc='message-status']/android.widget.TextView
    Device 2: Text is Delivered

    critical/chats/test_1_1_public_chats.py:1416: in test_1_1_chat_is_shown_message_sent_delivered_from_offline
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Message was not delivered after resending from offline
    



    Device sessions

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_contact_block_unblock_offline, id: 702894

    Device 1: Click until ChatMessageInput by accessibility id: chat-message-input will be presented
    Device 1: Looking for a message by text: Hurray! unblocked

    critical/test_public_chat_browsing.py:967: in test_community_contact_block_unblock_offline
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Hurray! unblocked was not received in public chat after user unblock! 
    

    [[Message can be missed after unblock: https://github.com//issues/16873]]

    Device sessions

    Passed tests (35)

    Click to expand

    Class TestActivityMultipleDevicePRTwo:

    1. test_activity_center_mentions, id: 702957
    Device sessions

    2. test_activity_center_admin_notification_accept_swipe, id: 702958
    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_emoji_send_reply_and_open_link, id: 702782
    Device sessions

    2. test_1_1_chat_text_message_delete_push_disappear, id: 702733
    Device sessions

    3. test_1_1_chat_push_emoji, id: 702813
    Device sessions

    4. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745
    Device sessions

    5. test_1_1_chat_edit_message, id: 702855
    Device sessions

    6. test_1_1_chat_send_image_save_and_share, id: 703391
    Device sessions

    7. test_1_1_chat_message_reaction, id: 702730
    Device sessions

    Class TestCommunityOneDeviceMerged:

    1. test_restore_multiaccount_with_waku_backup_remove_switch, id: 703133
    Device sessions

    2. test_community_copy_and_paste_message_in_chat_input, id: 702742
    Device sessions

    3. test_community_undo_delete_message, id: 702869
    Device sessions

    4. test_community_navigate_to_channel_when_relaunch, id: 702846
    Device sessions

    Class TestCommunityMultipleDeviceMergedTwo:

    1. test_community_markdown_support, id: 702809
    Device sessions

    2. test_community_hashtag_links_to_community_channels, id: 702948
    Device sessions

    3. test_community_leave, id: 702845
    Device sessions

    Class TestActivityMultipleDevicePR:

    1. test_navigation_jump_to, id: 702936
    Device sessions

    2. test_activity_center_reply_read_unread_delete_filter_swipe, id: 702947
    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUiTwo:

    1. test_1_1_chat_delete_via_long_press_relogin, id: 702784
    Device sessions

    2. test_1_1_chat_mute_chat, id: 703496
    Device sessions

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_mute_chat, id: 703495
    Device sessions

    2. test_group_chat_send_image_save_and_share, id: 703297
    Device sessions

    3. test_group_chat_reactions, id: 703202
    Device sessions

    4. test_group_chat_join_send_text_messages_push, id: 702807
    Device sessions

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_several_images_send_reply, id: 703194
    Device sessions

    2. test_community_one_image_send_reply, id: 702859
    Device sessions

    3. test_community_emoji_send_copy_paste_reply, id: 702840
    Device sessions

    4. test_community_mark_all_messages_as_read, id: 703086
    Device sessions

    5. test_community_message_delete, id: 702839
    Device sessions

    6. test_community_message_send_check_timestamps_sender_username, id: 702838
    Device sessions

    7. test_community_links_with_previews_github_youtube_twitter_gif_send_enable, id: 702844
    Device sessions

    8. test_community_message_edit, id: 702843
    Device sessions

    9. test_community_unread_messages_badge, id: 702841
    Device sessions

    Class TestActivityCenterContactRequestMultipleDevicePR:

    1. test_activity_center_contact_request_accept_swipe_mark_all_as_read, id: 702851
    Device sessions

    2. test_activity_center_contact_request_decline, id: 702850
    Device sessions

    @qfrank
    Copy link
    Contributor

    qfrank commented Sep 20, 2023

    trying with xcode 14.3.1

    @siddarthkay
    Copy link
    Contributor Author

    Thanks @flexsurfer and @qfrank you read my mind. I was just now thinking about backward compatibility with Xcode 14.x :)
    Although CI is green but its important for this change not to break development environment of other developers.
    Looking forward to your results 👍🏻

    Copy link
    Contributor

    @qfrank qfrank left a comment

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    LGTM, xcode 14.3.1 works as before, applogize for not brave enough to try xcode 15 but still thank you for your PR ❤️

    Copy link
    Contributor

    @mohsen-ghafouri mohsen-ghafouri left a comment

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    I just upgraded and tested it with Xcode 15 , all works fine. thanks :)

    @siddarthkay siddarthkay merged commit a15c978 into develop Sep 20, 2023
    6 of 7 checks passed
    @siddarthkay siddarthkay deleted the support-xcode-15 branch September 20, 2023 09:11
    @siddarthkay
    Copy link
    Contributor Author

    siddarthkay commented Sep 20, 2023

    @status-im/mobile-qa : merged this without QA because we're only adding support to build the app with Xcode 15 and this has no impact on app functionalities. Also E2E was run just in case ;)

    @jakubgs
    Copy link
    Member

    jakubgs commented Sep 20, 2023

    A more accurate reason would be that Xcode changed cannot affect E2E tests since those are run on Android builds.

    ibrkhalil pushed a commit that referenced this pull request Oct 1, 2023
    After upgrading to Xcode 15 make run-ios would fail with
    
    ```
    ❌ /Users/siddarthkumar/code/status-im/PR/status-mobile/ios/Pods/boost/boost/container_hash/hash.hpp:131:33: no template named 'unary_function' in namespace 'std'; did you mean '__unary_function'?
            struct hash_base : std::unary_function<T, std::size_t> {};
    ```
    
    This commit fixes the issue and makes existing codebase compatible with newer Xcode.
    
    reference issue in react-native repo : facebook/react-native#37748
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Labels
    None yet
    Projects
    Archived in project
    Archived in project
    Development

    Successfully merging this pull request may close these issues.

    7 participants