I have not tried to build the rpm on Mac port. From the error, it looks like the system was unable to create files in /tmp. There are three possible causes.
- /tmp is full.
- Disable java-repak did not work on MacPorts. There are bugs in rpmbuild which re-package java jar files to find dependencies. This is particularly a issue with software using aspect/j. Hence, I defined a new macro __os_install_post to overwrite the jar file repackaging. This macro was designed for RHEL/CentOS. I don't think this macro works on MacPorts.
- The source code location is in a location where the directory path contains multiple dash '-' character. rpmbuild has bug to use long file names with dash character. This is the reason that the build system designed to build RPM in /tmp to avoid using $src_prefix/build/rpm, where src_prefix has long file names.
I think the probable cause is either 1 or 2. If you like to try to debug 2, then edit src/packages/rpm/spec/pig.spec and remove __os_install_post macro.
For the untested part:
- PIG_CLASS_PATH should be properly setup by the script. User doesn't need to define class path.
- I would recommend to use VirtualBox and install Ubuntu. I could share my vm image for testing on monday.
For Apache Hadoop rpm/deb packages, there is no deb source package because source tarball is a different target from top level.
Here are the reasons why there is no source package:
For debian, software are usually setup:
- Write a control file, and pre/post install/remove/upgrade scripts
- Patch source code
- Build source code
- Create deb package from binary
- Create source deb package with source file list and binary deb package
For rpm, software are usually setup:
- Write a spec file
- Prepare source code and patches
- Build from patched source
- Discover dependency
- Generate source rpm and binary rpm
In both systems, the meta data packaging file are created outside of the scope of source tarball, and patches can be applied to create patch level packages. In Apache, we have minor releases but not patch level release. Hence, the patching mechanism do not apply. Apache released source tarball is the source of truth. There is no need to create separate source package to represent the source.