Preheat the oven to 300 degrees F (150 degrees C). Make several small slits in top of pork roast; place into a roasting pan.
Melt butter in a skillet over medium heat. Add garlic, oregano, cayenne, thyme, mustard powder, and black pepper; cook and stir until fragrant, about 1 minute. Remove from the heat.
Spread spice mixture all over pork and rub into slits. Place onion, carrots, and celery around pork; season with salt and pepper.
Roast in the preheated oven for 1 hour 45 minutes. Increase the heat to 425 degrees F (220 degrees C) and continue cooking until pork is browned and an instant-read meat thermometer inserted into the center of the roast reads at least 150 degrees F (65 degrees C), about 15 minutes.
Remove from the oven and let stand for 10 minutes. Recheck the temperature; it should be at least 160 degrees F (75 degrees C) before slicing.
While the pork is resting, place the roasting pan with vegetables and pan drippings over a stove burner set to medium heat. Whisk in flour and simmer to remove raw taste, about 3 minutes. Whisk in stock, a little at a time, until gravy is thickened.