0

In unix world, /tmp folder is most of time not on the same file system than the current running OS.

Building/packaging IOS app in Forge uses of temporary folder & python function os.rename, which is a wrapper over shell rename command. This command can not work on different file system.

Following is the error encountered with forge run:

[DEBUG] Making Payload directory
[ERROR] [Errno 18] Invalid cross-device link
[DEBUG] Traceback (most recent call last):
  File "/home/<user>/TriggerToolkit/build-tools/forge/async.py", line 96, in run
    result = self._target(*self._args, **self._kwargs)
  File "/home/<user>/TriggerToolkit/trigger/api/app.py", line 286, in run
    forge_main.run(['--general.interactive', 'no'])
  File "/home/<user>/TriggerToolkit/build-tools/forge/main.py", line 437, in run
    build_to_run=build_to_run,
  File "/home/<user>/forge-workspace/sfjozog/.template/generate_dynamic/customer_goals.py", line 126, in run_app
    build_to_run.run()
  File "/home/<user>/forge-workspace/sfjozog/.template/generate_dynamic/build.py", line 337, in run
    self._call_with_params(task_method, task_args)
  File "/home/<user>/forge-workspace/sfjozog/.template/generate_dynamic/build.py", line 296, in _call_with_params
    return method(self, *params)
  File "/home/<user>/forge-workspace/sfjozog/.template/generate_dynamic/ios_tasks.py", line 626, in run_ios
    certificate_password=certificate_password,
  File "/home/<user>/forge-workspace/sfjozog/.template/generate_dynamic/ios_tasks.py", line 571, in run_idevice
    certificate_password=certificate_password,
  File "/home/<user>/forge-workspace/sfjozog/.template/generate_dynamic/ios_tasks.py", line 387, in create_ipa_from_app
    self._create_entitlements_file(build, temp_file_path)
  File "/home/<user>/forge-workspace/sfjozog/.template/generate_dynamic/ios_tasks.py", line 323, in _create_entitlements_file
    _replace_in_file(temp_file_path, 'APP_ID', bundle_id)
  File "/home/<user>/forge-workspace/sfjozog/.template/generate_dynamic/ios_tasks.py", line 318, in _replace_in_file
    os.rename(tmp_file, filename)
OSError: [Errno 18] Invalid cross-device link

--- EDIT ---

This is an app with Facebook connect enabled ( as you can see as it tries to replace APP_ID)

--- EDIT ---

By manually changing function used in python source file (in .templates/ directory), this works (so shutil.move is the only solution)

  • I would suggest the usage of shutil package , with the move method (shutil.move(full_path, new_path)) – Quentin Harnay Nov 21 '12 at 09:44
  • You haven't asked a question? – Chris Seymour Nov 21 '12 at 09:44
  • As Trigger.io does not provide any bugtracker, stackoverflow is the official and only way to contact them. This is a "bug", blocking us to build IOS apps, so my question should be: "When will it be fixed ?" – Quentin Harnay Nov 21 '12 at 09:47
  • Stackoverflow is **not** affiliated with trigger.io, you should have took the blue pill! – Chris Seymour Nov 21 '12 at 09:50
  • My comment did change between the time you answered and my edit. "them" ! Anyway, I'm not asking anything to stackoverflow, I'm only saying that this is the choice of trigger.io to only rely on stackoverflow tag. I'm stuck in with this way. – Quentin Harnay Nov 21 '12 at 09:54
  • Stackoverflow's format is question/answer not bug tracking.. Try include a *question* in a question? – Chris Seymour Nov 21 '12 at 10:03

1 Answers1

2

This question was also raised here: Trigger.io [Errno 18] Cross-device link

The response to that gives options for workarounds.

Community
  • 1
  • 1
Amir Nathoo
  • 1,866
  • 12
  • 12
  • Thanks we dealed with this issue too. Is there any ETA for the real fix in the forge toolkit ? (we have to modify local files, automatically replaced on remote build, update, clean, etc) – Quentin Harnay Dec 04 '12 at 16:03