[Starlingx-discuss] how to deal with loop dependent in building stage

Zhang, Xiao xiao.zhang at windriver.com
Tue Sep 21 13:07:46 UTC 2021


On 9/20/2021 9:39 PM, Scott Little wrote:
> For centos, we found that loops almost always depend on one of a 
> handful of low level packages, e.g. bash, python, gcc, rpm
>
> We had two ways to try and deal with this.
>
> 1) Allow the use of a pre-compiled binary from upstream to satisfy the 
> dependency when the StarlingX modification are unlikely to affect how 
> dependent packages compile.  Packages in the 'mock' lst files could 
> satisfy this type of requirement.
> e.g. A=bash
> So in your example, compile order would be:
>     F (vs upstream A), D (vs upstream A), C, B, A
>
> 2) Use a different 'build-type'... other than 'std' or 'rt' ... when 
> the modified StarlingX package was likely to affect the output of 
> dependent packages.  Compile packages in that build type first.
> e.g. A=rpm
>  = build-type 'installer' compile order would be:
>         A (vs upstream binaries) B and C ... call this A-intermediate
? So, the 'installer' type of A doesn't depend on B and C, right? Just 
like the official method to break the loop manually?
>  = build-type 'std' compile order would be:
>         F (vs A-intermediate), D (vs A-intermediate), C, B, A
>
Seems the first one is more fit for automatic build. Then, any special 
cases thus we have to use the second method? Or we can always use the 
first one?


Thanks

Xiao

> Scott
>
>
> On 2021-09-18 2:50 a.m., Zhang, Xiao wrote:
>>  Hi,
>>
>>
>> We are trying to construct basic environment for porting starlingX on 
>> Debian. While when I dealing with the build order of user space 
>> packages, the loop dependent problem blocked me.
>>
>> The easiest example: source package A build depend on B while B is 
>> also build depend on A. We can just build A, B, A, B and only use the 
>> later result.
>>
>> A fairly complex example: A depends on B and C, B depends on D, C 
>> depends on F, D depends on A and F. In this case there will be three 
>> cycles as below:
>>
>> A->B->D->A, A->B->D->F->A, A->C->F->A . Even more, if in some cases 
>> we needn't B or D, then we have only one cycle: ACFA
>>
>> I tried to find a method to deal with it but failed.
>>
>> So I wonder how did we deal with such loop dependent before, on 
>> CentOS. Any advises about it?
>>
>>
>> Thanks a lot
>>
>> Xiao
>>
>>
>> _______________________________________________
>> Starlingx-discuss mailing list
>> Starlingx-discuss at lists.starlingx.io
>> http://lists.starlingx.io/cgi-bin/mailman/listinfo/starlingx-discuss
>
>
>
> _______________________________________________
> Starlingx-discuss mailing list
> Starlingx-discuss at lists.starlingx.io
> http://lists.starlingx.io/cgi-bin/mailman/listinfo/starlingx-discuss



More information about the Starlingx-discuss mailing list