12
12
import time
13
13
import queue
14
14
from typing import Dict
15
+ from importlib import import_module
15
16
16
17
from core import NIPA_DIR
17
18
from core import NipaLifetime
21
22
from pw import Patchwork
22
23
from pw import PwSeries
23
24
import core
24
- import netdev
25
25
26
26
27
27
class IncompleteSeries (Exception ):
@@ -80,6 +80,9 @@ def __init__(self, config) -> None:
80
80
self ._recheck_period = config .getint ('poller' , 'recheck_period' , fallback = 3 )
81
81
self ._recheck_lookback = config .getint ('poller' , 'recheck_lookback' , fallback = 9 )
82
82
83
+ listmodname = config .get ('list' , 'module' , fallback = 'netdev' )
84
+ self .list_module = import_module (listmodname )
85
+
83
86
def init_state_from_disk (self ) -> None :
84
87
try :
85
88
with open ('poller.state' , 'r' ) as f :
@@ -91,28 +94,28 @@ def init_state_from_disk(self) -> None:
91
94
pass
92
95
93
96
def _series_determine_tree (self , s : PwSeries ) -> str :
94
- s .tree_name = netdev .series_tree_name_direct (s )
97
+ s .tree_name = self . list_module .series_tree_name_direct (s )
95
98
s .tree_mark_expected = True
96
99
s .tree_marked = bool (s .tree_name )
97
100
98
101
if s .is_pure_pull ():
99
102
if s .title .find ('-next' ) >= 0 :
100
- s .tree_name = 'net-next'
103
+ s .tree_name = self . list_module . next_tree
101
104
else :
102
- s .tree_name = 'net'
105
+ s .tree_name = self . list_module . current_tree
103
106
s .tree_mark_expected = None
104
107
return f"Pull request for { s .tree_name } "
105
108
106
109
if s .tree_name :
107
110
log (f'Series is clearly designated for: { s .tree_name } ' , "" )
108
111
return f"Clearly marked for { s .tree_name } "
109
112
110
- s .tree_mark_expected , should_test = netdev .series_tree_name_should_be_local (s )
113
+ s .tree_mark_expected , should_test = self . list_module .series_tree_name_should_be_local (s )
111
114
if not should_test :
112
115
log ("No tree designation found or guessed" , "" )
113
116
return "Not a local patch"
114
117
115
- if netdev .series_ignore_missing_tree_name (s ):
118
+ if self . list_module .series_ignore_missing_tree_name (s ):
116
119
s .tree_mark_expected = None
117
120
log ('Okay to ignore lack of tree in subject, ignoring series' , "" )
118
121
return "Series ignored based on subject"
@@ -122,11 +125,12 @@ def _series_determine_tree(self, s: PwSeries) -> str:
122
125
else :
123
126
log_open_sec ('Series okay without a tree designation' )
124
127
125
- # TODO: make this configurable
126
- if "net" in self ._trees and netdev .series_is_a_fix_for (s , self ._trees ["net" ]):
127
- s .tree_name = "net"
128
- elif "net-next" in self ._trees and self ._trees ["net-next" ].check_applies (s ):
129
- s .tree_name = "net-next"
128
+ if self .list_module .current_tree in self ._trees and \
129
+ self .list_module .series_is_a_fix_for (s , self ._trees [self .list_module .current_tree ]):
130
+ s .tree_name = self .list_module .current_tree
131
+ elif self .list_module .next_tree in self ._trees and \
132
+ self ._trees [self .list_module .next_tree ].check_applies (s ):
133
+ s .tree_name = self .list_module .next_tree
130
134
131
135
if s .tree_name :
132
136
log (f"Target tree - { s .tree_name } " , "" )
@@ -166,7 +170,7 @@ def _process_series(self, pw_series) -> None:
166
170
raise IncompleteSeries
167
171
168
172
comment = self .series_determine_tree (s )
169
- s .need_async = netdev .series_needs_async (s )
173
+ s .need_async = self . list_module .series_needs_async (s )
170
174
if s .need_async :
171
175
comment += ', async'
172
176
0 commit comments