Awesome feedback Kurt!

I have a big chunk of time I can dedicate to this Monday evening. I
will dig in.

Thanks,
Bryan

> On Apr 17, 2016, at 12:24 PM, Kurt Miller <k...@intricatesoftware.com> wrote:
>
>> On Thu, 2016-04-14 at 14:58 -0400, Bryan C. Everly wrote:
>> Kurt,
>>
>> Thanks for the feedback on this.  Your suggestions were great - now
>> that I've implemented them it has dramatically simplified things.
>>
>> I have attached the sample port for snakeyaml that uses the new
>> infrastructure as well as a new diff for the java.port.mk file below.
>>
>> I'd appreciate any further feedback and, if all is good, a commit from
>> some kind soul.  :-)
>
> Hi Bryan,
>
> Thanks for incorporating the feedback so far. I received some additional
> feedback from other devs about the current approach. Could you explore
> the following ideas?
>
> We need a directory to point maven.repo.local at that contains the
> dependencies for the port. It should be possible to set all maven ports
> to use the same DIST_SUBDIR. This would reduce bloat by not having to
> have each maven port have custom built dependencies distfile that might
> have duplicate data in it. See comments inline below:
>
>> Index: java.port.mk
>> ===================================================================
>> RCS file: /home/cvs/ports/devel/jdk/java.port.mk,v
>> retrieving revision 1.34
>> diff -u -p -r1.34 java.port.mk
>> --- java.port.mk        17 Jun 2015 17:16:04 -0000      1.34
>> +++ java.port.mk        14 Apr 2016 18:54:07 -0000
>> @@ -110,6 +110,33 @@ do-build:
>> .   endif
>> .endif
>>
>> +# Allow ports that use devel/maven to set MODJAVA_BUILD=maven
>> +# Since maven downloads dependencies at build-time (which is not allowed
>> +# in our production builds because we turn on networking support only
>> +# for the fetch phase of the  build), maven's offline repository support
>> +# is used and the port maintainer is expected to supply an archive that
>> +# holds the complete set of dependencies needed to build the port.
>> +.if defined(MODJAVA_BUILD) && ${MODJAVA_BUILD:L} == "maven"
>> +BUILD_DEPENDS += devel/maven
>> +    MODJAVA_BUILD_DEP_SITE ?=
>
> This var looks unused. Kill it perhaps.
>
>> +    MODJAVA_BUILD_TARGET_NAME ?= package
>> +    MODJAVA_BUILD_FILE ?= pom.xml
>> +    MODJAVA_BUILD_DIR ?= ${WRKSRC}
>> +    MODJAVA_BUILD_ARGS ?=
>
> DIST_SUBDIR ?= maven
>
>> +    MODJAVA_BUILD_DEP_DIR ?=
>
> Change to MODJAVA_BUILD_DEP_DIR ?= ${FULLDISTDIR}
>
>> +
>> +MODJAVA_BUILD_TARGET = \
>> +       cd ${MODJAVA_BUILD_DIR} && \
>> +           ${SETENV} ${MAKE_ENV} ${LOCALBASE}/bin/mvn \
>> +           -f ${MODJAVA_BUILD_FILE} \
>> +           -Dmaven.repo.local="${MODJAVA_BUILD_DEP_DIR}" \
>> +           -o ${MODJAVA_BUILD_ARGS} ${MODJAVA_BUILD_TARGET_NAME}
>> +.      if !target(do-build)
>> +do-build:
>> +       ${MODJAVA_BUILD_TARGET}
>> +.      endif
>> +.endif
>> +
>> # Convenience variables.
>> # Ports that install .jar files for public use (ie, in ${MODJAVA_JAR_DIR})
>> # please install unversioned .jar files. If a port installs
>
> Next you would adjust your port, snakeyaml, to have a separate distfile
> for each dependency with :0,1,2 and corresponding MASTER_SITES0,1,2 for
> download locations. By default ports infrastructure would attempt to
> extract all distfiles when building, so you would need to use
> EXTRACT_ONLY set to the snakeyaml distfile to have only the snakeyaml
> distfile extracted.
>
> If this set of changes works out, I think it will improve the maven
> built ports by reducing downloads and also gets rid of the requirement
> that a porter has to maintain a separate distfile for each maven port.
>
> -Kurt
>
>
>

Reply via email to