[08:44:29] morning [08:54:11] hashar: are you around? i have a question about the filesystem structure of the sources in CI [09:00:33] joakino: hello [09:00:41] joakino: what do you want to know? [09:00:42] hey! [09:01:03] hashar: i'm working on a command line tool that I run on npm test on patches [09:01:08] sample patch here https://gerrit.wikimedia.org/r/#/c/312850/ [09:01:27] eeeeeeee :D [09:01:47] hashar: the CLI needs to read the sources from the extension it is configured in, and from core too, so I was assuming you can read ../../resources to get core's frontend assets, but it seems to fail [09:02:11] ah so kind of an integration test between MF and MediaWiki [09:02:17] but mw/core is not cloned in the npm jobs [09:02:21] oooh [09:02:39] i thought all the sources where there [09:02:41] the mediawiki-extensions-hhvm does though [09:02:47] but it runs the PHPUnit suite from MediaWiki core [09:03:07] darn haha [09:03:15] what is that resource-modules lint thing ? [09:03:37] in MediaWiki there are a few suite of tests that are shared/run for all extensions [09:03:45] it analyzes JS sources from an extension and core and checks the dependency graph against resourcemodules configuration in extension.json [09:03:46] including one that test ResourceLoader material [09:04:37] hashar: this is more a per-extension linter, but needs to read core to check JS definitions [09:04:46] that's why i thought of running it in npm test [09:05:11] * hashar looks at https://www.npmjs.com/package/resource-modules [09:05:17] yep [09:05:58] would it be possible to clone core's sources on the npm job? it doesn't need to run mediawiki or anything [09:06:22] it's an experimental thing, I'm trying to get it set up to start polishing it [09:08:12] I am not sure what resource-modules is doing really [09:09:17] hashar: i didn't explain it very well hah [09:09:28] at least the npm-node-4 runs on disposable instances, and we can clone mw/core quite fast on those instances [09:09:48] then the job is triggered by any repo, most would not need mw/core to be cloned. But we can craft yet another job [09:10:35] hashar: maybe fetching a snapshot of master would be faster instead of cloning a repo with the history? [09:11:19] but from what I am reading, that looks to overlap with the PHPUnit tests/phpunit/structure/ResourcesTest.php and or ExtensionJsonValidationTest.php [09:11:31] ah [09:11:47] on disposable instances mediawiki/core is already included as a mirror (something like /srv/git/mediawiki/core.git ) [09:12:18] so in the workspace the job clones using that mirror as a reference. They are on the same filesystem so git clone just hardlink which is a few miliseconds :D [09:12:26] so essentially it is not a problem [09:12:28] hashar: it overlaps a bit with that, but this cli tool reads the sources, not just the extensionljson [09:12:43] awesome [09:13:22] so you're saying to make a different npm job that clones core too to not affect all extensions that use the normal npm job [09:13:47] oh man I hate javascript, looks like a soup of random characters :D [09:13:53] yeah [09:13:57] or not I am not sure [09:14:17] lol [09:15:21] hmm [09:15:30] we will need another job I think [09:15:47] cause surely you will end up needing a whole lot other extensions to be added at some point [09:15:51] and probably skin as well [09:16:35] hashar: the cli only assumes existence of core sources, nothing else [09:16:55] i don't think frontend assets depend on frontend assets of other extensions [09:16:58] yeah until you get core that defines material depending on Vector [09:17:09] or MF depending somehow on VisualEditor or whatever else :] [09:17:21] regardless, creating a new job is fairly trivial [09:17:51] yeah true [09:18:06] another question is if that is *lintable* haha [09:18:26] and we can make it to run npm install && npm run-script lint:modules [09:18:28] or something like that [09:18:51] hashar: i'd love a job what run npm run ci to do different things on that env [09:19:32] or npm run test:ci [09:20:27] ReferenceError: Promise is not defined [09:20:33] ahoh ou my nodejs must be outdated :D [09:20:37] haha [09:21:15] needs 4+ like the ci environment [09:21:28] ah [09:21:32] yeah that would help I guess [09:21:39] * hashar shakes fists at Debian outdated packages [09:22:32] and obviously upgrading nodejs ends up uninstalling python and kde [09:22:34] :D [09:23:35] classic nodejs [09:23:53] anyway [09:24:03] your linting tool does interpret javascript [09:24:22] and it is different than the MediaWiki core PHPUnit test suites that look at RL definition is that correct? [09:25:03] yep [09:25:15] checks that what the source says/uses is reflected properly on extensionjson [09:25:47] the mw php RL linting checks that extension.json is correct (cyclic graphs, etc) [09:25:58] (i believe) [09:26:16] so my point being [09:26:36] if stuff can be added to the mediawiki/core PHPUnit suite, that will benefit all extensions [09:26:39] BUT [09:27:04] some checks/lint would need to interpret javascript and thus would need a dedicated job (which is fine to me :D ) [09:27:26] definitely, that'd be lovely. it needs a lot of polishing first though [09:27:33] I am not even sure what tests/phpunit/structure/ResourcesTest.php does in core [09:27:51] but it seems to warn about missing messages and dependencies at least [09:29:23] hashar: from source i see illegal dependencies, missing dependencies, missing messages, unsatisfiable deps (targets related) [09:29:54] all ResourceModules config related, it is good [09:33:45] is that from the PHPUnit suite ? [09:36:51] from tests/phpunit/structure/ResourcesTest.php [09:38:58] meanwhile I am crafting a job :D [09:39:11] thanks hashar! [09:40:41] one sure thing, is some tests can be embeded in the PHPUnit suite, that would benefit everyone with little to no work required :] [09:40:52] once the test lands in mediawiki, all extensions get it run for them [09:42:30] that's a good endgoal [09:42:59] parsing source and JS code dependencies is non-trivial and i'm not sure to what extent it can be generalized [09:43:12] that's why i want to test with a few extensions first [09:43:16] yup [09:46:48] and of course Jenkins does not support ':' in a job name (eg: lint:modules) bah [09:55:01] * hashar fights with yaml [09:58:00] hashar: want company? [10:01:32] I am trying something dirty :D [10:02:00] gotta find some time to refactor the crap [10:02:07] and drop a lot of duplication we have :( [10:03:03] hashar: btw you this cli works globally too so if you npm install -g resource-modules && resource-modules ./extension-folder that should work too [10:03:36] hashar: the yml config definitely needs love [10:07:55] well we are in a middle of crossing a bridge [10:08:01] with bunch of jobs being duplicated :((( [10:08:43] :( [10:13:17] joakino: giving a try at https://integration.wikimedia.org/ci/job/mwext-MobileFrontend-npm-run-lint-modules/1/console [10:13:27] and obviously it explodes completely :] [10:14:02] haha [10:14:04] but yeah the idea is to clone mw+MF [10:14:19] under /src [10:14:23] err [10:14:26] under "$WORKSPACE/src [10:14:40] then cd src ; npm install && npm run lint:modules [10:15:04] the template I came with is not reusable / hardcoded for MF [10:15:09] but that is probably good enough for now [10:15:17] definitely hashar [10:15:33] so it'll be src/mediawiki & src/MobileFrontend? [10:15:39] https://integration.wikimedia.org/ci/job/mwext-MobileFrontend-npm-run-lint-modules/2/console [10:15:42] stuff happening maybe [10:15:45] no [10:15:51] mediawiki core will be in $WORKSPACE/src [10:16:02] and the extension in $WORKSPACE/src/extensions/MobileFrontend [10:16:11] so in theory, your relative links might work just fine [10:16:41] not really, since extensions is usually inside mediawiki/ [10:16:52] but that's fine, i'll fix the cli to take another argument to core [10:17:42] you mean lint:modules ? [10:17:45] it is fine :] [10:19:13] one more time this time with a cd src/extensions/MobileFrontend :D [10:19:13] https://integration.wikimedia.org/ci/job/mwext-MobileFrontend-npm-run-lint-modules/3/console [10:20:22] joakino: ^^ seems it fails gracefully :D [10:21:05] hashar: that is actually the correct failures! [10:21:17] \o/ [10:21:37] oh i get it now, core is on src/ [10:21:40] you're right [10:21:51] yeah [10:21:59] so that is a bit confusing [10:22:09] but some jobs clone the repositories under /src/ [10:22:21] so we can add other directories that do not conflict with the source repos [10:22:38] such as /log/ (where one can land logs / artifacts which are then attached to the build) [10:22:40] or /caches/ [10:22:43] or whatever else [10:22:49] aah, makes sense [10:23:12] but most old jobs are cloning directly at the root of the workspace [10:23:17] so that is very confusing :( [10:23:32] indeed [10:24:38] hashar: so if we add this job to mobilefrontend, i'll have to submit a patch with "lint:modules" empty for patches to pass, right? [10:24:50] until https://gerrit.wikimedia.org/r/#/c/312850/ is ready to merge [10:26:18] nop [10:26:37] I am going to add it to the 'experimental' pipeline [10:26:43] so patches do not trigger the job [10:26:52] aha [10:26:53] and on your change, you will have to comment 'check experimental' to run it [10:27:01] awesome [10:27:04] ! [10:27:23] gonna remove lint:modules from npm test on that patch then [10:27:39] do you have a phabricator about it ? [10:27:45] so I can attach the CI config change to the task [10:27:50] if there are no task, lets skip :] [10:28:22] hashar: there's no task right now [10:28:26] should i create one? [10:30:54] i'm on it [10:31:45] joakino: up to you :] [10:32:01] hashar: use T146748 [10:32:03] T146748: Lint JS sources dependency graph against ResourceModules configuration - https://phabricator.wikimedia.org/T146748 [10:32:05] i'll fill it up in a moment [10:35:17] I am deploying the job and CI Config [10:35:57] during Releng meeting yesterday we were wondering how much devs care about testing [10:36:08] and I think we are gonna take mobile as an example :D [10:39:23] I have commented "check experimental" in Gerrit and some stuff is going to explode at https://integration.wikimedia.org/ci/job/mwext-MobileFrontend-npm-run-lint-modules/5/console [10:41:17] joakino: looks "good" to me. Let me know if something has to be polished up [10:42:20] if you have the job to craft a report / a junit file. You can it get it written to $WORKSPACE/log (which might be relative dir ../../../log [10:42:37] that looks great hashar, thanks a lot [10:42:43] i owe you a beer [10:42:44] and the build system will capture the log and attach it to the build. If its a junit file we can enable the jenkins plugin that craft a report for it [10:42:50] yeah yeah beer :D [10:43:27] and potentially [10:43:44] we can get that added to mediawiki/core as well [10:44:29] awesome [10:44:38] i'll look into that once it is more mature [10:46:02] yup [10:46:14] and add colors ! :D [10:46:28] for some reason devs pay attention to anything written in red [10:47:50] hashar: colors on the terminal output appear on https://integration.wikimedia.org/ci/job/mwext-MobileFrontend-npm-run-lint-modules/5/console ? [10:48:08] though one might argue that in latin american green is associated with death and in Asia red is happiness :D [10:48:15] need some geolocalization to alter the colors [10:48:22] yeah [10:48:28] so if you spurt ansi term sequences [10:48:38] there should be a plugin that transform them to nice coloring in the console [10:48:48] though that is apparently broken for npm :/ [10:56:39] oh :( [10:56:51] i'll use orange when I get to it [11:48:08] ^ [11:48:11] AWESOME [11:48:16] this whole exchange [13:23:46] <_hc> hey all, I'm starting in on a merge request to add Tor support to the Android app. It is currently failing to find support-v4.jar (com.android.support:support-v4:24.1.1), looking at $ANDROID_HOME/extras/android/m2repository/com/android/support/support-v4/24.1.1/ shows me only an aar, not a jar [13:24:11] <_hc> any ideas here? (fyi, I've been doing Android since 2009, so this isn't a newbie question ;-) [13:24:24] <_hc> I've never seen that error before [13:25:39] <_hc> hmm, looks like this line was omitted from build.gradle: [13:25:39] <_hc> compile 'com.android.support:support-v4:24.2.1' [13:27:50] <_hc> nope that didn't do it [13:27:59] <_hc> but bumping supportVersion = '24.2.1' got it working for me [13:28:11] <_hc> perhaps 24.1.1 is the version where Google removed some binaries [13:34:17] _hc: o/ yeah, that error didn't ring a bell to me either and i was doing some digging around our gradle config, glad the supportVersion bump fixed it. [13:47:13] mdholloway, _hc: might be worth filing a bug in phabricator just so that the fix is archived and searchable! [13:49:22] <_hc> I'm hoping to do a merge request soon, I can just include that [13:51:05] _hc: the patch sounds interesting, looking forward to it! [13:51:16] * mdholloway looks to see if we have any outstanding tasks having to do with tor support [13:51:17] <_hc> cool :) [13:52:30] <_hc> while you're here, can you point me to where preferences are handled? I'll add a "Use Tor" switch there, that's how its usually done [13:52:56] <_hc> ok, preferences.xml with some extras [13:54:10] _hc: yes, the main user-oriented preferences are in preferences.xml, and we also have a fairly extensive set of developer prefs in developer_preferences.xml (as you probably saw) [13:55:28] <_hc> I figure Privacy is the right secrion for "Use Tor". Any suggestions on placement in the list of 2 items there? [13:56:27] _hc: yeah, the privacy section makes sense. wherever you like seems fine [13:56:40] _hc: easy enough to change if someone else has strong feelings about it [15:35:01] phuedx: yt? ok if I resched? [15:37:20] phuedx: I'm gonna hop on another call. Will resched. [15:56:23] dr0ptp4kt: darn -- sorry! [15:56:34] my youngest son has what my oldest son had [15:56:40] there was vomit all over the lounge [15:56:44] shoud've marked myself as away [16:02:23] joakino: jdlrobson dr0ptp4kt nzr retro [17:34:52] nzr: o/ hello! hey, i'm blocking a bit on design feedback for T146726. please follow up when you can [17:51:01] dbrant nzr: tapping on a notification from google's stock calendar app is another example of the cross to close in the upper left design [17:51:21] nice [19:07:15] niedzielski-afk: bearND bearND_ (i guess dbrant isn't around): i'm having a look at the autohide patch now as well, works well, just about to take a look at the code [19:49:00] mdholloway_: thanks :) [21:24:10] niedzielski: can't open the alpha from the email [21:25:29] nzr: ah, fixed [21:25:57] niedzielski: thanks [21:26:18] 👍 [21:33:32] niedzielski: same link should work? [21:33:52] nzr: i think so. i just fixed the privacy settings. i didn't realize files defaulted to being private [21:34:24] niedzielski: now it's asking me for phab password [21:34:39] can't download apk :( dont have my phab and wiki credentials on test device [21:35:06] nzr: works in an incognito window for me :| [21:35:30] nzr: i'll just email it directly [21:36:10] niedzielski: that would be wondeful :) [21:42:52] niedzielski: one minor regression. the vertical alignment for empty pages is not middle anymore. not a blocker but we should track [21:43:52] nzr: please open a phab with repro steps :] [21:48:54] niedzielski: yep [22:03:07] jdlrobson: just wanted to acknowledge receipt of emails, since I might not have a chance to address them until tomorrow (slammed by meetings over 4 teams :) [22:17:06] jdlrobson: this has to happen first: https://gerrit.wikimedia.org/r/#/c/313116/ [22:17:24] jdlrobson: dependency for buttons and Minerva greys [22:43:19] jdlrobson: https://gerrit.wikimedia.org/r/#/c/313134/ [22:47:19] jdlrobson: https://gerrit.wikimedia.org/r/#/c/313116/ [23:14:48] joakino: o/ wanna take a look at print styles [23:27:12] jdlrobson: https://gerrit.wikimedia.org/r/#/c/312651/ [23:27:19] jdlrobson: :) [23:29:26] nzr: you know joaquin is long asleep right ? :) well he should be... or did you mean me? [23:34:02] jdlrobson: haha no.. i meant him but i guess he will see it whenever he gets up from his sweet dreams [23:35:47] nzr: https://phabricator.wikimedia.org/T146839 [23:35:53] please comment/edit/close :) [23:38:27] jdlrobson: let's keep it in future. removing sprint? [23:38:53] i dunno.. we want to push the new footer out this sprint, so i wasnt sure if it was a blocker [23:39:00] if it's not a blocker remove the sprint and comment so