# Current tasks oi-userland is subject to constant improvement. Whenever you modify or update a component, please review the list of tasks, below, and apply any of the improvements that are relevant to the component you have modified. Theses are organized with the easiest changes at the beginning of the list and the more complicated changes near the end: 1. Use `$(WS_MAKE_RULES)` when including `prep.mk`, `configure.mk`, `ips.mk`, etc., instead of `../make-rules` or `$(WS_TOP)/make-rules`. Example: Change occurrences of ```Makefile include ../../make-rules/prep.mk include ../../make-rules/configure.mk include ../../make-rules/ips.mk ``` or ```Makefile include $(WS_TOP)/make-rules/prep.mk include $(WS_TOP)/make-rules/configure.mk include $(WS_TOP)/make-rules/ips.mk ``` to: ```Makefile include $(WS_MAKE_RULES)/prep.mk include $(WS_MAKE_RULES)/configure.mk include $(WS_MAKE_RULES)/ips.mk ``` **Note:** This does not apply to the initial `include` for `shared-macros.mk`. That file sets up many of the macros that can be used later, including `$(WS_MAKE_RULES)`, so it cannot be referenced via `$(WS_MAKE_RULES)`. 2. Remove `COMPONENT_BUGDB`, if present. If the component's `Makefile` includes a line for `COMPONENT_BUGDB`, remove it. That setting was used by Sun/Oracle and is not relevant to OpenIndiana. 3. Use `PATH=$(PATH.gnu)` instead of `PATH=/usr/gnu/bin:/usr/bin` in `Makefile`. If the component's `Makefile` overrides `PATH` to have `/usr/gnu/bin` at the beginning, the PATH should be set via the `$(PATH.gnu)` macro. Example: Change occurrences of ```Makefile PATH=/usr/gnu/bin:/usr/bin ``` to: ```Makefile PATH=$(PATH.gnu) ``` 4. If there are missing build dependencies, add them in a separate list before the auto-generated runtime dependencies in the `Makefile`. You should always run `gmake env-prep` before attempting to build each component, to install all listed dependencies. If the component fails to build because of e.g a missing header file, it may mean that there are additional build dependencies for the component. You can use `pkg search -r` to identify which component provides the missing file(s). For software that uses `configure`, you could also check `configure.ac` for software that might be a build dependency. Once you've identified the missing build dependency, it should be added to the `Makefile`, just before the auto-generated runtime dependencies. Example: The pkgconfig files `pygtk-2.0.pc` and `pygobject-2.0.pc` are needed to build `image/gimp` but are not needed at runtime, so `gmake REQUIRED_PACKGES` does not detect the dependency. The components containing them should be added to the Makefile, just before the auto-generated dependencies: ```Makefile # Build dependencies REQUIRED_PACKAGES += library/python/pygobject REQUIRED_PACKAGES += library/python/pygtk2 # Auto-generated dependencies ``` 5. For component depending on JPEG libraries switch dependency to libjpeg8-turbo. 6. Doxygen update: After updating to 1.8.13 the HTML documentation is generated differently. 7. Move binaries to 64-bit only: Libraries should still be delivered as 32- and 64-bit, but binaries are converted to 64-bit only. For autotools-based components set: ``` PREFERRED_BITS=64 ``` Feel free to ask for help on the IRC or developer mailing-list.