Handling compiler arguments in fpm project - Blog by Jakub Jelinek

@kubajj, @awvwgk, @everythingfunctional
As discussed yesterday, we’ll have an additional meeting early next week to go over Jakub’s PR. Please see below for a doodle poll to organise the time.

https://doodle.com/poll/f23inu8us6my2dhm?utm_source=poll&utm_medium=link

As usual this meeting will be open to everyone who is interested, but please be aware that the focus of this meeting will need to be kept to Jakub’s progress so far and answering his questions.

1 Like

Progress status - #6
This week, I have mostly spent researching various compiler flags available by compilers and designing a way how to implement global flags. These should be flags which when present in at least one package should be propagated to all packages.
We discussed this feature during the Thursday’s meeting with Laurence, Ondřej, Sebastian and Emanuele and decided to start with implementing implicit none being on by default and then focus on the global flags.
As you might have seen in last week’s post, I have created a PR which we are going to discuss in a meeting next week.

2 Likes

For the NAG Fortran Compiler,

-u

Specify that IMPLICIT NONE is in effect by default, unless overridden by explicit IMPLICIT statements.

3 Likes

Thanks @kubajj @awvwgk - we’ll meet tomorrow Tuesday 29th June at 15:00 UTC to discuss the PR and address your questions Jakub. It’d be great if you can join us Brad @everythingfunctional, but no worries if not.


Laurence Kedward is inviting you to a scheduled Zoom meeting.

Topic: GSoC Project code review
Time: Jun 29, 2021 04:00 PM London

Join Zoom Meeting

Meeting ID: 963 6859 0076
One tap mobile
+442080806591,96368590076# The United Kingdom
+442080806592,96368590076# The United Kingdom

Dial by your location
+44 208 080 6591 The United Kingdom
+44 208 080 6592 The United Kingdom
+44 330 088 5830 The United Kingdom
+44 131 460 1196 The United Kingdom
+44 203 481 5237 The United Kingdom
+44 203 481 5240 The United Kingdom
+44 203 901 7895 The United Kingdom
+33 1 8699 5831 France
+33 1 7037 2246 France
+33 1 7037 9729 France
+33 1 7095 0103 France
+33 1 7095 0350 France
+41 43 210 71 08 Switzerland
+41 44 529 92 72 Switzerland
+41 22 591 00 05 Switzerland
+41 22 591 01 56 Switzerland
+41 31 528 09 88 Switzerland
+41 43 210 70 42 Switzerland
+1 646 558 8656 US (New York)
+1 669 900 9128 US (San Jose)
+1 253 215 8782 US (Tacoma)
+1 301 715 8592 US (Washington DC)
+1 312 626 6799 US (Chicago)
+1 346 248 7799 US (Houston)
Meeting ID: 963 6859 0076
Find your local number: Zoom International Dial-in Numbers - Zoom

Join by SIP
96368590076@zoomcrc.com

Join by H.323
162.255.37.11 (US West)
162.255.36.11 (US East)
115.114.131.7 (India Mumbai)
115.114.115.7 (India Hyderabad)
213.19.144.110 (Amsterdam Netherlands)
213.244.140.110 (Germany)
103.122.166.55 (Australia Sydney)
103.122.167.55 (Australia Melbourne)
149.137.40.110 (Singapore)
64.211.144.160 (Brazil)
149.137.68.253 (Mexico)
69.174.57.160 (Canada Toronto)
65.39.152.160 (Canada Vancouver)
207.226.132.110 (Japan Tokyo)
149.137.24.110 (Japan Osaka)
Meeting ID: 963 6859 0076

1 Like

Progress status - #6.5

I am leaving for 3 weeks long scout camp today to volunteer (both my mentors and Ondřej knew about it from the beginning of June). I might not always have a connection to the internet, but I’ll try to respond to any questions as soon as possible.
As I am leaving in the middle of a week, I am including my progress status here. This week I mostly worked on my PR. I have added some test packages, added some comments and then tried to resolve issues pointed out by Laurence. My fix passes all the tests run by fpm test, but somehow fails the CI tests on GitHub. Unfortunately, I have to leave soon, therefore I cannot fix this until the 21st of July.
This is also my last post until the 23rd of July. Laurence and Brad agreed on pausing these posts during the scout camp as I will not be coding anything during that time.

Thank you all for your support so far and I am looking forward to coming back to this community in 3 weeks.

1 Like

Progress status - #7
Hello everyone,
I am back from the scout camp and I am ready to continue where I left off in June. Yesterday, I’ve had a meeting with Laurence and Brad during which we discussed the next steps.
First of all, we agreed on slightly altering the toml parser behaviour. If the user does not specify compiler, it won’t be simply filled in as the default compiler gfortran, but rather fail as an error.
Also, only lowercase options are going to be valid for an operating system.
The most complex part we discussed was the priority of user-specified profiles before default (built-in) profiles. We agreed on introducing a boolean called built_in which marks built-in profiles. When implemented, these will have lower priority than toml specified profiles, therefore if a user specifies profile: debug.gfortran.linux and package’s dependency would not have any such specified profile other than the built-in one, the chosen_profile of the dependency would be set to the specified profile from the main package.

We also discussed extending the test suite by adding some example packages with nested dependency trees.

1 Like

Progress status - #8
This week was one of the more challenging ones for me. I was trying to implement the priority of user-specified profiles. This needs to store parent nodes in the dependency tree, which I am still debugging.
The biggest problem was that I did not realise that the dependency tree is being cached in build/cache.toml; therefore, I spent 2 days debugging something that was not even correct. In the last two days, I made quite a nice progress, which means that I might finish implementing this feature tomorrow.
I am probably not going to be available and able to code next week, therefore I have just one week to implement a neat test suite, edit manifest reference so that it corresponds with the current state and add brief documentation.

1 Like

Last progress status
Dear all, it has been a pleasure to work on this project, but I hope that it doesn’t end here (I think that @lkedward and @awvwgk would agree with me as we decided to start reimplementing the parents in the dependency tree when I come back from a brief hike).
This week, I have spent mostly fixing code in my PR as @everythingfunctional, @lkedward and @awvwgk have suggested quite a few changes. During yesterday’s meeting, we decided to split the PR into multiple patches to avoid conflicts and to implement one last alteration before the GSoC coding period ends (this was added in the commit).
I am looking forward to finishing the dependency tree with Sebastian when I come back and I thank you all for following me on my journey.

7 Likes

Correct, but before this, at Bell Labs, Feldman and Weinberger developed the first Fortran 77 compiler, f77, on Unix, which was then in its childhood. The original Unix f77 ran on Interdata, PDP/11 and VAX. Later, f2c was developed at Bell Labs, and the driver f77 was created for use with f2c. One of the objectives was that the .o files generated by the original f77 and the subsequent f77+f2c combination should be identical, if the C files generated by f2c were compiled (with a certain set of options) by the Bell Labs Portable C Compiler, pcc, on the three computers that were named above.

3 Likes