irisjae opened a new issue, #47347:
URL: https://github.com/apache/arrow/issues/47347

   ### Describe the bug, including details regarding any error messages, 
version, and platform.
   
   In pyarrow, I've been getting `pyarrow.lib.ArrowInvalid: Cannot locate 
timezone 'UTC': discover_tz_dir failed to find zoneinfo` despite my timezone 
appearing to be properly setup. I seem to have tracked down the problem due to 
a mixup in the timezone discovery logic (introduced by 
67850befa604ce27c2ea8f37132a5ccf73fe68d9?)
   
   As of now, 
[cpp/src/arrow/vendored/datetime/tz.cpp](https://github.com/apache/arrow/blob/67850befa604ce27c2ea8f37132a5ccf73fe68d9/cpp/src/arrow/vendored/datetime/tz.cpp)
 contains such logic to find zoneinfo:
   
   ```
   discover_tz_dir()
   {
      ...
   #  elif !defined(__APPLE__)
       CONSTDATA auto tz_dir_default = "/usr/share/zoneinfo";
       CONSTDATA auto tz_dir_buildroot = "/usr/share/zoneinfo/uclibc";
   
       // Check special path which is valid for buildroot with uclibc builds
       if(stat(tz_dir_buildroot, &sb) == 0 && S_ISDIR(sb.st_mode))
           return tz_dir_buildroot;
       else if(stat(tz_dir_default, &sb) == 0 && S_ISDIR(sb.st_mode))
           return tz_dir_default;
       else
           throw runtime_error("discover_tz_dir failed to find zoneinfo\n");
   #  else  // __APPLE__
   #      if TARGET_OS_IPHONE
   #          if TARGET_OS_SIMULATOR
       return "/usr/share/zoneinfo";
   #          else
       return "/var/db/timezone/zoneinfo";
   #          endif
   #      else
       CONSTDATA auto timezone = "/etc/localtime";
   ```
   
   As far as I can tell, macOS contains zoneinfo in `/usr/share/zoneinfo` and 
Linux contains zoneinfo in somewhere like `/etc/zoneinfo` symlinked from 
`/etc/localtime`. However, according to the above logic, zoneinfo is searched 
for in `/usr/share/zoneinfo` if the system is NOT Apple (i.e. Linux).
   
   In my Python application, I've managed to workaround this issue for the time 
being by making a cgroup with `/etc/zoneinfo` bind mounted to 
`/usr/share/zoneinfo` using bubblewrap.
   
   ### Component(s)
   
   Python, C++


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to